From 721f6c133a0d0c5e37465ba57e78642443852152 Mon Sep 17 00:00:00 2001 From: Matt Bernhardt Date: Fri, 19 Dec 2014 16:33:10 -0500 Subject: [PATCH 001/146] Removing node_modules tree --- node_modules/.bin/autoprefixer | 1 - node_modules/glob/.npmignore | 2 - node_modules/glob/.travis.yml | 3 - node_modules/glob/LICENSE | 27 - node_modules/glob/README.md | 250 - node_modules/glob/examples/g.js | 9 - node_modules/glob/examples/usr-local.js | 9 - node_modules/glob/glob.js | 728 - .../glob/node_modules/inherits/LICENSE | 16 - .../glob/node_modules/inherits/README.md | 42 - .../glob/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../glob/node_modules/inherits/package.json | 33 - .../glob/node_modules/inherits/test.js | 25 - .../glob/node_modules/minimatch/.npmignore | 1 - .../glob/node_modules/minimatch/LICENSE | 23 - .../glob/node_modules/minimatch/README.md | 218 - .../glob/node_modules/minimatch/minimatch.js | 1055 - .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 33 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 42 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../glob/node_modules/minimatch/package.json | 40 - .../glob/node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - node_modules/glob/package.json | 40 - node_modules/glob/test/00-setup.js | 176 - node_modules/glob/test/bash-comparison.js | 63 - node_modules/glob/test/bash-results.json | 351 - node_modules/glob/test/cwd-test.js | 55 - node_modules/glob/test/globstar-match.js | 19 - node_modules/glob/test/mark.js | 118 - .../glob/test/new-glob-optional-options.js | 10 - node_modules/glob/test/nocase-nomagic.js | 113 - node_modules/glob/test/pause-resume.js | 73 - node_modules/glob/test/readme-issue.js | 36 - node_modules/glob/test/root-nomount.js | 39 - node_modules/glob/test/root.js | 46 - node_modules/glob/test/stat.js | 32 - node_modules/glob/test/zz-cleanup.js | 11 - node_modules/grunt-autoprefixer/.travis.yml | 6 - node_modules/grunt-autoprefixer/LICENSE-MIT | 22 - node_modules/grunt-autoprefixer/README.md | 155 - .../node_modules/.bin/autoprefixer | 1 - .../node_modules/autoprefixer/ChangeLog.md | 300 - .../node_modules/autoprefixer/LICENSE | 20 - .../node_modules/autoprefixer/README.md | 524 - .../autoprefixer/bin/autoprefixer | 13 - .../autoprefixer/data/browsers.js | 50 - .../autoprefixer/data/prefixes.js | 327 - .../autoprefixer/lib/autoprefixer.js | 109 - .../node_modules/autoprefixer/lib/binary.js | 344 - .../node_modules/autoprefixer/lib/browsers.js | 197 - .../autoprefixer/lib/declaration.js | 149 - .../autoprefixer/lib/hacks/align-content.js | 57 - .../autoprefixer/lib/hacks/align-items.js | 57 - .../autoprefixer/lib/hacks/align-self.js | 55 - .../autoprefixer/lib/hacks/border-image.js | 28 - .../autoprefixer/lib/hacks/border-radius.js | 56 - .../autoprefixer/lib/hacks/break-inside.js | 54 - .../autoprefixer/lib/hacks/display-flex.js | 70 - .../autoprefixer/lib/hacks/fill-available.js | 41 - .../autoprefixer/lib/hacks/filter.js | 29 - .../autoprefixer/lib/hacks/flex-basis.js | 47 - .../autoprefixer/lib/hacks/flex-direction.js | 71 - .../autoprefixer/lib/hacks/flex-flow.js | 35 - .../autoprefixer/lib/hacks/flex-grow.js | 41 - .../autoprefixer/lib/hacks/flex-shrink.js | 47 - .../autoprefixer/lib/hacks/flex-spec.js | 11 - .../autoprefixer/lib/hacks/flex-wrap.js | 33 - .../autoprefixer/lib/hacks/flex.js | 56 - .../autoprefixer/lib/hacks/fullscreen.js | 33 - .../autoprefixer/lib/hacks/gradient.js | 213 - .../autoprefixer/lib/hacks/justify-content.js | 62 - .../autoprefixer/lib/hacks/order.js | 52 - .../autoprefixer/lib/hacks/placeholder.js | 39 - .../autoprefixer/lib/hacks/transform.js | 31 - .../autoprefixer/lib/hacks/transition.js | 37 - .../node_modules/autoprefixer/lib/info.js | 114 - .../autoprefixer/lib/keyframes.js | 40 - .../autoprefixer/lib/old-selector.js | 68 - .../autoprefixer/lib/old-value.js | 29 - .../node_modules/autoprefixer/lib/prefixer.js | 88 - .../node_modules/autoprefixer/lib/prefixes.js | 332 - .../autoprefixer/lib/processor.js | 105 - .../node_modules/autoprefixer/lib/selector.js | 117 - .../node_modules/autoprefixer/lib/updater.js | 232 - .../node_modules/autoprefixer/lib/utils.js | 41 - .../node_modules/autoprefixer/lib/value.js | 97 - .../node_modules/fs-extra/.npmignore | 2 - .../node_modules/fs-extra/CHANGELOG.md | 112 - .../node_modules/fs-extra/LICENSE | 16 - .../node_modules/fs-extra/README.md | 332 - .../node_modules/fs-extra/lib/copy.js | 79 - .../node_modules/fs-extra/lib/create.js | 55 - .../node_modules/fs-extra/lib/index.js | 110 - .../node_modules/fs-extra/lib/json.js | 30 - .../node_modules/fs-extra/lib/mkdir.js | 8 - .../node_modules/fs-extra/lib/output.js | 37 - .../node_modules/fs-extra/lib/remove.js | 19 - .../fs-extra/node_modules/.bin/ncp | 1 - .../fs-extra/node_modules/.bin/rimraf | 1 - .../fs-extra/node_modules/jsonfile/.npmignore | 2 - .../node_modules/jsonfile/CHANGELOG.md | 20 - .../fs-extra/node_modules/jsonfile/LICENSE | 15 - .../fs-extra/node_modules/jsonfile/README.md | 121 - .../node_modules/jsonfile/lib/jsonfile.js | 47 - .../node_modules/jsonfile/package.json | 42 - .../fs-extra/node_modules/mkdirp/.npmignore | 2 - .../fs-extra/node_modules/mkdirp/.travis.yml | 5 - .../fs-extra/node_modules/mkdirp/LICENSE | 21 - .../node_modules/mkdirp/examples/pow.js | 6 - .../fs-extra/node_modules/mkdirp/index.js | 82 - .../fs-extra/node_modules/mkdirp/package.json | 34 - .../node_modules/mkdirp/readme.markdown | 63 - .../node_modules/mkdirp/test/chmod.js | 38 - .../node_modules/mkdirp/test/clobber.js | 37 - .../node_modules/mkdirp/test/mkdirp.js | 28 - .../fs-extra/node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 39 - .../fs-extra/node_modules/mkdirp/test/race.js | 41 - .../fs-extra/node_modules/mkdirp/test/rel.js | 32 - .../node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../fs-extra/node_modules/mkdirp/test/root.js | 18 - .../fs-extra/node_modules/mkdirp/test/sync.js | 32 - .../node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../fs-extra/node_modules/ncp/.npmignore | 4 - .../fs-extra/node_modules/ncp/.travis.yml | 7 - .../fs-extra/node_modules/ncp/LICENSE.md | 21 - .../fs-extra/node_modules/ncp/README.md | 52 - .../fs-extra/node_modules/ncp/bin/ncp | 48 - .../fs-extra/node_modules/ncp/lib/ncp.js | 222 - .../fs-extra/node_modules/ncp/package.json | 41 - .../node_modules/ncp/test/fixtures/src/a | 1 - .../node_modules/ncp/test/fixtures/src/b | 1 - .../node_modules/ncp/test/fixtures/src/c | 0 .../node_modules/ncp/test/fixtures/src/d | 0 .../node_modules/ncp/test/fixtures/src/e | 0 .../node_modules/ncp/test/fixtures/src/f | 0 .../node_modules/ncp/test/fixtures/src/sub/a | 1 - .../node_modules/ncp/test/fixtures/src/sub/b | 0 .../node_modules/ncp/test/ncp-test.js | 86 - .../fs-extra/node_modules/rimraf/AUTHORS | 6 - .../fs-extra/node_modules/rimraf/LICENSE | 23 - .../fs-extra/node_modules/rimraf/README.md | 30 - .../fs-extra/node_modules/rimraf/bin.js | 33 - .../fs-extra/node_modules/rimraf/package.json | 56 - .../fs-extra/node_modules/rimraf/rimraf.js | 178 - .../fs-extra/node_modules/rimraf/test/run.sh | 10 - .../node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-sync.js | 3 - .../node_modules/fs-extra/package.json | 64 - .../node_modules/postcss/ChangeLog.md | 42 - .../autoprefixer/node_modules/postcss/LICENSE | 20 - .../node_modules/postcss/README.md | 732 - .../node_modules/postcss/lib/at-rule.js | 94 - .../node_modules/postcss/lib/comment.js | 38 - .../node_modules/postcss/lib/container.js | 315 - .../node_modules/postcss/lib/declaration.js | 69 - .../node_modules/postcss/lib/lazy.js | 18 - .../node_modules/postcss/lib/list.js | 64 - .../node_modules/postcss/lib/map-generator.js | 242 - .../node_modules/postcss/lib/node.js | 189 - .../node_modules/postcss/lib/parse.js | 496 - .../node_modules/postcss/lib/postcss.js | 76 - .../node_modules/postcss/lib/raw.js | 32 - .../node_modules/postcss/lib/result.js | 22 - .../node_modules/postcss/lib/root.js | 57 - .../node_modules/postcss/lib/rule.js | 59 - .../node_modules/postcss/lib/syntax-error.js | 27 - .../node_modules/postcss/lib/vendor.js | 27 - .../node_modules/base64-js/.travis.yml | 5 - .../node_modules/base64-js/LICENSE.MIT | 21 - .../postcss/node_modules/base64-js/README.md | 31 - .../node_modules/base64-js/bench/bench.js | 19 - .../postcss/node_modules/base64-js/lib/b64.js | 121 - .../node_modules/base64-js/package.json | 49 - .../node_modules/base64-js/test/convert.js | 52 - .../node_modules/source-map/.npmignore | 2 - .../node_modules/source-map/.travis.yml | 4 - .../node_modules/source-map/CHANGELOG.md | 130 - .../postcss/node_modules/source-map/LICENSE | 28 - .../source-map/Makefile.dryice.js | 166 - .../postcss/node_modules/source-map/README.md | 446 - .../source-map/build/assert-shim.js | 56 - .../source-map/build/mini-require.js | 152 - .../source-map/build/prefix-source-map.jsm | 20 - .../source-map/build/prefix-utils.jsm | 18 - .../source-map/build/suffix-browser.js | 8 - .../source-map/build/suffix-source-map.jsm | 6 - .../source-map/build/suffix-utils.jsm | 21 - .../source-map/build/test-prefix.js | 8 - .../source-map/build/test-suffix.js | 3 - .../node_modules/source-map/lib/source-map.js | 8 - .../source-map/lib/source-map/array-set.js | 97 - .../source-map/lib/source-map/base64-vlq.js | 144 - .../source-map/lib/source-map/base64.js | 42 - .../lib/source-map/binary-search.js | 81 - .../lib/source-map/source-map-consumer.js | 478 - .../lib/source-map/source-map-generator.js | 397 - .../source-map/lib/source-map/source-node.js | 387 - .../source-map/lib/source-map/util.js | 302 - .../source-map/node_modules/amdefine/LICENSE | 58 - .../node_modules/amdefine/README.md | 171 - .../node_modules/amdefine/amdefine.js | 299 - .../node_modules/amdefine/intercept.js | 36 - .../node_modules/amdefine/package.json | 36 - .../node_modules/source-map/package.json | 126 - .../node_modules/source-map/test/run-tests.js | 62 - .../source-map/test/source-map/test-api.js | 26 - .../test/source-map/test-array-set.js | 104 - .../test/source-map/test-base64-vlq.js | 24 - .../source-map/test/source-map/test-base64.js | 35 - .../test/source-map/test-binary-search.js | 54 - .../test/source-map/test-dog-fooding.js | 84 - .../source-map/test-source-map-consumer.js | 475 - .../source-map/test-source-map-generator.js | 540 - .../test/source-map/test-source-node.js | 439 - .../source-map/test/source-map/test-util.js | 127 - .../source-map/test/source-map/util.js | 161 - .../node_modules/postcss/package.json | 48 - .../node_modules/autoprefixer/package.json | 51 - .../autoprefixer/updaters/browsers.js | 69 - .../autoprefixer/updaters/prefixes.js | 265 - .../node_modules/chalk/index.js | 63 - .../chalk/node_modules/.bin/strip-ansi | 1 - .../node_modules/ansi-styles/ansi-styles.js | 38 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../chalk/node_modules/strip-ansi/cli.js | 27 - .../chalk/node_modules/strip-ansi/index.js | 4 - .../node_modules/strip-ansi/package.json | 64 - .../chalk/node_modules/strip-ansi/readme.md | 46 - .../node_modules/chalk/package.json | 61 - .../node_modules/chalk/readme.md | 158 - .../node_modules/diff/README.md | 154 - .../node_modules/diff/diff.js | 369 - .../node_modules/diff/package.json | 52 - node_modules/grunt-autoprefixer/package.json | 63 - .../grunt-autoprefixer/tasks/autoprefixer.js | 91 - .../grunt-contrib-concat/.gitattributes | 1 - node_modules/grunt-contrib-concat/.jshintrc | 14 - node_modules/grunt-contrib-concat/.npmignore | 3 - node_modules/grunt-contrib-concat/.travis.yml | 6 - node_modules/grunt-contrib-concat/AUTHORS | 3 - node_modules/grunt-contrib-concat/CHANGELOG | 34 - .../grunt-contrib-concat/CONTRIBUTING.md | 1 - .../grunt-contrib-concat/Gruntfile.js | 90 - node_modules/grunt-contrib-concat/LICENSE-MIT | 22 - node_modules/grunt-contrib-concat/README.md | 275 - .../docs/concat-examples.md | 177 - .../docs/concat-options.md | 52 - .../docs/concat-overview.md | 1 - .../grunt-contrib-concat/package.json | 61 - .../grunt-contrib-concat/tasks/concat.js | 69 - .../grunt-contrib-concat/tasks/lib/comment.js | 34 - .../grunt-contrib-concat/test/concat_test.js | 64 - .../test/expected/custom_options | 4 - .../test/expected/default_options | 2 - .../test/expected/handling_invalid_files | 2 - .../test/expected/process_function | 4 - .../test/fixtures/banner.js | 11 - .../test/fixtures/banner2.js | 7 - .../test/fixtures/banner3.js | 10 - .../grunt-contrib-concat/test/fixtures/file1 | 1 - .../grunt-contrib-concat/test/fixtures/file2 | 1 - node_modules/grunt-contrib-cssmin/LICENSE-MIT | 22 - node_modules/grunt-contrib-cssmin/README.md | 119 - .../node_modules/.bin/cleancss | 1 - .../node_modules/chalk/index.js | 63 - .../chalk/node_modules/.bin/strip-ansi | 1 - .../node_modules/ansi-styles/ansi-styles.js | 38 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../chalk/node_modules/strip-ansi/cli.js | 27 - .../chalk/node_modules/strip-ansi/index.js | 4 - .../node_modules/strip-ansi/package.json | 64 - .../chalk/node_modules/strip-ansi/readme.md | 46 - .../node_modules/chalk/package.json | 61 - .../node_modules/chalk/readme.md | 158 - .../node_modules/clean-css/History.md | 426 - .../node_modules/clean-css/LICENSE | 19 - .../node_modules/clean-css/README.md | 210 - .../node_modules/clean-css/bin/cleancss | 147 - .../node_modules/clean-css/index.js | 1 - .../node_modules/clean-css/lib/clean.js | 403 - .../clean-css/lib/colors/hsl-to-hex.js | 64 - .../clean-css/lib/colors/long-to-short-hex.js | 12 - .../clean-css/lib/colors/rgb-to-hex.js | 14 - .../clean-css/lib/colors/shortener.js | 174 - .../clean-css/lib/images/url-rebase.js | 32 - .../clean-css/lib/images/url-rewriter.js | 57 - .../clean-css/lib/imports/inliner.js | 308 - .../clean-css/lib/properties/optimizer.js | 244 - .../lib/properties/shorthand-notations.js | 50 - .../clean-css/lib/selectors/empty-removal.js | 30 - .../clean-css/lib/selectors/optimizer.js | 295 - .../clean-css/lib/selectors/tokenizer.js | 169 - .../clean-css/lib/text/comments.js | 59 - .../clean-css/lib/text/escape-store.js | 32 - .../clean-css/lib/text/expressions.js | 69 - .../node_modules/clean-css/lib/text/free.js | 76 - .../node_modules/clean-css/lib/text/urls.js | 41 - .../node_modules/commander/Readme.md | 195 - .../clean-css/node_modules/commander/index.js | 851 - .../node_modules/commander/package.json | 41 - .../node_modules/clean-css/package.json | 78 - .../node_modules/maxmin/index.js | 22 - .../maxmin/node_modules/.bin/gzip-size | 1 - .../maxmin/node_modules/.bin/pretty-bytes | 1 - .../maxmin/node_modules/gzip-size/cli.js | 38 - .../maxmin/node_modules/gzip-size/index.js | 17 - .../node_modules/concat-stream/.npmignore | 1 - .../node_modules/concat-stream/LICENSE | 24 - .../node_modules/concat-stream/index.js | 125 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 33 - .../node_modules/inherits/test.js | 25 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../node_modules/readable-stream/float.patch | 923 - .../readable-stream/lib/_stream_duplex.js | 75 - .../lib/_stream_passthrough.js | 47 - .../readable-stream/lib/_stream_readable.js | 925 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 467 - .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 - .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 35 - .../node_modules/core-util-is/util.js | 106 - .../node_modules/debuglog/LICENSE | 19 - .../node_modules/debuglog/README.md | 40 - .../node_modules/debuglog/debuglog.js | 22 - .../node_modules/debuglog/package.json | 26 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 200 - .../node_modules/string_decoder/package.json | 32 - .../node_modules/readable-stream/package.json | 43 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 7 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/typedarray/.travis.yml | 4 - .../node_modules/typedarray/LICENSE | 35 - .../node_modules/typedarray/example/tarray.js | 4 - .../node_modules/typedarray/index.js | 630 - .../node_modules/typedarray/package.json | 62 - .../node_modules/typedarray/readme.markdown | 55 - .../typedarray/test/server/undef_globals.js | 19 - .../node_modules/typedarray/test/tarray.js | 10 - .../node_modules/concat-stream/package.json | 59 - .../node_modules/concat-stream/readme.md | 72 - .../node_modules/concat-stream/test/array.js | 12 - .../node_modules/concat-stream/test/buffer.js | 31 - .../node_modules/concat-stream/test/infer.js | 14 - .../concat-stream/test/nothing.js | 9 - .../concat-stream/test/objects.js | 29 - .../concat-stream/test/server/ls.js | 16 - .../node_modules/concat-stream/test/string.js | 50 - .../concat-stream/test/typedarray.js | 33 - .../node_modules/zlib-browserify/.npmignore | 1 - .../node_modules/zlib-browserify/.travis.yml | 7 - .../node_modules/zlib-browserify/LICENSE | 21 - .../node_modules/zlib-browserify/index.js | 43 - .../node_modules/tape/.npmignore | 1 - .../node_modules/tape/.travis.yml | 4 - .../zlib-browserify/node_modules/tape/LICENSE | 18 - .../node_modules/tape/example/array.js | 35 - .../node_modules/tape/example/fail.js | 35 - .../node_modules/tape/example/nested.js | 51 - .../node_modules/tape/example/nested_fail.js | 51 - .../node_modules/tape/example/not_enough.js | 35 - .../node_modules/tape/example/static/build.sh | 2 - .../tape/example/static/index.html | 21 - .../tape/example/static/server.js | 4 - .../node_modules/tape/example/timing.js | 12 - .../node_modules/tape/example/too_many.js | 35 - .../node_modules/tape/index.js | 124 - .../node_modules/tape/lib/default_stream.js | 30 - .../node_modules/tape/lib/render.js | 100 - .../node_modules/tape/lib/test.js | 342 - .../node_modules/deep-equal/README.markdown | 55 - .../node_modules/deep-equal/example/cmp.js | 11 - .../tape/node_modules/deep-equal/index.js | 84 - .../tape/node_modules/deep-equal/package.json | 43 - .../tape/node_modules/deep-equal/test/cmp.js | 18 - .../tape/node_modules/defined/.travis.yml | 4 - .../tape/node_modules/defined/LICENSE | 18 - .../node_modules/defined/example/defined.js | 4 - .../tape/node_modules/defined/index.js | 5 - .../tape/node_modules/defined/package.json | 44 - .../tape/node_modules/defined/readme.markdown | 51 - .../tape/node_modules/defined/test/def.js | 22 - .../tape/node_modules/jsonify/README.markdown | 34 - .../tape/node_modules/jsonify/index.js | 2 - .../tape/node_modules/jsonify/lib/parse.js | 273 - .../node_modules/jsonify/lib/stringify.js | 154 - .../tape/node_modules/jsonify/package.json | 38 - .../tape/node_modules/jsonify/test/parse.js | 16 - .../node_modules/jsonify/test/stringify.js | 15 - .../node_modules/tape/package.json | 48 - .../node_modules/tape/readme.markdown | 180 - .../node_modules/tape/test/array.js | 68 - .../node_modules/tape/test/child_ordering.js | 51 - .../node_modules/tape/test/exit.js | 108 - .../node_modules/tape/test/exit/fail.js | 35 - .../node_modules/tape/test/exit/ok.js | 35 - .../node_modules/tape/test/exit/too_few.js | 35 - .../node_modules/tape/test/fail.js | 68 - .../node_modules/tape/test/harness.js | 88 - .../node_modules/tape/test/max_listeners.js | 7 - .../tape/test/max_listeners/source.js | 5 - .../node_modules/tape/test/nested.js | 89 - .../node_modules/tape/test/only.js | 48 - .../node_modules/tape/test/order.js | 17 - .../node_modules/tape/test/plan_optional.js | 15 - .../node_modules/tape/test/skip.js | 34 - .../node_modules/tape/test/throw.js | 38 - .../node_modules/tape/test/too_many.js | 69 - .../node_modules/zlib-browserify/package.json | 39 - .../node_modules/zlib-browserify/readme.md | 43 - .../zlib-browserify/test/zlib.test.js | 64 - .../node_modules/zlib-browserify/zlib.js | 54 - .../node_modules/gzip-size/package.json | 55 - .../maxmin/node_modules/gzip-size/readme.md | 82 - .../maxmin/node_modules/pretty-bytes/cli.js | 21 - .../node_modules/pretty-bytes/package.json | 56 - .../node_modules/pretty-bytes/pretty-bytes.js | 40 - .../node_modules/pretty-bytes/readme.md | 65 - .../node_modules/maxmin/package.json | 52 - .../node_modules/maxmin/readme.md | 56 - .../grunt-contrib-cssmin/package.json | 59 - .../grunt-contrib-cssmin/tasks/cssmin.js | 62 - .../grunt-contrib-imagemin/LICENSE-MIT | 22 - node_modules/grunt-contrib-imagemin/README.md | 135 - .../node_modules/async/LICENSE | 19 - .../node_modules/async/README.md | 1425 - .../node_modules/async/component.json | 11 - .../node_modules/async/lib/async.js | 958 - .../node_modules/async/package.json | 43 - .../node_modules/chalk/index.js | 63 - .../chalk/node_modules/.bin/strip-ansi | 1 - .../node_modules/ansi-styles/ansi-styles.js | 38 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../chalk/node_modules/strip-ansi/cli.js | 27 - .../chalk/node_modules/strip-ansi/index.js | 4 - .../node_modules/strip-ansi/package.json | 64 - .../chalk/node_modules/strip-ansi/readme.md | 46 - .../node_modules/chalk/package.json | 61 - .../node_modules/chalk/readme.md | 158 - .../node_modules/filesize/.npmignore | 8 - .../node_modules/filesize/LICENSE | 27 - .../node_modules/filesize/README.md | 51 - .../node_modules/filesize/lib/filesize.js | 147 - .../node_modules/filesize/package.json | 51 - .../node_modules/image-min/README.md | 73 - .../node_modules/image-min/imagemin.js | 190 - .../image-min/node_modules/.bin/gifsicle | 1 - .../image-min/node_modules/.bin/jpegtran | 1 - .../image-min/node_modules/.bin/optipng | 1 - .../node_modules/cache-file/README.md | 54 - .../node_modules/cache-file/index.js | 103 - .../cache-file/node_modules/.bin/rimraf | 1 - .../node_modules/hash-file/README.md | 25 - .../node_modules/hash-file/index.js | 16 - .../node_modules/hash-file/package.json | 41 - .../cache-file/node_modules/rimraf/AUTHORS | 6 - .../cache-file/node_modules/rimraf/LICENSE | 23 - .../cache-file/node_modules/rimraf/README.md | 30 - .../cache-file/node_modules/rimraf/bin.js | 33 - .../node_modules/rimraf/package.json | 56 - .../cache-file/node_modules/rimraf/rimraf.js | 178 - .../node_modules/rimraf/test/run.sh | 10 - .../node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-sync.js | 3 - .../node_modules/cache-file/package.json | 46 - .../node_modules/gifsicle/bin/gifsicle.js | 8 - .../node_modules/gifsicle/lib/check.js | 24 - .../node_modules/gifsicle/lib/gifsicle.js | 49 - .../node_modules/bin-wrapper/README.md | 67 - .../node_modules/bin-wrapper/bin-wrapper.js | 223 - .../bin-wrapper/node_modules/.bin/which | 1 - .../node_modules/download/README.md | 84 - .../node_modules/download/download.js | 100 - .../node_modules/decompress/README.md | 71 - .../node_modules/decompress/decompress.js | 168 - .../decompress/node_modules/.bin/rimraf | 1 - .../adm-zip/.idea/scopes/scope_settings.xml | 5 - .../node_modules/adm-zip/MIT-LICENSE.txt | 21 - .../decompress/node_modules/adm-zip/README.md | 64 - .../node_modules/adm-zip/adm-zip.js | 404 - .../adm-zip/headers/entryHeader.js | 261 - .../node_modules/adm-zip/headers/index.js | 2 - .../adm-zip/headers/mainHeader.js | 80 - .../node_modules/adm-zip/methods/deflater.js | 1578 - .../node_modules/adm-zip/methods/index.js | 2 - .../node_modules/adm-zip/methods/inflater.js | 448 - .../node_modules/adm-zip/package.json | 39 - .../adm-zip/test/assets/attributes_test.zip | Bin 4189 -> 0 bytes .../attributes_test/New folder/hidden.txt | 17 - .../New folder/hidden_readonly.txt | 17 - .../attributes_test/New folder/readonly.txt | 17 - .../attributes_test/New folder/somefile.txt | 17 - .../attributes_test/asd/New Text Document.txt | 0 .../assets/attributes_test/blank file.txt | 0 .../node_modules/adm-zip/test/assets/fast.zip | Bin 4194 -> 0 bytes .../adm-zip/test/assets/fastest.zip | Bin 4194 -> 0 bytes .../adm-zip/test/assets/linux_arc.zip | Bin 415 -> 0 bytes .../adm-zip/test/assets/maximum.zip | Bin 4086 -> 0 bytes .../adm-zip/test/assets/normal.zip | Bin 4170 -> 0 bytes .../adm-zip/test/assets/store.zip | Bin 5878 -> 0 bytes .../adm-zip/test/assets/ultra.zip | Bin 4086 -> 0 bytes .../node_modules/adm-zip/test/index.js | 5 - .../node_modules/adm-zip/util/constants.js | 84 - .../node_modules/adm-zip/util/errors.js | 35 - .../node_modules/adm-zip/util/fattr.js | 84 - .../node_modules/adm-zip/util/index.js | 4 - .../node_modules/adm-zip/util/utils.js | 145 - .../node_modules/adm-zip/zipEntry.js | 224 - .../node_modules/adm-zip/zipFile.js | 311 - .../decompress/node_modules/rimraf/AUTHORS | 6 - .../decompress/node_modules/rimraf/LICENSE | 23 - .../decompress/node_modules/rimraf/README.md | 30 - .../decompress/node_modules/rimraf/bin.js | 33 - .../node_modules/rimraf/package.json | 56 - .../decompress/node_modules/rimraf/rimraf.js | 178 - .../node_modules/rimraf/test/run.sh | 10 - .../node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-sync.js | 3 - .../node_modules/stream-combiner/.npmignore | 3 - .../node_modules/stream-combiner/.travis.yml | 4 - .../node_modules/stream-combiner/LICENSE | 22 - .../node_modules/stream-combiner/README.md | 29 - .../node_modules/stream-combiner/index.js | 39 - .../node_modules/duplexer/.npmignore | 3 - .../node_modules/duplexer/.travis.yml | 6 - .../node_modules/duplexer/LICENCE | 19 - .../node_modules/duplexer/README.md | 47 - .../node_modules/duplexer/index.js | 87 - .../node_modules/duplexer/package.json | 57 - .../node_modules/duplexer/test/index.js | 31 - .../node_modules/stream-combiner/package.json | 33 - .../stream-combiner/test/index.js | 52 - .../decompress/node_modules/tar/.npmignore | 5 - .../decompress/node_modules/tar/.travis.yml | 3 - .../decompress/node_modules/tar/LICENCE | 25 - .../decompress/node_modules/tar/README.md | 46 - .../node_modules/tar/examples/extracter.js | 11 - .../node_modules/tar/examples/reader.js | 36 - .../node_modules/tar/lib/buffer-entry.js | 30 - .../node_modules/tar/lib/entry-writer.js | 169 - .../decompress/node_modules/tar/lib/entry.js | 213 - .../tar/lib/extended-header-writer.js | 191 - .../node_modules/tar/lib/extended-header.js | 140 - .../node_modules/tar/lib/extract.js | 78 - .../tar/lib/global-header-writer.js | 14 - .../decompress/node_modules/tar/lib/header.js | 385 - .../decompress/node_modules/tar/lib/pack.js | 231 - .../decompress/node_modules/tar/lib/parse.js | 270 - .../tar/node_modules/block-stream/LICENCE | 25 - .../tar/node_modules/block-stream/README.md | 14 - .../block-stream/bench/block-stream-pause.js | 70 - .../block-stream/bench/block-stream.js | 68 - .../block-stream/bench/dropper-pause.js | 70 - .../block-stream/bench/dropper.js | 68 - .../node_modules/block-stream/block-stream.js | 209 - .../node_modules/block-stream/package.json | 36 - .../node_modules/block-stream/test/basic.js | 27 - .../block-stream/test/nopad-thorough.js | 68 - .../node_modules/block-stream/test/nopad.js | 57 - .../block-stream/test/pause-resume.js | 73 - .../block-stream/test/thorough.js | 68 - .../block-stream/test/two-stream.js | 59 - .../tar/node_modules/fstream/.npmignore | 5 - .../tar/node_modules/fstream/.travis.yml | 3 - .../tar/node_modules/fstream/LICENSE | 27 - .../tar/node_modules/fstream/README.md | 76 - .../fstream/examples/filter-pipe.js | 131 - .../tar/node_modules/fstream/examples/pipe.js | 115 - .../node_modules/fstream/examples/reader.js | 54 - .../fstream/examples/symlink-write.js | 24 - .../tar/node_modules/fstream/fstream.js | 31 - .../tar/node_modules/fstream/lib/abstract.js | 85 - .../tar/node_modules/fstream/lib/collect.js | 67 - .../node_modules/fstream/lib/dir-reader.js | 251 - .../node_modules/fstream/lib/dir-writer.js | 171 - .../node_modules/fstream/lib/file-reader.js | 147 - .../node_modules/fstream/lib/file-writer.js | 100 - .../tar/node_modules/fstream/lib/get-type.js | 32 - .../node_modules/fstream/lib/link-reader.js | 54 - .../node_modules/fstream/lib/link-writer.js | 95 - .../node_modules/fstream/lib/proxy-reader.js | 93 - .../node_modules/fstream/lib/proxy-writer.js | 109 - .../tar/node_modules/fstream/lib/reader.js | 260 - .../node_modules/fstream/lib/socket-reader.js | 38 - .../tar/node_modules/fstream/lib/writer.js | 389 - .../node_modules/graceful-fs/.npmignore | 1 - .../fstream/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 26 - .../node_modules/graceful-fs/graceful-fs.js | 161 - .../node_modules/graceful-fs/package.json | 49 - .../node_modules/graceful-fs/polyfills.js | 228 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 21 - .../tar/node_modules/fstream/package.json | 39 - .../tar/node_modules/inherits/LICENSE | 16 - .../tar/node_modules/inherits/README.md | 42 - .../tar/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../tar/node_modules/inherits/package.json | 33 - .../tar/node_modules/inherits/test.js | 25 - .../decompress/node_modules/tar/package.json | 36 - .../decompress/node_modules/tar/tar.js | 173 - .../tar/test/00-setup-fixtures.js | 53 - .../node_modules/tar/test/extract.js | 358 - .../node_modules/tar/test/fixtures.tgz | Bin 19205 -> 0 bytes .../node_modules/tar/test/header.js | 183 - .../tar/test/pack-no-proprietary.js | 854 - .../decompress/node_modules/tar/test/pack.js | 897 - .../decompress/node_modules/tar/test/parse.js | 359 - .../node_modules/tar/test/zz-cleanup.js | 20 - .../decompress/node_modules/tempfile/index.js | 8 - .../tempfile/node_modules/uuid/.npmignore | 2 - .../tempfile/node_modules/uuid/.travis.yml | 5 - .../tempfile/node_modules/uuid/LICENSE.md | 2 - .../tempfile/node_modules/uuid/README.md | 204 - .../node_modules/uuid/benchmark/README.md | 53 - .../node_modules/uuid/benchmark/bench.gnu | 174 - .../node_modules/uuid/benchmark/bench.sh | 34 - .../uuid/benchmark/benchmark-native.c | 34 - .../node_modules/uuid/benchmark/benchmark.js | 84 - .../node_modules/uuid/misc/compare.js | 62 - .../tempfile/node_modules/uuid/misc/perf.js | 102 - .../tempfile/node_modules/uuid/package.json | 52 - .../tempfile/node_modules/uuid/rng-browser.js | 31 - .../tempfile/node_modules/uuid/rng.js | 4 - .../node_modules/uuid/test/mocha.opts | 1 - .../tempfile/node_modules/uuid/test/test.js | 105 - .../tempfile/node_modules/uuid/uuid.js | 187 - .../node_modules/tempfile/package.json | 48 - .../node_modules/tempfile/readme.md | 36 - .../node_modules/decompress/package.json | 51 - .../node_modules/each-async/each-async.js | 72 - .../node_modules/each-async/package.json | 50 - .../node_modules/each-async/readme.md | 78 - .../download/node_modules/request/.npmignore | 2 - .../download/node_modules/request/.travis.yml | 12 - .../download/node_modules/request/LICENSE | 55 - .../download/node_modules/request/README.md | 366 - .../node_modules/request/dns-request.js | 7 - .../download/node_modules/request/index.js | 157 - .../download/node_modules/request/lib/copy.js | 8 - .../node_modules/request/lib/debug.js | 7 - .../node_modules/request/lib/getSafe.js | 34 - .../node_modules/request/lib/optional.js | 5 - .../request/node_modules/aws-sign2/LICENSE | 55 - .../request/node_modules/aws-sign2/README.md | 4 - .../request/node_modules/aws-sign2/index.js | 202 - .../node_modules/aws-sign2/package.json | 29 - .../node_modules/forever-agent/LICENSE | 55 - .../node_modules/forever-agent/README.md | 4 - .../node_modules/forever-agent/index.js | 119 - .../node_modules/forever-agent/package.json | 29 - .../request/node_modules/form-data/License | 19 - .../request/node_modules/form-data/Readme.md | 163 - .../node_modules/form-data/lib/form_data.js | 325 - .../node_modules/combined-stream/.npmignore | 3 - .../node_modules/combined-stream/License | 19 - .../node_modules/combined-stream/Makefile | 7 - .../node_modules/combined-stream/Readme.md | 132 - .../combined-stream/lib/combined_stream.js | 185 - .../node_modules/delayed-stream/.npmignore | 2 - .../node_modules/delayed-stream/License | 19 - .../node_modules/delayed-stream/Makefile | 7 - .../node_modules/delayed-stream/Readme.md | 154 - .../delayed-stream/lib/delayed_stream.js | 99 - .../node_modules/delayed-stream/package.json | 32 - .../delayed-stream/test/common.js | 6 - .../integration/test-delayed-http-upload.js | 38 - .../test-delayed-stream-auto-pause.js | 21 - .../integration/test-delayed-stream-pause.js | 14 - .../test/integration/test-delayed-stream.js | 48 - .../integration/test-handle-source-errors.js | 15 - .../test/integration/test-max-data-size.js | 18 - .../test/integration/test-pipe-resumes.js | 13 - .../test/integration/test-proxy-readable.js | 13 - .../node_modules/delayed-stream/test/run.js | 7 - .../node_modules/combined-stream/package.json | 32 - .../combined-stream/test/common.js | 23 - .../combined-stream/test/fixture/file1.txt | 256 - .../combined-stream/test/fixture/file2.txt | 256 - .../test/integration/test-callback-streams.js | 27 - .../test/integration/test-data-size.js | 34 - ...delayed-streams-and-buffers-and-strings.js | 38 - .../test/integration/test-delayed-streams.js | 35 - .../test/integration/test-empty-string.js | 39 - .../test/integration/test-is-stream-like.js | 17 - .../test/integration/test-max-data-size.js | 24 - .../test/integration/test-unpaused-streams.js | 30 - .../node_modules/combined-stream/test/run.js | 7 - .../node_modules/form-data/package.json | 46 - .../request/node_modules/hawk/.npmignore | 18 - .../request/node_modules/hawk/.travis.yml | 5 - .../request/node_modules/hawk/LICENSE | 24 - .../request/node_modules/hawk/Makefile | 10 - .../request/node_modules/hawk/README.md | 627 - .../node_modules/hawk/example/usage.js | 78 - .../request/node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../request/node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../request/node_modules/hawk/index.js | 1 - .../request/node_modules/hawk/lib/browser.js | 485 - .../request/node_modules/hawk/lib/client.js | 367 - .../request/node_modules/hawk/lib/crypto.js | 111 - .../request/node_modules/hawk/lib/index.js | 15 - .../request/node_modules/hawk/lib/server.js | 524 - .../request/node_modules/hawk/lib/utils.js | 183 - .../hawk/node_modules/boom/.npmignore | 18 - .../hawk/node_modules/boom/.travis.yml | 5 - .../hawk/node_modules/boom/LICENSE | 24 - .../hawk/node_modules/boom/Makefile | 11 - .../hawk/node_modules/boom/README.md | 6 - .../hawk/node_modules/boom/images/boom.png | Bin 29479 -> 0 bytes .../hawk/node_modules/boom/index.js | 1 - .../hawk/node_modules/boom/lib/index.js | 207 - .../hawk/node_modules/boom/package.json | 47 - .../hawk/node_modules/boom/test/index.js | 245 - .../hawk/node_modules/cryptiles/.npmignore | 18 - .../hawk/node_modules/cryptiles/.travis.yml | 5 - .../hawk/node_modules/cryptiles/LICENSE | 24 - .../hawk/node_modules/cryptiles/Makefile | 11 - .../hawk/node_modules/cryptiles/README.md | 6 - .../hawk/node_modules/cryptiles/index.js | 1 - .../hawk/node_modules/cryptiles/lib/index.js | 68 - .../hawk/node_modules/cryptiles/package.json | 48 - .../hawk/node_modules/cryptiles/test/index.js | 101 - .../hawk/node_modules/hoek/.npmignore | 18 - .../hawk/node_modules/hoek/.travis.yml | 5 - .../hawk/node_modules/hoek/LICENSE | 33 - .../hawk/node_modules/hoek/Makefile | 10 - .../hawk/node_modules/hoek/README.md | 436 - .../hawk/node_modules/hoek/images/hoek.png | Bin 37939 -> 0 bytes .../hawk/node_modules/hoek/index.js | 1 - .../hawk/node_modules/hoek/lib/escape.js | 132 - .../hawk/node_modules/hoek/lib/index.js | 585 - .../hawk/node_modules/hoek/package.json | 49 - .../hawk/node_modules/hoek/test/escaper.js | 86 - .../hawk/node_modules/hoek/test/index.js | 1078 - .../node_modules/hoek/test/modules/test1.js | 1 - .../node_modules/hoek/test/modules/test2.js | 1 - .../node_modules/hoek/test/modules/test3.js | 1 - .../hawk/node_modules/sntp/.npmignore | 18 - .../hawk/node_modules/sntp/.travis.yml | 5 - .../hawk/node_modules/sntp/LICENSE | 24 - .../hawk/node_modules/sntp/Makefile | 11 - .../hawk/node_modules/sntp/README.md | 68 - .../hawk/node_modules/sntp/examples/offset.js | 16 - .../hawk/node_modules/sntp/examples/time.js | 25 - .../hawk/node_modules/sntp/index.js | 1 - .../hawk/node_modules/sntp/lib/index.js | 409 - .../hawk/node_modules/sntp/package.json | 48 - .../hawk/node_modules/sntp/test/index.js | 359 - .../request/node_modules/hawk/package.json | 53 - .../request/node_modules/hawk/test/browser.js | 771 - .../request/node_modules/hawk/test/client.js | 206 - .../request/node_modules/hawk/test/crypto.js | 86 - .../request/node_modules/hawk/test/index.js | 316 - .../request/node_modules/hawk/test/message.js | 246 - .../request/node_modules/hawk/test/readme.js | 98 - .../request/node_modules/hawk/test/server.js | 686 - .../request/node_modules/hawk/test/uri.js | 456 - .../request/node_modules/hawk/test/utils.js | 120 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 75 - .../http-signature/http_signing.md | 296 - .../node_modules/http-signature/lib/index.js | 25 - .../node_modules/http-signature/lib/parser.js | 304 - .../node_modules/http-signature/lib/signer.js | 179 - .../node_modules/http-signature/lib/util.js | 249 - .../node_modules/http-signature/lib/verify.js | 42 - .../node_modules/asn1/.npmignore | 2 - .../http-signature/node_modules/asn1/LICENSE | 19 - .../node_modules/asn1/README.md | 50 - .../node_modules/asn1/lib/ber/errors.js | 13 - .../node_modules/asn1/lib/ber/index.js | 27 - .../node_modules/asn1/lib/ber/reader.js | 267 - .../node_modules/asn1/lib/ber/types.js | 36 - .../node_modules/asn1/lib/ber/writer.js | 317 - .../node_modules/asn1/lib/index.js | 20 - .../node_modules/asn1/package.json | 43 - .../node_modules/asn1/tst/ber/reader.test.js | 172 - .../node_modules/asn1/tst/ber/writer.test.js | 296 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 196 - .../node_modules/assert-plus/package.json | 21 - .../node_modules/ctype/CHANGELOG | 71 - .../http-signature/node_modules/ctype/LICENSE | 24 - .../http-signature/node_modules/ctype/README | 82 - .../node_modules/ctype/README.old | 298 - .../http-signature/node_modules/ctype/ctf.js | 245 - .../http-signature/node_modules/ctype/ctio.js | 1485 - .../node_modules/ctype/ctype.js | 944 - .../ctype/man/man3ctype/ctio.3ctype | 241 - .../node_modules/ctype/package.json | 18 - .../node_modules/ctype/tools/jsl.conf | 129 - .../node_modules/ctype/tools/jsstyle | 839 - .../node_modules/ctype/tst/ctf/float.json | 13 - .../node_modules/ctype/tst/ctf/int.json | 13 - .../node_modules/ctype/tst/ctf/psinfo.json | 104 - .../node_modules/ctype/tst/ctf/struct.json | 19 - .../node_modules/ctype/tst/ctf/tst.fail.js | 39 - .../node_modules/ctype/tst/ctf/tst.float.js | 14 - .../node_modules/ctype/tst/ctf/tst.int.js | 14 - .../node_modules/ctype/tst/ctf/tst.psinfo.js | 17 - .../node_modules/ctype/tst/ctf/tst.struct.js | 18 - .../node_modules/ctype/tst/ctf/tst.typedef.js | 15 - .../node_modules/ctype/tst/ctf/typedef.json | 14 - .../ctype/tst/ctio/float/tst.rfloat.js | 767 - .../ctype/tst/ctio/float/tst.wfloat.js | 753 - .../node_modules/ctype/tst/ctio/int/tst.64.js | 638 - .../ctype/tst/ctio/int/tst.rint.js | 101 - .../ctype/tst/ctio/int/tst.wbounds.js | 53 - .../ctype/tst/ctio/int/tst.wint.js | 92 - .../ctype/tst/ctio/uint/tst.64.js | 451 - .../ctype/tst/ctio/uint/tst.roundtrip.js | 81 - .../ctype/tst/ctio/uint/tst.ruint.js | 95 - .../ctype/tst/ctio/uint/tst.wuint.js | 156 - .../ctype/tst/ctype/tst.basicr.js | 50 - .../ctype/tst/ctype/tst.basicw.js | 44 - .../node_modules/ctype/tst/ctype/tst.char.js | 42 - .../ctype/tst/ctype/tst.endian.js | 45 - .../ctype/tst/ctype/tst.oldwrite.js | 28 - .../ctype/tst/ctype/tst.readSize.js | 128 - .../ctype/tst/ctype/tst.structw.js | 28 - .../ctype/tst/ctype/tst.writeStruct.js | 31 - .../node_modules/http-signature/package.json | 36 - .../node_modules/json-stringify-safe/LICENSE | 27 - .../json-stringify-safe/README.md | 49 - .../json-stringify-safe/package.json | 33 - .../json-stringify-safe/stringify.js | 39 - .../node_modules/json-stringify-safe/test.js | 128 - .../request/node_modules/mime/LICENSE | 19 - .../request/node_modules/mime/README.md | 66 - .../request/node_modules/mime/mime.js | 114 - .../request/node_modules/mime/package.json | 36 - .../request/node_modules/mime/test.js | 84 - .../node_modules/mime/types/mime.types | 1588 - .../node_modules/mime/types/node.types | 77 - .../request/node_modules/node-uuid/.npmignore | 2 - .../request/node_modules/node-uuid/LICENSE.md | 2 - .../request/node_modules/node-uuid/README.md | 207 - .../node-uuid/benchmark/README.md | 53 - .../node-uuid/benchmark/bench.gnu | 174 - .../node_modules/node-uuid/benchmark/bench.sh | 34 - .../node-uuid/benchmark/benchmark-native.c | 34 - .../node-uuid/benchmark/benchmark.js | 84 - .../node_modules/node-uuid/component.json | 18 - .../node_modules/node-uuid/package.json | 36 - .../node_modules/node-uuid/test/compare_v1.js | 63 - .../node_modules/node-uuid/test/test.html | 17 - .../node_modules/node-uuid/test/test.js | 228 - .../request/node_modules/node-uuid/uuid.js | 245 - .../request/node_modules/oauth-sign/LICENSE | 55 - .../request/node_modules/oauth-sign/README.md | 4 - .../request/node_modules/oauth-sign/index.js | 43 - .../node_modules/oauth-sign/package.json | 31 - .../request/node_modules/oauth-sign/test.js | 49 - .../request/node_modules/qs/.gitmodules | 6 - .../request/node_modules/qs/.npmignore | 7 - .../request/node_modules/qs/Readme.md | 58 - .../request/node_modules/qs/index.js | 366 - .../request/node_modules/qs/package.json | 38 - .../node_modules/tough-cookie/.jshintrc | 72 - .../node_modules/tough-cookie/.npmignore | 3 - .../request/node_modules/tough-cookie/LICENSE | 78 - .../node_modules/tough-cookie/README.md | 380 - .../tough-cookie/generate-pubsuffix.js | 230 - .../node_modules/tough-cookie/lib/cookie.js | 947 - .../node_modules/tough-cookie/lib/memstore.js | 102 - .../tough-cookie/lib/pubsuffix.js | 69 - .../node_modules/punycode/LICENSE-GPL.txt | 278 - .../node_modules/punycode/LICENSE-MIT.txt | 20 - .../node_modules/punycode/README.md | 162 - .../node_modules/punycode/package.json | 74 - .../node_modules/punycode/punycode.js | 507 - .../node_modules/punycode/punycode.min.js | 2 - .../node_modules/tough-cookie/package.json | 46 - .../tough-cookie/public-suffix.txt | 5229 -- .../request/node_modules/tough-cookie/test.js | 1340 - .../request/node_modules/tunnel-agent/LICENSE | 55 - .../node_modules/tunnel-agent/README.md | 4 - .../node_modules/tunnel-agent/index.js | 227 - .../node_modules/tunnel-agent/package.json | 29 - .../node_modules/request/package.json | 57 - .../download/node_modules/request/request.js | 1260 - .../download/node_modules/through2/.jshintrc | 59 - .../download/node_modules/through2/.npmignore | 1 - .../node_modules/through2/.travis.yml | 17 - .../download/node_modules/through2/LICENSE | 39 - .../download/node_modules/through2/README.md | 131 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 27 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 69 - .../lib/_stream_passthrough.js | 41 - .../readable-stream/lib/_stream_readable.js | 928 - .../readable-stream/lib/_stream_transform.js | 205 - .../readable-stream/lib/_stream_writable.js | 378 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 200 - .../node_modules/string_decoder/package.json | 32 - .../node_modules/readable-stream/package.json | 38 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 6 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../through2/node_modules/xtend/.npmignore | 1 - .../through2/node_modules/xtend/LICENCE | 19 - .../through2/node_modules/xtend/Makefile | 4 - .../through2/node_modules/xtend/README.md | 27 - .../through2/node_modules/xtend/has-keys.js | 7 - .../through2/node_modules/xtend/index.js | 25 - .../through2/node_modules/xtend/mutable.js | 25 - .../xtend/node_modules/object-keys/.npmignore | 1 - .../node_modules/object-keys/.travis.yml | 5 - .../xtend/node_modules/object-keys/README.md | 39 - .../xtend/node_modules/object-keys/foreach.js | 40 - .../xtend/node_modules/object-keys/index.js | 2 - .../node_modules/object-keys/isArguments.js | 16 - .../node_modules/object-keys/package.json | 56 - .../xtend/node_modules/object-keys/shim.js | 62 - .../node_modules/object-keys/test/foreach.js | 156 - .../node_modules/object-keys/test/index.js | 6 - .../object-keys/test/isArguments.js | 10 - .../node_modules/object-keys/test/shim.js | 134 - .../through2/node_modules/xtend/package.json | 72 - .../through2/node_modules/xtend/test.js | 63 - .../node_modules/through2/package.json | 44 - .../node_modules/through2/test/basic-test.js | 334 - .../node_modules/through2/test/bench.js | 42 - .../node_modules/through2/test/sauce.js | 38 - .../node_modules/through2/test/test.js | 9 - .../node_modules/through2/through2.js | 78 - .../node_modules/download/package.json | 51 - .../bin-wrapper/node_modules/isbin/.npmignore | 1 - .../node_modules/isbin/.travis.yml | 3 - .../bin-wrapper/node_modules/isbin/History.md | 20 - .../bin-wrapper/node_modules/isbin/Makefile | 6 - .../bin-wrapper/node_modules/isbin/README.md | 59 - .../bin-wrapper/node_modules/isbin/index.js | 1 - .../node_modules/isbin/lib/index.js | 51 - .../isbin/node_modules/async/.gitmodules | 9 - .../isbin/node_modules/async/.npmignore | 4 - .../isbin/node_modules/async/LICENSE | 19 - .../isbin/node_modules/async/Makefile | 25 - .../isbin/node_modules/async/README.md | 1021 - .../isbin/node_modules/async/index.js | 3 - .../isbin/node_modules/async/lib/async.js | 692 - .../isbin/node_modules/async/package.json | 32 - .../node_modules/isbin/package.json | 41 - .../node_modules/isbin/test/isbin.js | 39 - .../node_modules/isbin/test/mocha.opts | 4 - .../node_modules/mout/.editorconfig | 20 - .../bin-wrapper/node_modules/mout/.jshintrc | 69 - .../bin-wrapper/node_modules/mout/.npmignore | 30 - .../bin-wrapper/node_modules/mout/.travis.yml | 13 - .../node_modules/mout/CHANGELOG.md | 93 - .../node_modules/mout/CONTRIBUTING.md | 61 - .../bin-wrapper/node_modules/mout/LICENSE.md | 21 - .../bin-wrapper/node_modules/mout/README.md | 63 - .../bin-wrapper/node_modules/mout/array.js | 46 - .../node_modules/mout/array/append.js | 21 - .../node_modules/mout/array/collect.js | 27 - .../node_modules/mout/array/combine.js | 22 - .../node_modules/mout/array/compact.js | 13 - .../node_modules/mout/array/contains.js | 10 - .../node_modules/mout/array/difference.js | 22 - .../node_modules/mout/array/every.js | 27 - .../node_modules/mout/array/filter.js | 27 - .../node_modules/mout/array/find.js | 13 - .../node_modules/mout/array/findIndex.js | 23 - .../node_modules/mout/array/flatten.js | 43 - .../node_modules/mout/array/forEach.js | 23 - .../node_modules/mout/array/indexOf.js | 28 - .../node_modules/mout/array/insert.js | 15 - .../node_modules/mout/array/intersection.js | 23 - .../node_modules/mout/array/invoke.js | 23 - .../node_modules/mout/array/join.js | 17 - .../node_modules/mout/array/lastIndexOf.js | 28 - .../node_modules/mout/array/map.js | 23 - .../node_modules/mout/array/max.js | 35 - .../node_modules/mout/array/min.js | 35 - .../node_modules/mout/array/pick.js | 14 - .../node_modules/mout/array/pluck.js | 12 - .../node_modules/mout/array/range.js | 27 - .../node_modules/mout/array/reduce.js | 33 - .../node_modules/mout/array/reduceRight.js | 34 - .../node_modules/mout/array/reject.js | 26 - .../node_modules/mout/array/remove.js | 13 - .../node_modules/mout/array/removeAll.js | 15 - .../node_modules/mout/array/shuffle.js | 29 - .../node_modules/mout/array/some.js | 27 - .../node_modules/mout/array/sort.js | 55 - .../node_modules/mout/array/split.js | 35 - .../node_modules/mout/array/toLookup.js | 28 - .../node_modules/mout/array/union.js | 19 - .../node_modules/mout/array/unique.js | 17 - .../node_modules/mout/array/xor.js | 26 - .../node_modules/mout/array/zip.js | 29 - .../node_modules/mout/collection.js | 22 - .../node_modules/mout/collection/contains.js | 9 - .../node_modules/mout/collection/every.js | 9 - .../node_modules/mout/collection/filter.js | 23 - .../node_modules/mout/collection/find.js | 10 - .../node_modules/mout/collection/forEach.js | 9 - .../node_modules/mout/collection/make_.js | 19 - .../node_modules/mout/collection/map.js | 23 - .../node_modules/mout/collection/max.js | 10 - .../node_modules/mout/collection/min.js | 10 - .../node_modules/mout/collection/pluck.js | 14 - .../node_modules/mout/collection/reduce.js | 9 - .../node_modules/mout/collection/reject.js | 16 - .../node_modules/mout/collection/size.js | 19 - .../node_modules/mout/collection/some.js | 9 - .../bin-wrapper/node_modules/mout/date.js | 21 - .../node_modules/mout/date/dayOfTheYear.js | 13 - .../node_modules/mout/date/diff.js | 130 - .../node_modules/mout/date/i18n/en-US.js | 61 - .../node_modules/mout/date/i18n/pt-BR.js | 61 - .../node_modules/mout/date/i18n_.js | 14 - .../node_modules/mout/date/isLeapYear.js | 15 - .../node_modules/mout/date/isSame.js | 16 - .../node_modules/mout/date/parseIso.js | 146 - .../node_modules/mout/date/startOf.js | 54 - .../node_modules/mout/date/strftime.js | 118 - .../node_modules/mout/date/timezoneAbbr.js | 17 - .../node_modules/mout/date/timezoneOffset.js | 16 - .../mout/date/totalDaysInMonth.js | 25 - .../node_modules/mout/date/totalDaysInYear.js | 13 - .../node_modules/mout/date/weekOfTheYear.js | 16 - .../node_modules/mout/doc/array.md | 773 - .../node_modules/mout/doc/collection.md | 233 - .../bin-wrapper/node_modules/mout/doc/date.md | 295 - .../node_modules/mout/doc/function.md | 174 - .../bin-wrapper/node_modules/mout/doc/lang.md | 385 - .../bin-wrapper/node_modules/mout/doc/math.md | 298 - .../node_modules/mout/doc/number.md | 225 - .../node_modules/mout/doc/object.md | 780 - .../node_modules/mout/doc/queryString.md | 115 - .../node_modules/mout/doc/random.md | 218 - .../node_modules/mout/doc/string.md | 594 - .../bin-wrapper/node_modules/mout/doc/time.md | 64 - .../bin-wrapper/node_modules/mout/function.js | 18 - .../node_modules/mout/function/bind.js | 23 - .../node_modules/mout/function/compose.js | 23 - .../node_modules/mout/function/debounce.js | 29 - .../node_modules/mout/function/func.js | 14 - .../mout/function/makeIterator_.js | 34 - .../node_modules/mout/function/partial.js | 19 - .../node_modules/mout/function/prop.js | 14 - .../node_modules/mout/function/series.js | 22 - .../node_modules/mout/function/throttle.js | 32 - .../node_modules/mout/function/timeout.js | 21 - .../bin-wrapper/node_modules/mout/index.js | 24 - .../bin-wrapper/node_modules/mout/lang.js | 36 - .../node_modules/mout/lang/clone.js | 49 - .../node_modules/mout/lang/createObject.js | 18 - .../node_modules/mout/lang/ctorApply.js | 17 - .../node_modules/mout/lang/deepClone.js | 48 - .../node_modules/mout/lang/defaults.js | 17 - .../mout/lang/inheritPrototype.js | 16 - .../bin-wrapper/node_modules/mout/lang/is.js | 23 - .../node_modules/mout/lang/isArguments.js | 15 - .../node_modules/mout/lang/isArray.js | 8 - .../node_modules/mout/lang/isBoolean.js | 8 - .../node_modules/mout/lang/isDate.js | 8 - .../node_modules/mout/lang/isEmpty.js | 24 - .../node_modules/mout/lang/isFinite.js | 21 - .../node_modules/mout/lang/isFunction.js | 8 - .../node_modules/mout/lang/isInteger.js | 12 - .../node_modules/mout/lang/isKind.js | 9 - .../node_modules/mout/lang/isNaN.js | 15 - .../node_modules/mout/lang/isNull.js | 9 - .../node_modules/mout/lang/isNumber.js | 8 - .../node_modules/mout/lang/isObject.js | 8 - .../node_modules/mout/lang/isPlainObject.js | 14 - .../node_modules/mout/lang/isRegExp.js | 8 - .../node_modules/mout/lang/isString.js | 8 - .../node_modules/mout/lang/isUndefined.js | 10 - .../node_modules/mout/lang/isnt.js | 12 - .../node_modules/mout/lang/kindOf.js | 20 - .../node_modules/mout/lang/toArray.js | 31 - .../node_modules/mout/lang/toString.js | 13 - .../bin-wrapper/node_modules/mout/math.js | 19 - .../node_modules/mout/math/ceil.js | 11 - .../node_modules/mout/math/clamp.js | 9 - .../node_modules/mout/math/countSteps.js | 16 - .../node_modules/mout/math/floor.js | 10 - .../node_modules/mout/math/inRange.js | 11 - .../node_modules/mout/math/isNear.js | 9 - .../node_modules/mout/math/lerp.js | 11 - .../node_modules/mout/math/loop.js | 10 - .../bin-wrapper/node_modules/mout/math/map.js | 11 - .../node_modules/mout/math/norm.js | 9 - .../node_modules/mout/math/round.js | 12 - .../bin-wrapper/node_modules/mout/number.js | 21 - .../node_modules/mout/number/MAX_INT.js | 6 - .../node_modules/mout/number/MAX_UINT.js | 6 - .../node_modules/mout/number/MIN_INT.js | 6 - .../node_modules/mout/number/abbreviate.js | 35 - .../mout/number/currencyFormat.js | 26 - .../mout/number/enforcePrecision.js | 13 - .../node_modules/mout/number/pad.js | 12 - .../node_modules/mout/number/rol.js | 10 - .../node_modules/mout/number/ror.js | 10 - .../node_modules/mout/number/sign.js | 15 - .../node_modules/mout/number/toInt.js | 15 - .../node_modules/mout/number/toUInt.js | 13 - .../node_modules/mout/number/toUInt31.js | 13 - .../bin-wrapper/node_modules/mout/object.js | 42 - .../node_modules/mout/object/bindAll.js | 18 - .../node_modules/mout/object/contains.js | 13 - .../node_modules/mout/object/deepEquals.js | 27 - .../node_modules/mout/object/deepFillIn.js | 32 - .../node_modules/mout/object/deepMatches.js | 55 - .../node_modules/mout/object/deepMixIn.js | 34 - .../node_modules/mout/object/equals.js | 36 - .../node_modules/mout/object/every.js | 23 - .../node_modules/mout/object/fillIn.js | 20 - .../node_modules/mout/object/filter.js | 20 - .../node_modules/mout/object/find.js | 21 - .../node_modules/mout/object/forIn.js | 62 - .../node_modules/mout/object/forOwn.js | 19 - .../node_modules/mout/object/functions.js | 18 - .../node_modules/mout/object/get.js | 20 - .../node_modules/mout/object/has.js | 15 - .../node_modules/mout/object/hasOwn.js | 12 - .../node_modules/mout/object/keys.js | 16 - .../node_modules/mout/object/map.js | 18 - .../node_modules/mout/object/matches.js | 20 - .../node_modules/mout/object/max.js | 12 - .../node_modules/mout/object/merge.js | 40 - .../node_modules/mout/object/min.js | 12 - .../node_modules/mout/object/mixIn.js | 28 - .../node_modules/mout/object/namespace.js | 19 - .../node_modules/mout/object/pick.js | 18 - .../node_modules/mout/object/pluck.js | 13 - .../node_modules/mout/object/reduce.js | 29 - .../node_modules/mout/object/reject.js | 16 - .../node_modules/mout/object/set.js | 17 - .../node_modules/mout/object/size.js | 16 - .../node_modules/mout/object/some.js | 21 - .../node_modules/mout/object/unset.js | 23 - .../node_modules/mout/object/values.js | 16 - .../node_modules/mout/package.json | 119 - .../node_modules/mout/queryString.js | 15 - .../node_modules/mout/queryString/contains.js | 12 - .../node_modules/mout/queryString/decode.js | 21 - .../node_modules/mout/queryString/encode.js | 15 - .../node_modules/mout/queryString/getParam.js | 15 - .../node_modules/mout/queryString/getQuery.js | 13 - .../node_modules/mout/queryString/parse.js | 13 - .../node_modules/mout/queryString/setParam.js | 28 - .../bin-wrapper/node_modules/mout/random.js | 16 - .../node_modules/mout/random/choice.js | 15 - .../node_modules/mout/random/guid.js | 24 - .../node_modules/mout/random/rand.js | 15 - .../node_modules/mout/random/randBit.js | 11 - .../node_modules/mout/random/randHex.js | 19 - .../node_modules/mout/random/randInt.js | 18 - .../node_modules/mout/random/randSign.js | 11 - .../node_modules/mout/random/random.js | 18 - .../node_modules/mout/src/array.js | 46 - .../node_modules/mout/src/array/append.js | 21 - .../node_modules/mout/src/array/collect.js | 26 - .../node_modules/mout/src/array/combine.js | 22 - .../node_modules/mout/src/array/compact.js | 13 - .../node_modules/mout/src/array/contains.js | 10 - .../node_modules/mout/src/array/difference.js | 19 - .../node_modules/mout/src/array/every.js | 27 - .../node_modules/mout/src/array/filter.js | 26 - .../node_modules/mout/src/array/find.js | 13 - .../node_modules/mout/src/array/findIndex.js | 23 - .../node_modules/mout/src/array/flatten.js | 42 - .../node_modules/mout/src/array/forEach.js | 23 - .../node_modules/mout/src/array/indexOf.js | 28 - .../node_modules/mout/src/array/insert.js | 14 - .../mout/src/array/intersection.js | 20 - .../node_modules/mout/src/array/invoke.js | 23 - .../node_modules/mout/src/array/join.js | 17 - .../mout/src/array/lastIndexOf.js | 28 - .../node_modules/mout/src/array/map.js | 22 - .../node_modules/mout/src/array/max.js | 34 - .../node_modules/mout/src/array/min.js | 34 - .../node_modules/mout/src/array/pick.js | 14 - .../node_modules/mout/src/array/pluck.js | 12 - .../node_modules/mout/src/array/range.js | 27 - .../node_modules/mout/src/array/reduce.js | 33 - .../mout/src/array/reduceRight.js | 34 - .../node_modules/mout/src/array/reject.js | 25 - .../node_modules/mout/src/array/remove.js | 13 - .../node_modules/mout/src/array/removeAll.js | 15 - .../node_modules/mout/src/array/shuffle.js | 28 - .../node_modules/mout/src/array/some.js | 27 - .../node_modules/mout/src/array/sort.js | 55 - .../node_modules/mout/src/array/split.js | 35 - .../node_modules/mout/src/array/toLookup.js | 28 - .../node_modules/mout/src/array/union.js | 18 - .../node_modules/mout/src/array/unique.js | 16 - .../node_modules/mout/src/array/xor.js | 24 - .../node_modules/mout/src/array/zip.js | 27 - .../node_modules/mout/src/collection.js | 22 - .../mout/src/collection/contains.js | 7 - .../node_modules/mout/src/collection/every.js | 7 - .../mout/src/collection/filter.js | 22 - .../node_modules/mout/src/collection/find.js | 8 - .../mout/src/collection/forEach.js | 7 - .../node_modules/mout/src/collection/make_.js | 19 - .../node_modules/mout/src/collection/map.js | 20 - .../node_modules/mout/src/collection/max.js | 8 - .../node_modules/mout/src/collection/min.js | 8 - .../node_modules/mout/src/collection/pluck.js | 14 - .../mout/src/collection/reduce.js | 7 - .../mout/src/collection/reject.js | 15 - .../node_modules/mout/src/collection/size.js | 18 - .../node_modules/mout/src/collection/some.js | 7 - .../bin-wrapper/node_modules/mout/src/date.js | 21 - .../mout/src/date/dayOfTheYear.js | 13 - .../node_modules/mout/src/date/diff.js | 128 - .../node_modules/mout/src/date/i18n/en-US.js | 61 - .../node_modules/mout/src/date/i18n/pt-BR.js | 61 - .../node_modules/mout/src/date/i18n_.js | 13 - .../node_modules/mout/src/date/isLeapYear.js | 15 - .../node_modules/mout/src/date/isSame.js | 16 - .../node_modules/mout/src/date/parseIso.js | 146 - .../node_modules/mout/src/date/startOf.js | 54 - .../node_modules/mout/src/date/strftime.js | 113 - .../mout/src/date/timezoneAbbr.js | 17 - .../mout/src/date/timezoneOffset.js | 16 - .../mout/src/date/totalDaysInMonth.js | 24 - .../mout/src/date/totalDaysInYear.js | 13 - .../mout/src/date/weekOfTheYear.js | 16 - .../node_modules/mout/src/function.js | 18 - .../node_modules/mout/src/function/bind.js | 23 - .../node_modules/mout/src/function/compose.js | 23 - .../mout/src/function/debounce.js | 29 - .../node_modules/mout/src/function/func.js | 14 - .../mout/src/function/makeIterator_.js | 33 - .../node_modules/mout/src/function/partial.js | 19 - .../node_modules/mout/src/function/prop.js | 14 - .../node_modules/mout/src/function/series.js | 22 - .../mout/src/function/throttle.js | 32 - .../node_modules/mout/src/function/timeout.js | 21 - .../node_modules/mout/src/index.js | 24 - .../bin-wrapper/node_modules/mout/src/lang.js | 36 - .../node_modules/mout/src/lang/clone.js | 47 - .../mout/src/lang/createObject.js | 18 - .../node_modules/mout/src/lang/ctorApply.js | 17 - .../node_modules/mout/src/lang/deepClone.js | 45 - .../node_modules/mout/src/lang/defaults.js | 16 - .../mout/src/lang/inheritPrototype.js | 16 - .../node_modules/mout/src/lang/is.js | 23 - .../node_modules/mout/src/lang/isArguments.js | 15 - .../node_modules/mout/src/lang/isArray.js | 8 - .../node_modules/mout/src/lang/isBoolean.js | 8 - .../node_modules/mout/src/lang/isDate.js | 8 - .../node_modules/mout/src/lang/isEmpty.js | 23 - .../node_modules/mout/src/lang/isFinite.js | 21 - .../node_modules/mout/src/lang/isFunction.js | 8 - .../node_modules/mout/src/lang/isInteger.js | 12 - .../node_modules/mout/src/lang/isKind.js | 9 - .../node_modules/mout/src/lang/isNaN.js | 15 - .../node_modules/mout/src/lang/isNull.js | 9 - .../node_modules/mout/src/lang/isNumber.js | 8 - .../node_modules/mout/src/lang/isObject.js | 8 - .../mout/src/lang/isPlainObject.js | 14 - .../node_modules/mout/src/lang/isRegExp.js | 8 - .../node_modules/mout/src/lang/isString.js | 8 - .../node_modules/mout/src/lang/isUndefined.js | 10 - .../node_modules/mout/src/lang/isnt.js | 12 - .../node_modules/mout/src/lang/kindOf.js | 20 - .../node_modules/mout/src/lang/toArray.js | 31 - .../node_modules/mout/src/lang/toString.js | 13 - .../bin-wrapper/node_modules/mout/src/math.js | 19 - .../node_modules/mout/src/math/ceil.js | 11 - .../node_modules/mout/src/math/clamp.js | 9 - .../node_modules/mout/src/math/countSteps.js | 16 - .../node_modules/mout/src/math/floor.js | 10 - .../node_modules/mout/src/math/inRange.js | 11 - .../node_modules/mout/src/math/isNear.js | 9 - .../node_modules/mout/src/math/lerp.js | 11 - .../node_modules/mout/src/math/loop.js | 10 - .../node_modules/mout/src/math/map.js | 10 - .../node_modules/mout/src/math/norm.js | 9 - .../node_modules/mout/src/math/round.js | 12 - .../node_modules/mout/src/number.js | 21 - .../node_modules/mout/src/number/MAX_INT.js | 6 - .../node_modules/mout/src/number/MAX_UINT.js | 6 - .../node_modules/mout/src/number/MIN_INT.js | 6 - .../mout/src/number/abbreviate.js | 35 - .../mout/src/number/currencyFormat.js | 26 - .../mout/src/number/enforcePrecision.js | 13 - .../node_modules/mout/src/number/pad.js | 12 - .../node_modules/mout/src/number/rol.js | 10 - .../node_modules/mout/src/number/ror.js | 10 - .../node_modules/mout/src/number/sign.js | 15 - .../node_modules/mout/src/number/toInt.js | 15 - .../node_modules/mout/src/number/toUInt.js | 13 - .../node_modules/mout/src/number/toUInt31.js | 13 - .../node_modules/mout/src/object.js | 42 - .../node_modules/mout/src/object/bindAll.js | 16 - .../node_modules/mout/src/object/contains.js | 13 - .../mout/src/object/deepEquals.js | 26 - .../mout/src/object/deepFillIn.js | 31 - .../mout/src/object/deepMatches.js | 54 - .../node_modules/mout/src/object/deepMixIn.js | 33 - .../node_modules/mout/src/object/equals.js | 34 - .../node_modules/mout/src/object/every.js | 22 - .../node_modules/mout/src/object/fillIn.js | 19 - .../node_modules/mout/src/object/filter.js | 19 - .../node_modules/mout/src/object/find.js | 20 - .../node_modules/mout/src/object/forIn.js | 62 - .../node_modules/mout/src/object/forOwn.js | 18 - .../node_modules/mout/src/object/functions.js | 18 - .../node_modules/mout/src/object/get.js | 20 - .../node_modules/mout/src/object/has.js | 15 - .../node_modules/mout/src/object/hasOwn.js | 12 - .../node_modules/mout/src/object/keys.js | 16 - .../node_modules/mout/src/object/map.js | 17 - .../node_modules/mout/src/object/matches.js | 20 - .../node_modules/mout/src/object/max.js | 11 - .../node_modules/mout/src/object/merge.js | 38 - .../node_modules/mout/src/object/min.js | 11 - .../node_modules/mout/src/object/mixIn.js | 28 - .../node_modules/mout/src/object/namespace.js | 19 - .../node_modules/mout/src/object/pick.js | 18 - .../node_modules/mout/src/object/pluck.js | 12 - .../node_modules/mout/src/object/reduce.js | 28 - .../node_modules/mout/src/object/reject.js | 15 - .../node_modules/mout/src/object/set.js | 17 - .../node_modules/mout/src/object/size.js | 16 - .../node_modules/mout/src/object/some.js | 20 - .../node_modules/mout/src/object/unset.js | 23 - .../node_modules/mout/src/object/values.js | 16 - .../node_modules/mout/src/queryString.js | 15 - .../mout/src/queryString/contains.js | 12 - .../mout/src/queryString/decode.js | 20 - .../mout/src/queryString/encode.js | 15 - .../mout/src/queryString/getParam.js | 14 - .../mout/src/queryString/getQuery.js | 13 - .../mout/src/queryString/parse.js | 12 - .../mout/src/queryString/setParam.js | 28 - .../node_modules/mout/src/random.js | 16 - .../node_modules/mout/src/random/choice.js | 14 - .../node_modules/mout/src/random/guid.js | 23 - .../node_modules/mout/src/random/rand.js | 13 - .../node_modules/mout/src/random/randBit.js | 11 - .../node_modules/mout/src/random/randHex.js | 19 - .../node_modules/mout/src/random/randInt.js | 16 - .../node_modules/mout/src/random/randSign.js | 11 - .../node_modules/mout/src/random/random.js | 18 - .../node_modules/mout/src/string.js | 45 - .../mout/src/string/WHITE_SPACES.js | 12 - .../node_modules/mout/src/string/camelCase.js | 16 - .../node_modules/mout/src/string/contains.js | 14 - .../node_modules/mout/src/string/crop.js | 11 - .../node_modules/mout/src/string/endsWith.js | 13 - .../mout/src/string/escapeHtml.js | 18 - .../mout/src/string/escapeRegExp.js | 15 - .../mout/src/string/escapeUnicode.js | 21 - .../node_modules/mout/src/string/hyphenate.js | 12 - .../mout/src/string/interpolate.js | 18 - .../node_modules/mout/src/string/lowerCase.js | 11 - .../node_modules/mout/src/string/lpad.js | 16 - .../node_modules/mout/src/string/ltrim.js | 33 - .../node_modules/mout/src/string/makePath.js | 13 - .../mout/src/string/normalizeLineBreaks.js | 18 - .../mout/src/string/pascalCase.js | 11 - .../mout/src/string/properCase.js | 11 - .../mout/src/string/removeNonASCII.js | 14 - .../mout/src/string/removeNonWord.js | 11 - .../node_modules/mout/src/string/repeat.js | 13 - .../node_modules/mout/src/string/replace.js | 32 - .../mout/src/string/replaceAccents.js | 36 - .../node_modules/mout/src/string/rpad.js | 14 - .../node_modules/mout/src/string/rtrim.js | 32 - .../mout/src/string/sentenceCase.js | 13 - .../node_modules/mout/src/string/slugify.js | 21 - .../mout/src/string/startsWith.js | 13 - .../mout/src/string/stripHtmlTags.js | 11 - .../node_modules/mout/src/string/trim.js | 12 - .../node_modules/mout/src/string/truncate.js | 20 - .../node_modules/mout/src/string/typecast.js | 29 - .../mout/src/string/unCamelCase.js | 23 - .../mout/src/string/underscore.js | 11 - .../mout/src/string/unescapeHtml.js | 18 - .../mout/src/string/unescapeUnicode.js | 16 - .../mout/src/string/unhyphenate.js | 10 - .../node_modules/mout/src/string/upperCase.js | 10 - .../bin-wrapper/node_modules/mout/src/time.js | 12 - .../node_modules/mout/src/time/convert.js | 41 - .../node_modules/mout/src/time/now.js | 12 - .../node_modules/mout/src/time/parseMs.js | 17 - .../mout/src/time/toTimeString.js | 23 - .../bin-wrapper/node_modules/mout/string.js | 45 - .../node_modules/mout/string/WHITE_SPACES.js | 12 - .../node_modules/mout/string/camelCase.js | 20 - .../node_modules/mout/string/contains.js | 14 - .../node_modules/mout/string/crop.js | 12 - .../node_modules/mout/string/endsWith.js | 13 - .../node_modules/mout/string/escapeHtml.js | 18 - .../node_modules/mout/string/escapeRegExp.js | 15 - .../node_modules/mout/string/escapeUnicode.js | 21 - .../node_modules/mout/string/hyphenate.js | 14 - .../node_modules/mout/string/interpolate.js | 18 - .../node_modules/mout/string/lowerCase.js | 11 - .../node_modules/mout/string/lpad.js | 17 - .../node_modules/mout/string/ltrim.js | 34 - .../node_modules/mout/string/makePath.js | 13 - .../mout/string/normalizeLineBreaks.js | 18 - .../node_modules/mout/string/pascalCase.js | 13 - .../node_modules/mout/string/properCase.js | 13 - .../mout/string/removeNonASCII.js | 14 - .../node_modules/mout/string/removeNonWord.js | 11 - .../node_modules/mout/string/repeat.js | 13 - .../node_modules/mout/string/replace.js | 33 - .../mout/string/replaceAccents.js | 36 - .../node_modules/mout/string/rpad.js | 15 - .../node_modules/mout/string/rtrim.js | 33 - .../node_modules/mout/string/sentenceCase.js | 15 - .../node_modules/mout/string/slugify.js | 24 - .../node_modules/mout/string/startsWith.js | 13 - .../node_modules/mout/string/stripHtmlTags.js | 11 - .../node_modules/mout/string/trim.js | 15 - .../node_modules/mout/string/truncate.js | 21 - .../node_modules/mout/string/typecast.js | 29 - .../node_modules/mout/string/unCamelCase.js | 23 - .../node_modules/mout/string/underscore.js | 13 - .../node_modules/mout/string/unescapeHtml.js | 18 - .../mout/string/unescapeUnicode.js | 16 - .../node_modules/mout/string/unhyphenate.js | 10 - .../node_modules/mout/string/upperCase.js | 10 - .../bin-wrapper/node_modules/mout/time.js | 12 - .../node_modules/mout/time/convert.js | 41 - .../bin-wrapper/node_modules/mout/time/now.js | 12 - .../node_modules/mout/time/parseMs.js | 17 - .../node_modules/mout/time/toTimeString.js | 24 - .../node_modules/progress/.npmignore | 4 - .../node_modules/progress/History.md | 42 - .../node_modules/progress/Makefile | 5 - .../node_modules/progress/Readme.md | 117 - .../node_modules/progress/index.js | 1 - .../progress/lib/node-progress.js | 183 - .../node_modules/progress/package.json | 30 - .../bin-wrapper/node_modules/which/LICENSE | 23 - .../bin-wrapper/node_modules/which/README.md | 5 - .../bin-wrapper/node_modules/which/bin/which | 14 - .../node_modules/which/package.json | 31 - .../bin-wrapper/node_modules/which/which.js | 104 - .../node_modules/bin-wrapper/package.json | 49 - .../gifsicle/node_modules/chalk/chalk.js | 62 - .../node_modules/ansi-styles/ansi-styles.js | 29 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../gifsicle/node_modules/chalk/package.json | 61 - .../gifsicle/node_modules/chalk/readme.md | 130 - .../node_modules/gifsicle/package.json | 53 - .../image-min/node_modules/gifsicle/readme.md | 50 - .../node_modules/gifsicle/vendor/gifsicle | Bin 170964 -> 0 bytes .../node_modules/jpegtran-bin/bin/jpegtran.js | 8 - .../node_modules/jpegtran-bin/lib/check.js | 32 - .../node_modules/jpegtran-bin/lib/jpegtran.js | 56 - .../node_modules/bin-wrapper/README.md | 67 - .../node_modules/bin-wrapper/bin-wrapper.js | 223 - .../bin-wrapper/node_modules/.bin/which | 1 - .../node_modules/download/README.md | 84 - .../node_modules/download/download.js | 100 - .../node_modules/decompress/README.md | 71 - .../node_modules/decompress/decompress.js | 168 - .../decompress/node_modules/.bin/rimraf | 1 - .../adm-zip/.idea/scopes/scope_settings.xml | 5 - .../node_modules/adm-zip/MIT-LICENSE.txt | 21 - .../decompress/node_modules/adm-zip/README.md | 64 - .../node_modules/adm-zip/adm-zip.js | 404 - .../adm-zip/headers/entryHeader.js | 261 - .../node_modules/adm-zip/headers/index.js | 2 - .../adm-zip/headers/mainHeader.js | 80 - .../node_modules/adm-zip/methods/deflater.js | 1578 - .../node_modules/adm-zip/methods/index.js | 2 - .../node_modules/adm-zip/methods/inflater.js | 448 - .../node_modules/adm-zip/package.json | 39 - .../adm-zip/test/assets/attributes_test.zip | Bin 4189 -> 0 bytes .../attributes_test/New folder/hidden.txt | 17 - .../New folder/hidden_readonly.txt | 17 - .../attributes_test/New folder/readonly.txt | 17 - .../attributes_test/New folder/somefile.txt | 17 - .../attributes_test/asd/New Text Document.txt | 0 .../assets/attributes_test/blank file.txt | 0 .../node_modules/adm-zip/test/assets/fast.zip | Bin 4194 -> 0 bytes .../adm-zip/test/assets/fastest.zip | Bin 4194 -> 0 bytes .../adm-zip/test/assets/linux_arc.zip | Bin 415 -> 0 bytes .../adm-zip/test/assets/maximum.zip | Bin 4086 -> 0 bytes .../adm-zip/test/assets/normal.zip | Bin 4170 -> 0 bytes .../adm-zip/test/assets/store.zip | Bin 5878 -> 0 bytes .../adm-zip/test/assets/ultra.zip | Bin 4086 -> 0 bytes .../node_modules/adm-zip/test/index.js | 5 - .../node_modules/adm-zip/util/constants.js | 84 - .../node_modules/adm-zip/util/errors.js | 35 - .../node_modules/adm-zip/util/fattr.js | 84 - .../node_modules/adm-zip/util/index.js | 4 - .../node_modules/adm-zip/util/utils.js | 145 - .../node_modules/adm-zip/zipEntry.js | 224 - .../node_modules/adm-zip/zipFile.js | 311 - .../decompress/node_modules/rimraf/AUTHORS | 6 - .../decompress/node_modules/rimraf/LICENSE | 23 - .../decompress/node_modules/rimraf/README.md | 30 - .../decompress/node_modules/rimraf/bin.js | 33 - .../node_modules/rimraf/package.json | 56 - .../decompress/node_modules/rimraf/rimraf.js | 178 - .../node_modules/rimraf/test/run.sh | 10 - .../node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-sync.js | 3 - .../node_modules/stream-combiner/.npmignore | 3 - .../node_modules/stream-combiner/.travis.yml | 4 - .../node_modules/stream-combiner/LICENSE | 22 - .../node_modules/stream-combiner/README.md | 29 - .../node_modules/stream-combiner/index.js | 39 - .../node_modules/duplexer/.npmignore | 3 - .../node_modules/duplexer/.travis.yml | 6 - .../node_modules/duplexer/LICENCE | 19 - .../node_modules/duplexer/README.md | 47 - .../node_modules/duplexer/index.js | 87 - .../node_modules/duplexer/package.json | 57 - .../node_modules/duplexer/test/index.js | 31 - .../node_modules/stream-combiner/package.json | 33 - .../stream-combiner/test/index.js | 52 - .../decompress/node_modules/tar/.npmignore | 5 - .../decompress/node_modules/tar/.travis.yml | 3 - .../decompress/node_modules/tar/LICENCE | 25 - .../decompress/node_modules/tar/README.md | 46 - .../node_modules/tar/examples/extracter.js | 11 - .../node_modules/tar/examples/reader.js | 36 - .../node_modules/tar/lib/buffer-entry.js | 30 - .../node_modules/tar/lib/entry-writer.js | 169 - .../decompress/node_modules/tar/lib/entry.js | 213 - .../tar/lib/extended-header-writer.js | 191 - .../node_modules/tar/lib/extended-header.js | 140 - .../node_modules/tar/lib/extract.js | 78 - .../tar/lib/global-header-writer.js | 14 - .../decompress/node_modules/tar/lib/header.js | 385 - .../decompress/node_modules/tar/lib/pack.js | 231 - .../decompress/node_modules/tar/lib/parse.js | 270 - .../tar/node_modules/block-stream/LICENCE | 25 - .../tar/node_modules/block-stream/README.md | 14 - .../block-stream/bench/block-stream-pause.js | 70 - .../block-stream/bench/block-stream.js | 68 - .../block-stream/bench/dropper-pause.js | 70 - .../block-stream/bench/dropper.js | 68 - .../node_modules/block-stream/block-stream.js | 209 - .../node_modules/block-stream/package.json | 36 - .../node_modules/block-stream/test/basic.js | 27 - .../block-stream/test/nopad-thorough.js | 68 - .../node_modules/block-stream/test/nopad.js | 57 - .../block-stream/test/pause-resume.js | 73 - .../block-stream/test/thorough.js | 68 - .../block-stream/test/two-stream.js | 59 - .../tar/node_modules/fstream/.npmignore | 5 - .../tar/node_modules/fstream/.travis.yml | 3 - .../tar/node_modules/fstream/LICENSE | 27 - .../tar/node_modules/fstream/README.md | 76 - .../fstream/examples/filter-pipe.js | 131 - .../tar/node_modules/fstream/examples/pipe.js | 115 - .../node_modules/fstream/examples/reader.js | 54 - .../fstream/examples/symlink-write.js | 24 - .../tar/node_modules/fstream/fstream.js | 31 - .../tar/node_modules/fstream/lib/abstract.js | 85 - .../tar/node_modules/fstream/lib/collect.js | 67 - .../node_modules/fstream/lib/dir-reader.js | 251 - .../node_modules/fstream/lib/dir-writer.js | 171 - .../node_modules/fstream/lib/file-reader.js | 147 - .../node_modules/fstream/lib/file-writer.js | 100 - .../tar/node_modules/fstream/lib/get-type.js | 32 - .../node_modules/fstream/lib/link-reader.js | 54 - .../node_modules/fstream/lib/link-writer.js | 95 - .../node_modules/fstream/lib/proxy-reader.js | 93 - .../node_modules/fstream/lib/proxy-writer.js | 109 - .../tar/node_modules/fstream/lib/reader.js | 260 - .../node_modules/fstream/lib/socket-reader.js | 38 - .../tar/node_modules/fstream/lib/writer.js | 389 - .../node_modules/graceful-fs/.npmignore | 1 - .../fstream/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 26 - .../node_modules/graceful-fs/graceful-fs.js | 161 - .../node_modules/graceful-fs/package.json | 49 - .../node_modules/graceful-fs/polyfills.js | 228 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 21 - .../tar/node_modules/fstream/package.json | 39 - .../tar/node_modules/inherits/LICENSE | 16 - .../tar/node_modules/inherits/README.md | 42 - .../tar/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../tar/node_modules/inherits/package.json | 33 - .../tar/node_modules/inherits/test.js | 25 - .../decompress/node_modules/tar/package.json | 36 - .../decompress/node_modules/tar/tar.js | 173 - .../tar/test/00-setup-fixtures.js | 53 - .../node_modules/tar/test/extract.js | 358 - .../node_modules/tar/test/fixtures.tgz | Bin 19205 -> 0 bytes .../node_modules/tar/test/header.js | 183 - .../tar/test/pack-no-proprietary.js | 854 - .../decompress/node_modules/tar/test/pack.js | 897 - .../decompress/node_modules/tar/test/parse.js | 359 - .../node_modules/tar/test/zz-cleanup.js | 20 - .../decompress/node_modules/tempfile/index.js | 8 - .../tempfile/node_modules/uuid/.npmignore | 2 - .../tempfile/node_modules/uuid/.travis.yml | 5 - .../tempfile/node_modules/uuid/LICENSE.md | 2 - .../tempfile/node_modules/uuid/README.md | 204 - .../node_modules/uuid/benchmark/README.md | 53 - .../node_modules/uuid/benchmark/bench.gnu | 174 - .../node_modules/uuid/benchmark/bench.sh | 34 - .../uuid/benchmark/benchmark-native.c | 34 - .../node_modules/uuid/benchmark/benchmark.js | 84 - .../node_modules/uuid/misc/compare.js | 62 - .../tempfile/node_modules/uuid/misc/perf.js | 102 - .../tempfile/node_modules/uuid/package.json | 52 - .../tempfile/node_modules/uuid/rng-browser.js | 31 - .../tempfile/node_modules/uuid/rng.js | 4 - .../node_modules/uuid/test/mocha.opts | 1 - .../tempfile/node_modules/uuid/test/test.js | 105 - .../tempfile/node_modules/uuid/uuid.js | 187 - .../node_modules/tempfile/package.json | 48 - .../node_modules/tempfile/readme.md | 36 - .../node_modules/decompress/package.json | 51 - .../node_modules/each-async/each-async.js | 72 - .../node_modules/each-async/package.json | 50 - .../node_modules/each-async/readme.md | 78 - .../download/node_modules/request/.npmignore | 2 - .../download/node_modules/request/.travis.yml | 12 - .../download/node_modules/request/LICENSE | 55 - .../download/node_modules/request/README.md | 366 - .../node_modules/request/dns-request.js | 7 - .../download/node_modules/request/index.js | 157 - .../download/node_modules/request/lib/copy.js | 8 - .../node_modules/request/lib/debug.js | 7 - .../node_modules/request/lib/getSafe.js | 34 - .../node_modules/request/lib/optional.js | 5 - .../request/node_modules/aws-sign2/LICENSE | 55 - .../request/node_modules/aws-sign2/README.md | 4 - .../request/node_modules/aws-sign2/index.js | 202 - .../node_modules/aws-sign2/package.json | 29 - .../node_modules/forever-agent/LICENSE | 55 - .../node_modules/forever-agent/README.md | 4 - .../node_modules/forever-agent/index.js | 119 - .../node_modules/forever-agent/package.json | 29 - .../request/node_modules/form-data/License | 19 - .../request/node_modules/form-data/Readme.md | 163 - .../node_modules/form-data/lib/form_data.js | 325 - .../node_modules/combined-stream/.npmignore | 3 - .../node_modules/combined-stream/License | 19 - .../node_modules/combined-stream/Makefile | 7 - .../node_modules/combined-stream/Readme.md | 132 - .../combined-stream/lib/combined_stream.js | 185 - .../node_modules/delayed-stream/.npmignore | 2 - .../node_modules/delayed-stream/License | 19 - .../node_modules/delayed-stream/Makefile | 7 - .../node_modules/delayed-stream/Readme.md | 154 - .../delayed-stream/lib/delayed_stream.js | 99 - .../node_modules/delayed-stream/package.json | 32 - .../delayed-stream/test/common.js | 6 - .../integration/test-delayed-http-upload.js | 38 - .../test-delayed-stream-auto-pause.js | 21 - .../integration/test-delayed-stream-pause.js | 14 - .../test/integration/test-delayed-stream.js | 48 - .../integration/test-handle-source-errors.js | 15 - .../test/integration/test-max-data-size.js | 18 - .../test/integration/test-pipe-resumes.js | 13 - .../test/integration/test-proxy-readable.js | 13 - .../node_modules/delayed-stream/test/run.js | 7 - .../node_modules/combined-stream/package.json | 33 - .../combined-stream/test/common.js | 23 - .../combined-stream/test/fixture/file1.txt | 256 - .../combined-stream/test/fixture/file2.txt | 256 - .../test/integration/test-callback-streams.js | 27 - .../test/integration/test-data-size.js | 34 - ...delayed-streams-and-buffers-and-strings.js | 38 - .../test/integration/test-delayed-streams.js | 35 - .../test/integration/test-empty-string.js | 39 - .../test/integration/test-is-stream-like.js | 17 - .../test/integration/test-max-data-size.js | 24 - .../test/integration/test-unpaused-streams.js | 30 - .../node_modules/combined-stream/test/run.js | 7 - .../node_modules/form-data/package.json | 46 - .../request/node_modules/hawk/.npmignore | 18 - .../request/node_modules/hawk/.travis.yml | 5 - .../request/node_modules/hawk/LICENSE | 24 - .../request/node_modules/hawk/Makefile | 10 - .../request/node_modules/hawk/README.md | 627 - .../node_modules/hawk/example/usage.js | 78 - .../request/node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../request/node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../request/node_modules/hawk/index.js | 1 - .../request/node_modules/hawk/lib/browser.js | 485 - .../request/node_modules/hawk/lib/client.js | 367 - .../request/node_modules/hawk/lib/crypto.js | 111 - .../request/node_modules/hawk/lib/index.js | 15 - .../request/node_modules/hawk/lib/server.js | 524 - .../request/node_modules/hawk/lib/utils.js | 183 - .../hawk/node_modules/boom/.npmignore | 18 - .../hawk/node_modules/boom/.travis.yml | 5 - .../hawk/node_modules/boom/LICENSE | 24 - .../hawk/node_modules/boom/Makefile | 11 - .../hawk/node_modules/boom/README.md | 6 - .../hawk/node_modules/boom/images/boom.png | Bin 29479 -> 0 bytes .../hawk/node_modules/boom/index.js | 1 - .../hawk/node_modules/boom/lib/index.js | 207 - .../hawk/node_modules/boom/package.json | 47 - .../hawk/node_modules/boom/test/index.js | 245 - .../hawk/node_modules/cryptiles/.npmignore | 18 - .../hawk/node_modules/cryptiles/.travis.yml | 5 - .../hawk/node_modules/cryptiles/LICENSE | 24 - .../hawk/node_modules/cryptiles/Makefile | 11 - .../hawk/node_modules/cryptiles/README.md | 6 - .../hawk/node_modules/cryptiles/index.js | 1 - .../hawk/node_modules/cryptiles/lib/index.js | 68 - .../hawk/node_modules/cryptiles/package.json | 48 - .../hawk/node_modules/cryptiles/test/index.js | 101 - .../hawk/node_modules/hoek/.npmignore | 18 - .../hawk/node_modules/hoek/.travis.yml | 5 - .../hawk/node_modules/hoek/LICENSE | 33 - .../hawk/node_modules/hoek/Makefile | 10 - .../hawk/node_modules/hoek/README.md | 436 - .../hawk/node_modules/hoek/images/hoek.png | Bin 37939 -> 0 bytes .../hawk/node_modules/hoek/index.js | 1 - .../hawk/node_modules/hoek/lib/escape.js | 132 - .../hawk/node_modules/hoek/lib/index.js | 585 - .../hawk/node_modules/hoek/package.json | 49 - .../hawk/node_modules/hoek/test/escaper.js | 86 - .../hawk/node_modules/hoek/test/index.js | 1078 - .../node_modules/hoek/test/modules/test1.js | 1 - .../node_modules/hoek/test/modules/test2.js | 1 - .../node_modules/hoek/test/modules/test3.js | 1 - .../hawk/node_modules/sntp/.npmignore | 18 - .../hawk/node_modules/sntp/.travis.yml | 5 - .../hawk/node_modules/sntp/LICENSE | 24 - .../hawk/node_modules/sntp/Makefile | 11 - .../hawk/node_modules/sntp/README.md | 68 - .../hawk/node_modules/sntp/examples/offset.js | 16 - .../hawk/node_modules/sntp/examples/time.js | 25 - .../hawk/node_modules/sntp/index.js | 1 - .../hawk/node_modules/sntp/lib/index.js | 409 - .../hawk/node_modules/sntp/package.json | 48 - .../hawk/node_modules/sntp/test/index.js | 359 - .../request/node_modules/hawk/package.json | 53 - .../request/node_modules/hawk/test/browser.js | 771 - .../request/node_modules/hawk/test/client.js | 206 - .../request/node_modules/hawk/test/crypto.js | 86 - .../request/node_modules/hawk/test/index.js | 316 - .../request/node_modules/hawk/test/message.js | 246 - .../request/node_modules/hawk/test/readme.js | 98 - .../request/node_modules/hawk/test/server.js | 686 - .../request/node_modules/hawk/test/uri.js | 456 - .../request/node_modules/hawk/test/utils.js | 120 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 75 - .../http-signature/http_signing.md | 296 - .../node_modules/http-signature/lib/index.js | 25 - .../node_modules/http-signature/lib/parser.js | 304 - .../node_modules/http-signature/lib/signer.js | 179 - .../node_modules/http-signature/lib/util.js | 249 - .../node_modules/http-signature/lib/verify.js | 42 - .../node_modules/asn1/.npmignore | 2 - .../http-signature/node_modules/asn1/LICENSE | 19 - .../node_modules/asn1/README.md | 50 - .../node_modules/asn1/lib/ber/errors.js | 13 - .../node_modules/asn1/lib/ber/index.js | 27 - .../node_modules/asn1/lib/ber/reader.js | 267 - .../node_modules/asn1/lib/ber/types.js | 36 - .../node_modules/asn1/lib/ber/writer.js | 317 - .../node_modules/asn1/lib/index.js | 20 - .../node_modules/asn1/package.json | 43 - .../node_modules/asn1/tst/ber/reader.test.js | 172 - .../node_modules/asn1/tst/ber/writer.test.js | 296 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 196 - .../node_modules/assert-plus/package.json | 21 - .../node_modules/ctype/CHANGELOG | 71 - .../http-signature/node_modules/ctype/LICENSE | 24 - .../http-signature/node_modules/ctype/README | 82 - .../node_modules/ctype/README.old | 298 - .../http-signature/node_modules/ctype/ctf.js | 245 - .../http-signature/node_modules/ctype/ctio.js | 1485 - .../node_modules/ctype/ctype.js | 944 - .../ctype/man/man3ctype/ctio.3ctype | 241 - .../node_modules/ctype/package.json | 18 - .../node_modules/ctype/tools/jsl.conf | 129 - .../node_modules/ctype/tools/jsstyle | 839 - .../node_modules/ctype/tst/ctf/float.json | 13 - .../node_modules/ctype/tst/ctf/int.json | 13 - .../node_modules/ctype/tst/ctf/psinfo.json | 104 - .../node_modules/ctype/tst/ctf/struct.json | 19 - .../node_modules/ctype/tst/ctf/tst.fail.js | 39 - .../node_modules/ctype/tst/ctf/tst.float.js | 14 - .../node_modules/ctype/tst/ctf/tst.int.js | 14 - .../node_modules/ctype/tst/ctf/tst.psinfo.js | 17 - .../node_modules/ctype/tst/ctf/tst.struct.js | 18 - .../node_modules/ctype/tst/ctf/tst.typedef.js | 15 - .../node_modules/ctype/tst/ctf/typedef.json | 14 - .../ctype/tst/ctio/float/tst.rfloat.js | 767 - .../ctype/tst/ctio/float/tst.wfloat.js | 753 - .../node_modules/ctype/tst/ctio/int/tst.64.js | 638 - .../ctype/tst/ctio/int/tst.rint.js | 101 - .../ctype/tst/ctio/int/tst.wbounds.js | 53 - .../ctype/tst/ctio/int/tst.wint.js | 92 - .../ctype/tst/ctio/uint/tst.64.js | 451 - .../ctype/tst/ctio/uint/tst.roundtrip.js | 81 - .../ctype/tst/ctio/uint/tst.ruint.js | 95 - .../ctype/tst/ctio/uint/tst.wuint.js | 156 - .../ctype/tst/ctype/tst.basicr.js | 50 - .../ctype/tst/ctype/tst.basicw.js | 44 - .../node_modules/ctype/tst/ctype/tst.char.js | 42 - .../ctype/tst/ctype/tst.endian.js | 45 - .../ctype/tst/ctype/tst.oldwrite.js | 28 - .../ctype/tst/ctype/tst.readSize.js | 128 - .../ctype/tst/ctype/tst.structw.js | 28 - .../ctype/tst/ctype/tst.writeStruct.js | 31 - .../node_modules/http-signature/package.json | 36 - .../node_modules/json-stringify-safe/LICENSE | 27 - .../json-stringify-safe/README.md | 49 - .../json-stringify-safe/package.json | 33 - .../json-stringify-safe/stringify.js | 39 - .../node_modules/json-stringify-safe/test.js | 128 - .../request/node_modules/mime/LICENSE | 19 - .../request/node_modules/mime/README.md | 66 - .../request/node_modules/mime/mime.js | 114 - .../request/node_modules/mime/package.json | 37 - .../request/node_modules/mime/test.js | 84 - .../node_modules/mime/types/mime.types | 1588 - .../node_modules/mime/types/node.types | 77 - .../request/node_modules/node-uuid/.npmignore | 2 - .../request/node_modules/node-uuid/LICENSE.md | 2 - .../request/node_modules/node-uuid/README.md | 207 - .../node-uuid/benchmark/README.md | 53 - .../node-uuid/benchmark/bench.gnu | 174 - .../node_modules/node-uuid/benchmark/bench.sh | 34 - .../node-uuid/benchmark/benchmark-native.c | 34 - .../node-uuid/benchmark/benchmark.js | 84 - .../node_modules/node-uuid/component.json | 18 - .../node_modules/node-uuid/package.json | 36 - .../node_modules/node-uuid/test/compare_v1.js | 63 - .../node_modules/node-uuid/test/test.html | 17 - .../node_modules/node-uuid/test/test.js | 228 - .../request/node_modules/node-uuid/uuid.js | 245 - .../request/node_modules/oauth-sign/LICENSE | 55 - .../request/node_modules/oauth-sign/README.md | 4 - .../request/node_modules/oauth-sign/index.js | 43 - .../node_modules/oauth-sign/package.json | 31 - .../request/node_modules/oauth-sign/test.js | 49 - .../request/node_modules/qs/.gitmodules | 6 - .../request/node_modules/qs/.npmignore | 7 - .../request/node_modules/qs/Readme.md | 58 - .../request/node_modules/qs/index.js | 366 - .../request/node_modules/qs/package.json | 38 - .../node_modules/tough-cookie/.jshintrc | 72 - .../node_modules/tough-cookie/.npmignore | 3 - .../request/node_modules/tough-cookie/LICENSE | 78 - .../node_modules/tough-cookie/README.md | 380 - .../tough-cookie/generate-pubsuffix.js | 230 - .../node_modules/tough-cookie/lib/cookie.js | 947 - .../node_modules/tough-cookie/lib/memstore.js | 102 - .../tough-cookie/lib/pubsuffix.js | 69 - .../node_modules/punycode/LICENSE-GPL.txt | 278 - .../node_modules/punycode/LICENSE-MIT.txt | 20 - .../node_modules/punycode/README.md | 162 - .../node_modules/punycode/package.json | 74 - .../node_modules/punycode/punycode.js | 507 - .../node_modules/punycode/punycode.min.js | 2 - .../node_modules/tough-cookie/package.json | 46 - .../tough-cookie/public-suffix.txt | 5229 -- .../request/node_modules/tough-cookie/test.js | 1340 - .../request/node_modules/tunnel-agent/LICENSE | 55 - .../node_modules/tunnel-agent/README.md | 4 - .../node_modules/tunnel-agent/index.js | 227 - .../node_modules/tunnel-agent/package.json | 29 - .../node_modules/request/package.json | 57 - .../download/node_modules/request/request.js | 1260 - .../download/node_modules/through2/.jshintrc | 59 - .../download/node_modules/through2/.npmignore | 1 - .../node_modules/through2/.travis.yml | 17 - .../download/node_modules/through2/LICENSE | 39 - .../download/node_modules/through2/README.md | 131 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 27 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 69 - .../lib/_stream_passthrough.js | 41 - .../readable-stream/lib/_stream_readable.js | 928 - .../readable-stream/lib/_stream_transform.js | 205 - .../readable-stream/lib/_stream_writable.js | 378 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 200 - .../node_modules/string_decoder/package.json | 32 - .../node_modules/readable-stream/package.json | 38 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 6 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../through2/node_modules/xtend/.npmignore | 1 - .../through2/node_modules/xtend/LICENCE | 19 - .../through2/node_modules/xtend/Makefile | 4 - .../through2/node_modules/xtend/README.md | 27 - .../through2/node_modules/xtend/has-keys.js | 7 - .../through2/node_modules/xtend/index.js | 25 - .../through2/node_modules/xtend/mutable.js | 25 - .../xtend/node_modules/object-keys/.npmignore | 1 - .../node_modules/object-keys/.travis.yml | 5 - .../xtend/node_modules/object-keys/README.md | 39 - .../xtend/node_modules/object-keys/foreach.js | 40 - .../xtend/node_modules/object-keys/index.js | 2 - .../node_modules/object-keys/isArguments.js | 16 - .../node_modules/object-keys/package.json | 56 - .../xtend/node_modules/object-keys/shim.js | 62 - .../node_modules/object-keys/test/foreach.js | 156 - .../node_modules/object-keys/test/index.js | 6 - .../object-keys/test/isArguments.js | 10 - .../node_modules/object-keys/test/shim.js | 134 - .../through2/node_modules/xtend/package.json | 72 - .../through2/node_modules/xtend/test.js | 63 - .../node_modules/through2/package.json | 44 - .../node_modules/through2/test/basic-test.js | 334 - .../node_modules/through2/test/bench.js | 42 - .../node_modules/through2/test/sauce.js | 38 - .../node_modules/through2/test/test.js | 9 - .../node_modules/through2/through2.js | 78 - .../node_modules/download/package.json | 51 - .../bin-wrapper/node_modules/isbin/.npmignore | 1 - .../node_modules/isbin/.travis.yml | 3 - .../bin-wrapper/node_modules/isbin/History.md | 20 - .../bin-wrapper/node_modules/isbin/Makefile | 6 - .../bin-wrapper/node_modules/isbin/README.md | 59 - .../bin-wrapper/node_modules/isbin/index.js | 1 - .../node_modules/isbin/lib/index.js | 51 - .../isbin/node_modules/async/.gitmodules | 9 - .../isbin/node_modules/async/.npmignore | 4 - .../isbin/node_modules/async/LICENSE | 19 - .../isbin/node_modules/async/Makefile | 25 - .../isbin/node_modules/async/README.md | 1021 - .../isbin/node_modules/async/index.js | 3 - .../isbin/node_modules/async/lib/async.js | 692 - .../isbin/node_modules/async/package.json | 33 - .../node_modules/isbin/package.json | 41 - .../node_modules/isbin/test/isbin.js | 39 - .../node_modules/isbin/test/mocha.opts | 4 - .../node_modules/mout/.editorconfig | 20 - .../bin-wrapper/node_modules/mout/.jshintrc | 69 - .../bin-wrapper/node_modules/mout/.npmignore | 30 - .../bin-wrapper/node_modules/mout/.travis.yml | 13 - .../node_modules/mout/CHANGELOG.md | 93 - .../node_modules/mout/CONTRIBUTING.md | 61 - .../bin-wrapper/node_modules/mout/LICENSE.md | 21 - .../bin-wrapper/node_modules/mout/README.md | 63 - .../bin-wrapper/node_modules/mout/array.js | 46 - .../node_modules/mout/array/append.js | 21 - .../node_modules/mout/array/collect.js | 27 - .../node_modules/mout/array/combine.js | 22 - .../node_modules/mout/array/compact.js | 13 - .../node_modules/mout/array/contains.js | 10 - .../node_modules/mout/array/difference.js | 22 - .../node_modules/mout/array/every.js | 27 - .../node_modules/mout/array/filter.js | 27 - .../node_modules/mout/array/find.js | 13 - .../node_modules/mout/array/findIndex.js | 23 - .../node_modules/mout/array/flatten.js | 43 - .../node_modules/mout/array/forEach.js | 23 - .../node_modules/mout/array/indexOf.js | 28 - .../node_modules/mout/array/insert.js | 15 - .../node_modules/mout/array/intersection.js | 23 - .../node_modules/mout/array/invoke.js | 23 - .../node_modules/mout/array/join.js | 17 - .../node_modules/mout/array/lastIndexOf.js | 28 - .../node_modules/mout/array/map.js | 23 - .../node_modules/mout/array/max.js | 35 - .../node_modules/mout/array/min.js | 35 - .../node_modules/mout/array/pick.js | 14 - .../node_modules/mout/array/pluck.js | 12 - .../node_modules/mout/array/range.js | 27 - .../node_modules/mout/array/reduce.js | 33 - .../node_modules/mout/array/reduceRight.js | 34 - .../node_modules/mout/array/reject.js | 26 - .../node_modules/mout/array/remove.js | 13 - .../node_modules/mout/array/removeAll.js | 15 - .../node_modules/mout/array/shuffle.js | 29 - .../node_modules/mout/array/some.js | 27 - .../node_modules/mout/array/sort.js | 55 - .../node_modules/mout/array/split.js | 35 - .../node_modules/mout/array/toLookup.js | 28 - .../node_modules/mout/array/union.js | 19 - .../node_modules/mout/array/unique.js | 17 - .../node_modules/mout/array/xor.js | 26 - .../node_modules/mout/array/zip.js | 29 - .../node_modules/mout/collection.js | 22 - .../node_modules/mout/collection/contains.js | 9 - .../node_modules/mout/collection/every.js | 9 - .../node_modules/mout/collection/filter.js | 23 - .../node_modules/mout/collection/find.js | 10 - .../node_modules/mout/collection/forEach.js | 9 - .../node_modules/mout/collection/make_.js | 19 - .../node_modules/mout/collection/map.js | 23 - .../node_modules/mout/collection/max.js | 10 - .../node_modules/mout/collection/min.js | 10 - .../node_modules/mout/collection/pluck.js | 14 - .../node_modules/mout/collection/reduce.js | 9 - .../node_modules/mout/collection/reject.js | 16 - .../node_modules/mout/collection/size.js | 19 - .../node_modules/mout/collection/some.js | 9 - .../bin-wrapper/node_modules/mout/date.js | 21 - .../node_modules/mout/date/dayOfTheYear.js | 13 - .../node_modules/mout/date/diff.js | 130 - .../node_modules/mout/date/i18n/en-US.js | 61 - .../node_modules/mout/date/i18n/pt-BR.js | 61 - .../node_modules/mout/date/i18n_.js | 14 - .../node_modules/mout/date/isLeapYear.js | 15 - .../node_modules/mout/date/isSame.js | 16 - .../node_modules/mout/date/parseIso.js | 146 - .../node_modules/mout/date/startOf.js | 54 - .../node_modules/mout/date/strftime.js | 118 - .../node_modules/mout/date/timezoneAbbr.js | 17 - .../node_modules/mout/date/timezoneOffset.js | 16 - .../mout/date/totalDaysInMonth.js | 25 - .../node_modules/mout/date/totalDaysInYear.js | 13 - .../node_modules/mout/date/weekOfTheYear.js | 16 - .../node_modules/mout/doc/array.md | 773 - .../node_modules/mout/doc/collection.md | 233 - .../bin-wrapper/node_modules/mout/doc/date.md | 295 - .../node_modules/mout/doc/function.md | 174 - .../bin-wrapper/node_modules/mout/doc/lang.md | 385 - .../bin-wrapper/node_modules/mout/doc/math.md | 298 - .../node_modules/mout/doc/number.md | 225 - .../node_modules/mout/doc/object.md | 780 - .../node_modules/mout/doc/queryString.md | 115 - .../node_modules/mout/doc/random.md | 218 - .../node_modules/mout/doc/string.md | 594 - .../bin-wrapper/node_modules/mout/doc/time.md | 64 - .../bin-wrapper/node_modules/mout/function.js | 18 - .../node_modules/mout/function/bind.js | 23 - .../node_modules/mout/function/compose.js | 23 - .../node_modules/mout/function/debounce.js | 29 - .../node_modules/mout/function/func.js | 14 - .../mout/function/makeIterator_.js | 34 - .../node_modules/mout/function/partial.js | 19 - .../node_modules/mout/function/prop.js | 14 - .../node_modules/mout/function/series.js | 22 - .../node_modules/mout/function/throttle.js | 32 - .../node_modules/mout/function/timeout.js | 21 - .../bin-wrapper/node_modules/mout/index.js | 24 - .../bin-wrapper/node_modules/mout/lang.js | 36 - .../node_modules/mout/lang/clone.js | 49 - .../node_modules/mout/lang/createObject.js | 18 - .../node_modules/mout/lang/ctorApply.js | 17 - .../node_modules/mout/lang/deepClone.js | 48 - .../node_modules/mout/lang/defaults.js | 17 - .../mout/lang/inheritPrototype.js | 16 - .../bin-wrapper/node_modules/mout/lang/is.js | 23 - .../node_modules/mout/lang/isArguments.js | 15 - .../node_modules/mout/lang/isArray.js | 8 - .../node_modules/mout/lang/isBoolean.js | 8 - .../node_modules/mout/lang/isDate.js | 8 - .../node_modules/mout/lang/isEmpty.js | 24 - .../node_modules/mout/lang/isFinite.js | 21 - .../node_modules/mout/lang/isFunction.js | 8 - .../node_modules/mout/lang/isInteger.js | 12 - .../node_modules/mout/lang/isKind.js | 9 - .../node_modules/mout/lang/isNaN.js | 15 - .../node_modules/mout/lang/isNull.js | 9 - .../node_modules/mout/lang/isNumber.js | 8 - .../node_modules/mout/lang/isObject.js | 8 - .../node_modules/mout/lang/isPlainObject.js | 14 - .../node_modules/mout/lang/isRegExp.js | 8 - .../node_modules/mout/lang/isString.js | 8 - .../node_modules/mout/lang/isUndefined.js | 10 - .../node_modules/mout/lang/isnt.js | 12 - .../node_modules/mout/lang/kindOf.js | 20 - .../node_modules/mout/lang/toArray.js | 31 - .../node_modules/mout/lang/toString.js | 13 - .../bin-wrapper/node_modules/mout/math.js | 19 - .../node_modules/mout/math/ceil.js | 11 - .../node_modules/mout/math/clamp.js | 9 - .../node_modules/mout/math/countSteps.js | 16 - .../node_modules/mout/math/floor.js | 10 - .../node_modules/mout/math/inRange.js | 11 - .../node_modules/mout/math/isNear.js | 9 - .../node_modules/mout/math/lerp.js | 11 - .../node_modules/mout/math/loop.js | 10 - .../bin-wrapper/node_modules/mout/math/map.js | 11 - .../node_modules/mout/math/norm.js | 9 - .../node_modules/mout/math/round.js | 12 - .../bin-wrapper/node_modules/mout/number.js | 21 - .../node_modules/mout/number/MAX_INT.js | 6 - .../node_modules/mout/number/MAX_UINT.js | 6 - .../node_modules/mout/number/MIN_INT.js | 6 - .../node_modules/mout/number/abbreviate.js | 35 - .../mout/number/currencyFormat.js | 26 - .../mout/number/enforcePrecision.js | 13 - .../node_modules/mout/number/pad.js | 12 - .../node_modules/mout/number/rol.js | 10 - .../node_modules/mout/number/ror.js | 10 - .../node_modules/mout/number/sign.js | 15 - .../node_modules/mout/number/toInt.js | 15 - .../node_modules/mout/number/toUInt.js | 13 - .../node_modules/mout/number/toUInt31.js | 13 - .../bin-wrapper/node_modules/mout/object.js | 42 - .../node_modules/mout/object/bindAll.js | 18 - .../node_modules/mout/object/contains.js | 13 - .../node_modules/mout/object/deepEquals.js | 27 - .../node_modules/mout/object/deepFillIn.js | 32 - .../node_modules/mout/object/deepMatches.js | 55 - .../node_modules/mout/object/deepMixIn.js | 34 - .../node_modules/mout/object/equals.js | 36 - .../node_modules/mout/object/every.js | 23 - .../node_modules/mout/object/fillIn.js | 20 - .../node_modules/mout/object/filter.js | 20 - .../node_modules/mout/object/find.js | 21 - .../node_modules/mout/object/forIn.js | 62 - .../node_modules/mout/object/forOwn.js | 19 - .../node_modules/mout/object/functions.js | 18 - .../node_modules/mout/object/get.js | 20 - .../node_modules/mout/object/has.js | 15 - .../node_modules/mout/object/hasOwn.js | 12 - .../node_modules/mout/object/keys.js | 16 - .../node_modules/mout/object/map.js | 18 - .../node_modules/mout/object/matches.js | 20 - .../node_modules/mout/object/max.js | 12 - .../node_modules/mout/object/merge.js | 40 - .../node_modules/mout/object/min.js | 12 - .../node_modules/mout/object/mixIn.js | 28 - .../node_modules/mout/object/namespace.js | 19 - .../node_modules/mout/object/pick.js | 18 - .../node_modules/mout/object/pluck.js | 13 - .../node_modules/mout/object/reduce.js | 29 - .../node_modules/mout/object/reject.js | 16 - .../node_modules/mout/object/set.js | 17 - .../node_modules/mout/object/size.js | 16 - .../node_modules/mout/object/some.js | 21 - .../node_modules/mout/object/unset.js | 23 - .../node_modules/mout/object/values.js | 16 - .../node_modules/mout/package.json | 119 - .../node_modules/mout/queryString.js | 15 - .../node_modules/mout/queryString/contains.js | 12 - .../node_modules/mout/queryString/decode.js | 21 - .../node_modules/mout/queryString/encode.js | 15 - .../node_modules/mout/queryString/getParam.js | 15 - .../node_modules/mout/queryString/getQuery.js | 13 - .../node_modules/mout/queryString/parse.js | 13 - .../node_modules/mout/queryString/setParam.js | 28 - .../bin-wrapper/node_modules/mout/random.js | 16 - .../node_modules/mout/random/choice.js | 15 - .../node_modules/mout/random/guid.js | 24 - .../node_modules/mout/random/rand.js | 15 - .../node_modules/mout/random/randBit.js | 11 - .../node_modules/mout/random/randHex.js | 19 - .../node_modules/mout/random/randInt.js | 18 - .../node_modules/mout/random/randSign.js | 11 - .../node_modules/mout/random/random.js | 18 - .../node_modules/mout/src/array.js | 46 - .../node_modules/mout/src/array/append.js | 21 - .../node_modules/mout/src/array/collect.js | 26 - .../node_modules/mout/src/array/combine.js | 22 - .../node_modules/mout/src/array/compact.js | 13 - .../node_modules/mout/src/array/contains.js | 10 - .../node_modules/mout/src/array/difference.js | 19 - .../node_modules/mout/src/array/every.js | 27 - .../node_modules/mout/src/array/filter.js | 26 - .../node_modules/mout/src/array/find.js | 13 - .../node_modules/mout/src/array/findIndex.js | 23 - .../node_modules/mout/src/array/flatten.js | 42 - .../node_modules/mout/src/array/forEach.js | 23 - .../node_modules/mout/src/array/indexOf.js | 28 - .../node_modules/mout/src/array/insert.js | 14 - .../mout/src/array/intersection.js | 20 - .../node_modules/mout/src/array/invoke.js | 23 - .../node_modules/mout/src/array/join.js | 17 - .../mout/src/array/lastIndexOf.js | 28 - .../node_modules/mout/src/array/map.js | 22 - .../node_modules/mout/src/array/max.js | 34 - .../node_modules/mout/src/array/min.js | 34 - .../node_modules/mout/src/array/pick.js | 14 - .../node_modules/mout/src/array/pluck.js | 12 - .../node_modules/mout/src/array/range.js | 27 - .../node_modules/mout/src/array/reduce.js | 33 - .../mout/src/array/reduceRight.js | 34 - .../node_modules/mout/src/array/reject.js | 25 - .../node_modules/mout/src/array/remove.js | 13 - .../node_modules/mout/src/array/removeAll.js | 15 - .../node_modules/mout/src/array/shuffle.js | 28 - .../node_modules/mout/src/array/some.js | 27 - .../node_modules/mout/src/array/sort.js | 55 - .../node_modules/mout/src/array/split.js | 35 - .../node_modules/mout/src/array/toLookup.js | 28 - .../node_modules/mout/src/array/union.js | 18 - .../node_modules/mout/src/array/unique.js | 16 - .../node_modules/mout/src/array/xor.js | 24 - .../node_modules/mout/src/array/zip.js | 27 - .../node_modules/mout/src/collection.js | 22 - .../mout/src/collection/contains.js | 7 - .../node_modules/mout/src/collection/every.js | 7 - .../mout/src/collection/filter.js | 22 - .../node_modules/mout/src/collection/find.js | 8 - .../mout/src/collection/forEach.js | 7 - .../node_modules/mout/src/collection/make_.js | 19 - .../node_modules/mout/src/collection/map.js | 20 - .../node_modules/mout/src/collection/max.js | 8 - .../node_modules/mout/src/collection/min.js | 8 - .../node_modules/mout/src/collection/pluck.js | 14 - .../mout/src/collection/reduce.js | 7 - .../mout/src/collection/reject.js | 15 - .../node_modules/mout/src/collection/size.js | 18 - .../node_modules/mout/src/collection/some.js | 7 - .../bin-wrapper/node_modules/mout/src/date.js | 21 - .../mout/src/date/dayOfTheYear.js | 13 - .../node_modules/mout/src/date/diff.js | 128 - .../node_modules/mout/src/date/i18n/en-US.js | 61 - .../node_modules/mout/src/date/i18n/pt-BR.js | 61 - .../node_modules/mout/src/date/i18n_.js | 13 - .../node_modules/mout/src/date/isLeapYear.js | 15 - .../node_modules/mout/src/date/isSame.js | 16 - .../node_modules/mout/src/date/parseIso.js | 146 - .../node_modules/mout/src/date/startOf.js | 54 - .../node_modules/mout/src/date/strftime.js | 113 - .../mout/src/date/timezoneAbbr.js | 17 - .../mout/src/date/timezoneOffset.js | 16 - .../mout/src/date/totalDaysInMonth.js | 24 - .../mout/src/date/totalDaysInYear.js | 13 - .../mout/src/date/weekOfTheYear.js | 16 - .../node_modules/mout/src/function.js | 18 - .../node_modules/mout/src/function/bind.js | 23 - .../node_modules/mout/src/function/compose.js | 23 - .../mout/src/function/debounce.js | 29 - .../node_modules/mout/src/function/func.js | 14 - .../mout/src/function/makeIterator_.js | 33 - .../node_modules/mout/src/function/partial.js | 19 - .../node_modules/mout/src/function/prop.js | 14 - .../node_modules/mout/src/function/series.js | 22 - .../mout/src/function/throttle.js | 32 - .../node_modules/mout/src/function/timeout.js | 21 - .../node_modules/mout/src/index.js | 24 - .../bin-wrapper/node_modules/mout/src/lang.js | 36 - .../node_modules/mout/src/lang/clone.js | 47 - .../mout/src/lang/createObject.js | 18 - .../node_modules/mout/src/lang/ctorApply.js | 17 - .../node_modules/mout/src/lang/deepClone.js | 45 - .../node_modules/mout/src/lang/defaults.js | 16 - .../mout/src/lang/inheritPrototype.js | 16 - .../node_modules/mout/src/lang/is.js | 23 - .../node_modules/mout/src/lang/isArguments.js | 15 - .../node_modules/mout/src/lang/isArray.js | 8 - .../node_modules/mout/src/lang/isBoolean.js | 8 - .../node_modules/mout/src/lang/isDate.js | 8 - .../node_modules/mout/src/lang/isEmpty.js | 23 - .../node_modules/mout/src/lang/isFinite.js | 21 - .../node_modules/mout/src/lang/isFunction.js | 8 - .../node_modules/mout/src/lang/isInteger.js | 12 - .../node_modules/mout/src/lang/isKind.js | 9 - .../node_modules/mout/src/lang/isNaN.js | 15 - .../node_modules/mout/src/lang/isNull.js | 9 - .../node_modules/mout/src/lang/isNumber.js | 8 - .../node_modules/mout/src/lang/isObject.js | 8 - .../mout/src/lang/isPlainObject.js | 14 - .../node_modules/mout/src/lang/isRegExp.js | 8 - .../node_modules/mout/src/lang/isString.js | 8 - .../node_modules/mout/src/lang/isUndefined.js | 10 - .../node_modules/mout/src/lang/isnt.js | 12 - .../node_modules/mout/src/lang/kindOf.js | 20 - .../node_modules/mout/src/lang/toArray.js | 31 - .../node_modules/mout/src/lang/toString.js | 13 - .../bin-wrapper/node_modules/mout/src/math.js | 19 - .../node_modules/mout/src/math/ceil.js | 11 - .../node_modules/mout/src/math/clamp.js | 9 - .../node_modules/mout/src/math/countSteps.js | 16 - .../node_modules/mout/src/math/floor.js | 10 - .../node_modules/mout/src/math/inRange.js | 11 - .../node_modules/mout/src/math/isNear.js | 9 - .../node_modules/mout/src/math/lerp.js | 11 - .../node_modules/mout/src/math/loop.js | 10 - .../node_modules/mout/src/math/map.js | 10 - .../node_modules/mout/src/math/norm.js | 9 - .../node_modules/mout/src/math/round.js | 12 - .../node_modules/mout/src/number.js | 21 - .../node_modules/mout/src/number/MAX_INT.js | 6 - .../node_modules/mout/src/number/MAX_UINT.js | 6 - .../node_modules/mout/src/number/MIN_INT.js | 6 - .../mout/src/number/abbreviate.js | 35 - .../mout/src/number/currencyFormat.js | 26 - .../mout/src/number/enforcePrecision.js | 13 - .../node_modules/mout/src/number/pad.js | 12 - .../node_modules/mout/src/number/rol.js | 10 - .../node_modules/mout/src/number/ror.js | 10 - .../node_modules/mout/src/number/sign.js | 15 - .../node_modules/mout/src/number/toInt.js | 15 - .../node_modules/mout/src/number/toUInt.js | 13 - .../node_modules/mout/src/number/toUInt31.js | 13 - .../node_modules/mout/src/object.js | 42 - .../node_modules/mout/src/object/bindAll.js | 16 - .../node_modules/mout/src/object/contains.js | 13 - .../mout/src/object/deepEquals.js | 26 - .../mout/src/object/deepFillIn.js | 31 - .../mout/src/object/deepMatches.js | 54 - .../node_modules/mout/src/object/deepMixIn.js | 33 - .../node_modules/mout/src/object/equals.js | 34 - .../node_modules/mout/src/object/every.js | 22 - .../node_modules/mout/src/object/fillIn.js | 19 - .../node_modules/mout/src/object/filter.js | 19 - .../node_modules/mout/src/object/find.js | 20 - .../node_modules/mout/src/object/forIn.js | 62 - .../node_modules/mout/src/object/forOwn.js | 18 - .../node_modules/mout/src/object/functions.js | 18 - .../node_modules/mout/src/object/get.js | 20 - .../node_modules/mout/src/object/has.js | 15 - .../node_modules/mout/src/object/hasOwn.js | 12 - .../node_modules/mout/src/object/keys.js | 16 - .../node_modules/mout/src/object/map.js | 17 - .../node_modules/mout/src/object/matches.js | 20 - .../node_modules/mout/src/object/max.js | 11 - .../node_modules/mout/src/object/merge.js | 38 - .../node_modules/mout/src/object/min.js | 11 - .../node_modules/mout/src/object/mixIn.js | 28 - .../node_modules/mout/src/object/namespace.js | 19 - .../node_modules/mout/src/object/pick.js | 18 - .../node_modules/mout/src/object/pluck.js | 12 - .../node_modules/mout/src/object/reduce.js | 28 - .../node_modules/mout/src/object/reject.js | 15 - .../node_modules/mout/src/object/set.js | 17 - .../node_modules/mout/src/object/size.js | 16 - .../node_modules/mout/src/object/some.js | 20 - .../node_modules/mout/src/object/unset.js | 23 - .../node_modules/mout/src/object/values.js | 16 - .../node_modules/mout/src/queryString.js | 15 - .../mout/src/queryString/contains.js | 12 - .../mout/src/queryString/decode.js | 20 - .../mout/src/queryString/encode.js | 15 - .../mout/src/queryString/getParam.js | 14 - .../mout/src/queryString/getQuery.js | 13 - .../mout/src/queryString/parse.js | 12 - .../mout/src/queryString/setParam.js | 28 - .../node_modules/mout/src/random.js | 16 - .../node_modules/mout/src/random/choice.js | 14 - .../node_modules/mout/src/random/guid.js | 23 - .../node_modules/mout/src/random/rand.js | 13 - .../node_modules/mout/src/random/randBit.js | 11 - .../node_modules/mout/src/random/randHex.js | 19 - .../node_modules/mout/src/random/randInt.js | 16 - .../node_modules/mout/src/random/randSign.js | 11 - .../node_modules/mout/src/random/random.js | 18 - .../node_modules/mout/src/string.js | 45 - .../mout/src/string/WHITE_SPACES.js | 12 - .../node_modules/mout/src/string/camelCase.js | 16 - .../node_modules/mout/src/string/contains.js | 14 - .../node_modules/mout/src/string/crop.js | 11 - .../node_modules/mout/src/string/endsWith.js | 13 - .../mout/src/string/escapeHtml.js | 18 - .../mout/src/string/escapeRegExp.js | 15 - .../mout/src/string/escapeUnicode.js | 21 - .../node_modules/mout/src/string/hyphenate.js | 12 - .../mout/src/string/interpolate.js | 18 - .../node_modules/mout/src/string/lowerCase.js | 11 - .../node_modules/mout/src/string/lpad.js | 16 - .../node_modules/mout/src/string/ltrim.js | 33 - .../node_modules/mout/src/string/makePath.js | 13 - .../mout/src/string/normalizeLineBreaks.js | 18 - .../mout/src/string/pascalCase.js | 11 - .../mout/src/string/properCase.js | 11 - .../mout/src/string/removeNonASCII.js | 14 - .../mout/src/string/removeNonWord.js | 11 - .../node_modules/mout/src/string/repeat.js | 13 - .../node_modules/mout/src/string/replace.js | 32 - .../mout/src/string/replaceAccents.js | 36 - .../node_modules/mout/src/string/rpad.js | 14 - .../node_modules/mout/src/string/rtrim.js | 32 - .../mout/src/string/sentenceCase.js | 13 - .../node_modules/mout/src/string/slugify.js | 21 - .../mout/src/string/startsWith.js | 13 - .../mout/src/string/stripHtmlTags.js | 11 - .../node_modules/mout/src/string/trim.js | 12 - .../node_modules/mout/src/string/truncate.js | 20 - .../node_modules/mout/src/string/typecast.js | 29 - .../mout/src/string/unCamelCase.js | 23 - .../mout/src/string/underscore.js | 11 - .../mout/src/string/unescapeHtml.js | 18 - .../mout/src/string/unescapeUnicode.js | 16 - .../mout/src/string/unhyphenate.js | 10 - .../node_modules/mout/src/string/upperCase.js | 10 - .../bin-wrapper/node_modules/mout/src/time.js | 12 - .../node_modules/mout/src/time/convert.js | 41 - .../node_modules/mout/src/time/now.js | 12 - .../node_modules/mout/src/time/parseMs.js | 17 - .../mout/src/time/toTimeString.js | 23 - .../bin-wrapper/node_modules/mout/string.js | 45 - .../node_modules/mout/string/WHITE_SPACES.js | 12 - .../node_modules/mout/string/camelCase.js | 20 - .../node_modules/mout/string/contains.js | 14 - .../node_modules/mout/string/crop.js | 12 - .../node_modules/mout/string/endsWith.js | 13 - .../node_modules/mout/string/escapeHtml.js | 18 - .../node_modules/mout/string/escapeRegExp.js | 15 - .../node_modules/mout/string/escapeUnicode.js | 21 - .../node_modules/mout/string/hyphenate.js | 14 - .../node_modules/mout/string/interpolate.js | 18 - .../node_modules/mout/string/lowerCase.js | 11 - .../node_modules/mout/string/lpad.js | 17 - .../node_modules/mout/string/ltrim.js | 34 - .../node_modules/mout/string/makePath.js | 13 - .../mout/string/normalizeLineBreaks.js | 18 - .../node_modules/mout/string/pascalCase.js | 13 - .../node_modules/mout/string/properCase.js | 13 - .../mout/string/removeNonASCII.js | 14 - .../node_modules/mout/string/removeNonWord.js | 11 - .../node_modules/mout/string/repeat.js | 13 - .../node_modules/mout/string/replace.js | 33 - .../mout/string/replaceAccents.js | 36 - .../node_modules/mout/string/rpad.js | 15 - .../node_modules/mout/string/rtrim.js | 33 - .../node_modules/mout/string/sentenceCase.js | 15 - .../node_modules/mout/string/slugify.js | 24 - .../node_modules/mout/string/startsWith.js | 13 - .../node_modules/mout/string/stripHtmlTags.js | 11 - .../node_modules/mout/string/trim.js | 15 - .../node_modules/mout/string/truncate.js | 21 - .../node_modules/mout/string/typecast.js | 29 - .../node_modules/mout/string/unCamelCase.js | 23 - .../node_modules/mout/string/underscore.js | 13 - .../node_modules/mout/string/unescapeHtml.js | 18 - .../mout/string/unescapeUnicode.js | 16 - .../node_modules/mout/string/unhyphenate.js | 10 - .../node_modules/mout/string/upperCase.js | 10 - .../bin-wrapper/node_modules/mout/time.js | 12 - .../node_modules/mout/time/convert.js | 41 - .../bin-wrapper/node_modules/mout/time/now.js | 12 - .../node_modules/mout/time/parseMs.js | 17 - .../node_modules/mout/time/toTimeString.js | 24 - .../node_modules/progress/.npmignore | 4 - .../node_modules/progress/History.md | 42 - .../node_modules/progress/Makefile | 5 - .../node_modules/progress/Readme.md | 117 - .../node_modules/progress/index.js | 1 - .../progress/lib/node-progress.js | 183 - .../node_modules/progress/package.json | 30 - .../bin-wrapper/node_modules/which/LICENSE | 23 - .../bin-wrapper/node_modules/which/README.md | 5 - .../bin-wrapper/node_modules/which/bin/which | 14 - .../node_modules/which/package.json | 31 - .../bin-wrapper/node_modules/which/which.js | 104 - .../node_modules/bin-wrapper/package.json | 49 - .../jpegtran-bin/node_modules/chalk/chalk.js | 62 - .../node_modules/ansi-styles/ansi-styles.js | 29 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../node_modules/chalk/package.json | 61 - .../jpegtran-bin/node_modules/chalk/readme.md | 130 - .../node_modules/jpegtran-bin/package.json | 65 - .../node_modules/jpegtran-bin/readme.md | 52 - .../jpegtran-bin/test/fixtures/test.jpg | Bin 2139 -> 0 bytes .../jpegtran-bin/test/minified.jpg | Bin 927 -> 0 bytes .../jpegtran-bin/test/test-build.js | 30 - .../jpegtran-bin/test/test-path.js | 49 - .../node_modules/jpegtran-bin/vendor/jpegtran | Bin 137944 -> 0 bytes .../image-min/node_modules/mkdirp/.npmignore | 2 - .../image-min/node_modules/mkdirp/.travis.yml | 5 - .../image-min/node_modules/mkdirp/LICENSE | 21 - .../node_modules/mkdirp/examples/pow.js | 6 - .../image-min/node_modules/mkdirp/index.js | 82 - .../node_modules/mkdirp/package.json | 34 - .../node_modules/mkdirp/readme.markdown | 63 - .../node_modules/mkdirp/test/chmod.js | 38 - .../node_modules/mkdirp/test/clobber.js | 37 - .../node_modules/mkdirp/test/mkdirp.js | 28 - .../node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 39 - .../node_modules/mkdirp/test/race.js | 41 - .../image-min/node_modules/mkdirp/test/rel.js | 32 - .../node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../node_modules/mkdirp/test/root.js | 18 - .../node_modules/mkdirp/test/sync.js | 32 - .../node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../image-min/node_modules/mout/.editorconfig | 20 - .../image-min/node_modules/mout/.jshintrc | 69 - .../image-min/node_modules/mout/.npmignore | 30 - .../image-min/node_modules/mout/.travis.yml | 15 - .../image-min/node_modules/mout/CHANGELOG.md | 116 - .../node_modules/mout/CONTRIBUTING.md | 61 - .../image-min/node_modules/mout/LICENSE.md | 21 - .../image-min/node_modules/mout/README.md | 63 - .../image-min/node_modules/mout/array.js | 46 - .../node_modules/mout/array/append.js | 21 - .../node_modules/mout/array/collect.js | 27 - .../node_modules/mout/array/combine.js | 22 - .../node_modules/mout/array/compact.js | 13 - .../node_modules/mout/array/contains.js | 10 - .../node_modules/mout/array/difference.js | 22 - .../node_modules/mout/array/every.js | 27 - .../node_modules/mout/array/filter.js | 26 - .../image-min/node_modules/mout/array/find.js | 13 - .../node_modules/mout/array/findIndex.js | 23 - .../node_modules/mout/array/flatten.js | 43 - .../node_modules/mout/array/forEach.js | 23 - .../node_modules/mout/array/indexOf.js | 28 - .../node_modules/mout/array/insert.js | 15 - .../node_modules/mout/array/intersection.js | 23 - .../node_modules/mout/array/invoke.js | 23 - .../image-min/node_modules/mout/array/join.js | 17 - .../node_modules/mout/array/lastIndexOf.js | 28 - .../image-min/node_modules/mout/array/map.js | 22 - .../image-min/node_modules/mout/array/max.js | 34 - .../image-min/node_modules/mout/array/min.js | 34 - .../image-min/node_modules/mout/array/pick.js | 31 - .../node_modules/mout/array/pluck.js | 12 - .../node_modules/mout/array/range.js | 27 - .../node_modules/mout/array/reduce.js | 33 - .../node_modules/mout/array/reduceRight.js | 34 - .../node_modules/mout/array/reject.js | 25 - .../node_modules/mout/array/remove.js | 13 - .../node_modules/mout/array/removeAll.js | 15 - .../node_modules/mout/array/shuffle.js | 28 - .../image-min/node_modules/mout/array/some.js | 27 - .../image-min/node_modules/mout/array/sort.js | 55 - .../node_modules/mout/array/split.js | 35 - .../node_modules/mout/array/toLookup.js | 28 - .../node_modules/mout/array/union.js | 19 - .../node_modules/mout/array/unique.js | 17 - .../image-min/node_modules/mout/array/xor.js | 26 - .../image-min/node_modules/mout/array/zip.js | 28 - .../image-min/node_modules/mout/collection.js | 22 - .../node_modules/mout/collection/contains.js | 9 - .../node_modules/mout/collection/every.js | 9 - .../node_modules/mout/collection/filter.js | 23 - .../node_modules/mout/collection/find.js | 10 - .../node_modules/mout/collection/forEach.js | 9 - .../node_modules/mout/collection/make_.js | 19 - .../node_modules/mout/collection/map.js | 23 - .../node_modules/mout/collection/max.js | 10 - .../node_modules/mout/collection/min.js | 10 - .../node_modules/mout/collection/pluck.js | 14 - .../node_modules/mout/collection/reduce.js | 9 - .../node_modules/mout/collection/reject.js | 16 - .../node_modules/mout/collection/size.js | 19 - .../node_modules/mout/collection/some.js | 9 - .../image-min/node_modules/mout/date.js | 21 - .../node_modules/mout/date/dayOfTheYear.js | 13 - .../image-min/node_modules/mout/date/diff.js | 130 - .../node_modules/mout/date/i18n/de-DE.js | 61 - .../node_modules/mout/date/i18n/en-US.js | 61 - .../node_modules/mout/date/i18n/pt-BR.js | 61 - .../image-min/node_modules/mout/date/i18n_.js | 14 - .../node_modules/mout/date/isLeapYear.js | 15 - .../node_modules/mout/date/isSame.js | 16 - .../node_modules/mout/date/parseIso.js | 146 - .../node_modules/mout/date/startOf.js | 54 - .../node_modules/mout/date/strftime.js | 118 - .../node_modules/mout/date/timezoneAbbr.js | 17 - .../node_modules/mout/date/timezoneOffset.js | 16 - .../mout/date/totalDaysInMonth.js | 25 - .../node_modules/mout/date/totalDaysInYear.js | 13 - .../node_modules/mout/date/weekOfTheYear.js | 16 - .../image-min/node_modules/mout/doc/array.md | 781 - .../node_modules/mout/doc/collection.md | 233 - .../image-min/node_modules/mout/doc/date.md | 295 - .../node_modules/mout/doc/function.md | 210 - .../image-min/node_modules/mout/doc/lang.md | 464 - .../image-min/node_modules/mout/doc/math.md | 298 - .../image-min/node_modules/mout/doc/number.md | 225 - .../image-min/node_modules/mout/doc/object.md | 780 - .../node_modules/mout/doc/queryString.md | 115 - .../image-min/node_modules/mout/doc/random.md | 218 - .../image-min/node_modules/mout/doc/string.md | 606 - .../image-min/node_modules/mout/doc/time.md | 64 - .../image-min/node_modules/mout/function.js | 19 - .../node_modules/mout/function/bind.js | 23 - .../node_modules/mout/function/compose.js | 23 - .../node_modules/mout/function/debounce.js | 32 - .../node_modules/mout/function/func.js | 14 - .../mout/function/makeIterator_.js | 31 - .../node_modules/mout/function/partial.js | 19 - .../node_modules/mout/function/prop.js | 14 - .../node_modules/mout/function/series.js | 22 - .../node_modules/mout/function/throttle.js | 35 - .../node_modules/mout/function/timeout.js | 21 - .../node_modules/mout/function/times.js | 17 - .../image-min/node_modules/mout/index.js | 25 - .../image-min/node_modules/mout/lang.js | 37 - .../image-min/node_modules/mout/lang/clone.js | 49 - .../node_modules/mout/lang/createObject.js | 18 - .../node_modules/mout/lang/ctorApply.js | 17 - .../node_modules/mout/lang/deepClone.js | 48 - .../node_modules/mout/lang/defaults.js | 17 - .../mout/lang/inheritPrototype.js | 17 - .../image-min/node_modules/mout/lang/is.js | 23 - .../node_modules/mout/lang/isArguments.js | 15 - .../node_modules/mout/lang/isArray.js | 8 - .../node_modules/mout/lang/isBoolean.js | 8 - .../node_modules/mout/lang/isDate.js | 8 - .../node_modules/mout/lang/isEmpty.js | 24 - .../node_modules/mout/lang/isFinite.js | 21 - .../node_modules/mout/lang/isFunction.js | 8 - .../node_modules/mout/lang/isInteger.js | 12 - .../node_modules/mout/lang/isKind.js | 9 - .../image-min/node_modules/mout/lang/isNaN.js | 16 - .../node_modules/mout/lang/isNull.js | 9 - .../node_modules/mout/lang/isNumber.js | 8 - .../node_modules/mout/lang/isObject.js | 8 - .../node_modules/mout/lang/isPlainObject.js | 13 - .../node_modules/mout/lang/isRegExp.js | 8 - .../node_modules/mout/lang/isString.js | 8 - .../node_modules/mout/lang/isUndefined.js | 10 - .../image-min/node_modules/mout/lang/isnt.js | 12 - .../node_modules/mout/lang/kindOf.js | 20 - .../node_modules/mout/lang/toArray.js | 31 - .../node_modules/mout/lang/toNumber.js | 20 - .../node_modules/mout/lang/toString.js | 13 - .../image-min/node_modules/mout/math.js | 19 - .../image-min/node_modules/mout/math/ceil.js | 11 - .../image-min/node_modules/mout/math/clamp.js | 9 - .../node_modules/mout/math/countSteps.js | 16 - .../image-min/node_modules/mout/math/floor.js | 10 - .../node_modules/mout/math/inRange.js | 11 - .../node_modules/mout/math/isNear.js | 9 - .../image-min/node_modules/mout/math/lerp.js | 11 - .../image-min/node_modules/mout/math/loop.js | 10 - .../image-min/node_modules/mout/math/map.js | 11 - .../image-min/node_modules/mout/math/norm.js | 9 - .../image-min/node_modules/mout/math/round.js | 12 - .../image-min/node_modules/mout/number.js | 21 - .../node_modules/mout/number/MAX_INT.js | 6 - .../node_modules/mout/number/MAX_UINT.js | 6 - .../node_modules/mout/number/MIN_INT.js | 6 - .../node_modules/mout/number/abbreviate.js | 35 - .../mout/number/currencyFormat.js | 27 - .../mout/number/enforcePrecision.js | 12 - .../image-min/node_modules/mout/number/pad.js | 14 - .../image-min/node_modules/mout/number/rol.js | 10 - .../image-min/node_modules/mout/number/ror.js | 10 - .../node_modules/mout/number/sign.js | 15 - .../node_modules/mout/number/toInt.js | 17 - .../node_modules/mout/number/toUInt.js | 15 - .../node_modules/mout/number/toUInt31.js | 15 - .../image-min/node_modules/mout/object.js | 42 - .../node_modules/mout/object/bindAll.js | 18 - .../node_modules/mout/object/contains.js | 13 - .../node_modules/mout/object/deepEquals.js | 27 - .../node_modules/mout/object/deepFillIn.js | 33 - .../node_modules/mout/object/deepMatches.js | 55 - .../node_modules/mout/object/deepMixIn.js | 34 - .../node_modules/mout/object/equals.js | 36 - .../node_modules/mout/object/every.js | 23 - .../node_modules/mout/object/fillIn.js | 20 - .../node_modules/mout/object/filter.js | 20 - .../node_modules/mout/object/find.js | 21 - .../node_modules/mout/object/forIn.js | 62 - .../node_modules/mout/object/forOwn.js | 19 - .../node_modules/mout/object/functions.js | 18 - .../image-min/node_modules/mout/object/get.js | 20 - .../image-min/node_modules/mout/object/has.js | 15 - .../node_modules/mout/object/hasOwn.js | 12 - .../node_modules/mout/object/keys.js | 16 - .../image-min/node_modules/mout/object/map.js | 18 - .../node_modules/mout/object/matches.js | 20 - .../image-min/node_modules/mout/object/max.js | 12 - .../node_modules/mout/object/merge.js | 40 - .../image-min/node_modules/mout/object/min.js | 12 - .../node_modules/mout/object/mixIn.js | 28 - .../node_modules/mout/object/namespace.js | 19 - .../node_modules/mout/object/pick.js | 18 - .../node_modules/mout/object/pluck.js | 13 - .../node_modules/mout/object/reduce.js | 29 - .../node_modules/mout/object/reject.js | 16 - .../image-min/node_modules/mout/object/set.js | 17 - .../node_modules/mout/object/size.js | 16 - .../node_modules/mout/object/some.js | 21 - .../node_modules/mout/object/unset.js | 23 - .../node_modules/mout/object/values.js | 16 - .../image-min/node_modules/mout/package.json | 120 - .../node_modules/mout/queryString.js | 15 - .../node_modules/mout/queryString/contains.js | 12 - .../node_modules/mout/queryString/decode.js | 38 - .../node_modules/mout/queryString/encode.js | 27 - .../node_modules/mout/queryString/getParam.js | 15 - .../node_modules/mout/queryString/getQuery.js | 13 - .../node_modules/mout/queryString/parse.js | 13 - .../node_modules/mout/queryString/setParam.js | 28 - .../image-min/node_modules/mout/random.js | 16 - .../node_modules/mout/random/choice.js | 15 - .../node_modules/mout/random/guid.js | 24 - .../node_modules/mout/random/rand.js | 15 - .../node_modules/mout/random/randBit.js | 11 - .../node_modules/mout/random/randHex.js | 19 - .../node_modules/mout/random/randInt.js | 18 - .../node_modules/mout/random/randSign.js | 11 - .../node_modules/mout/random/random.js | 18 - .../image-min/node_modules/mout/src/array.js | 46 - .../node_modules/mout/src/array/append.js | 21 - .../node_modules/mout/src/array/collect.js | 26 - .../node_modules/mout/src/array/combine.js | 22 - .../node_modules/mout/src/array/compact.js | 13 - .../node_modules/mout/src/array/contains.js | 10 - .../node_modules/mout/src/array/difference.js | 19 - .../node_modules/mout/src/array/every.js | 27 - .../node_modules/mout/src/array/filter.js | 26 - .../node_modules/mout/src/array/find.js | 13 - .../node_modules/mout/src/array/findIndex.js | 23 - .../node_modules/mout/src/array/flatten.js | 42 - .../node_modules/mout/src/array/forEach.js | 23 - .../node_modules/mout/src/array/indexOf.js | 28 - .../node_modules/mout/src/array/insert.js | 14 - .../mout/src/array/intersection.js | 20 - .../node_modules/mout/src/array/invoke.js | 23 - .../node_modules/mout/src/array/join.js | 17 - .../mout/src/array/lastIndexOf.js | 28 - .../node_modules/mout/src/array/map.js | 22 - .../node_modules/mout/src/array/max.js | 34 - .../node_modules/mout/src/array/min.js | 34 - .../node_modules/mout/src/array/pick.js | 31 - .../node_modules/mout/src/array/pluck.js | 12 - .../node_modules/mout/src/array/range.js | 27 - .../node_modules/mout/src/array/reduce.js | 33 - .../mout/src/array/reduceRight.js | 34 - .../node_modules/mout/src/array/reject.js | 25 - .../node_modules/mout/src/array/remove.js | 13 - .../node_modules/mout/src/array/removeAll.js | 15 - .../node_modules/mout/src/array/shuffle.js | 28 - .../node_modules/mout/src/array/some.js | 27 - .../node_modules/mout/src/array/sort.js | 55 - .../node_modules/mout/src/array/split.js | 35 - .../node_modules/mout/src/array/toLookup.js | 28 - .../node_modules/mout/src/array/union.js | 18 - .../node_modules/mout/src/array/unique.js | 16 - .../node_modules/mout/src/array/xor.js | 24 - .../node_modules/mout/src/array/zip.js | 27 - .../node_modules/mout/src/collection.js | 22 - .../mout/src/collection/contains.js | 7 - .../node_modules/mout/src/collection/every.js | 7 - .../mout/src/collection/filter.js | 22 - .../node_modules/mout/src/collection/find.js | 8 - .../mout/src/collection/forEach.js | 7 - .../node_modules/mout/src/collection/make_.js | 19 - .../node_modules/mout/src/collection/map.js | 20 - .../node_modules/mout/src/collection/max.js | 8 - .../node_modules/mout/src/collection/min.js | 8 - .../node_modules/mout/src/collection/pluck.js | 14 - .../mout/src/collection/reduce.js | 7 - .../mout/src/collection/reject.js | 15 - .../node_modules/mout/src/collection/size.js | 18 - .../node_modules/mout/src/collection/some.js | 7 - .../image-min/node_modules/mout/src/date.js | 21 - .../mout/src/date/dayOfTheYear.js | 13 - .../node_modules/mout/src/date/diff.js | 128 - .../node_modules/mout/src/date/i18n/de-DE.js | 61 - .../node_modules/mout/src/date/i18n/en-US.js | 61 - .../node_modules/mout/src/date/i18n/pt-BR.js | 61 - .../node_modules/mout/src/date/i18n_.js | 13 - .../node_modules/mout/src/date/isLeapYear.js | 15 - .../node_modules/mout/src/date/isSame.js | 16 - .../node_modules/mout/src/date/parseIso.js | 146 - .../node_modules/mout/src/date/startOf.js | 54 - .../node_modules/mout/src/date/strftime.js | 113 - .../mout/src/date/timezoneAbbr.js | 17 - .../mout/src/date/timezoneOffset.js | 16 - .../mout/src/date/totalDaysInMonth.js | 24 - .../mout/src/date/totalDaysInYear.js | 13 - .../mout/src/date/weekOfTheYear.js | 16 - .../node_modules/mout/src/function.js | 19 - .../node_modules/mout/src/function/bind.js | 23 - .../node_modules/mout/src/function/compose.js | 23 - .../mout/src/function/debounce.js | 32 - .../node_modules/mout/src/function/func.js | 14 - .../mout/src/function/makeIterator_.js | 30 - .../node_modules/mout/src/function/partial.js | 19 - .../node_modules/mout/src/function/prop.js | 14 - .../node_modules/mout/src/function/series.js | 22 - .../mout/src/function/throttle.js | 35 - .../node_modules/mout/src/function/timeout.js | 21 - .../node_modules/mout/src/function/times.js | 17 - .../image-min/node_modules/mout/src/index.js | 25 - .../image-min/node_modules/mout/src/lang.js | 37 - .../node_modules/mout/src/lang/clone.js | 47 - .../mout/src/lang/createObject.js | 18 - .../node_modules/mout/src/lang/ctorApply.js | 17 - .../node_modules/mout/src/lang/deepClone.js | 45 - .../node_modules/mout/src/lang/defaults.js | 16 - .../mout/src/lang/inheritPrototype.js | 17 - .../node_modules/mout/src/lang/is.js | 23 - .../node_modules/mout/src/lang/isArguments.js | 15 - .../node_modules/mout/src/lang/isArray.js | 8 - .../node_modules/mout/src/lang/isBoolean.js | 8 - .../node_modules/mout/src/lang/isDate.js | 8 - .../node_modules/mout/src/lang/isEmpty.js | 23 - .../node_modules/mout/src/lang/isFinite.js | 21 - .../node_modules/mout/src/lang/isFunction.js | 8 - .../node_modules/mout/src/lang/isInteger.js | 12 - .../node_modules/mout/src/lang/isKind.js | 9 - .../node_modules/mout/src/lang/isNaN.js | 16 - .../node_modules/mout/src/lang/isNull.js | 9 - .../node_modules/mout/src/lang/isNumber.js | 8 - .../node_modules/mout/src/lang/isObject.js | 8 - .../mout/src/lang/isPlainObject.js | 13 - .../node_modules/mout/src/lang/isRegExp.js | 8 - .../node_modules/mout/src/lang/isString.js | 8 - .../node_modules/mout/src/lang/isUndefined.js | 10 - .../node_modules/mout/src/lang/isnt.js | 12 - .../node_modules/mout/src/lang/kindOf.js | 20 - .../node_modules/mout/src/lang/toArray.js | 31 - .../node_modules/mout/src/lang/toNumber.js | 20 - .../node_modules/mout/src/lang/toString.js | 13 - .../image-min/node_modules/mout/src/math.js | 19 - .../node_modules/mout/src/math/ceil.js | 11 - .../node_modules/mout/src/math/clamp.js | 9 - .../node_modules/mout/src/math/countSteps.js | 16 - .../node_modules/mout/src/math/floor.js | 10 - .../node_modules/mout/src/math/inRange.js | 11 - .../node_modules/mout/src/math/isNear.js | 9 - .../node_modules/mout/src/math/lerp.js | 11 - .../node_modules/mout/src/math/loop.js | 10 - .../node_modules/mout/src/math/map.js | 10 - .../node_modules/mout/src/math/norm.js | 9 - .../node_modules/mout/src/math/round.js | 12 - .../image-min/node_modules/mout/src/number.js | 21 - .../node_modules/mout/src/number/MAX_INT.js | 6 - .../node_modules/mout/src/number/MAX_UINT.js | 6 - .../node_modules/mout/src/number/MIN_INT.js | 6 - .../mout/src/number/abbreviate.js | 35 - .../mout/src/number/currencyFormat.js | 27 - .../mout/src/number/enforcePrecision.js | 12 - .../node_modules/mout/src/number/pad.js | 13 - .../node_modules/mout/src/number/rol.js | 10 - .../node_modules/mout/src/number/ror.js | 10 - .../node_modules/mout/src/number/sign.js | 15 - .../node_modules/mout/src/number/toInt.js | 17 - .../node_modules/mout/src/number/toUInt.js | 15 - .../node_modules/mout/src/number/toUInt31.js | 15 - .../image-min/node_modules/mout/src/object.js | 42 - .../node_modules/mout/src/object/bindAll.js | 16 - .../node_modules/mout/src/object/contains.js | 13 - .../mout/src/object/deepEquals.js | 26 - .../mout/src/object/deepFillIn.js | 32 - .../mout/src/object/deepMatches.js | 54 - .../node_modules/mout/src/object/deepMixIn.js | 33 - .../node_modules/mout/src/object/equals.js | 34 - .../node_modules/mout/src/object/every.js | 22 - .../node_modules/mout/src/object/fillIn.js | 19 - .../node_modules/mout/src/object/filter.js | 19 - .../node_modules/mout/src/object/find.js | 20 - .../node_modules/mout/src/object/forIn.js | 62 - .../node_modules/mout/src/object/forOwn.js | 18 - .../node_modules/mout/src/object/functions.js | 18 - .../node_modules/mout/src/object/get.js | 20 - .../node_modules/mout/src/object/has.js | 15 - .../node_modules/mout/src/object/hasOwn.js | 12 - .../node_modules/mout/src/object/keys.js | 16 - .../node_modules/mout/src/object/map.js | 17 - .../node_modules/mout/src/object/matches.js | 20 - .../node_modules/mout/src/object/max.js | 11 - .../node_modules/mout/src/object/merge.js | 38 - .../node_modules/mout/src/object/min.js | 11 - .../node_modules/mout/src/object/mixIn.js | 28 - .../node_modules/mout/src/object/namespace.js | 19 - .../node_modules/mout/src/object/pick.js | 18 - .../node_modules/mout/src/object/pluck.js | 12 - .../node_modules/mout/src/object/reduce.js | 28 - .../node_modules/mout/src/object/reject.js | 15 - .../node_modules/mout/src/object/set.js | 17 - .../node_modules/mout/src/object/size.js | 16 - .../node_modules/mout/src/object/some.js | 20 - .../node_modules/mout/src/object/unset.js | 23 - .../node_modules/mout/src/object/values.js | 16 - .../node_modules/mout/src/queryString.js | 15 - .../mout/src/queryString/contains.js | 12 - .../mout/src/queryString/decode.js | 35 - .../mout/src/queryString/encode.js | 25 - .../mout/src/queryString/getParam.js | 14 - .../mout/src/queryString/getQuery.js | 13 - .../mout/src/queryString/parse.js | 12 - .../mout/src/queryString/setParam.js | 28 - .../image-min/node_modules/mout/src/random.js | 16 - .../node_modules/mout/src/random/choice.js | 14 - .../node_modules/mout/src/random/guid.js | 23 - .../node_modules/mout/src/random/rand.js | 13 - .../node_modules/mout/src/random/randBit.js | 11 - .../node_modules/mout/src/random/randHex.js | 19 - .../node_modules/mout/src/random/randInt.js | 16 - .../node_modules/mout/src/random/randSign.js | 11 - .../node_modules/mout/src/random/random.js | 18 - .../image-min/node_modules/mout/src/string.js | 46 - .../mout/src/string/WHITE_SPACES.js | 12 - .../node_modules/mout/src/string/camelCase.js | 16 - .../node_modules/mout/src/string/contains.js | 14 - .../node_modules/mout/src/string/crop.js | 11 - .../node_modules/mout/src/string/endsWith.js | 13 - .../mout/src/string/escapeHtml.js | 18 - .../mout/src/string/escapeRegExp.js | 15 - .../mout/src/string/escapeUnicode.js | 21 - .../node_modules/mout/src/string/hyphenate.js | 12 - .../node_modules/mout/src/string/insert.js | 20 - .../mout/src/string/interpolate.js | 18 - .../node_modules/mout/src/string/lowerCase.js | 11 - .../node_modules/mout/src/string/lpad.js | 16 - .../node_modules/mout/src/string/ltrim.js | 33 - .../node_modules/mout/src/string/makePath.js | 14 - .../mout/src/string/normalizeLineBreaks.js | 18 - .../mout/src/string/pascalCase.js | 11 - .../mout/src/string/properCase.js | 11 - .../mout/src/string/removeNonASCII.js | 14 - .../mout/src/string/removeNonWord.js | 11 - .../node_modules/mout/src/string/repeat.js | 13 - .../node_modules/mout/src/string/replace.js | 32 - .../mout/src/string/replaceAccents.js | 36 - .../node_modules/mout/src/string/rpad.js | 14 - .../node_modules/mout/src/string/rtrim.js | 32 - .../mout/src/string/sentenceCase.js | 13 - .../node_modules/mout/src/string/slugify.js | 21 - .../mout/src/string/startsWith.js | 13 - .../mout/src/string/stripHtmlTags.js | 11 - .../node_modules/mout/src/string/trim.js | 12 - .../node_modules/mout/src/string/truncate.js | 20 - .../node_modules/mout/src/string/typecast.js | 29 - .../mout/src/string/unCamelCase.js | 23 - .../mout/src/string/underscore.js | 11 - .../mout/src/string/unescapeHtml.js | 18 - .../mout/src/string/unescapeUnicode.js | 16 - .../mout/src/string/unhyphenate.js | 10 - .../node_modules/mout/src/string/upperCase.js | 10 - .../image-min/node_modules/mout/src/time.js | 12 - .../node_modules/mout/src/time/convert.js | 41 - .../node_modules/mout/src/time/now.js | 12 - .../node_modules/mout/src/time/parseMs.js | 17 - .../mout/src/time/toTimeString.js | 23 - .../image-min/node_modules/mout/string.js | 46 - .../node_modules/mout/string/WHITE_SPACES.js | 12 - .../node_modules/mout/string/camelCase.js | 20 - .../node_modules/mout/string/contains.js | 14 - .../node_modules/mout/string/crop.js | 12 - .../node_modules/mout/string/endsWith.js | 13 - .../node_modules/mout/string/escapeHtml.js | 18 - .../node_modules/mout/string/escapeRegExp.js | 15 - .../node_modules/mout/string/escapeUnicode.js | 21 - .../node_modules/mout/string/hyphenate.js | 14 - .../node_modules/mout/string/insert.js | 21 - .../node_modules/mout/string/interpolate.js | 18 - .../node_modules/mout/string/lowerCase.js | 11 - .../node_modules/mout/string/lpad.js | 17 - .../node_modules/mout/string/ltrim.js | 34 - .../node_modules/mout/string/makePath.js | 14 - .../mout/string/normalizeLineBreaks.js | 18 - .../node_modules/mout/string/pascalCase.js | 13 - .../node_modules/mout/string/properCase.js | 13 - .../mout/string/removeNonASCII.js | 14 - .../node_modules/mout/string/removeNonWord.js | 11 - .../node_modules/mout/string/repeat.js | 13 - .../node_modules/mout/string/replace.js | 33 - .../mout/string/replaceAccents.js | 36 - .../node_modules/mout/string/rpad.js | 15 - .../node_modules/mout/string/rtrim.js | 33 - .../node_modules/mout/string/sentenceCase.js | 15 - .../node_modules/mout/string/slugify.js | 24 - .../node_modules/mout/string/startsWith.js | 13 - .../node_modules/mout/string/stripHtmlTags.js | 11 - .../node_modules/mout/string/trim.js | 15 - .../node_modules/mout/string/truncate.js | 21 - .../node_modules/mout/string/typecast.js | 29 - .../node_modules/mout/string/unCamelCase.js | 23 - .../node_modules/mout/string/underscore.js | 13 - .../node_modules/mout/string/unescapeHtml.js | 18 - .../mout/string/unescapeUnicode.js | 16 - .../node_modules/mout/string/unhyphenate.js | 10 - .../node_modules/mout/string/upperCase.js | 10 - .../image-min/node_modules/mout/time.js | 12 - .../node_modules/mout/time/convert.js | 41 - .../image-min/node_modules/mout/time/now.js | 12 - .../node_modules/mout/time/parseMs.js | 17 - .../node_modules/mout/time/toTimeString.js | 24 - .../node_modules/optipng-bin/bin/optipng.js | 8 - .../node_modules/optipng-bin/lib/check.js | 24 - .../node_modules/optipng-bin/lib/optipng.js | 46 - .../node_modules/bin-wrapper/README.md | 67 - .../node_modules/bin-wrapper/bin-wrapper.js | 223 - .../bin-wrapper/node_modules/.bin/which | 1 - .../node_modules/download/README.md | 84 - .../node_modules/download/download.js | 100 - .../node_modules/decompress/README.md | 71 - .../node_modules/decompress/decompress.js | 168 - .../decompress/node_modules/.bin/rimraf | 1 - .../adm-zip/.idea/scopes/scope_settings.xml | 5 - .../node_modules/adm-zip/MIT-LICENSE.txt | 21 - .../decompress/node_modules/adm-zip/README.md | 64 - .../node_modules/adm-zip/adm-zip.js | 404 - .../adm-zip/headers/entryHeader.js | 261 - .../node_modules/adm-zip/headers/index.js | 2 - .../adm-zip/headers/mainHeader.js | 80 - .../node_modules/adm-zip/methods/deflater.js | 1578 - .../node_modules/adm-zip/methods/index.js | 2 - .../node_modules/adm-zip/methods/inflater.js | 448 - .../node_modules/adm-zip/package.json | 39 - .../adm-zip/test/assets/attributes_test.zip | Bin 4189 -> 0 bytes .../attributes_test/New folder/hidden.txt | 17 - .../New folder/hidden_readonly.txt | 17 - .../attributes_test/New folder/readonly.txt | 17 - .../attributes_test/New folder/somefile.txt | 17 - .../attributes_test/asd/New Text Document.txt | 0 .../assets/attributes_test/blank file.txt | 0 .../node_modules/adm-zip/test/assets/fast.zip | Bin 4194 -> 0 bytes .../adm-zip/test/assets/fastest.zip | Bin 4194 -> 0 bytes .../adm-zip/test/assets/linux_arc.zip | Bin 415 -> 0 bytes .../adm-zip/test/assets/maximum.zip | Bin 4086 -> 0 bytes .../adm-zip/test/assets/normal.zip | Bin 4170 -> 0 bytes .../adm-zip/test/assets/store.zip | Bin 5878 -> 0 bytes .../adm-zip/test/assets/ultra.zip | Bin 4086 -> 0 bytes .../node_modules/adm-zip/test/index.js | 5 - .../node_modules/adm-zip/util/constants.js | 84 - .../node_modules/adm-zip/util/errors.js | 35 - .../node_modules/adm-zip/util/fattr.js | 84 - .../node_modules/adm-zip/util/index.js | 4 - .../node_modules/adm-zip/util/utils.js | 145 - .../node_modules/adm-zip/zipEntry.js | 224 - .../node_modules/adm-zip/zipFile.js | 311 - .../decompress/node_modules/rimraf/AUTHORS | 6 - .../decompress/node_modules/rimraf/LICENSE | 23 - .../decompress/node_modules/rimraf/README.md | 30 - .../decompress/node_modules/rimraf/bin.js | 33 - .../node_modules/rimraf/package.json | 56 - .../decompress/node_modules/rimraf/rimraf.js | 178 - .../node_modules/rimraf/test/run.sh | 10 - .../node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-sync.js | 3 - .../node_modules/stream-combiner/.npmignore | 3 - .../node_modules/stream-combiner/.travis.yml | 4 - .../node_modules/stream-combiner/LICENSE | 22 - .../node_modules/stream-combiner/README.md | 29 - .../node_modules/stream-combiner/index.js | 39 - .../node_modules/duplexer/.npmignore | 3 - .../node_modules/duplexer/.travis.yml | 6 - .../node_modules/duplexer/LICENCE | 19 - .../node_modules/duplexer/README.md | 47 - .../node_modules/duplexer/index.js | 87 - .../node_modules/duplexer/package.json | 57 - .../node_modules/duplexer/test/index.js | 31 - .../node_modules/stream-combiner/package.json | 33 - .../stream-combiner/test/index.js | 52 - .../decompress/node_modules/tar/.npmignore | 5 - .../decompress/node_modules/tar/.travis.yml | 3 - .../decompress/node_modules/tar/LICENCE | 25 - .../decompress/node_modules/tar/README.md | 46 - .../node_modules/tar/examples/extracter.js | 11 - .../node_modules/tar/examples/reader.js | 36 - .../node_modules/tar/lib/buffer-entry.js | 30 - .../node_modules/tar/lib/entry-writer.js | 169 - .../decompress/node_modules/tar/lib/entry.js | 213 - .../tar/lib/extended-header-writer.js | 191 - .../node_modules/tar/lib/extended-header.js | 140 - .../node_modules/tar/lib/extract.js | 78 - .../tar/lib/global-header-writer.js | 14 - .../decompress/node_modules/tar/lib/header.js | 385 - .../decompress/node_modules/tar/lib/pack.js | 231 - .../decompress/node_modules/tar/lib/parse.js | 270 - .../tar/node_modules/block-stream/LICENCE | 25 - .../tar/node_modules/block-stream/README.md | 14 - .../block-stream/bench/block-stream-pause.js | 70 - .../block-stream/bench/block-stream.js | 68 - .../block-stream/bench/dropper-pause.js | 70 - .../block-stream/bench/dropper.js | 68 - .../node_modules/block-stream/block-stream.js | 209 - .../node_modules/block-stream/package.json | 36 - .../node_modules/block-stream/test/basic.js | 27 - .../block-stream/test/nopad-thorough.js | 68 - .../node_modules/block-stream/test/nopad.js | 57 - .../block-stream/test/pause-resume.js | 73 - .../block-stream/test/thorough.js | 68 - .../block-stream/test/two-stream.js | 59 - .../tar/node_modules/fstream/.npmignore | 5 - .../tar/node_modules/fstream/.travis.yml | 3 - .../tar/node_modules/fstream/LICENSE | 27 - .../tar/node_modules/fstream/README.md | 76 - .../fstream/examples/filter-pipe.js | 131 - .../tar/node_modules/fstream/examples/pipe.js | 115 - .../node_modules/fstream/examples/reader.js | 54 - .../fstream/examples/symlink-write.js | 24 - .../tar/node_modules/fstream/fstream.js | 31 - .../tar/node_modules/fstream/lib/abstract.js | 85 - .../tar/node_modules/fstream/lib/collect.js | 67 - .../node_modules/fstream/lib/dir-reader.js | 251 - .../node_modules/fstream/lib/dir-writer.js | 171 - .../node_modules/fstream/lib/file-reader.js | 147 - .../node_modules/fstream/lib/file-writer.js | 100 - .../tar/node_modules/fstream/lib/get-type.js | 32 - .../node_modules/fstream/lib/link-reader.js | 54 - .../node_modules/fstream/lib/link-writer.js | 95 - .../node_modules/fstream/lib/proxy-reader.js | 93 - .../node_modules/fstream/lib/proxy-writer.js | 109 - .../tar/node_modules/fstream/lib/reader.js | 260 - .../node_modules/fstream/lib/socket-reader.js | 38 - .../tar/node_modules/fstream/lib/writer.js | 389 - .../node_modules/graceful-fs/.npmignore | 1 - .../fstream/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 26 - .../node_modules/graceful-fs/graceful-fs.js | 161 - .../node_modules/graceful-fs/package.json | 49 - .../node_modules/graceful-fs/polyfills.js | 228 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 21 - .../tar/node_modules/fstream/package.json | 39 - .../tar/node_modules/inherits/LICENSE | 16 - .../tar/node_modules/inherits/README.md | 42 - .../tar/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../tar/node_modules/inherits/package.json | 33 - .../tar/node_modules/inherits/test.js | 25 - .../decompress/node_modules/tar/package.json | 36 - .../decompress/node_modules/tar/tar.js | 173 - .../tar/test/00-setup-fixtures.js | 53 - .../node_modules/tar/test/extract.js | 358 - .../node_modules/tar/test/fixtures.tgz | Bin 19205 -> 0 bytes .../node_modules/tar/test/header.js | 183 - .../tar/test/pack-no-proprietary.js | 854 - .../decompress/node_modules/tar/test/pack.js | 897 - .../decompress/node_modules/tar/test/parse.js | 359 - .../node_modules/tar/test/zz-cleanup.js | 20 - .../decompress/node_modules/tempfile/index.js | 8 - .../tempfile/node_modules/uuid/.npmignore | 2 - .../tempfile/node_modules/uuid/.travis.yml | 5 - .../tempfile/node_modules/uuid/LICENSE.md | 2 - .../tempfile/node_modules/uuid/README.md | 204 - .../node_modules/uuid/benchmark/README.md | 53 - .../node_modules/uuid/benchmark/bench.gnu | 174 - .../node_modules/uuid/benchmark/bench.sh | 34 - .../uuid/benchmark/benchmark-native.c | 34 - .../node_modules/uuid/benchmark/benchmark.js | 84 - .../node_modules/uuid/misc/compare.js | 62 - .../tempfile/node_modules/uuid/misc/perf.js | 102 - .../tempfile/node_modules/uuid/package.json | 52 - .../tempfile/node_modules/uuid/rng-browser.js | 31 - .../tempfile/node_modules/uuid/rng.js | 4 - .../node_modules/uuid/test/mocha.opts | 1 - .../tempfile/node_modules/uuid/test/test.js | 105 - .../tempfile/node_modules/uuid/uuid.js | 187 - .../node_modules/tempfile/package.json | 48 - .../node_modules/tempfile/readme.md | 36 - .../node_modules/decompress/package.json | 51 - .../node_modules/each-async/each-async.js | 72 - .../node_modules/each-async/package.json | 50 - .../node_modules/each-async/readme.md | 78 - .../download/node_modules/request/.npmignore | 2 - .../download/node_modules/request/.travis.yml | 12 - .../download/node_modules/request/LICENSE | 55 - .../download/node_modules/request/README.md | 366 - .../node_modules/request/dns-request.js | 7 - .../download/node_modules/request/index.js | 157 - .../download/node_modules/request/lib/copy.js | 8 - .../node_modules/request/lib/debug.js | 7 - .../node_modules/request/lib/getSafe.js | 34 - .../node_modules/request/lib/optional.js | 5 - .../request/node_modules/aws-sign2/LICENSE | 55 - .../request/node_modules/aws-sign2/README.md | 4 - .../request/node_modules/aws-sign2/index.js | 202 - .../node_modules/aws-sign2/package.json | 28 - .../node_modules/forever-agent/LICENSE | 55 - .../node_modules/forever-agent/README.md | 4 - .../node_modules/forever-agent/index.js | 119 - .../node_modules/forever-agent/package.json | 28 - .../request/node_modules/form-data/License | 19 - .../request/node_modules/form-data/Readme.md | 163 - .../node_modules/form-data/lib/form_data.js | 325 - .../node_modules/combined-stream/.npmignore | 3 - .../node_modules/combined-stream/License | 19 - .../node_modules/combined-stream/Makefile | 7 - .../node_modules/combined-stream/Readme.md | 132 - .../combined-stream/lib/combined_stream.js | 185 - .../node_modules/delayed-stream/.npmignore | 2 - .../node_modules/delayed-stream/License | 19 - .../node_modules/delayed-stream/Makefile | 7 - .../node_modules/delayed-stream/Readme.md | 154 - .../delayed-stream/lib/delayed_stream.js | 99 - .../node_modules/delayed-stream/package.json | 31 - .../delayed-stream/test/common.js | 6 - .../integration/test-delayed-http-upload.js | 38 - .../test-delayed-stream-auto-pause.js | 21 - .../integration/test-delayed-stream-pause.js | 14 - .../test/integration/test-delayed-stream.js | 48 - .../integration/test-handle-source-errors.js | 15 - .../test/integration/test-max-data-size.js | 18 - .../test/integration/test-pipe-resumes.js | 13 - .../test/integration/test-proxy-readable.js | 13 - .../node_modules/delayed-stream/test/run.js | 7 - .../node_modules/combined-stream/package.json | 32 - .../combined-stream/test/common.js | 23 - .../combined-stream/test/fixture/file1.txt | 256 - .../combined-stream/test/fixture/file2.txt | 256 - .../test/integration/test-callback-streams.js | 27 - .../test/integration/test-data-size.js | 34 - ...delayed-streams-and-buffers-and-strings.js | 38 - .../test/integration/test-delayed-streams.js | 35 - .../test/integration/test-empty-string.js | 39 - .../test/integration/test-is-stream-like.js | 17 - .../test/integration/test-max-data-size.js | 24 - .../test/integration/test-unpaused-streams.js | 30 - .../node_modules/combined-stream/test/run.js | 7 - .../node_modules/form-data/package.json | 46 - .../request/node_modules/hawk/.npmignore | 18 - .../request/node_modules/hawk/.travis.yml | 5 - .../request/node_modules/hawk/LICENSE | 24 - .../request/node_modules/hawk/Makefile | 10 - .../request/node_modules/hawk/README.md | 627 - .../node_modules/hawk/example/usage.js | 78 - .../request/node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../request/node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../request/node_modules/hawk/index.js | 1 - .../request/node_modules/hawk/lib/browser.js | 485 - .../request/node_modules/hawk/lib/client.js | 367 - .../request/node_modules/hawk/lib/crypto.js | 111 - .../request/node_modules/hawk/lib/index.js | 15 - .../request/node_modules/hawk/lib/server.js | 524 - .../request/node_modules/hawk/lib/utils.js | 183 - .../hawk/node_modules/boom/.npmignore | 18 - .../hawk/node_modules/boom/.travis.yml | 5 - .../hawk/node_modules/boom/LICENSE | 24 - .../hawk/node_modules/boom/Makefile | 11 - .../hawk/node_modules/boom/README.md | 6 - .../hawk/node_modules/boom/images/boom.png | Bin 29479 -> 0 bytes .../hawk/node_modules/boom/index.js | 1 - .../hawk/node_modules/boom/lib/index.js | 207 - .../hawk/node_modules/boom/package.json | 47 - .../hawk/node_modules/boom/test/index.js | 245 - .../hawk/node_modules/cryptiles/.npmignore | 18 - .../hawk/node_modules/cryptiles/.travis.yml | 5 - .../hawk/node_modules/cryptiles/LICENSE | 24 - .../hawk/node_modules/cryptiles/Makefile | 11 - .../hawk/node_modules/cryptiles/README.md | 6 - .../hawk/node_modules/cryptiles/index.js | 1 - .../hawk/node_modules/cryptiles/lib/index.js | 68 - .../hawk/node_modules/cryptiles/package.json | 48 - .../hawk/node_modules/cryptiles/test/index.js | 101 - .../hawk/node_modules/hoek/.npmignore | 18 - .../hawk/node_modules/hoek/.travis.yml | 5 - .../hawk/node_modules/hoek/LICENSE | 33 - .../hawk/node_modules/hoek/Makefile | 10 - .../hawk/node_modules/hoek/README.md | 436 - .../hawk/node_modules/hoek/images/hoek.png | Bin 37939 -> 0 bytes .../hawk/node_modules/hoek/index.js | 1 - .../hawk/node_modules/hoek/lib/escape.js | 132 - .../hawk/node_modules/hoek/lib/index.js | 585 - .../hawk/node_modules/hoek/package.json | 49 - .../hawk/node_modules/hoek/test/escaper.js | 86 - .../hawk/node_modules/hoek/test/index.js | 1078 - .../node_modules/hoek/test/modules/test1.js | 1 - .../node_modules/hoek/test/modules/test2.js | 1 - .../node_modules/hoek/test/modules/test3.js | 1 - .../hawk/node_modules/sntp/.npmignore | 18 - .../hawk/node_modules/sntp/.travis.yml | 5 - .../hawk/node_modules/sntp/LICENSE | 24 - .../hawk/node_modules/sntp/Makefile | 11 - .../hawk/node_modules/sntp/README.md | 68 - .../hawk/node_modules/sntp/examples/offset.js | 16 - .../hawk/node_modules/sntp/examples/time.js | 25 - .../hawk/node_modules/sntp/index.js | 1 - .../hawk/node_modules/sntp/lib/index.js | 409 - .../hawk/node_modules/sntp/package.json | 48 - .../hawk/node_modules/sntp/test/index.js | 359 - .../request/node_modules/hawk/package.json | 53 - .../request/node_modules/hawk/test/browser.js | 771 - .../request/node_modules/hawk/test/client.js | 206 - .../request/node_modules/hawk/test/crypto.js | 86 - .../request/node_modules/hawk/test/index.js | 316 - .../request/node_modules/hawk/test/message.js | 246 - .../request/node_modules/hawk/test/readme.js | 98 - .../request/node_modules/hawk/test/server.js | 686 - .../request/node_modules/hawk/test/uri.js | 456 - .../request/node_modules/hawk/test/utils.js | 120 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 75 - .../http-signature/http_signing.md | 296 - .../node_modules/http-signature/lib/index.js | 25 - .../node_modules/http-signature/lib/parser.js | 304 - .../node_modules/http-signature/lib/signer.js | 179 - .../node_modules/http-signature/lib/util.js | 249 - .../node_modules/http-signature/lib/verify.js | 42 - .../node_modules/asn1/.npmignore | 2 - .../http-signature/node_modules/asn1/LICENSE | 19 - .../node_modules/asn1/README.md | 50 - .../node_modules/asn1/lib/ber/errors.js | 13 - .../node_modules/asn1/lib/ber/index.js | 27 - .../node_modules/asn1/lib/ber/reader.js | 267 - .../node_modules/asn1/lib/ber/types.js | 36 - .../node_modules/asn1/lib/ber/writer.js | 317 - .../node_modules/asn1/lib/index.js | 20 - .../node_modules/asn1/package.json | 43 - .../node_modules/asn1/tst/ber/reader.test.js | 172 - .../node_modules/asn1/tst/ber/writer.test.js | 296 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 196 - .../node_modules/assert-plus/package.json | 20 - .../node_modules/ctype/CHANGELOG | 71 - .../http-signature/node_modules/ctype/LICENSE | 24 - .../http-signature/node_modules/ctype/README | 82 - .../node_modules/ctype/README.old | 298 - .../http-signature/node_modules/ctype/ctf.js | 245 - .../http-signature/node_modules/ctype/ctio.js | 1485 - .../node_modules/ctype/ctype.js | 944 - .../ctype/man/man3ctype/ctio.3ctype | 241 - .../node_modules/ctype/package.json | 18 - .../node_modules/ctype/tools/jsl.conf | 129 - .../node_modules/ctype/tools/jsstyle | 839 - .../node_modules/ctype/tst/ctf/float.json | 13 - .../node_modules/ctype/tst/ctf/int.json | 13 - .../node_modules/ctype/tst/ctf/psinfo.json | 104 - .../node_modules/ctype/tst/ctf/struct.json | 19 - .../node_modules/ctype/tst/ctf/tst.fail.js | 39 - .../node_modules/ctype/tst/ctf/tst.float.js | 14 - .../node_modules/ctype/tst/ctf/tst.int.js | 14 - .../node_modules/ctype/tst/ctf/tst.psinfo.js | 17 - .../node_modules/ctype/tst/ctf/tst.struct.js | 18 - .../node_modules/ctype/tst/ctf/tst.typedef.js | 15 - .../node_modules/ctype/tst/ctf/typedef.json | 14 - .../ctype/tst/ctio/float/tst.rfloat.js | 767 - .../ctype/tst/ctio/float/tst.wfloat.js | 753 - .../node_modules/ctype/tst/ctio/int/tst.64.js | 638 - .../ctype/tst/ctio/int/tst.rint.js | 101 - .../ctype/tst/ctio/int/tst.wbounds.js | 53 - .../ctype/tst/ctio/int/tst.wint.js | 92 - .../ctype/tst/ctio/uint/tst.64.js | 451 - .../ctype/tst/ctio/uint/tst.roundtrip.js | 81 - .../ctype/tst/ctio/uint/tst.ruint.js | 95 - .../ctype/tst/ctio/uint/tst.wuint.js | 156 - .../ctype/tst/ctype/tst.basicr.js | 50 - .../ctype/tst/ctype/tst.basicw.js | 44 - .../node_modules/ctype/tst/ctype/tst.char.js | 42 - .../ctype/tst/ctype/tst.endian.js | 45 - .../ctype/tst/ctype/tst.oldwrite.js | 28 - .../ctype/tst/ctype/tst.readSize.js | 128 - .../ctype/tst/ctype/tst.structw.js | 28 - .../ctype/tst/ctype/tst.writeStruct.js | 31 - .../node_modules/http-signature/package.json | 36 - .../node_modules/json-stringify-safe/LICENSE | 27 - .../json-stringify-safe/README.md | 49 - .../json-stringify-safe/package.json | 33 - .../json-stringify-safe/stringify.js | 39 - .../node_modules/json-stringify-safe/test.js | 128 - .../request/node_modules/mime/LICENSE | 19 - .../request/node_modules/mime/README.md | 66 - .../request/node_modules/mime/mime.js | 114 - .../request/node_modules/mime/package.json | 36 - .../request/node_modules/mime/test.js | 84 - .../node_modules/mime/types/mime.types | 1588 - .../node_modules/mime/types/node.types | 77 - .../request/node_modules/node-uuid/.npmignore | 2 - .../request/node_modules/node-uuid/LICENSE.md | 2 - .../request/node_modules/node-uuid/README.md | 207 - .../node-uuid/benchmark/README.md | 53 - .../node-uuid/benchmark/bench.gnu | 174 - .../node_modules/node-uuid/benchmark/bench.sh | 34 - .../node-uuid/benchmark/benchmark-native.c | 34 - .../node-uuid/benchmark/benchmark.js | 84 - .../node_modules/node-uuid/component.json | 18 - .../node_modules/node-uuid/package.json | 35 - .../node_modules/node-uuid/test/compare_v1.js | 63 - .../node_modules/node-uuid/test/test.html | 17 - .../node_modules/node-uuid/test/test.js | 228 - .../request/node_modules/node-uuid/uuid.js | 245 - .../request/node_modules/oauth-sign/LICENSE | 55 - .../request/node_modules/oauth-sign/README.md | 4 - .../request/node_modules/oauth-sign/index.js | 43 - .../node_modules/oauth-sign/package.json | 31 - .../request/node_modules/oauth-sign/test.js | 49 - .../request/node_modules/qs/.gitmodules | 6 - .../request/node_modules/qs/.npmignore | 7 - .../request/node_modules/qs/Readme.md | 58 - .../request/node_modules/qs/index.js | 366 - .../request/node_modules/qs/package.json | 38 - .../node_modules/tough-cookie/.jshintrc | 72 - .../node_modules/tough-cookie/.npmignore | 3 - .../request/node_modules/tough-cookie/LICENSE | 78 - .../node_modules/tough-cookie/README.md | 380 - .../tough-cookie/generate-pubsuffix.js | 230 - .../node_modules/tough-cookie/lib/cookie.js | 947 - .../node_modules/tough-cookie/lib/memstore.js | 102 - .../tough-cookie/lib/pubsuffix.js | 69 - .../node_modules/punycode/LICENSE-GPL.txt | 278 - .../node_modules/punycode/LICENSE-MIT.txt | 20 - .../node_modules/punycode/README.md | 162 - .../node_modules/punycode/package.json | 74 - .../node_modules/punycode/punycode.js | 507 - .../node_modules/punycode/punycode.min.js | 2 - .../node_modules/tough-cookie/package.json | 46 - .../tough-cookie/public-suffix.txt | 5229 -- .../request/node_modules/tough-cookie/test.js | 1340 - .../request/node_modules/tunnel-agent/LICENSE | 55 - .../node_modules/tunnel-agent/README.md | 4 - .../node_modules/tunnel-agent/index.js | 227 - .../node_modules/tunnel-agent/package.json | 28 - .../node_modules/request/package.json | 57 - .../download/node_modules/request/request.js | 1260 - .../download/node_modules/through2/.jshintrc | 59 - .../download/node_modules/through2/.npmignore | 1 - .../node_modules/through2/.travis.yml | 17 - .../download/node_modules/through2/LICENSE | 39 - .../download/node_modules/through2/README.md | 131 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 27 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 69 - .../lib/_stream_passthrough.js | 41 - .../readable-stream/lib/_stream_readable.js | 928 - .../readable-stream/lib/_stream_transform.js | 205 - .../readable-stream/lib/_stream_writable.js | 378 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 200 - .../node_modules/string_decoder/package.json | 32 - .../node_modules/readable-stream/package.json | 38 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 6 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../through2/node_modules/xtend/.npmignore | 1 - .../through2/node_modules/xtend/LICENCE | 19 - .../through2/node_modules/xtend/Makefile | 4 - .../through2/node_modules/xtend/README.md | 27 - .../through2/node_modules/xtend/has-keys.js | 7 - .../through2/node_modules/xtend/index.js | 25 - .../through2/node_modules/xtend/mutable.js | 25 - .../xtend/node_modules/object-keys/.npmignore | 1 - .../node_modules/object-keys/.travis.yml | 5 - .../xtend/node_modules/object-keys/README.md | 39 - .../xtend/node_modules/object-keys/foreach.js | 40 - .../xtend/node_modules/object-keys/index.js | 2 - .../node_modules/object-keys/isArguments.js | 16 - .../node_modules/object-keys/package.json | 56 - .../xtend/node_modules/object-keys/shim.js | 62 - .../node_modules/object-keys/test/foreach.js | 156 - .../node_modules/object-keys/test/index.js | 6 - .../object-keys/test/isArguments.js | 10 - .../node_modules/object-keys/test/shim.js | 134 - .../through2/node_modules/xtend/package.json | 72 - .../through2/node_modules/xtend/test.js | 63 - .../node_modules/through2/package.json | 44 - .../node_modules/through2/test/basic-test.js | 334 - .../node_modules/through2/test/bench.js | 42 - .../node_modules/through2/test/sauce.js | 38 - .../node_modules/through2/test/test.js | 9 - .../node_modules/through2/through2.js | 78 - .../node_modules/download/package.json | 51 - .../bin-wrapper/node_modules/isbin/.npmignore | 1 - .../node_modules/isbin/.travis.yml | 3 - .../bin-wrapper/node_modules/isbin/History.md | 20 - .../bin-wrapper/node_modules/isbin/Makefile | 6 - .../bin-wrapper/node_modules/isbin/README.md | 59 - .../bin-wrapper/node_modules/isbin/index.js | 1 - .../node_modules/isbin/lib/index.js | 51 - .../isbin/node_modules/async/.gitmodules | 9 - .../isbin/node_modules/async/.npmignore | 4 - .../isbin/node_modules/async/LICENSE | 19 - .../isbin/node_modules/async/Makefile | 25 - .../isbin/node_modules/async/README.md | 1021 - .../isbin/node_modules/async/index.js | 3 - .../isbin/node_modules/async/lib/async.js | 692 - .../isbin/node_modules/async/package.json | 32 - .../node_modules/isbin/package.json | 41 - .../node_modules/isbin/test/isbin.js | 39 - .../node_modules/isbin/test/mocha.opts | 4 - .../node_modules/mout/.editorconfig | 20 - .../bin-wrapper/node_modules/mout/.jshintrc | 69 - .../bin-wrapper/node_modules/mout/.npmignore | 30 - .../bin-wrapper/node_modules/mout/.travis.yml | 13 - .../node_modules/mout/CHANGELOG.md | 93 - .../node_modules/mout/CONTRIBUTING.md | 61 - .../bin-wrapper/node_modules/mout/LICENSE.md | 21 - .../bin-wrapper/node_modules/mout/README.md | 63 - .../bin-wrapper/node_modules/mout/array.js | 46 - .../node_modules/mout/array/append.js | 21 - .../node_modules/mout/array/collect.js | 27 - .../node_modules/mout/array/combine.js | 22 - .../node_modules/mout/array/compact.js | 13 - .../node_modules/mout/array/contains.js | 10 - .../node_modules/mout/array/difference.js | 22 - .../node_modules/mout/array/every.js | 27 - .../node_modules/mout/array/filter.js | 27 - .../node_modules/mout/array/find.js | 13 - .../node_modules/mout/array/findIndex.js | 23 - .../node_modules/mout/array/flatten.js | 43 - .../node_modules/mout/array/forEach.js | 23 - .../node_modules/mout/array/indexOf.js | 28 - .../node_modules/mout/array/insert.js | 15 - .../node_modules/mout/array/intersection.js | 23 - .../node_modules/mout/array/invoke.js | 23 - .../node_modules/mout/array/join.js | 17 - .../node_modules/mout/array/lastIndexOf.js | 28 - .../node_modules/mout/array/map.js | 23 - .../node_modules/mout/array/max.js | 35 - .../node_modules/mout/array/min.js | 35 - .../node_modules/mout/array/pick.js | 14 - .../node_modules/mout/array/pluck.js | 12 - .../node_modules/mout/array/range.js | 27 - .../node_modules/mout/array/reduce.js | 33 - .../node_modules/mout/array/reduceRight.js | 34 - .../node_modules/mout/array/reject.js | 26 - .../node_modules/mout/array/remove.js | 13 - .../node_modules/mout/array/removeAll.js | 15 - .../node_modules/mout/array/shuffle.js | 29 - .../node_modules/mout/array/some.js | 27 - .../node_modules/mout/array/sort.js | 55 - .../node_modules/mout/array/split.js | 35 - .../node_modules/mout/array/toLookup.js | 28 - .../node_modules/mout/array/union.js | 19 - .../node_modules/mout/array/unique.js | 17 - .../node_modules/mout/array/xor.js | 26 - .../node_modules/mout/array/zip.js | 29 - .../node_modules/mout/collection.js | 22 - .../node_modules/mout/collection/contains.js | 9 - .../node_modules/mout/collection/every.js | 9 - .../node_modules/mout/collection/filter.js | 23 - .../node_modules/mout/collection/find.js | 10 - .../node_modules/mout/collection/forEach.js | 9 - .../node_modules/mout/collection/make_.js | 19 - .../node_modules/mout/collection/map.js | 23 - .../node_modules/mout/collection/max.js | 10 - .../node_modules/mout/collection/min.js | 10 - .../node_modules/mout/collection/pluck.js | 14 - .../node_modules/mout/collection/reduce.js | 9 - .../node_modules/mout/collection/reject.js | 16 - .../node_modules/mout/collection/size.js | 19 - .../node_modules/mout/collection/some.js | 9 - .../bin-wrapper/node_modules/mout/date.js | 21 - .../node_modules/mout/date/dayOfTheYear.js | 13 - .../node_modules/mout/date/diff.js | 130 - .../node_modules/mout/date/i18n/en-US.js | 61 - .../node_modules/mout/date/i18n/pt-BR.js | 61 - .../node_modules/mout/date/i18n_.js | 14 - .../node_modules/mout/date/isLeapYear.js | 15 - .../node_modules/mout/date/isSame.js | 16 - .../node_modules/mout/date/parseIso.js | 146 - .../node_modules/mout/date/startOf.js | 54 - .../node_modules/mout/date/strftime.js | 118 - .../node_modules/mout/date/timezoneAbbr.js | 17 - .../node_modules/mout/date/timezoneOffset.js | 16 - .../mout/date/totalDaysInMonth.js | 25 - .../node_modules/mout/date/totalDaysInYear.js | 13 - .../node_modules/mout/date/weekOfTheYear.js | 16 - .../node_modules/mout/doc/array.md | 773 - .../node_modules/mout/doc/collection.md | 233 - .../bin-wrapper/node_modules/mout/doc/date.md | 295 - .../node_modules/mout/doc/function.md | 174 - .../bin-wrapper/node_modules/mout/doc/lang.md | 385 - .../bin-wrapper/node_modules/mout/doc/math.md | 298 - .../node_modules/mout/doc/number.md | 225 - .../node_modules/mout/doc/object.md | 780 - .../node_modules/mout/doc/queryString.md | 115 - .../node_modules/mout/doc/random.md | 218 - .../node_modules/mout/doc/string.md | 594 - .../bin-wrapper/node_modules/mout/doc/time.md | 64 - .../bin-wrapper/node_modules/mout/function.js | 18 - .../node_modules/mout/function/bind.js | 23 - .../node_modules/mout/function/compose.js | 23 - .../node_modules/mout/function/debounce.js | 29 - .../node_modules/mout/function/func.js | 14 - .../mout/function/makeIterator_.js | 34 - .../node_modules/mout/function/partial.js | 19 - .../node_modules/mout/function/prop.js | 14 - .../node_modules/mout/function/series.js | 22 - .../node_modules/mout/function/throttle.js | 32 - .../node_modules/mout/function/timeout.js | 21 - .../bin-wrapper/node_modules/mout/index.js | 24 - .../bin-wrapper/node_modules/mout/lang.js | 36 - .../node_modules/mout/lang/clone.js | 49 - .../node_modules/mout/lang/createObject.js | 18 - .../node_modules/mout/lang/ctorApply.js | 17 - .../node_modules/mout/lang/deepClone.js | 48 - .../node_modules/mout/lang/defaults.js | 17 - .../mout/lang/inheritPrototype.js | 16 - .../bin-wrapper/node_modules/mout/lang/is.js | 23 - .../node_modules/mout/lang/isArguments.js | 15 - .../node_modules/mout/lang/isArray.js | 8 - .../node_modules/mout/lang/isBoolean.js | 8 - .../node_modules/mout/lang/isDate.js | 8 - .../node_modules/mout/lang/isEmpty.js | 24 - .../node_modules/mout/lang/isFinite.js | 21 - .../node_modules/mout/lang/isFunction.js | 8 - .../node_modules/mout/lang/isInteger.js | 12 - .../node_modules/mout/lang/isKind.js | 9 - .../node_modules/mout/lang/isNaN.js | 15 - .../node_modules/mout/lang/isNull.js | 9 - .../node_modules/mout/lang/isNumber.js | 8 - .../node_modules/mout/lang/isObject.js | 8 - .../node_modules/mout/lang/isPlainObject.js | 14 - .../node_modules/mout/lang/isRegExp.js | 8 - .../node_modules/mout/lang/isString.js | 8 - .../node_modules/mout/lang/isUndefined.js | 10 - .../node_modules/mout/lang/isnt.js | 12 - .../node_modules/mout/lang/kindOf.js | 20 - .../node_modules/mout/lang/toArray.js | 31 - .../node_modules/mout/lang/toString.js | 13 - .../bin-wrapper/node_modules/mout/math.js | 19 - .../node_modules/mout/math/ceil.js | 11 - .../node_modules/mout/math/clamp.js | 9 - .../node_modules/mout/math/countSteps.js | 16 - .../node_modules/mout/math/floor.js | 10 - .../node_modules/mout/math/inRange.js | 11 - .../node_modules/mout/math/isNear.js | 9 - .../node_modules/mout/math/lerp.js | 11 - .../node_modules/mout/math/loop.js | 10 - .../bin-wrapper/node_modules/mout/math/map.js | 11 - .../node_modules/mout/math/norm.js | 9 - .../node_modules/mout/math/round.js | 12 - .../bin-wrapper/node_modules/mout/number.js | 21 - .../node_modules/mout/number/MAX_INT.js | 6 - .../node_modules/mout/number/MAX_UINT.js | 6 - .../node_modules/mout/number/MIN_INT.js | 6 - .../node_modules/mout/number/abbreviate.js | 35 - .../mout/number/currencyFormat.js | 26 - .../mout/number/enforcePrecision.js | 13 - .../node_modules/mout/number/pad.js | 12 - .../node_modules/mout/number/rol.js | 10 - .../node_modules/mout/number/ror.js | 10 - .../node_modules/mout/number/sign.js | 15 - .../node_modules/mout/number/toInt.js | 15 - .../node_modules/mout/number/toUInt.js | 13 - .../node_modules/mout/number/toUInt31.js | 13 - .../bin-wrapper/node_modules/mout/object.js | 42 - .../node_modules/mout/object/bindAll.js | 18 - .../node_modules/mout/object/contains.js | 13 - .../node_modules/mout/object/deepEquals.js | 27 - .../node_modules/mout/object/deepFillIn.js | 32 - .../node_modules/mout/object/deepMatches.js | 55 - .../node_modules/mout/object/deepMixIn.js | 34 - .../node_modules/mout/object/equals.js | 36 - .../node_modules/mout/object/every.js | 23 - .../node_modules/mout/object/fillIn.js | 20 - .../node_modules/mout/object/filter.js | 20 - .../node_modules/mout/object/find.js | 21 - .../node_modules/mout/object/forIn.js | 62 - .../node_modules/mout/object/forOwn.js | 19 - .../node_modules/mout/object/functions.js | 18 - .../node_modules/mout/object/get.js | 20 - .../node_modules/mout/object/has.js | 15 - .../node_modules/mout/object/hasOwn.js | 12 - .../node_modules/mout/object/keys.js | 16 - .../node_modules/mout/object/map.js | 18 - .../node_modules/mout/object/matches.js | 20 - .../node_modules/mout/object/max.js | 12 - .../node_modules/mout/object/merge.js | 40 - .../node_modules/mout/object/min.js | 12 - .../node_modules/mout/object/mixIn.js | 28 - .../node_modules/mout/object/namespace.js | 19 - .../node_modules/mout/object/pick.js | 18 - .../node_modules/mout/object/pluck.js | 13 - .../node_modules/mout/object/reduce.js | 29 - .../node_modules/mout/object/reject.js | 16 - .../node_modules/mout/object/set.js | 17 - .../node_modules/mout/object/size.js | 16 - .../node_modules/mout/object/some.js | 21 - .../node_modules/mout/object/unset.js | 23 - .../node_modules/mout/object/values.js | 16 - .../node_modules/mout/package.json | 119 - .../node_modules/mout/queryString.js | 15 - .../node_modules/mout/queryString/contains.js | 12 - .../node_modules/mout/queryString/decode.js | 21 - .../node_modules/mout/queryString/encode.js | 15 - .../node_modules/mout/queryString/getParam.js | 15 - .../node_modules/mout/queryString/getQuery.js | 13 - .../node_modules/mout/queryString/parse.js | 13 - .../node_modules/mout/queryString/setParam.js | 28 - .../bin-wrapper/node_modules/mout/random.js | 16 - .../node_modules/mout/random/choice.js | 15 - .../node_modules/mout/random/guid.js | 24 - .../node_modules/mout/random/rand.js | 15 - .../node_modules/mout/random/randBit.js | 11 - .../node_modules/mout/random/randHex.js | 19 - .../node_modules/mout/random/randInt.js | 18 - .../node_modules/mout/random/randSign.js | 11 - .../node_modules/mout/random/random.js | 18 - .../node_modules/mout/src/array.js | 46 - .../node_modules/mout/src/array/append.js | 21 - .../node_modules/mout/src/array/collect.js | 26 - .../node_modules/mout/src/array/combine.js | 22 - .../node_modules/mout/src/array/compact.js | 13 - .../node_modules/mout/src/array/contains.js | 10 - .../node_modules/mout/src/array/difference.js | 19 - .../node_modules/mout/src/array/every.js | 27 - .../node_modules/mout/src/array/filter.js | 26 - .../node_modules/mout/src/array/find.js | 13 - .../node_modules/mout/src/array/findIndex.js | 23 - .../node_modules/mout/src/array/flatten.js | 42 - .../node_modules/mout/src/array/forEach.js | 23 - .../node_modules/mout/src/array/indexOf.js | 28 - .../node_modules/mout/src/array/insert.js | 14 - .../mout/src/array/intersection.js | 20 - .../node_modules/mout/src/array/invoke.js | 23 - .../node_modules/mout/src/array/join.js | 17 - .../mout/src/array/lastIndexOf.js | 28 - .../node_modules/mout/src/array/map.js | 22 - .../node_modules/mout/src/array/max.js | 34 - .../node_modules/mout/src/array/min.js | 34 - .../node_modules/mout/src/array/pick.js | 14 - .../node_modules/mout/src/array/pluck.js | 12 - .../node_modules/mout/src/array/range.js | 27 - .../node_modules/mout/src/array/reduce.js | 33 - .../mout/src/array/reduceRight.js | 34 - .../node_modules/mout/src/array/reject.js | 25 - .../node_modules/mout/src/array/remove.js | 13 - .../node_modules/mout/src/array/removeAll.js | 15 - .../node_modules/mout/src/array/shuffle.js | 28 - .../node_modules/mout/src/array/some.js | 27 - .../node_modules/mout/src/array/sort.js | 55 - .../node_modules/mout/src/array/split.js | 35 - .../node_modules/mout/src/array/toLookup.js | 28 - .../node_modules/mout/src/array/union.js | 18 - .../node_modules/mout/src/array/unique.js | 16 - .../node_modules/mout/src/array/xor.js | 24 - .../node_modules/mout/src/array/zip.js | 27 - .../node_modules/mout/src/collection.js | 22 - .../mout/src/collection/contains.js | 7 - .../node_modules/mout/src/collection/every.js | 7 - .../mout/src/collection/filter.js | 22 - .../node_modules/mout/src/collection/find.js | 8 - .../mout/src/collection/forEach.js | 7 - .../node_modules/mout/src/collection/make_.js | 19 - .../node_modules/mout/src/collection/map.js | 20 - .../node_modules/mout/src/collection/max.js | 8 - .../node_modules/mout/src/collection/min.js | 8 - .../node_modules/mout/src/collection/pluck.js | 14 - .../mout/src/collection/reduce.js | 7 - .../mout/src/collection/reject.js | 15 - .../node_modules/mout/src/collection/size.js | 18 - .../node_modules/mout/src/collection/some.js | 7 - .../bin-wrapper/node_modules/mout/src/date.js | 21 - .../mout/src/date/dayOfTheYear.js | 13 - .../node_modules/mout/src/date/diff.js | 128 - .../node_modules/mout/src/date/i18n/en-US.js | 61 - .../node_modules/mout/src/date/i18n/pt-BR.js | 61 - .../node_modules/mout/src/date/i18n_.js | 13 - .../node_modules/mout/src/date/isLeapYear.js | 15 - .../node_modules/mout/src/date/isSame.js | 16 - .../node_modules/mout/src/date/parseIso.js | 146 - .../node_modules/mout/src/date/startOf.js | 54 - .../node_modules/mout/src/date/strftime.js | 113 - .../mout/src/date/timezoneAbbr.js | 17 - .../mout/src/date/timezoneOffset.js | 16 - .../mout/src/date/totalDaysInMonth.js | 24 - .../mout/src/date/totalDaysInYear.js | 13 - .../mout/src/date/weekOfTheYear.js | 16 - .../node_modules/mout/src/function.js | 18 - .../node_modules/mout/src/function/bind.js | 23 - .../node_modules/mout/src/function/compose.js | 23 - .../mout/src/function/debounce.js | 29 - .../node_modules/mout/src/function/func.js | 14 - .../mout/src/function/makeIterator_.js | 33 - .../node_modules/mout/src/function/partial.js | 19 - .../node_modules/mout/src/function/prop.js | 14 - .../node_modules/mout/src/function/series.js | 22 - .../mout/src/function/throttle.js | 32 - .../node_modules/mout/src/function/timeout.js | 21 - .../node_modules/mout/src/index.js | 24 - .../bin-wrapper/node_modules/mout/src/lang.js | 36 - .../node_modules/mout/src/lang/clone.js | 47 - .../mout/src/lang/createObject.js | 18 - .../node_modules/mout/src/lang/ctorApply.js | 17 - .../node_modules/mout/src/lang/deepClone.js | 45 - .../node_modules/mout/src/lang/defaults.js | 16 - .../mout/src/lang/inheritPrototype.js | 16 - .../node_modules/mout/src/lang/is.js | 23 - .../node_modules/mout/src/lang/isArguments.js | 15 - .../node_modules/mout/src/lang/isArray.js | 8 - .../node_modules/mout/src/lang/isBoolean.js | 8 - .../node_modules/mout/src/lang/isDate.js | 8 - .../node_modules/mout/src/lang/isEmpty.js | 23 - .../node_modules/mout/src/lang/isFinite.js | 21 - .../node_modules/mout/src/lang/isFunction.js | 8 - .../node_modules/mout/src/lang/isInteger.js | 12 - .../node_modules/mout/src/lang/isKind.js | 9 - .../node_modules/mout/src/lang/isNaN.js | 15 - .../node_modules/mout/src/lang/isNull.js | 9 - .../node_modules/mout/src/lang/isNumber.js | 8 - .../node_modules/mout/src/lang/isObject.js | 8 - .../mout/src/lang/isPlainObject.js | 14 - .../node_modules/mout/src/lang/isRegExp.js | 8 - .../node_modules/mout/src/lang/isString.js | 8 - .../node_modules/mout/src/lang/isUndefined.js | 10 - .../node_modules/mout/src/lang/isnt.js | 12 - .../node_modules/mout/src/lang/kindOf.js | 20 - .../node_modules/mout/src/lang/toArray.js | 31 - .../node_modules/mout/src/lang/toString.js | 13 - .../bin-wrapper/node_modules/mout/src/math.js | 19 - .../node_modules/mout/src/math/ceil.js | 11 - .../node_modules/mout/src/math/clamp.js | 9 - .../node_modules/mout/src/math/countSteps.js | 16 - .../node_modules/mout/src/math/floor.js | 10 - .../node_modules/mout/src/math/inRange.js | 11 - .../node_modules/mout/src/math/isNear.js | 9 - .../node_modules/mout/src/math/lerp.js | 11 - .../node_modules/mout/src/math/loop.js | 10 - .../node_modules/mout/src/math/map.js | 10 - .../node_modules/mout/src/math/norm.js | 9 - .../node_modules/mout/src/math/round.js | 12 - .../node_modules/mout/src/number.js | 21 - .../node_modules/mout/src/number/MAX_INT.js | 6 - .../node_modules/mout/src/number/MAX_UINT.js | 6 - .../node_modules/mout/src/number/MIN_INT.js | 6 - .../mout/src/number/abbreviate.js | 35 - .../mout/src/number/currencyFormat.js | 26 - .../mout/src/number/enforcePrecision.js | 13 - .../node_modules/mout/src/number/pad.js | 12 - .../node_modules/mout/src/number/rol.js | 10 - .../node_modules/mout/src/number/ror.js | 10 - .../node_modules/mout/src/number/sign.js | 15 - .../node_modules/mout/src/number/toInt.js | 15 - .../node_modules/mout/src/number/toUInt.js | 13 - .../node_modules/mout/src/number/toUInt31.js | 13 - .../node_modules/mout/src/object.js | 42 - .../node_modules/mout/src/object/bindAll.js | 16 - .../node_modules/mout/src/object/contains.js | 13 - .../mout/src/object/deepEquals.js | 26 - .../mout/src/object/deepFillIn.js | 31 - .../mout/src/object/deepMatches.js | 54 - .../node_modules/mout/src/object/deepMixIn.js | 33 - .../node_modules/mout/src/object/equals.js | 34 - .../node_modules/mout/src/object/every.js | 22 - .../node_modules/mout/src/object/fillIn.js | 19 - .../node_modules/mout/src/object/filter.js | 19 - .../node_modules/mout/src/object/find.js | 20 - .../node_modules/mout/src/object/forIn.js | 62 - .../node_modules/mout/src/object/forOwn.js | 18 - .../node_modules/mout/src/object/functions.js | 18 - .../node_modules/mout/src/object/get.js | 20 - .../node_modules/mout/src/object/has.js | 15 - .../node_modules/mout/src/object/hasOwn.js | 12 - .../node_modules/mout/src/object/keys.js | 16 - .../node_modules/mout/src/object/map.js | 17 - .../node_modules/mout/src/object/matches.js | 20 - .../node_modules/mout/src/object/max.js | 11 - .../node_modules/mout/src/object/merge.js | 38 - .../node_modules/mout/src/object/min.js | 11 - .../node_modules/mout/src/object/mixIn.js | 28 - .../node_modules/mout/src/object/namespace.js | 19 - .../node_modules/mout/src/object/pick.js | 18 - .../node_modules/mout/src/object/pluck.js | 12 - .../node_modules/mout/src/object/reduce.js | 28 - .../node_modules/mout/src/object/reject.js | 15 - .../node_modules/mout/src/object/set.js | 17 - .../node_modules/mout/src/object/size.js | 16 - .../node_modules/mout/src/object/some.js | 20 - .../node_modules/mout/src/object/unset.js | 23 - .../node_modules/mout/src/object/values.js | 16 - .../node_modules/mout/src/queryString.js | 15 - .../mout/src/queryString/contains.js | 12 - .../mout/src/queryString/decode.js | 20 - .../mout/src/queryString/encode.js | 15 - .../mout/src/queryString/getParam.js | 14 - .../mout/src/queryString/getQuery.js | 13 - .../mout/src/queryString/parse.js | 12 - .../mout/src/queryString/setParam.js | 28 - .../node_modules/mout/src/random.js | 16 - .../node_modules/mout/src/random/choice.js | 14 - .../node_modules/mout/src/random/guid.js | 23 - .../node_modules/mout/src/random/rand.js | 13 - .../node_modules/mout/src/random/randBit.js | 11 - .../node_modules/mout/src/random/randHex.js | 19 - .../node_modules/mout/src/random/randInt.js | 16 - .../node_modules/mout/src/random/randSign.js | 11 - .../node_modules/mout/src/random/random.js | 18 - .../node_modules/mout/src/string.js | 45 - .../mout/src/string/WHITE_SPACES.js | 12 - .../node_modules/mout/src/string/camelCase.js | 16 - .../node_modules/mout/src/string/contains.js | 14 - .../node_modules/mout/src/string/crop.js | 11 - .../node_modules/mout/src/string/endsWith.js | 13 - .../mout/src/string/escapeHtml.js | 18 - .../mout/src/string/escapeRegExp.js | 15 - .../mout/src/string/escapeUnicode.js | 21 - .../node_modules/mout/src/string/hyphenate.js | 12 - .../mout/src/string/interpolate.js | 18 - .../node_modules/mout/src/string/lowerCase.js | 11 - .../node_modules/mout/src/string/lpad.js | 16 - .../node_modules/mout/src/string/ltrim.js | 33 - .../node_modules/mout/src/string/makePath.js | 13 - .../mout/src/string/normalizeLineBreaks.js | 18 - .../mout/src/string/pascalCase.js | 11 - .../mout/src/string/properCase.js | 11 - .../mout/src/string/removeNonASCII.js | 14 - .../mout/src/string/removeNonWord.js | 11 - .../node_modules/mout/src/string/repeat.js | 13 - .../node_modules/mout/src/string/replace.js | 32 - .../mout/src/string/replaceAccents.js | 36 - .../node_modules/mout/src/string/rpad.js | 14 - .../node_modules/mout/src/string/rtrim.js | 32 - .../mout/src/string/sentenceCase.js | 13 - .../node_modules/mout/src/string/slugify.js | 21 - .../mout/src/string/startsWith.js | 13 - .../mout/src/string/stripHtmlTags.js | 11 - .../node_modules/mout/src/string/trim.js | 12 - .../node_modules/mout/src/string/truncate.js | 20 - .../node_modules/mout/src/string/typecast.js | 29 - .../mout/src/string/unCamelCase.js | 23 - .../mout/src/string/underscore.js | 11 - .../mout/src/string/unescapeHtml.js | 18 - .../mout/src/string/unescapeUnicode.js | 16 - .../mout/src/string/unhyphenate.js | 10 - .../node_modules/mout/src/string/upperCase.js | 10 - .../bin-wrapper/node_modules/mout/src/time.js | 12 - .../node_modules/mout/src/time/convert.js | 41 - .../node_modules/mout/src/time/now.js | 12 - .../node_modules/mout/src/time/parseMs.js | 17 - .../mout/src/time/toTimeString.js | 23 - .../bin-wrapper/node_modules/mout/string.js | 45 - .../node_modules/mout/string/WHITE_SPACES.js | 12 - .../node_modules/mout/string/camelCase.js | 20 - .../node_modules/mout/string/contains.js | 14 - .../node_modules/mout/string/crop.js | 12 - .../node_modules/mout/string/endsWith.js | 13 - .../node_modules/mout/string/escapeHtml.js | 18 - .../node_modules/mout/string/escapeRegExp.js | 15 - .../node_modules/mout/string/escapeUnicode.js | 21 - .../node_modules/mout/string/hyphenate.js | 14 - .../node_modules/mout/string/interpolate.js | 18 - .../node_modules/mout/string/lowerCase.js | 11 - .../node_modules/mout/string/lpad.js | 17 - .../node_modules/mout/string/ltrim.js | 34 - .../node_modules/mout/string/makePath.js | 13 - .../mout/string/normalizeLineBreaks.js | 18 - .../node_modules/mout/string/pascalCase.js | 13 - .../node_modules/mout/string/properCase.js | 13 - .../mout/string/removeNonASCII.js | 14 - .../node_modules/mout/string/removeNonWord.js | 11 - .../node_modules/mout/string/repeat.js | 13 - .../node_modules/mout/string/replace.js | 33 - .../mout/string/replaceAccents.js | 36 - .../node_modules/mout/string/rpad.js | 15 - .../node_modules/mout/string/rtrim.js | 33 - .../node_modules/mout/string/sentenceCase.js | 15 - .../node_modules/mout/string/slugify.js | 24 - .../node_modules/mout/string/startsWith.js | 13 - .../node_modules/mout/string/stripHtmlTags.js | 11 - .../node_modules/mout/string/trim.js | 15 - .../node_modules/mout/string/truncate.js | 21 - .../node_modules/mout/string/typecast.js | 29 - .../node_modules/mout/string/unCamelCase.js | 23 - .../node_modules/mout/string/underscore.js | 13 - .../node_modules/mout/string/unescapeHtml.js | 18 - .../mout/string/unescapeUnicode.js | 16 - .../node_modules/mout/string/unhyphenate.js | 10 - .../node_modules/mout/string/upperCase.js | 10 - .../bin-wrapper/node_modules/mout/time.js | 12 - .../node_modules/mout/time/convert.js | 41 - .../bin-wrapper/node_modules/mout/time/now.js | 12 - .../node_modules/mout/time/parseMs.js | 17 - .../node_modules/mout/time/toTimeString.js | 24 - .../node_modules/progress/.npmignore | 4 - .../node_modules/progress/History.md | 42 - .../node_modules/progress/Makefile | 5 - .../node_modules/progress/Readme.md | 117 - .../node_modules/progress/index.js | 1 - .../progress/lib/node-progress.js | 183 - .../node_modules/progress/package.json | 30 - .../bin-wrapper/node_modules/which/LICENSE | 23 - .../bin-wrapper/node_modules/which/README.md | 5 - .../bin-wrapper/node_modules/which/bin/which | 14 - .../node_modules/which/package.json | 31 - .../bin-wrapper/node_modules/which/which.js | 104 - .../node_modules/bin-wrapper/package.json | 49 - .../optipng-bin/node_modules/chalk/chalk.js | 62 - .../node_modules/ansi-styles/ansi-styles.js | 29 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../node_modules/chalk/package.json | 61 - .../optipng-bin/node_modules/chalk/readme.md | 130 - .../node_modules/optipng-bin/package.json | 67 - .../node_modules/optipng-bin/readme.md | 30 - .../node_modules/optipng-bin/vendor/optipng | Bin 171784 -> 0 bytes .../node_modules/image-min/package.json | 61 - .../grunt-contrib-imagemin/package.json | 66 - .../grunt-contrib-imagemin/tasks/imagemin.js | 59 - node_modules/grunt-contrib-jshint/LICENSE-MIT | 22 - node_modules/grunt-contrib-jshint/README.md | 223 - .../node_modules/.bin/jshint | 1 - .../node_modules/jshint/README.md | 51 - .../node_modules/jshint/bin/apply | 6 - .../node_modules/jshint/bin/build | 32 - .../node_modules/jshint/bin/changelog | 36 - .../node_modules/jshint/bin/jshint | 3 - .../node_modules/jshint/bin/land | 34 - .../jshint/data/ascii-identifier-data.js | 22 - .../data/non-ascii-identifier-part-only.js | 1570 - .../jshint/data/non-ascii-identifier-start.js | 48477 ---------------- .../jshint/node_modules/.bin/shjs | 1 - .../jshint/node_modules/cli/README.md | 196 - .../jshint/node_modules/cli/cli.js | 1133 - .../jshint/node_modules/cli/examples/cat.js | 17 - .../node_modules/cli/examples/command.js | 16 - .../jshint/node_modules/cli/examples/echo.js | 54 - .../jshint/node_modules/cli/examples/glob.js | 6 - .../node_modules/cli/examples/long_desc.js | 20 - .../node_modules/cli/examples/progress.js | 11 - .../jshint/node_modules/cli/examples/sort.js | 18 - .../node_modules/cli/examples/spinner.js | 9 - .../node_modules/cli/examples/static.coffee | 27 - .../node_modules/cli/examples/static.js | 25 - .../jshint/node_modules/cli/index.js | 1 - .../cli/node_modules/glob/.npmignore | 2 - .../cli/node_modules/glob/.travis.yml | 3 - .../cli/node_modules/glob/LICENSE | 27 - .../cli/node_modules/glob/README.md | 250 - .../cli/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../cli/node_modules/glob/glob.js | 728 - .../glob/node_modules/inherits/LICENSE | 16 - .../glob/node_modules/inherits/README.md | 42 - .../glob/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../glob/node_modules/inherits/package.json | 33 - .../glob/node_modules/inherits/test.js | 25 - .../cli/node_modules/glob/package.json | 44 - .../cli/node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 351 - .../cli/node_modules/glob/test/cwd-test.js | 55 - .../node_modules/glob/test/globstar-match.js | 19 - .../cli/node_modules/glob/test/mark.js | 118 - .../glob/test/new-glob-optional-options.js | 10 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/readme-issue.js | 36 - .../node_modules/glob/test/root-nomount.js | 39 - .../cli/node_modules/glob/test/root.js | 46 - .../cli/node_modules/glob/test/stat.js | 32 - .../cli/node_modules/glob/test/zz-cleanup.js | 11 - .../jshint/node_modules/cli/package.json | 53 - .../console-browserify/.npmignore | 14 - .../console-browserify/.testem.json | 14 - .../console-browserify/.travis.yml | 4 - .../node_modules/console-browserify/LICENCE | 19 - .../node_modules/console-browserify/README.md | 32 - .../node_modules/console-browserify/index.js | 85 - .../console-browserify/package.json | 76 - .../console-browserify/test/index.js | 67 - .../console-browserify/test/static/index.html | 12 - .../test/static/test-adapter.js | 53 - .../jshint/node_modules/exit/.jshintrc | 14 - .../jshint/node_modules/exit/.npmignore | 0 .../jshint/node_modules/exit/.travis.yml | 6 - .../jshint/node_modules/exit/Gruntfile.js | 48 - .../jshint/node_modules/exit/LICENSE-MIT | 22 - .../jshint/node_modules/exit/README.md | 75 - .../jshint/node_modules/exit/lib/exit.js | 41 - .../jshint/node_modules/exit/package.json | 51 - .../node_modules/exit/test/exit_test.js | 121 - .../exit/test/fixtures/10-stderr.txt | 10 - .../exit/test/fixtures/10-stdout-stderr.txt | 20 - .../exit/test/fixtures/10-stdout.txt | 10 - .../exit/test/fixtures/100-stderr.txt | 100 - .../exit/test/fixtures/100-stdout-stderr.txt | 200 - .../exit/test/fixtures/100-stdout.txt | 100 - .../exit/test/fixtures/1000-stderr.txt | 1000 - .../exit/test/fixtures/1000-stdout-stderr.txt | 2000 - .../exit/test/fixtures/1000-stdout.txt | 1000 - .../exit/test/fixtures/create-files.sh | 8 - .../exit/test/fixtures/log-broken.js | 23 - .../node_modules/exit/test/fixtures/log.js | 25 - .../node_modules/htmlparser2/.gitattributes | 2 - .../node_modules/htmlparser2/.npmignore | 2 - .../node_modules/htmlparser2/.travis.yml | 5 - .../jshint/node_modules/htmlparser2/LICENSE | 18 - .../jshint/node_modules/htmlparser2/README.md | 81 - .../htmlparser2/lib/CollectingHandler.js | 55 - .../htmlparser2/lib/FeedHandler.js | 95 - .../node_modules/htmlparser2/lib/Parser.js | 314 - .../htmlparser2/lib/ProxyHandler.js | 27 - .../node_modules/htmlparser2/lib/Stream.js | 35 - .../node_modules/htmlparser2/lib/Tokenizer.js | 876 - .../htmlparser2/lib/WritableStream.js | 21 - .../htmlparser2/lib/entities/decode.json | 1 - .../htmlparser2/lib/entities/entities.json | 1 - .../htmlparser2/lib/entities/legacy.json | 1 - .../htmlparser2/lib/entities/xml.json | 1 - .../node_modules/htmlparser2/lib/index.js | 70 - .../node_modules/domelementtype/LICENSE | 11 - .../node_modules/domelementtype/index.js | 14 - .../node_modules/domelementtype/package.json | 26 - .../node_modules/domelementtype/readme.md | 1 - .../node_modules/domhandler/.travis.yml | 6 - .../node_modules/domhandler/LICENSE | 11 - .../node_modules/domhandler/index.js | 174 - .../node_modules/domhandler/package.json | 39 - .../node_modules/domhandler/readme.md | 99 - .../domhandler/test/cases/01-basic.json | 41 - .../test/cases/02-single_tag_1.json | 21 - .../test/cases/03-single_tag_2.json | 21 - .../test/cases/04-unescaped_in_script.json | 27 - .../test/cases/05-tags_in_comment.json | 18 - .../test/cases/06-comment_in_script.json | 18 - .../test/cases/07-unescaped_in_style.json | 20 - .../test/cases/08-extra_spaces_in_tag.json | 20 - .../test/cases/09-unquoted_attrib.json | 20 - .../test/cases/10-singular_attribute.json | 15 - .../test/cases/11-text_outside_tags.json | 20 - .../domhandler/test/cases/12-text_only.json | 11 - .../test/cases/13-comment_in_text.json | 19 - .../cases/14-comment_in_text_in_script.json | 18 - .../domhandler/test/cases/15-non-verbose.json | 22 - .../test/cases/16-normalize_whitespace.json | 47 - .../test/cases/17-xml_namespace.json | 18 - .../test/cases/18-enforce_empty_tags.json | 16 - .../test/cases/19-ignore_empty_tags.json | 20 - .../test/cases/20-template_script_tags.json | 20 - .../test/cases/21-conditional_comments.json | 15 - .../test/cases/22-lowercase_tags.json | 41 - .../node_modules/domhandler/test/tests.js | 59 - .../htmlparser2/node_modules/domutils/LICENSE | 11 - .../node_modules/domutils/index.js | 318 - .../node_modules/domutils/package.json | 39 - .../node_modules/domutils/readme.md | 1 - .../domutils/tests/00-runtests.js | 64 - .../domutils/tests/02-dom_utils.js | 15 - .../domutils/tests/DomUtils/01-by_id.js | 56 - .../domutils/tests/DomUtils/02-by_tagname.js | 23 - .../domutils/tests/DomUtils/03-by_type.js | 23 - .../domutils/tests/DomUtils/04-outer_html.js | 10 - .../domutils/tests/DomUtils/05-inner_html.js | 10 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 27 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 69 - .../lib/_stream_passthrough.js | 41 - .../readable-stream/lib/_stream_readable.js | 928 - .../readable-stream/lib/_stream_transform.js | 205 - .../readable-stream/lib/_stream_writable.js | 378 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 200 - .../node_modules/string_decoder/package.json | 32 - .../node_modules/readable-stream/package.json | 38 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 6 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/htmlparser2/package.json | 59 - .../htmlparser2/test/01-events.js | 9 - .../htmlparser2/test/02-stream.js | 23 - .../node_modules/htmlparser2/test/03-feed.js | 19 - .../test/Documents/Atom_Example.xml | 25 - .../test/Documents/Attributes.html | 16 - .../htmlparser2/test/Documents/Basic.html | 1 - .../test/Documents/RDF_Example.xml | 63 - .../test/Documents/RSS_Example.xml | 48 - .../htmlparser2/test/Events/01-simple.json | 44 - .../htmlparser2/test/Events/02-template.json | 63 - .../test/Events/03-lowercase_tags.json | 46 - .../htmlparser2/test/Events/04-cdata.json | 43 - .../test/Events/05-cdata-special.json | 35 - .../test/Events/06-leading-lt.json | 16 - .../test/Events/07-self-closing.json | 67 - .../test/Events/08-implicit-close-tags.json | 59 - .../test/Events/09-attributes.json | 68 - .../test/Events/10-crazy-attrib.json | 52 - .../test/Events/11-script_in_script.json | 54 - .../test/Events/12-long-comment-end.json | 20 - .../test/Events/13-long-cdata-end.json | 22 - .../test/Events/14-implicit-open-tags.json | 24 - .../test/Events/15-lt-whitespace.json | 16 - .../test/Events/16-double_attribs.json | 45 - .../test/Events/17-numeric_entities.json | 16 - .../test/Events/18-legacy_entities.json | 16 - .../test/Events/19-named_entities.json | 16 - .../test/Events/20-xml_entities.json | 16 - .../test/Events/21-entity_in_attribute.json | 38 - .../test/Events/22-double_brackets.json | 41 - .../htmlparser2/test/Feeds/01-rss.js | 34 - .../htmlparser2/test/Feeds/02-atom.js | 18 - .../htmlparser2/test/Feeds/03-rdf.js | 20 - .../htmlparser2/test/Stream/01-basic.json | 83 - .../htmlparser2/test/Stream/02-RSS.json | 1093 - .../htmlparser2/test/Stream/03-Atom.json | 644 - .../htmlparser2/test/Stream/04-RDF.json | 1399 - .../test/Stream/05-Attributes.json | 354 - .../htmlparser2/test/test-helper.js | 81 - .../jshint/node_modules/minimatch/.npmignore | 1 - .../jshint/node_modules/minimatch/LICENSE | 23 - .../jshint/node_modules/minimatch/README.md | 218 - .../node_modules/minimatch/minimatch.js | 1055 - .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 33 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 42 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/minimatch/package.json | 40 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../node_modules/shelljs/.documentup.json | 6 - .../jshint/node_modules/shelljs/.npmignore | 1 - .../jshint/node_modules/shelljs/.travis.yml | 5 - .../jshint/node_modules/shelljs/LICENSE | 26 - .../jshint/node_modules/shelljs/README.md | 513 - .../jshint/node_modules/shelljs/bin/shjs | 51 - .../jshint/node_modules/shelljs/global.js | 3 - .../jshint/node_modules/shelljs/jshint.json | 4 - .../jshint/node_modules/shelljs/make.js | 48 - .../jshint/node_modules/shelljs/package.json | 44 - .../node_modules/shelljs/scripts/docs.js | 15 - .../node_modules/shelljs/scripts/run-tests.js | 50 - .../jshint/node_modules/shelljs/shell.js | 1901 - .../node_modules/shelljs/test/.npmignore | 2 - .../jshint/node_modules/shelljs/test/cat.js | 57 - .../jshint/node_modules/shelljs/test/cd.js | 64 - .../jshint/node_modules/shelljs/test/chmod.js | 81 - .../node_modules/shelljs/test/config.js | 50 - .../jshint/node_modules/shelljs/test/cp.js | 143 - .../jshint/node_modules/shelljs/test/dirs.js | 37 - .../jshint/node_modules/shelljs/test/echo.js | 50 - .../jshint/node_modules/shelljs/test/env.js | 19 - .../jshint/node_modules/shelljs/test/exec.js | 109 - .../jshint/node_modules/shelljs/test/find.js | 56 - .../jshint/node_modules/shelljs/test/grep.js | 59 - .../jshint/node_modules/shelljs/test/ls.js | 202 - .../jshint/node_modules/shelljs/test/make.js | 20 - .../jshint/node_modules/shelljs/test/mkdir.js | 79 - .../jshint/node_modules/shelljs/test/mv.js | 130 - .../jshint/node_modules/shelljs/test/popd.js | 118 - .../jshint/node_modules/shelljs/test/pushd.js | 228 - .../jshint/node_modules/shelljs/test/pwd.js | 28 - .../node_modules/shelljs/test/resources/a.txt | 11 - .../test/resources/chmod/a/b/c/.npmignore | 0 .../test/resources/chmod/b/a/b/.npmignore | 0 .../test/resources/chmod/c/a/b/.npmignore | 0 .../shelljs/test/resources/chmod/file1 | 2 - .../node_modules/shelljs/test/resources/cp/a | 1 - .../node_modules/shelljs/test/resources/cp/b | 1 - .../shelljs/test/resources/cp/dir_a/z | 1 - .../resources/cp/dir_b/dir_b_a/dir_b_a_a/z | 1 - .../test/resources/external/node_script.js | 2 - .../node_modules/shelljs/test/resources/file1 | 1 - .../shelljs/test/resources/file1.js | 1 - .../shelljs/test/resources/file1.txt | 1 - .../node_modules/shelljs/test/resources/file2 | 1 - .../shelljs/test/resources/file2.js | 1 - .../shelljs/test/resources/file2.txt | 1 - .../shelljs/test/resources/find/.hidden | 1 - .../shelljs/test/resources/find/a | 1 - .../shelljs/test/resources/find/b | 1 - .../shelljs/test/resources/find/dir1/a_dir1 | 1 - .../test/resources/find/dir1/dir11/a_dir11 | 1 - .../shelljs/test/resources/find/dir2/a_dir1 | 1 - .../shelljs/test/resources/issue44/main.js | 1 - .../test/resources/ls/.hidden_dir/nada | 1 - .../shelljs/test/resources/ls/.hidden_file | 1 - .../test/resources/ls/a_dir/.hidden_dir/nada | 1 - .../shelljs/test/resources/ls/a_dir/b_dir/z | 1 - .../shelljs/test/resources/ls/a_dir/nada | 1 - .../shelljs/test/resources/ls/file1 | 1 - .../shelljs/test/resources/ls/file1.js | 1 - .../shelljs/test/resources/ls/file2 | 1 - .../shelljs/test/resources/ls/file2.js | 1 - ...ilename(with)[chars$]^that.must+be-escaped | 1 - .../shelljs/test/resources/pushd/a/dummy | 1 - .../shelljs/test/resources/pushd/b/c/dummy | 1 - .../jshint/node_modules/shelljs/test/rm.js | 183 - .../jshint/node_modules/shelljs/test/sed.js | 58 - .../node_modules/shelljs/test/tempdir.js | 27 - .../jshint/node_modules/shelljs/test/test.js | 91 - .../jshint/node_modules/shelljs/test/to.js | 39 - .../jshint/node_modules/shelljs/test/which.js | 38 - .../jshint/node_modules/underscore/.npmignore | 4 - .../node_modules/underscore/.travis.yml | 5 - .../jshint/node_modules/underscore/CNAME | 1 - .../node_modules/underscore/CONTRIBUTING.md | 9 - .../jshint/node_modules/underscore/LICENSE | 22 - .../jshint/node_modules/underscore/README.md | 19 - .../node_modules/underscore/favicon.ico | Bin 1406 -> 0 bytes .../jshint/node_modules/underscore/index.html | 2467 - .../jshint/node_modules/underscore/index.js | 1 - .../node_modules/underscore/package.json | 35 - .../node_modules/underscore/underscore-min.js | 1 - .../node_modules/underscore/underscore.js | 1226 - .../node_modules/jshint/package.json | 80 - .../node_modules/jshint/src/cli.js | 598 - .../node_modules/jshint/src/jshint.js | 5147 -- .../node_modules/jshint/src/lex.js | 1614 - .../node_modules/jshint/src/messages.js | 222 - .../jshint/src/platforms/rhino.js | 115 - .../node_modules/jshint/src/reg.js | 38 - .../jshint/src/reporters/checkstyle.js | 81 - .../jshint/src/reporters/default.js | 34 - .../jshint/src/reporters/jslint_xml.js | 57 - .../jshint/src/reporters/non_error.js | 52 - .../node_modules/jshint/src/state.js | 26 - .../node_modules/jshint/src/style.js | 171 - .../node_modules/jshint/src/vars.js | 599 - .../grunt-contrib-jshint/package.json | 51 - .../grunt-contrib-jshint/tasks/jshint.js | 71 - .../grunt-contrib-jshint/tasks/lib/jshint.js | 227 - node_modules/grunt-contrib-sass/.jshintrc | 13 - node_modules/grunt-contrib-sass/AUTHORS | 1 - node_modules/grunt-contrib-sass/CHANGELOG | 65 - .../grunt-contrib-sass/CONTRIBUTING.md | 1 - node_modules/grunt-contrib-sass/Gruntfile.js | 81 - node_modules/grunt-contrib-sass/LICENSE-MIT | 22 - node_modules/grunt-contrib-sass/README.md | 268 - .../grunt-contrib-sass/docs/sass-examples.md | 79 - .../grunt-contrib-sass/docs/sass-options.md | 130 - .../grunt-contrib-sass/docs/sass-overview.md | 5 - .../node_modules/.bin/which | 1 - .../node_modules/.bin/win-spawn | 1 - .../node_modules/async/LICENSE | 19 - .../node_modules/async/README.md | 1425 - .../node_modules/async/component.json | 11 - .../node_modules/async/lib/async.js | 958 - .../node_modules/async/package.json | 43 - .../node_modules/chalk/index.js | 63 - .../chalk/node_modules/.bin/strip-ansi | 1 - .../node_modules/ansi-styles/ansi-styles.js | 38 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../chalk/node_modules/strip-ansi/cli.js | 27 - .../chalk/node_modules/strip-ansi/index.js | 4 - .../node_modules/strip-ansi/package.json | 64 - .../chalk/node_modules/strip-ansi/readme.md | 46 - .../node_modules/chalk/package.json | 61 - .../node_modules/chalk/readme.md | 158 - .../node_modules/dargs/dargs.js | 36 - .../node_modules/dargs/package.json | 47 - .../node_modules/dargs/readme.md | 57 - .../node_modules/which/LICENSE | 23 - .../node_modules/which/README.md | 5 - .../node_modules/which/bin/which | 14 - .../node_modules/which/package.json | 31 - .../node_modules/which/which.js | 104 - .../node_modules/win-spawn/.npmignore | 15 - .../node_modules/win-spawn/README.md | 41 - .../node_modules/win-spawn/bin/win-spawn | 12 - .../node_modules/win-spawn/index.js | 64 - .../node_modules/win-spawn/package.json | 31 - node_modules/grunt-contrib-sass/package.json | 66 - node_modules/grunt-contrib-sass/tasks/sass.js | 108 - node_modules/grunt-contrib-uglify/LICENSE-MIT | 22 - node_modules/grunt-contrib-uglify/README.md | 416 - .../node_modules/.bin/uglifyjs | 1 - .../node_modules/chalk/index.js | 63 - .../chalk/node_modules/.bin/strip-ansi | 1 - .../node_modules/ansi-styles/ansi-styles.js | 38 - .../node_modules/ansi-styles/package.json | 58 - .../chalk/node_modules/ansi-styles/readme.md | 65 - .../chalk/node_modules/has-color/has-color.js | 24 - .../chalk/node_modules/has-color/package.json | 55 - .../chalk/node_modules/has-color/readme.md | 28 - .../chalk/node_modules/strip-ansi/cli.js | 27 - .../chalk/node_modules/strip-ansi/index.js | 4 - .../node_modules/strip-ansi/package.json | 64 - .../chalk/node_modules/strip-ansi/readme.md | 46 - .../node_modules/chalk/package.json | 61 - .../node_modules/chalk/readme.md | 158 - .../node_modules/maxmin/index.js | 22 - .../maxmin/node_modules/.bin/gzip-size | 1 - .../maxmin/node_modules/.bin/pretty-bytes | 1 - .../maxmin/node_modules/gzip-size/cli.js | 38 - .../maxmin/node_modules/gzip-size/index.js | 17 - .../node_modules/concat-stream/.npmignore | 1 - .../node_modules/concat-stream/LICENSE | 24 - .../node_modules/concat-stream/index.js | 125 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 33 - .../node_modules/inherits/test.js | 25 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../node_modules/readable-stream/float.patch | 923 - .../readable-stream/lib/_stream_duplex.js | 75 - .../lib/_stream_passthrough.js | 47 - .../readable-stream/lib/_stream_readable.js | 925 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 467 - .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 - .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 35 - .../node_modules/core-util-is/util.js | 106 - .../node_modules/debuglog/LICENSE | 19 - .../node_modules/debuglog/README.md | 40 - .../node_modules/debuglog/debuglog.js | 22 - .../node_modules/debuglog/package.json | 26 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 200 - .../node_modules/string_decoder/package.json | 32 - .../node_modules/readable-stream/package.json | 43 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 7 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/typedarray/.travis.yml | 4 - .../node_modules/typedarray/LICENSE | 35 - .../node_modules/typedarray/example/tarray.js | 4 - .../node_modules/typedarray/index.js | 630 - .../node_modules/typedarray/package.json | 62 - .../node_modules/typedarray/readme.markdown | 55 - .../typedarray/test/server/undef_globals.js | 19 - .../node_modules/typedarray/test/tarray.js | 10 - .../node_modules/concat-stream/package.json | 59 - .../node_modules/concat-stream/readme.md | 72 - .../node_modules/concat-stream/test/array.js | 12 - .../node_modules/concat-stream/test/buffer.js | 31 - .../node_modules/concat-stream/test/infer.js | 14 - .../concat-stream/test/nothing.js | 9 - .../concat-stream/test/objects.js | 29 - .../concat-stream/test/server/ls.js | 16 - .../node_modules/concat-stream/test/string.js | 50 - .../concat-stream/test/typedarray.js | 33 - .../node_modules/zlib-browserify/.npmignore | 1 - .../node_modules/zlib-browserify/.travis.yml | 7 - .../node_modules/zlib-browserify/LICENSE | 21 - .../node_modules/zlib-browserify/index.js | 43 - .../node_modules/tape/.npmignore | 1 - .../node_modules/tape/.travis.yml | 4 - .../zlib-browserify/node_modules/tape/LICENSE | 18 - .../node_modules/tape/example/array.js | 35 - .../node_modules/tape/example/fail.js | 35 - .../node_modules/tape/example/nested.js | 51 - .../node_modules/tape/example/nested_fail.js | 51 - .../node_modules/tape/example/not_enough.js | 35 - .../node_modules/tape/example/static/build.sh | 2 - .../tape/example/static/index.html | 21 - .../tape/example/static/server.js | 4 - .../node_modules/tape/example/timing.js | 12 - .../node_modules/tape/example/too_many.js | 35 - .../node_modules/tape/index.js | 124 - .../node_modules/tape/lib/default_stream.js | 30 - .../node_modules/tape/lib/render.js | 100 - .../node_modules/tape/lib/test.js | 342 - .../node_modules/deep-equal/README.markdown | 55 - .../node_modules/deep-equal/example/cmp.js | 11 - .../tape/node_modules/deep-equal/index.js | 84 - .../tape/node_modules/deep-equal/package.json | 43 - .../tape/node_modules/deep-equal/test/cmp.js | 18 - .../tape/node_modules/defined/.travis.yml | 4 - .../tape/node_modules/defined/LICENSE | 18 - .../node_modules/defined/example/defined.js | 4 - .../tape/node_modules/defined/index.js | 5 - .../tape/node_modules/defined/package.json | 44 - .../tape/node_modules/defined/readme.markdown | 51 - .../tape/node_modules/defined/test/def.js | 22 - .../tape/node_modules/jsonify/README.markdown | 34 - .../tape/node_modules/jsonify/index.js | 2 - .../tape/node_modules/jsonify/lib/parse.js | 273 - .../node_modules/jsonify/lib/stringify.js | 154 - .../tape/node_modules/jsonify/package.json | 38 - .../tape/node_modules/jsonify/test/parse.js | 16 - .../node_modules/jsonify/test/stringify.js | 15 - .../node_modules/tape/package.json | 48 - .../node_modules/tape/readme.markdown | 180 - .../node_modules/tape/test/array.js | 68 - .../node_modules/tape/test/child_ordering.js | 51 - .../node_modules/tape/test/exit.js | 108 - .../node_modules/tape/test/exit/fail.js | 35 - .../node_modules/tape/test/exit/ok.js | 35 - .../node_modules/tape/test/exit/too_few.js | 35 - .../node_modules/tape/test/fail.js | 68 - .../node_modules/tape/test/harness.js | 88 - .../node_modules/tape/test/max_listeners.js | 7 - .../tape/test/max_listeners/source.js | 5 - .../node_modules/tape/test/nested.js | 89 - .../node_modules/tape/test/only.js | 48 - .../node_modules/tape/test/order.js | 17 - .../node_modules/tape/test/plan_optional.js | 15 - .../node_modules/tape/test/skip.js | 34 - .../node_modules/tape/test/throw.js | 38 - .../node_modules/tape/test/too_many.js | 69 - .../node_modules/zlib-browserify/package.json | 39 - .../node_modules/zlib-browserify/readme.md | 43 - .../zlib-browserify/test/zlib.test.js | 64 - .../node_modules/zlib-browserify/zlib.js | 54 - .../node_modules/gzip-size/package.json | 55 - .../maxmin/node_modules/gzip-size/readme.md | 82 - .../maxmin/node_modules/pretty-bytes/cli.js | 21 - .../node_modules/pretty-bytes/package.json | 56 - .../node_modules/pretty-bytes/pretty-bytes.js | 40 - .../node_modules/pretty-bytes/readme.md | 65 - .../node_modules/maxmin/package.json | 52 - .../node_modules/maxmin/readme.md | 56 - .../node_modules/uglify-js/.npmignore | 2 - .../node_modules/uglify-js/.travis.yml | 6 - .../node_modules/uglify-js/LICENSE | 29 - .../node_modules/uglify-js/README.md | 636 - .../node_modules/uglify-js/bin/uglifyjs | 445 - .../node_modules/uglify-js/lib/ast.js | 984 - .../node_modules/uglify-js/lib/compress.js | 2358 - .../node_modules/uglify-js/lib/mozilla-ast.js | 267 - .../node_modules/uglify-js/lib/output.js | 1300 - .../node_modules/uglify-js/lib/parse.js | 1457 - .../node_modules/uglify-js/lib/scope.js | 563 - .../node_modules/uglify-js/lib/sourcemap.js | 84 - .../node_modules/uglify-js/lib/transform.js | 218 - .../node_modules/uglify-js/lib/utils.js | 302 - .../uglify-js/node_modules/async/LICENSE | 19 - .../uglify-js/node_modules/async/README.md | 1425 - .../node_modules/async/component.json | 11 - .../uglify-js/node_modules/async/lib/async.js | 958 - .../uglify-js/node_modules/async/package.json | 43 - .../node_modules/optimist/.travis.yml | 4 - .../uglify-js/node_modules/optimist/LICENSE | 21 - .../node_modules/optimist/example/bool.js | 10 - .../optimist/example/boolean_double.js | 7 - .../optimist/example/boolean_single.js | 7 - .../optimist/example/default_hash.js | 8 - .../optimist/example/default_singles.js | 7 - .../node_modules/optimist/example/divide.js | 8 - .../optimist/example/line_count.js | 20 - .../optimist/example/line_count_options.js | 29 - .../optimist/example/line_count_wrap.js | 29 - .../node_modules/optimist/example/nonopt.js | 4 - .../node_modules/optimist/example/reflect.js | 2 - .../node_modules/optimist/example/short.js | 3 - .../node_modules/optimist/example/string.js | 11 - .../optimist/example/usage-options.js | 19 - .../node_modules/optimist/example/xup.js | 10 - .../uglify-js/node_modules/optimist/index.js | 478 - .../optimist/node_modules/wordwrap/.npmignore | 1 - .../node_modules/wordwrap/README.markdown | 70 - .../node_modules/wordwrap/example/center.js | 10 - .../node_modules/wordwrap/example/meat.js | 3 - .../optimist/node_modules/wordwrap/index.js | 76 - .../node_modules/wordwrap/package.json | 45 - .../node_modules/wordwrap/test/break.js | 30 - .../node_modules/wordwrap/test/idleness.txt | 63 - .../node_modules/wordwrap/test/wrap.js | 31 - .../node_modules/optimist/package.json | 46 - .../node_modules/optimist/readme.markdown | 487 - .../uglify-js/node_modules/optimist/test/_.js | 71 - .../node_modules/optimist/test/_/argv.js | 2 - .../node_modules/optimist/test/_/bin.js | 3 - .../node_modules/optimist/test/parse.js | 446 - .../node_modules/optimist/test/usage.js | 292 - .../node_modules/source-map/.npmignore | 2 - .../node_modules/source-map/.travis.yml | 4 - .../node_modules/source-map/CHANGELOG.md | 130 - .../uglify-js/node_modules/source-map/LICENSE | 28 - .../source-map/Makefile.dryice.js | 166 - .../node_modules/source-map/README.md | 446 - .../source-map/build/assert-shim.js | 56 - .../source-map/build/mini-require.js | 152 - .../source-map/build/prefix-source-map.jsm | 20 - .../source-map/build/prefix-utils.jsm | 18 - .../source-map/build/suffix-browser.js | 8 - .../source-map/build/suffix-source-map.jsm | 6 - .../source-map/build/suffix-utils.jsm | 21 - .../source-map/build/test-prefix.js | 8 - .../source-map/build/test-suffix.js | 3 - .../node_modules/source-map/lib/source-map.js | 8 - .../source-map/lib/source-map/array-set.js | 97 - .../source-map/lib/source-map/base64-vlq.js | 144 - .../source-map/lib/source-map/base64.js | 42 - .../lib/source-map/binary-search.js | 81 - .../lib/source-map/source-map-consumer.js | 478 - .../lib/source-map/source-map-generator.js | 397 - .../source-map/lib/source-map/source-node.js | 387 - .../source-map/lib/source-map/util.js | 302 - .../source-map/node_modules/amdefine/LICENSE | 58 - .../node_modules/amdefine/README.md | 171 - .../node_modules/amdefine/amdefine.js | 299 - .../node_modules/amdefine/intercept.js | 36 - .../node_modules/amdefine/package.json | 36 - .../node_modules/source-map/package.json | 126 - .../node_modules/source-map/test/run-tests.js | 62 - .../source-map/test/source-map/test-api.js | 26 - .../test/source-map/test-array-set.js | 104 - .../test/source-map/test-base64-vlq.js | 24 - .../source-map/test/source-map/test-base64.js | 35 - .../test/source-map/test-binary-search.js | 54 - .../test/source-map/test-dog-fooding.js | 84 - .../source-map/test-source-map-consumer.js | 475 - .../source-map/test-source-map-generator.js | 540 - .../test/source-map/test-source-node.js | 439 - .../source-map/test/source-map/test-util.js | 127 - .../source-map/test/source-map/util.js | 161 - .../uglify-to-browserify/.npmignore | 14 - .../uglify-to-browserify/.travis.yml | 3 - .../node_modules/uglify-to-browserify/LICENSE | 19 - .../uglify-to-browserify/README.md | 15 - .../uglify-to-browserify/index.js | 49 - .../uglify-to-browserify/package.json | 30 - .../uglify-to-browserify/test/index.js | 22 - .../node_modules/uglify-js/package.json | 45 - .../uglify-js/test/compress/arrays.js | 74 - .../uglify-js/test/compress/blocks.js | 49 - .../uglify-js/test/compress/concat-strings.js | 22 - .../uglify-js/test/compress/conditionals.js | 207 - .../uglify-js/test/compress/dead-code.js | 89 - .../uglify-js/test/compress/debugger.js | 24 - .../uglify-js/test/compress/drop-unused.js | 165 - .../uglify-js/test/compress/issue-105.js | 25 - .../uglify-js/test/compress/issue-12.js | 11 - .../uglify-js/test/compress/issue-126.js | 24 - .../uglify-js/test/compress/issue-143.js | 48 - .../uglify-js/test/compress/issue-22.js | 17 - .../uglify-js/test/compress/issue-267.js | 11 - .../uglify-js/test/compress/issue-269.js | 66 - .../uglify-js/test/compress/issue-44.js | 31 - .../uglify-js/test/compress/issue-59.js | 30 - .../uglify-js/test/compress/labels.js | 163 - .../uglify-js/test/compress/loops.js | 123 - .../uglify-js/test/compress/negate-iife.js | 76 - .../uglify-js/test/compress/properties.js | 54 - .../uglify-js/test/compress/sequences.js | 163 - .../uglify-js/test/compress/switch.js | 260 - .../uglify-js/test/compress/typeof.js | 25 - .../node_modules/uglify-js/test/run-tests.js | 179 - .../node_modules/uglify-js/tools/node.js | 172 - .../grunt-contrib-uglify/package.json | 55 - .../grunt-contrib-uglify/tasks/lib/uglify.js | 186 - .../grunt-contrib-uglify/tasks/uglify.js | 166 - .../grunt-contrib-watch/.editorconfig | 10 - .../grunt-contrib-watch/.gitattributes | 1 - node_modules/grunt-contrib-watch/.jshintrc | 14 - node_modules/grunt-contrib-watch/.npmignore | 3 - node_modules/grunt-contrib-watch/.travis.yml | 6 - node_modules/grunt-contrib-watch/AUTHORS | 21 - node_modules/grunt-contrib-watch/CHANGELOG | 118 - .../grunt-contrib-watch/CONTRIBUTING.md | 1 - node_modules/grunt-contrib-watch/Gruntfile.js | 47 - node_modules/grunt-contrib-watch/LICENSE-MIT | 22 - node_modules/grunt-contrib-watch/README.md | 429 - .../docs/watch-examples.md | 220 - .../grunt-contrib-watch/docs/watch-options.md | 150 - .../node_modules/.bin/tiny-lr | 1 - .../node_modules/gaze/.editorconfig | 13 - .../node_modules/gaze/.jshintrc | 13 - .../node_modules/gaze/.npmignore | 1 - .../node_modules/gaze/.travis.yml | 6 - .../node_modules/gaze/AUTHORS | 10 - .../node_modules/gaze/Gruntfile.js | 32 - .../node_modules/gaze/LICENSE-MIT | 22 - .../node_modules/gaze/README.md | 177 - .../node_modules/gaze/benchmarks/gaze100s.js | 46 - .../node_modules/gaze/lib/gaze.js | 417 - .../node_modules/gaze/lib/helper.js | 67 - .../gaze/node_modules/globule/.jshintrc | 15 - .../gaze/node_modules/globule/.npmignore | 1 - .../gaze/node_modules/globule/.travis.yml | 6 - .../gaze/node_modules/globule/Gruntfile.js | 48 - .../gaze/node_modules/globule/LICENSE-MIT | 22 - .../gaze/node_modules/globule/README.md | 117 - .../gaze/node_modules/globule/lib/globule.js | 172 - .../globule/node_modules/glob/.npmignore | 2 - .../globule/node_modules/glob/.travis.yml | 3 - .../globule/node_modules/glob/LICENSE | 27 - .../globule/node_modules/glob/README.md | 233 - .../globule/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../globule/node_modules/glob/glob.js | 643 - .../glob/node_modules/graceful-fs/.npmignore | 1 - .../glob/node_modules/graceful-fs/LICENSE | 27 - .../glob/node_modules/graceful-fs/README.md | 33 - .../node_modules/graceful-fs/graceful-fs.js | 442 - .../node_modules/graceful-fs/package.json | 49 - .../node_modules/graceful-fs/test/open.js | 46 - .../node_modules/graceful-fs/test/ulimit.js | 158 - .../glob/node_modules/inherits/README.md | 51 - .../glob/node_modules/inherits/inherits.js | 29 - .../glob/node_modules/inherits/package.json | 30 - .../globule/node_modules/glob/package.json | 40 - .../node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 348 - .../node_modules/glob/test/cwd-test.js | 55 - .../globule/node_modules/glob/test/mark.js | 74 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/root-nomount.js | 39 - .../globule/node_modules/glob/test/root.js | 46 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../globule/node_modules/lodash/README.md | 164 - .../node_modules/lodash/dist/lodash.compat.js | 5152 -- .../lodash/dist/lodash.compat.min.js | 42 - .../node_modules/lodash/dist/lodash.js | 4983 -- .../node_modules/lodash/dist/lodash.min.js | 40 - .../lodash/dist/lodash.underscore.js | 4307 -- .../lodash/dist/lodash.underscore.min.js | 34 - .../globule/node_modules/lodash/package.json | 62 - .../globule/node_modules/minimatch/.npmignore | 1 - .../globule/node_modules/minimatch/LICENSE | 23 - .../globule/node_modules/minimatch/README.md | 218 - .../node_modules/minimatch/minimatch.js | 1055 - .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 33 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 42 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/minimatch/package.json | 40 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../gaze/node_modules/globule/package.json | 56 - .../globule/test/fixtures/expand/README.md | 0 .../globule/test/fixtures/expand/css/baz.css | 0 .../globule/test/fixtures/expand/css/qux.css | 0 .../test/fixtures/expand/deep/deep.txt | 0 .../fixtures/expand/deep/deeper/deeper.txt | 0 .../expand/deep/deeper/deepest/deepest.txt | 0 .../globule/test/fixtures/expand/js/bar.js | 0 .../globule/test/fixtures/expand/js/foo.js | 0 .../node_modules/globule/test/globule_test.js | 486 - .../node_modules/gaze/package.json | 88 - .../node_modules/gaze/test/add_test.js | 69 - .../node_modules/gaze/test/api_test.js | 38 - .../node_modules/gaze/test/file_poller.js | 27 - .../gaze/test/fixtures/Project (LO)/one.js | 1 - .../gaze/test/fixtures/nested/one.js | 1 - .../gaze/test/fixtures/nested/sub/two.js | 1 - .../gaze/test/fixtures/nested/sub2/two.js | 1 - .../gaze/test/fixtures/nested/three.js | 1 - .../node_modules/gaze/test/fixtures/one.js | 1 - .../gaze/test/fixtures/sub/one.js | 1 - .../gaze/test/fixtures/sub/two.js | 1 - .../node_modules/gaze/test/helper.js | 21 - .../node_modules/gaze/test/matching_test.js | 95 - .../node_modules/gaze/test/patterns_test.js | 42 - .../node_modules/gaze/test/relative_test.js | 28 - .../node_modules/gaze/test/rename_test.js | 40 - .../node_modules/gaze/test/safewrite_test.js | 58 - .../node_modules/gaze/test/watch_race_test.js | 84 - .../node_modules/gaze/test/watch_test.js | 314 - .../node_modules/tiny-lr/.npmignore | 1 - .../node_modules/tiny-lr/.travis.yml | 3 - .../node_modules/tiny-lr/bin/tiny-lr | 68 - .../tiny-lr/bin/update-livereload | 13 - .../node_modules/tiny-lr/lib/client.js | 81 - .../node_modules/tiny-lr/lib/index.js | 22 - .../tiny-lr/lib/public/livereload.js | 1055 - .../node_modules/tiny-lr/lib/server.js | 203 - .../tiny-lr/node_modules/debug/Readme.md | 115 - .../tiny-lr/node_modules/debug/debug.js | 137 - .../tiny-lr/node_modules/debug/index.js | 5 - .../tiny-lr/node_modules/debug/lib/debug.js | 147 - .../tiny-lr/node_modules/debug/package.json | 46 - .../node_modules/faye-websocket/CHANGELOG.txt | 62 - .../faye-websocket/README.markdown | 248 - .../examples/autobahn_client.js | 44 - .../faye-websocket/examples/client.js | 22 - .../faye-websocket/examples/haproxy.conf | 21 - .../faye-websocket/examples/server.js | 70 - .../faye-websocket/examples/sse.html | 39 - .../faye-websocket/examples/ws.html | 44 - .../faye-websocket/lib/faye/eventsource.js | 110 - .../faye-websocket/lib/faye/websocket.js | 93 - .../faye-websocket/lib/faye/websocket/api.js | 88 - .../lib/faye/websocket/api/event.js | 21 - .../lib/faye/websocket/api/event_target.js | 47 - .../lib/faye/websocket/client.js | 86 - .../lib/faye/websocket/draft75_parser.js | 98 - .../lib/faye/websocket/draft76_parser.js | 99 - .../lib/faye/websocket/hybi_parser.js | 355 - .../faye/websocket/hybi_parser/handshake.js | 91 - .../websocket/hybi_parser/stream_reader.js | 43 - .../node_modules/faye-websocket/package.json | 49 - .../spec/faye/websocket/client_spec.js | 175 - .../spec/faye/websocket/draft75parser_spec.js | 72 - .../spec/faye/websocket/draft76parser_spec.js | 28 - .../spec/faye/websocket/hybi_parser_spec.js | 148 - .../faye-websocket/spec/runner.js | 54 - .../faye-websocket/spec/server.crt | 15 - .../faye-websocket/spec/server.key | 15 - .../tiny-lr/node_modules/noptify/.npmignore | 1 - .../noptify/actions/collectable.js | 94 - .../noptify/actions/commandable.js | 68 - .../tiny-lr/node_modules/noptify/index.js | 253 - .../noptify/node_modules/.bin/nopt | 1 - .../noptify/node_modules/nopt/.npmignore | 0 .../noptify/node_modules/nopt/LICENSE | 23 - .../noptify/node_modules/nopt/README.md | 210 - .../noptify/node_modules/nopt/bin/nopt.js | 44 - .../node_modules/nopt/examples/my-program.js | 30 - .../noptify/node_modules/nopt/lib/nopt.js | 555 - .../nopt/node_modules/abbrev/LICENSE | 23 - .../nopt/node_modules/abbrev/README.md | 23 - .../nopt/node_modules/abbrev/lib/abbrev.js | 111 - .../nopt/node_modules/abbrev/package.json | 29 - .../noptify/node_modules/nopt/package.json | 36 - .../tiny-lr/node_modules/noptify/package.json | 29 - .../tiny-lr/node_modules/noptify/readme.md | 184 - .../tiny-lr/node_modules/noptify/test/api.js | 53 - .../node_modules/noptify/test/collectable.js | 40 - .../node_modules/noptify/test/commandable.js | 40 - .../node_modules/noptify/test/fixtures/a.js | 1 - .../node_modules/noptify/test/fixtures/b.js | 1 - .../node_modules/noptify/util/extend.js | 15 - .../node_modules/noptify/util/index.js | 6 - .../tiny-lr/node_modules/qs/.gitmodules | 6 - .../tiny-lr/node_modules/qs/.npmignore | 1 - .../tiny-lr/node_modules/qs/.travis.yml | 4 - .../tiny-lr/node_modules/qs/History.md | 109 - .../tiny-lr/node_modules/qs/Makefile | 6 - .../tiny-lr/node_modules/qs/Readme.md | 58 - .../tiny-lr/node_modules/qs/benchmark.js | 17 - .../tiny-lr/node_modules/qs/component.json | 9 - .../tiny-lr/node_modules/qs/examples.js | 51 - .../tiny-lr/node_modules/qs/index.js | 268 - .../tiny-lr/node_modules/qs/package.json | 40 - .../node_modules/qs/test/browser/expect.js | 1202 - .../node_modules/qs/test/browser/index.html | 18 - .../node_modules/qs/test/browser/jquery.js | 8981 --- .../node_modules/qs/test/browser/mocha.css | 163 - .../node_modules/qs/test/browser/mocha.js | 4201 -- .../node_modules/qs/test/browser/qs.css | 0 .../node_modules/qs/test/browser/qs.js | 351 - .../tiny-lr/node_modules/qs/test/parse.js | 152 - .../tiny-lr/node_modules/qs/test/stringify.js | 81 - .../node_modules/tiny-lr/package.json | 45 - .../node_modules/tiny-lr/readme.md | 386 - .../node_modules/tiny-lr/tasks/tiny-lr.js | 123 - .../node_modules/tiny-lr/tasks/tiny-lr.mk | 49 - .../node_modules/tiny-lr/test/client.js | 57 - .../node_modules/tiny-lr/test/middleware.js | 121 - .../node_modules/tiny-lr/test/server.js | 96 - node_modules/grunt-contrib-watch/package.json | 119 - .../tasks/lib/livereload.js | 57 - .../grunt-contrib-watch/tasks/lib/taskrun.js | 84 - .../tasks/lib/taskrunner.js | 336 - .../grunt-contrib-watch/tasks/watch.js | 173 - .../test/fixtures/atBegin/Gruntfile.js | 22 - .../test/fixtures/atBegin/lib/one.js | 1 - .../test/fixtures/dateFormat/Gruntfile.js | 24 - .../test/fixtures/dateFormat/lib/one.js | 1 - .../test/fixtures/events/Gruntfile.js | 55 - .../test/fixtures/events/lib/one.js | 1 - .../test/fixtures/events/lib/one/test.js | 1 - .../test/fixtures/events/lib/two/test.js | 1 - .../test/fixtures/fail/Gruntfile.js | 37 - .../test/fixtures/fail/lib/one.js | 1 - .../test/fixtures/livereload/Gruntfile.js | 67 - .../test/fixtures/livereload/css/one.css | 1 - .../test/fixtures/livereload/lib/one.js | 1 - .../test/fixtures/livereload/lib/two.js | 1 - .../test/fixtures/livereload/sass/one.scss | 1 - .../test/fixtures/multiTargets/Gruntfile.js | 40 - .../test/fixtures/multiTargets/lib/fail.js | 1 - .../fixtures/multiTargets/lib/interrupt.js | 1 - .../test/fixtures/multiTargets/lib/one.js | 1 - .../test/fixtures/multiTargets/lib/two.js | 1 - .../test/fixtures/multiTargets/lib/wait.js | 1 - .../test/fixtures/nospawn/Gruntfile.js | 60 - .../test/fixtures/nospawn/lib/interrupt.js | 1 - .../test/fixtures/nospawn/lib/nospawn.js | 1 - .../test/fixtures/nospawn/lib/spawn.js | 1 - .../test/fixtures/oneTarget/Gruntfile.js | 19 - .../test/fixtures/oneTarget/lib/one.js | 1 - .../test/fixtures/patterns/Gruntfile.js | 21 - .../test/fixtures/patterns/lib/edit.js | 1 - .../fixtures/patterns/lib/sub/dontedit.js | 1 - .../test/fixtures/tasks/echo.js | 30 - .../test/tasks/events_test.js | 133 - .../test/tasks/fail_test.js | 55 - .../grunt-contrib-watch/test/tasks/helper.js | 104 - .../test/tasks/livereload_test.js | 166 - .../test/tasks/nospawn_test.js | 65 - .../test/tasks/patterns_test.js | 42 - .../test/tasks/reloadgruntfile_test.js | 55 - .../test/tasks/watch_test.js | 154 - node_modules/grunt/.npmignore | 8 - node_modules/grunt/CONTRIBUTING.md | 1 - node_modules/grunt/LICENSE-MIT | 22 - node_modules/grunt/README.md | 16 - node_modules/grunt/internal-tasks/bump.js | 151 - node_modules/grunt/internal-tasks/subgrunt.js | 34 - node_modules/grunt/lib/grunt.js | 156 - node_modules/grunt/lib/grunt/cli.js | 128 - node_modules/grunt/lib/grunt/config.js | 118 - node_modules/grunt/lib/grunt/event.js | 16 - node_modules/grunt/lib/grunt/fail.js | 84 - node_modules/grunt/lib/grunt/file.js | 440 - node_modules/grunt/lib/grunt/help.js | 129 - node_modules/grunt/lib/grunt/log.js | 352 - node_modules/grunt/lib/grunt/option.js | 42 - node_modules/grunt/lib/grunt/task.js | 451 - node_modules/grunt/lib/grunt/template.js | 95 - node_modules/grunt/lib/grunt/util.js | 188 - node_modules/grunt/lib/util/task.js | 323 - node_modules/grunt/node_modules/.bin/cake | 1 - node_modules/grunt/node_modules/.bin/coffee | 1 - node_modules/grunt/node_modules/.bin/js-yaml | 1 - node_modules/grunt/node_modules/.bin/nopt | 1 - node_modules/grunt/node_modules/.bin/which | 1 - .../grunt/node_modules/async/.gitmodules | 9 - .../grunt/node_modules/async/.npmignore | 4 - node_modules/grunt/node_modules/async/LICENSE | 19 - .../grunt/node_modules/async/Makefile | 25 - .../grunt/node_modules/async/README.md | 1021 - .../grunt/node_modules/async/index.js | 3 - .../grunt/node_modules/async/lib/async.js | 692 - .../grunt/node_modules/async/package.json | 32 - .../node_modules/coffee-script/.npmignore | 11 - .../grunt/node_modules/coffee-script/CNAME | 1 - .../grunt/node_modules/coffee-script/LICENSE | 22 - .../grunt/node_modules/coffee-script/README | 51 - .../grunt/node_modules/coffee-script/Rakefile | 78 - .../grunt/node_modules/coffee-script/bin/cake | 7 - .../node_modules/coffee-script/bin/coffee | 7 - .../coffee-script/extras/jsl.conf | 44 - .../lib/coffee-script/browser.js | 92 - .../coffee-script/lib/coffee-script/cake.js | 111 - .../lib/coffee-script/coffee-script.js | 167 - .../lib/coffee-script/command.js | 500 - .../lib/coffee-script/grammar.js | 606 - .../lib/coffee-script/helpers.js | 77 - .../coffee-script/lib/coffee-script/index.js | 11 - .../coffee-script/lib/coffee-script/lexer.js | 788 - .../coffee-script/lib/coffee-script/nodes.js | 2986 - .../lib/coffee-script/optparse.js | 138 - .../coffee-script/lib/coffee-script/parser.js | 683 - .../coffee-script/lib/coffee-script/repl.js | 261 - .../lib/coffee-script/rewriter.js | 349 - .../coffee-script/lib/coffee-script/scope.js | 146 - .../node_modules/coffee-script/package.json | 47 - .../grunt/node_modules/colors/MIT-LICENSE.txt | 22 - .../grunt/node_modules/colors/ReadMe.md | 77 - .../grunt/node_modules/colors/colors.js | 342 - .../grunt/node_modules/colors/example.html | 76 - .../grunt/node_modules/colors/example.js | 77 - .../grunt/node_modules/colors/package.json | 29 - .../grunt/node_modules/colors/test.js | 70 - .../colors/themes/winston-dark.js | 12 - .../colors/themes/winston-light.js | 12 - .../grunt/node_modules/dateformat/Readme.md | 67 - .../node_modules/dateformat/lib/dateformat.js | 165 - .../node_modules/dateformat/package.json | 20 - .../dateformat/test/test_weekofyear.js | 4 - .../dateformat/test/test_weekofyear.sh | 27 - .../node_modules/eventemitter2/README.md | 212 - .../grunt/node_modules/eventemitter2/index.js | 1 - .../eventemitter2/lib/eventemitter2.js | 561 - .../node_modules/eventemitter2/package.json | 62 - .../grunt/node_modules/exit/.jshintrc | 14 - .../grunt/node_modules/exit/.npmignore | 0 .../grunt/node_modules/exit/.travis.yml | 6 - .../grunt/node_modules/exit/Gruntfile.js | 48 - .../grunt/node_modules/exit/LICENSE-MIT | 22 - .../grunt/node_modules/exit/README.md | 75 - .../grunt/node_modules/exit/lib/exit.js | 41 - .../grunt/node_modules/exit/package.json | 51 - .../grunt/node_modules/exit/test/exit_test.js | 121 - .../exit/test/fixtures/10-stderr.txt | 10 - .../exit/test/fixtures/10-stdout-stderr.txt | 20 - .../exit/test/fixtures/10-stdout.txt | 10 - .../exit/test/fixtures/100-stderr.txt | 100 - .../exit/test/fixtures/100-stdout-stderr.txt | 200 - .../exit/test/fixtures/100-stdout.txt | 100 - .../exit/test/fixtures/1000-stderr.txt | 1000 - .../exit/test/fixtures/1000-stdout-stderr.txt | 2000 - .../exit/test/fixtures/1000-stdout.txt | 1000 - .../exit/test/fixtures/create-files.sh | 8 - .../exit/test/fixtures/log-broken.js | 23 - .../node_modules/exit/test/fixtures/log.js | 25 - .../grunt/node_modules/findup-sync/.jshintrc | 16 - .../grunt/node_modules/findup-sync/.npmignore | 0 .../node_modules/findup-sync/Gruntfile.js | 25 - .../node_modules/findup-sync/LICENSE-MIT | 22 - .../grunt/node_modules/findup-sync/README.md | 44 - .../findup-sync/lib/findup-sync.js | 46 - .../findup-sync/node_modules/lodash/README.md | 164 - .../node_modules/lodash/dist/lodash.compat.js | 5152 -- .../lodash/dist/lodash.compat.min.js | 42 - .../node_modules/lodash/dist/lodash.js | 4983 -- .../node_modules/lodash/dist/lodash.min.js | 40 - .../lodash/dist/lodash.underscore.js | 4307 -- .../lodash/dist/lodash.underscore.min.js | 34 - .../node_modules/lodash/package.json | 62 - .../node_modules/findup-sync/package.json | 48 - .../findup-sync/test/findup-sync_test.js | 48 - .../findup-sync/test/fixtures/a.txt | 0 .../findup-sync/test/fixtures/a/b/bar.txt | 0 .../findup-sync/test/fixtures/a/foo.txt | 0 .../findup-sync/test/fixtures/aaa.txt | 0 .../grunt/node_modules/getobject/.jshintrc | 15 - .../grunt/node_modules/getobject/.npmignore | 1 - .../grunt/node_modules/getobject/.travis.yml | 6 - .../grunt/node_modules/getobject/Gruntfile.js | 48 - .../grunt/node_modules/getobject/LICENSE-MIT | 22 - .../grunt/node_modules/getobject/README.md | 20 - .../node_modules/getobject/lib/getobject.js | 60 - .../grunt/node_modules/getobject/package.json | 48 - .../getobject/test/namespace_test.js | 51 - .../grunt/node_modules/glob/.npmignore | 2 - .../grunt/node_modules/glob/.travis.yml | 3 - node_modules/grunt/node_modules/glob/LICENSE | 27 - .../grunt/node_modules/glob/README.md | 233 - .../grunt/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - node_modules/grunt/node_modules/glob/glob.js | 643 - .../glob/node_modules/graceful-fs/.npmignore | 1 - .../glob/node_modules/graceful-fs/LICENSE | 27 - .../glob/node_modules/graceful-fs/README.md | 33 - .../node_modules/graceful-fs/graceful-fs.js | 442 - .../node_modules/graceful-fs/package.json | 49 - .../node_modules/graceful-fs/test/open.js | 46 - .../node_modules/graceful-fs/test/ulimit.js | 158 - .../glob/node_modules/inherits/README.md | 51 - .../glob/node_modules/inherits/inherits.js | 29 - .../glob/node_modules/inherits/package.json | 30 - .../grunt/node_modules/glob/package.json | 40 - .../grunt/node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 348 - .../grunt/node_modules/glob/test/cwd-test.js | 55 - .../grunt/node_modules/glob/test/mark.js | 74 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/root-nomount.js | 39 - .../grunt/node_modules/glob/test/root.js | 46 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../grunt/node_modules/hooker/LICENSE-MIT | 22 - .../grunt/node_modules/hooker/README.md | 186 - .../grunt/node_modules/hooker/child.js | 101 - .../node_modules/hooker/dist/ba-hooker.js | 169 - .../node_modules/hooker/dist/ba-hooker.min.js | 4 - .../grunt/node_modules/hooker/grunt.js | 47 - .../grunt/node_modules/hooker/lib/hooker.js | 174 - .../grunt/node_modules/hooker/package.json | 45 - .../grunt/node_modules/hooker/parent.js | 17 - .../node_modules/hooker/test/hooker_test.js | 435 - .../grunt/node_modules/iconv-lite/.npmignore | 3 - .../grunt/node_modules/iconv-lite/.travis.yml | 5 - .../grunt/node_modules/iconv-lite/LICENSE | 21 - .../grunt/node_modules/iconv-lite/README.md | 72 - .../grunt/node_modules/iconv-lite/README.md~ | 54 - .../node_modules/iconv-lite/encodings/big5.js | 9 - .../node_modules/iconv-lite/encodings/gbk.js | 9 - .../iconv-lite/encodings/singlebyte.js | 340 - .../iconv-lite/encodings/table/big5.js | 1 - .../iconv-lite/encodings/table/gbk.js | 1 - .../generation/generate-big5-table.js | 25 - .../generation/generate-singlebyte.js | 142 - .../grunt/node_modules/iconv-lite/index.js | 231 - .../node_modules/iconv-lite/package.json | 80 - .../node_modules/iconv-lite/test/big5-test.js | 36 - .../node_modules/iconv-lite/test/big5File.txt | 13 - .../iconv-lite/test/cyrillic-test.js | 86 - .../node_modules/iconv-lite/test/gbk-test.js | 38 - .../node_modules/iconv-lite/test/gbkFile.txt | 14 - .../iconv-lite/test/greek-test.js | 79 - .../node_modules/iconv-lite/test/main-test.js | 55 - .../iconv-lite/test/performance.js | 67 - .../iconv-lite/test/turkish-test.js | 90 - .../grunt/node_modules/js-yaml/HISTORY.md | 155 - .../grunt/node_modules/js-yaml/LICENSE | 21 - .../grunt/node_modules/js-yaml/README.md | 249 - .../grunt/node_modules/js-yaml/bin/js-yaml.js | 125 - .../js-yaml/examples/custom_types.js | 104 - .../js-yaml/examples/custom_types.yaml | 18 - .../node_modules/js-yaml/examples/dumper.js | 31 - .../node_modules/js-yaml/examples/dumper.json | 22 - .../js-yaml/examples/sample_document.js | 15 - .../js-yaml/examples/sample_document.yaml | 197 - .../grunt/node_modules/js-yaml/index.js | 1 - .../grunt/node_modules/js-yaml/lib/js-yaml.js | 33 - .../js-yaml/lib/js-yaml/common.js | 60 - .../js-yaml/lib/js-yaml/dumper.js | 437 - .../js-yaml/lib/js-yaml/exception.js | 25 - .../js-yaml/lib/js-yaml/loader.js | 1549 - .../node_modules/js-yaml/lib/js-yaml/mark.js | 78 - .../js-yaml/lib/js-yaml/require.js | 23 - .../js-yaml/lib/js-yaml/schema.js | 103 - .../js-yaml/lib/js-yaml/schema/default.js | 16 - .../js-yaml/lib/js-yaml/schema/minimal.js | 13 - .../js-yaml/lib/js-yaml/schema/safe.js | 25 - .../node_modules/js-yaml/lib/js-yaml/type.js | 82 - .../js-yaml/lib/js-yaml/type/binary.js | 118 - .../js-yaml/lib/js-yaml/type/bool.js | 74 - .../js-yaml/lib/js-yaml/type/float.js | 102 - .../js-yaml/lib/js-yaml/type/int.js | 85 - .../js-yaml/lib/js-yaml/type/js/function.js | 56 - .../js-yaml/lib/js-yaml/type/js/regexp.js | 56 - .../js-yaml/lib/js-yaml/type/js/undefined.js | 28 - .../js-yaml/lib/js-yaml/type/map.js | 11 - .../js-yaml/lib/js-yaml/type/merge.js | 18 - .../js-yaml/lib/js-yaml/type/null.js | 36 - .../js-yaml/lib/js-yaml/type/omap.js | 53 - .../js-yaml/lib/js-yaml/type/pairs.js | 41 - .../js-yaml/lib/js-yaml/type/seq.js | 11 - .../js-yaml/lib/js-yaml/type/set.js | 31 - .../js-yaml/lib/js-yaml/type/str.js | 11 - .../js-yaml/lib/js-yaml/type/timestamp.js | 91 - .../js-yaml/node_modules/.bin/esparse | 1 - .../js-yaml/node_modules/.bin/esvalidate | 1 - .../js-yaml/node_modules/argparse/HISTORY.md | 109 - .../js-yaml/node_modules/argparse/LICENSE | 21 - .../js-yaml/node_modules/argparse/README.md | 239 - .../argparse/examples/arguments.js | 36 - .../node_modules/argparse/examples/choice.js | 22 - .../argparse/examples/constants.js | 59 - .../node_modules/argparse/examples/help.js | 13 - .../node_modules/argparse/examples/nargs.js | 33 - .../node_modules/argparse/examples/parents.js | 28 - .../argparse/examples/prefix_chars.js | 23 - .../argparse/examples/sub_commands.js | 49 - .../node_modules/argparse/examples/sum.js | 35 - .../argparse/examples/testformatters.js | 270 - .../js-yaml/node_modules/argparse/index.js | 1 - .../node_modules/argparse/lib/action.js | 146 - .../argparse/lib/action/append.js | 55 - .../argparse/lib/action/append/constant.js | 47 - .../node_modules/argparse/lib/action/count.js | 40 - .../node_modules/argparse/lib/action/help.js | 48 - .../node_modules/argparse/lib/action/store.js | 50 - .../argparse/lib/action/store/constant.js | 43 - .../argparse/lib/action/store/false.js | 27 - .../argparse/lib/action/store/true.js | 26 - .../argparse/lib/action/subparsers.js | 148 - .../argparse/lib/action/version.js | 50 - .../argparse/lib/action_container.js | 481 - .../node_modules/argparse/lib/argparse.js | 14 - .../argparse/lib/argument/error.js | 50 - .../argparse/lib/argument/exclusive.js | 54 - .../argparse/lib/argument/group.js | 75 - .../argparse/lib/argument_parser.js | 1165 - .../node_modules/argparse/lib/const.js | 18 - .../argparse/lib/help/added_formatters.js | 88 - .../argparse/lib/help/formatter.js | 803 - .../node_modules/argparse/lib/namespace.js | 77 - .../underscore.string/.travis.yml | 8 - .../node_modules/underscore.string/Gemfile | 4 - .../underscore.string/Gemfile.lock | 17 - .../underscore.string/README.markdown | 814 - .../node_modules/underscore.string/Rakefile | 23 - .../underscore.string/component.json | 11 - .../dist/underscore.string.min.js | 1 - .../lib/underscore.string.js | 673 - .../underscore.string/package.json | 73 - .../underscore.string/test/run-qunit.js | 45 - .../underscore.string/test/speed.js | 148 - .../underscore.string/test/strings.js | 685 - .../test/strings_standalone.js | 12 - .../underscore.string/test/test.html | 31 - .../test/test_standalone.html | 18 - .../test/test_underscore/arrays.js | 200 - .../test/test_underscore/chaining.js | 59 - .../test/test_underscore/collections.js | 426 - .../test/test_underscore/functions.js | 259 - .../test/test_underscore/index.html | 45 - .../test/test_underscore/objects.js | 548 - .../test/test_underscore/speed.js | 75 - .../test/test_underscore/utility.js | 249 - .../test/test_underscore/vendor/jquery.js | 9404 --- .../test/test_underscore/vendor/jslitmus.js | 670 - .../test/test_underscore/vendor/qunit.css | 235 - .../test/test_underscore/vendor/qunit.js | 1977 - .../underscore.string/test/underscore.js | 1201 - .../node_modules/underscore/.npmignore | 4 - .../node_modules/underscore/.travis.yml | 5 - .../argparse/node_modules/underscore/CNAME | 1 - .../node_modules/underscore/CONTRIBUTING.md | 9 - .../argparse/node_modules/underscore/LICENSE | 22 - .../node_modules/underscore/README.md | 19 - .../node_modules/underscore/favicon.ico | Bin 1406 -> 0 bytes .../node_modules/underscore/index.html | 2467 - .../argparse/node_modules/underscore/index.js | 1 - .../node_modules/underscore/package.json | 35 - .../node_modules/underscore/underscore-min.js | 1 - .../node_modules/underscore/underscore.js | 1226 - .../node_modules/argparse/package.json | 50 - .../js-yaml/node_modules/esprima/README.md | 73 - .../node_modules/esprima/bin/esparse.js | 117 - .../node_modules/esprima/bin/esvalidate.js | 177 - .../js-yaml/node_modules/esprima/esprima.js | 3908 -- .../js-yaml/node_modules/esprima/package.json | 59 - .../node_modules/esprima/test/compat.js | 239 - .../node_modules/esprima/test/reflect.js | 422 - .../js-yaml/node_modules/esprima/test/run.js | 66 - .../node_modules/esprima/test/runner.js | 387 - .../js-yaml/node_modules/esprima/test/test.js | 20238 ------- .../grunt/node_modules/js-yaml/package.json | 60 - .../grunt/node_modules/lodash/README.md | 140 - .../grunt/node_modules/lodash/lodash.js | 4258 -- .../grunt/node_modules/lodash/lodash.min.js | 35 - .../node_modules/lodash/lodash.underscore.js | 3688 -- .../lodash/lodash.underscore.min.js | 28 - .../grunt/node_modules/lodash/package.json | 62 - .../grunt/node_modules/minimatch/.npmignore | 1 - .../grunt/node_modules/minimatch/LICENSE | 23 - .../grunt/node_modules/minimatch/README.md | 218 - .../grunt/node_modules/minimatch/minimatch.js | 1055 - .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 33 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 42 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../grunt/node_modules/minimatch/package.json | 40 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../grunt/node_modules/nopt/.npmignore | 0 node_modules/grunt/node_modules/nopt/LICENSE | 23 - .../grunt/node_modules/nopt/README.md | 208 - .../grunt/node_modules/nopt/bin/nopt.js | 44 - .../node_modules/nopt/examples/my-program.js | 30 - .../grunt/node_modules/nopt/lib/nopt.js | 552 - .../nopt/node_modules/abbrev/LICENSE | 23 - .../nopt/node_modules/abbrev/README.md | 23 - .../nopt/node_modules/abbrev/lib/abbrev.js | 111 - .../nopt/node_modules/abbrev/package.json | 29 - .../grunt/node_modules/nopt/package.json | 36 - .../grunt/node_modules/rimraf/AUTHORS | 6 - .../grunt/node_modules/rimraf/LICENSE | 23 - .../grunt/node_modules/rimraf/README.md | 21 - .../node_modules/graceful-fs/.npmignore | 1 - .../rimraf/node_modules/graceful-fs/LICENSE | 23 - .../rimraf/node_modules/graceful-fs/README.md | 5 - .../node_modules/graceful-fs/graceful-fs.js | 312 - .../node_modules/graceful-fs/package.json | 40 - .../node_modules/graceful-fs/test/open.js | 41 - .../grunt/node_modules/rimraf/package.json | 59 - .../grunt/node_modules/rimraf/rimraf.js | 161 - .../grunt/node_modules/rimraf/test/run.sh | 10 - .../grunt/node_modules/rimraf/test/setup.sh | 47 - .../node_modules/rimraf/test/test-async.js | 5 - .../node_modules/rimraf/test/test-fiber.js | 0 .../node_modules/rimraf/test/test-sync.js | 3 - .../underscore.string/.travis.yml | 8 - .../node_modules/underscore.string/Gemfile | 5 - .../underscore.string/Gemfile.lock | 34 - .../underscore.string/README.markdown | 668 - .../node_modules/underscore.string/Rakefile | 28 - .../dist/underscore.string.min.js | 1 - .../lib/underscore.string.js | 525 - .../underscore.string/package.json | 72 - .../underscore.string/test/run-qunit.js | 44 - .../underscore.string/test/speed.js | 138 - .../underscore.string/test/strings.js | 438 - .../test/strings_standalone.js | 12 - .../underscore.string/test/test.html | 31 - .../test/test_standalone.html | 18 - .../test/test_underscore/arrays.js | 166 - .../test/test_underscore/chaining.js | 59 - .../test/test_underscore/collections.js | 270 - .../test/test_underscore/functions.js | 198 - .../test/test_underscore/objects.js | 535 - .../test/test_underscore/speed.js | 70 - .../test/test_underscore/temp.js | 27 - .../test/test_underscore/temp_tests.html | 19 - .../test/test_underscore/test.html | 43 - .../test/test_underscore/utility.js | 155 - .../test/test_underscore/vendor/jquery.js | 19 - .../test/test_underscore/vendor/jslitmus.js | 670 - .../test/test_underscore/vendor/qunit.css | 196 - .../test/test_underscore/vendor/qunit.js | 2360 - .../underscore.string/test/underscore.js | 999 - node_modules/grunt/node_modules/which/LICENSE | 23 - .../grunt/node_modules/which/README.md | 5 - .../grunt/node_modules/which/bin/which | 14 - .../grunt/node_modules/which/package.json | 31 - .../grunt/node_modules/which/which.js | 104 - node_modules/grunt/package.json | 82 - .../load-grunt-tasks/load-grunt-tasks.js | 28 - .../node_modules/findup-sync/.jshintrc | 15 - .../node_modules/findup-sync/.npmignore | 0 .../node_modules/findup-sync/.travis.yml | 5 - .../node_modules/findup-sync/Gruntfile.js | 25 - .../node_modules/findup-sync/LICENSE-MIT | 22 - .../node_modules/findup-sync/README.md | 45 - .../findup-sync/lib/findup-sync.js | 46 - .../node_modules/lodash/LICENSE.txt | 22 - .../findup-sync/node_modules/lodash/README.md | 163 - .../node_modules/lodash/dist/lodash.compat.js | 7157 --- .../lodash/dist/lodash.compat.min.js | 61 - .../node_modules/lodash/dist/lodash.js | 6785 --- .../node_modules/lodash/dist/lodash.min.js | 56 - .../lodash/dist/lodash.underscore.js | 4979 -- .../lodash/dist/lodash.underscore.min.js | 39 - .../findup-sync/node_modules/lodash/lodash.js | 7179 --- .../node_modules/lodash/package.json | 102 - .../node_modules/findup-sync/package.json | 48 - .../findup-sync/test/findup-sync_test.js | 48 - .../findup-sync/test/fixtures/a.txt | 0 .../findup-sync/test/fixtures/a/b/bar.txt | 0 .../findup-sync/test/fixtures/a/foo.txt | 0 .../findup-sync/test/fixtures/aaa.txt | 0 .../node_modules/globule/.jshintrc | 15 - .../node_modules/globule/.npmignore | 1 - .../node_modules/globule/.travis.yml | 6 - .../node_modules/globule/Gruntfile.js | 48 - .../node_modules/globule/LICENSE-MIT | 22 - .../node_modules/globule/README.md | 117 - .../node_modules/globule/lib/globule.js | 172 - .../globule/node_modules/glob/.npmignore | 2 - .../globule/node_modules/glob/.travis.yml | 3 - .../globule/node_modules/glob/LICENSE | 27 - .../globule/node_modules/glob/README.md | 233 - .../globule/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../globule/node_modules/glob/glob.js | 643 - .../glob/node_modules/graceful-fs/.npmignore | 1 - .../glob/node_modules/graceful-fs/LICENSE | 27 - .../glob/node_modules/graceful-fs/README.md | 33 - .../node_modules/graceful-fs/graceful-fs.js | 442 - .../node_modules/graceful-fs/package.json | 49 - .../node_modules/graceful-fs/test/open.js | 46 - .../node_modules/graceful-fs/test/ulimit.js | 158 - .../glob/node_modules/inherits/README.md | 51 - .../glob/node_modules/inherits/inherits.js | 29 - .../glob/node_modules/inherits/package.json | 30 - .../globule/node_modules/glob/package.json | 40 - .../node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 348 - .../node_modules/glob/test/cwd-test.js | 55 - .../globule/node_modules/glob/test/mark.js | 74 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/root-nomount.js | 39 - .../globule/node_modules/glob/test/root.js | 46 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../globule/node_modules/lodash/README.md | 164 - .../node_modules/lodash/dist/lodash.compat.js | 5152 -- .../lodash/dist/lodash.compat.min.js | 42 - .../node_modules/lodash/dist/lodash.js | 4983 -- .../node_modules/lodash/dist/lodash.min.js | 40 - .../lodash/dist/lodash.underscore.js | 4307 -- .../lodash/dist/lodash.underscore.min.js | 34 - .../globule/node_modules/lodash/package.json | 62 - .../globule/node_modules/minimatch/.npmignore | 1 - .../globule/node_modules/minimatch/LICENSE | 23 - .../globule/node_modules/minimatch/README.md | 218 - .../node_modules/minimatch/minimatch.js | 1055 - .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 252 - .../node_modules/lru-cache/package.json | 33 - .../node_modules/lru-cache/test/basic.js | 369 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 42 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/minimatch/package.json | 40 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../node_modules/globule/package.json | 56 - .../globule/test/fixtures/expand/README.md | 0 .../globule/test/fixtures/expand/css/baz.css | 0 .../globule/test/fixtures/expand/css/qux.css | 0 .../test/fixtures/expand/deep/deep.txt | 0 .../fixtures/expand/deep/deeper/deeper.txt | 0 .../expand/deep/deeper/deepest/deepest.txt | 0 .../globule/test/fixtures/expand/js/bar.js | 0 .../globule/test/fixtures/expand/js/foo.js | 0 .../node_modules/globule/test/globule_test.js | 486 - node_modules/load-grunt-tasks/package.json | 53 - node_modules/load-grunt-tasks/readme.md | 138 - 5461 files changed, 630946 deletions(-) delete mode 120000 node_modules/.bin/autoprefixer delete mode 100644 node_modules/glob/.npmignore delete mode 100644 node_modules/glob/.travis.yml delete mode 100644 node_modules/glob/LICENSE delete mode 100644 node_modules/glob/README.md delete mode 100644 node_modules/glob/examples/g.js delete mode 100644 node_modules/glob/examples/usr-local.js delete mode 100644 node_modules/glob/glob.js delete mode 100644 node_modules/glob/node_modules/inherits/LICENSE delete mode 100644 node_modules/glob/node_modules/inherits/README.md delete mode 100644 node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 node_modules/glob/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/glob/node_modules/inherits/package.json delete mode 100644 node_modules/glob/node_modules/inherits/test.js delete mode 100644 node_modules/glob/node_modules/minimatch/.npmignore delete mode 100644 node_modules/glob/node_modules/minimatch/LICENSE delete mode 100644 node_modules/glob/node_modules/minimatch/README.md delete mode 100644 node_modules/glob/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/glob/node_modules/minimatch/package.json delete mode 100644 node_modules/glob/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/glob/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/glob/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/glob/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/glob/package.json delete mode 100644 node_modules/glob/test/00-setup.js delete mode 100644 node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/glob/test/bash-results.json delete mode 100644 node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/glob/test/globstar-match.js delete mode 100644 node_modules/glob/test/mark.js delete mode 100644 node_modules/glob/test/new-glob-optional-options.js delete mode 100644 node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/glob/test/readme-issue.js delete mode 100644 node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/glob/test/root.js delete mode 100644 node_modules/glob/test/stat.js delete mode 100644 node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/grunt-autoprefixer/.travis.yml delete mode 100644 node_modules/grunt-autoprefixer/LICENSE-MIT delete mode 100644 node_modules/grunt-autoprefixer/README.md delete mode 120000 node_modules/grunt-autoprefixer/node_modules/.bin/autoprefixer delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/ChangeLog.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/README.md delete mode 100755 node_modules/grunt-autoprefixer/node_modules/autoprefixer/bin/autoprefixer delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/browsers.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/prefixes.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/autoprefixer.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/binary.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/browsers.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/declaration.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-content.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-items.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-self.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-image.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-radius.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/break-inside.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/display-flex.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fill-available.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/filter.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-basis.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-direction.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-flow.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-grow.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-shrink.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-spec.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-wrap.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fullscreen.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/gradient.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/justify-content.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/order.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/placeholder.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transform.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transition.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/info.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/keyframes.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-selector.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-value.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixer.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixes.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/processor.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/selector.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/updater.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/utils.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/value.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/.npmignore delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/CHANGELOG.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/copy.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/create.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/index.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/json.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/mkdir.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/output.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/remove.js delete mode 120000 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/ncp delete mode 120000 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/rimraf delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/.npmignore delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/CHANGELOG.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/lib/jsonfile.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.npmignore delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.travis.yml delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/examples/pow.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/index.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/readme.markdown delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/chmod.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/clobber.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/mkdirp.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm_sync.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/race.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/rel.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return_sync.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/root.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/sync.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask_sync.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.npmignore delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.travis.yml delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/LICENSE.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/README.md delete mode 100755 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/bin/ncp delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/lib/ncp.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/a delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/b delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/c delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/d delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/e delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/f delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/a delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/b delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/ncp-test.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/README.md delete mode 100755 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/bin.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-sync.js delete mode 100755 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/ChangeLog.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/at-rule.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/comment.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/container.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/declaration.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/lazy.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/list.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/map-generator.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/node.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/parse.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/postcss.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/raw.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/result.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/root.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/rule.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/syntax-error.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/vendor.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/.travis.yml delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/LICENSE.MIT delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/bench/bench.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/lib/b64.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/test/convert.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.npmignore delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.travis.yml delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/CHANGELOG.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/Makefile.dryice.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/assert-shim.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/mini-require.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-source-map.jsm delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-utils.jsm delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-browser.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-source-map.jsm delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-utils.jsm delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-prefix.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-suffix.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/array-set.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64-vlq.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/binary-search.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-consumer.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-generator.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-node.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/util.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/LICENSE delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/intercept.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/package.json delete mode 100755 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/run-tests.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-api.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-array-set.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64-vlq.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-binary-search.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-dog-fooding.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-consumer.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-generator.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-node.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-util.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/util.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/browsers.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/prefixes.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/index.js delete mode 120000 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/.bin/strip-ansi delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/readme.md delete mode 100755 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/cli.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-autoprefixer/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/diff/README.md delete mode 100644 node_modules/grunt-autoprefixer/node_modules/diff/diff.js delete mode 100644 node_modules/grunt-autoprefixer/node_modules/diff/package.json delete mode 100644 node_modules/grunt-autoprefixer/package.json delete mode 100644 node_modules/grunt-autoprefixer/tasks/autoprefixer.js delete mode 100644 node_modules/grunt-contrib-concat/.gitattributes delete mode 100644 node_modules/grunt-contrib-concat/.jshintrc delete mode 100644 node_modules/grunt-contrib-concat/.npmignore delete mode 100644 node_modules/grunt-contrib-concat/.travis.yml delete mode 100644 node_modules/grunt-contrib-concat/AUTHORS delete mode 100644 node_modules/grunt-contrib-concat/CHANGELOG delete mode 100644 node_modules/grunt-contrib-concat/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-concat/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-concat/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-concat/README.md delete mode 100644 node_modules/grunt-contrib-concat/docs/concat-examples.md delete mode 100644 node_modules/grunt-contrib-concat/docs/concat-options.md delete mode 100644 node_modules/grunt-contrib-concat/docs/concat-overview.md delete mode 100644 node_modules/grunt-contrib-concat/package.json delete mode 100644 node_modules/grunt-contrib-concat/tasks/concat.js delete mode 100644 node_modules/grunt-contrib-concat/tasks/lib/comment.js delete mode 100644 node_modules/grunt-contrib-concat/test/concat_test.js delete mode 100644 node_modules/grunt-contrib-concat/test/expected/custom_options delete mode 100644 node_modules/grunt-contrib-concat/test/expected/default_options delete mode 100644 node_modules/grunt-contrib-concat/test/expected/handling_invalid_files delete mode 100644 node_modules/grunt-contrib-concat/test/expected/process_function delete mode 100644 node_modules/grunt-contrib-concat/test/fixtures/banner.js delete mode 100644 node_modules/grunt-contrib-concat/test/fixtures/banner2.js delete mode 100644 node_modules/grunt-contrib-concat/test/fixtures/banner3.js delete mode 100644 node_modules/grunt-contrib-concat/test/fixtures/file1 delete mode 100644 node_modules/grunt-contrib-concat/test/fixtures/file2 delete mode 100644 node_modules/grunt-contrib-cssmin/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-cssmin/README.md delete mode 120000 node_modules/grunt-contrib-cssmin/node_modules/.bin/cleancss delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/index.js delete mode 120000 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/.bin/strip-ansi delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/readme.md delete mode 100755 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/cli.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/History.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/README.md delete mode 100755 node_modules/grunt-contrib-cssmin/node_modules/clean-css/bin/cleancss delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/clean.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/hsl-to-hex.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/long-to-short-hex.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/rgb-to-hex.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/shortener.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rebase.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rewriter.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/imports/inliner.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/optimizer.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/shorthand-notations.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/empty-removal.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/optimizer.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/tokenizer.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/comments.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/escape-store.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/expressions.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/free.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/urls.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/Readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/clean-css/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/index.js delete mode 120000 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/gzip-size delete mode 120000 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/pretty-bytes delete mode 100755 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/cli.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/test.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/README.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/float.patch delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/README.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/debuglog.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/readable.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/transform.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/writable.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/.travis.yml delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/example/tarray.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/readme.markdown delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/tarray.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/array.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/buffer.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/infer.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/nothing.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/objects.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/server/ls.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/string.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/typedarray.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.npmignore delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.travis.yml delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.npmignore delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.travis.yml delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/array.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/fail.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested_fail.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/not_enough.js delete mode 100755 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/build.sh delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/index.html delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/server.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/timing.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/too_many.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/default_stream.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/render.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/test.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/README.markdown delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/example/cmp.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/test/cmp.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/.travis.yml delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/LICENSE delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/example/defined.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/readme.markdown delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/test/def.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/README.markdown delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/index.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/parse.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/stringify.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/parse.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/stringify.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/readme.markdown delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/array.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/child_ordering.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/fail.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/ok.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/too_few.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/fail.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/harness.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners/source.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/nested.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/only.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/order.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/plan_optional.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/skip.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/throw.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/too_many.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/test/zlib.test.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/zlib.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/readme.md delete mode 100755 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/cli.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/pretty-bytes.js delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/node_modules/maxmin/readme.md delete mode 100644 node_modules/grunt-contrib-cssmin/package.json delete mode 100644 node_modules/grunt-contrib-cssmin/tasks/cssmin.js delete mode 100644 node_modules/grunt-contrib-imagemin/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-imagemin/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/async/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/async/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/async/component.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/index.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/.bin/strip-ansi delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/readme.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/cli.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/filesize/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/filesize/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/filesize/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/filesize/lib/filesize.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/filesize/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/imagemin.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/gifsicle delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/jpegtran delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/optipng delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/index.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/.bin/rimraf delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/bin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/bin/gifsicle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/check.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/gifsicle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/bin-wrapper.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/.bin/which delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/download.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/History.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.editorconfig delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/array.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/collection.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/date.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/function.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/lang.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/math.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/number.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/object.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/random.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/string.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/time.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/History.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/bin/which delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/which.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/chalk.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/readme.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/vendor/gifsicle delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/bin/jpegtran.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/check.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/jpegtran.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/bin-wrapper.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/.bin/which delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/download.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/History.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/History.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/bin/which delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/which.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/chalk.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/fixtures/test.jpg delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/minified.jpg delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-build.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-path.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/vendor/jpegtran delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/examples/pow.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/readme.markdown delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/chmod.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/clobber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/mkdirp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm_sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/race.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/rel.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return_sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/root.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask_sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.editorconfig delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CHANGELOG.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/de-DE.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/array.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/collection.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/date.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/function.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/lang.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/math.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/number.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/object.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/queryString.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/random.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/string.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/time.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/times.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/de-DE.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/times.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/toTimeString.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/bin/optipng.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/check.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/optipng.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/bin-wrapper.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/.bin/which delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/download.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js delete mode 120000 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/History.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/README.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/History.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Makefile delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/index.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/LICENSE delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/README.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/bin/which delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/which.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/chalk.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/readme.md delete mode 100755 node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/vendor/optipng delete mode 100644 node_modules/grunt-contrib-imagemin/node_modules/image-min/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/package.json delete mode 100644 node_modules/grunt-contrib-imagemin/tasks/imagemin.js delete mode 100644 node_modules/grunt-contrib-jshint/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-jshint/README.md delete mode 120000 node_modules/grunt-contrib-jshint/node_modules/.bin/jshint delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/README.md delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/bin/apply delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/bin/build delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/bin/changelog delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/bin/jshint delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/bin/land delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/data/ascii-identifier-data.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-part-only.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-start.js delete mode 120000 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/.bin/shjs delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/cli.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/command.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/echo.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/glob.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/long_desc.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/progress.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/sort.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/spinner.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.coffee delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/glob.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.testem.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/LICENCE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/index.html delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.jshintrc delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/lib/exit.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/exit_test.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.gitattributes delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/CollectingHandler.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/FeedHandler.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/Parser.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/ProxyHandler.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/Stream.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/Tokenizer.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/WritableStream.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/entities/decode.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/entities/entities.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/entities/legacy.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/entities/xml.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/lib/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/readme.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/readme.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/01-basic.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/02-single_tag_1.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/03-single_tag_2.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/04-unescaped_in_script.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/05-tags_in_comment.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/06-comment_in_script.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/11-text_outside_tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/12-text_only.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/13-comment_in_text.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/15-non-verbose.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/16-normalize_whitespace.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/17-xml_namespace.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/18-enforce_empty_tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/19-ignore_empty_tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/20-template_script_tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/21-conditional_comments.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/22-lowercase_tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/tests.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/readme.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/00-runtests.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/02-dom_utils.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/DomUtils/01-by_id.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/DomUtils/02-by_tagname.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/DomUtils/03-by_type.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/DomUtils/04-outer_html.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/tests/DomUtils/05-inner_html.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/readable.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/transform.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/writable.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/01-events.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/02-stream.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/03-feed.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Documents/Atom_Example.xml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Documents/Attributes.html delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Documents/Basic.html delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Documents/RDF_Example.xml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Documents/RSS_Example.xml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/01-simple.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/02-template.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/03-lowercase_tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/04-cdata.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/05-cdata-special.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/06-leading-lt.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/07-self-closing.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/09-attributes.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/10-crazy-attrib.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/11-script_in_script.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/12-long-comment-end.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/13-long-cdata-end.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/15-lt-whitespace.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/16-double_attribs.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/17-numeric_entities.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/18-legacy_entities.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/19-named_entities.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/20-xml_entities.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Events/22-double_brackets.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Feeds/01-rss.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Feeds/02-atom.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Feeds/03-rdf.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Stream/01-basic.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Stream/02-RSS.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Stream/03-Atom.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Stream/04-RDF.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/Stream/05-Attributes.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/test/test-helper.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/.documentup.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/README.md delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/bin/shjs delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/global.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/jshint.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/make.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/package.json delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/scripts/docs.js delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/scripts/run-tests.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/shell.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/cat.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/cd.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/chmod.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/config.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/cp.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/dirs.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/echo.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/env.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/exec.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/find.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/grep.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/ls.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/make.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/mkdir.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/mv.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/popd.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/pushd.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/pwd.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/a.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/chmod/a/b/c/.npmignore delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/chmod/b/a/b/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/chmod/c/a/b/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/chmod/file1 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/cp/a delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/cp/b delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/cp/dir_a/z delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/cp/dir_b/dir_b_a/dir_b_a_a/z delete mode 100755 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/external/node_script.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/file1 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/file1.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/file1.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/file2 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/file2.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/file2.txt delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/find/.hidden delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/find/a delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/find/b delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/find/dir1/a_dir1 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/find/dir1/dir11/a_dir11 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/find/dir2/a_dir1 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/issue44/main.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/.hidden_dir/nada delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/.hidden_file delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/a_dir/.hidden_dir/nada delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/a_dir/b_dir/z delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/a_dir/nada delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/file1 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/file1.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/file2 delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/file2.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/ls/filename(with)[chars$]^that.must+be-escaped delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/pushd/a/dummy delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/resources/pushd/b/c/dummy delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/rm.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/sed.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/tempdir.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/test.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/to.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/shelljs/test/which.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/.npmignore delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/.travis.yml delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/CNAME delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/LICENSE delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/README.md delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/favicon.ico delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/index.html delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/index.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/underscore-min.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/underscore/underscore.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/package.json delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/cli.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/jshint.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/lex.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/messages.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/platforms/rhino.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/reg.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/reporters/checkstyle.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/reporters/default.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/reporters/jslint_xml.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/reporters/non_error.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/state.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/style.js delete mode 100644 node_modules/grunt-contrib-jshint/node_modules/jshint/src/vars.js delete mode 100644 node_modules/grunt-contrib-jshint/package.json delete mode 100644 node_modules/grunt-contrib-jshint/tasks/jshint.js delete mode 100644 node_modules/grunt-contrib-jshint/tasks/lib/jshint.js delete mode 100644 node_modules/grunt-contrib-sass/.jshintrc delete mode 100644 node_modules/grunt-contrib-sass/AUTHORS delete mode 100644 node_modules/grunt-contrib-sass/CHANGELOG delete mode 100644 node_modules/grunt-contrib-sass/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-sass/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-sass/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-sass/README.md delete mode 100644 node_modules/grunt-contrib-sass/docs/sass-examples.md delete mode 100644 node_modules/grunt-contrib-sass/docs/sass-options.md delete mode 100644 node_modules/grunt-contrib-sass/docs/sass-overview.md delete mode 120000 node_modules/grunt-contrib-sass/node_modules/.bin/which delete mode 120000 node_modules/grunt-contrib-sass/node_modules/.bin/win-spawn delete mode 100644 node_modules/grunt-contrib-sass/node_modules/async/LICENSE delete mode 100644 node_modules/grunt-contrib-sass/node_modules/async/README.md delete mode 100644 node_modules/grunt-contrib-sass/node_modules/async/component.json delete mode 100755 node_modules/grunt-contrib-sass/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/async/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/index.js delete mode 120000 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/.bin/strip-ansi delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/has-color/readme.md delete mode 100755 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/strip-ansi/cli.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-sass/node_modules/dargs/dargs.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/dargs/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/dargs/readme.md delete mode 100644 node_modules/grunt-contrib-sass/node_modules/which/LICENSE delete mode 100644 node_modules/grunt-contrib-sass/node_modules/which/README.md delete mode 100755 node_modules/grunt-contrib-sass/node_modules/which/bin/which delete mode 100644 node_modules/grunt-contrib-sass/node_modules/which/package.json delete mode 100644 node_modules/grunt-contrib-sass/node_modules/which/which.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/win-spawn/.npmignore delete mode 100644 node_modules/grunt-contrib-sass/node_modules/win-spawn/README.md delete mode 100755 node_modules/grunt-contrib-sass/node_modules/win-spawn/bin/win-spawn delete mode 100644 node_modules/grunt-contrib-sass/node_modules/win-spawn/index.js delete mode 100644 node_modules/grunt-contrib-sass/node_modules/win-spawn/package.json delete mode 100644 node_modules/grunt-contrib-sass/package.json delete mode 100644 node_modules/grunt-contrib-sass/tasks/sass.js delete mode 100644 node_modules/grunt-contrib-uglify/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-uglify/README.md delete mode 120000 node_modules/grunt-contrib-uglify/node_modules/.bin/uglifyjs delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/index.js delete mode 120000 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/.bin/strip-ansi delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/has-color/has-color.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/has-color/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/has-color/readme.md delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/strip-ansi/cli.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/chalk/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/index.js delete mode 120000 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/.bin/gzip-size delete mode 120000 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/.bin/pretty-bytes delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/cli.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits_browser.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/test.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/duplex.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/float.patch delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/debuglog.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/passthrough.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/readable.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/transform.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/writable.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/example/tarray.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/readme.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/tarray.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/array.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/buffer.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/infer.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/nothing.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/objects.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/server/ls.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/string.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/typedarray.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/array.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/fail.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested_fail.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/not_enough.js delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/build.sh delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/index.html delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/server.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/timing.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/too_many.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/default_stream.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/render.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/test.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/README.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/example/cmp.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/test/cmp.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/example/defined.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/readme.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/test/def.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/README.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/parse.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/stringify.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/parse.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/stringify.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/readme.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/array.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/child_ordering.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/fail.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/ok.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/too_few.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/fail.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/harness.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners/source.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/nested.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/only.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/order.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/plan_optional.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/skip.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/throw.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/too_many.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/test/zlib.test.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/zlib.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/gzip-size/readme.md delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/pretty-bytes/cli.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/pretty-bytes/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/pretty-bytes/pretty-bytes.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/node_modules/pretty-bytes/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/maxmin/readme.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/README.md delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/uglify-js/bin/uglifyjs delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/ast.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/compress.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/mozilla-ast.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/output.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/parse.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/scope.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/sourcemap.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/transform.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/lib/utils.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/async/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/async/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/async/component.json delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/async/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/bool.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/default_hash.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/default_singles.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/divide.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/line_count.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/nonopt.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/reflect.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/short.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/string.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/usage-options.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/example/xup.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/readme.markdown delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/test/_.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/test/_/argv.js delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/test/_/bin.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/test/parse.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/optimist/test/usage.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/mini-require.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/intercept.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/package.json delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/run-tests.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/test-util.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/.npmignore delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/.travis.yml delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/LICENSE delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/README.md delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/node_modules/uglify-to-browserify/test/index.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/package.json delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/arrays.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/blocks.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/concat-strings.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/conditionals.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/dead-code.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/debugger.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/drop-unused.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-105.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-12.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-126.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-143.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-22.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-267.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-269.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-44.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/issue-59.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/labels.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/loops.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/negate-iife.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/properties.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/sequences.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/switch.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/compress/typeof.js delete mode 100755 node_modules/grunt-contrib-uglify/node_modules/uglify-js/test/run-tests.js delete mode 100644 node_modules/grunt-contrib-uglify/node_modules/uglify-js/tools/node.js delete mode 100644 node_modules/grunt-contrib-uglify/package.json delete mode 100644 node_modules/grunt-contrib-uglify/tasks/lib/uglify.js delete mode 100644 node_modules/grunt-contrib-uglify/tasks/uglify.js delete mode 100644 node_modules/grunt-contrib-watch/.editorconfig delete mode 100644 node_modules/grunt-contrib-watch/.gitattributes delete mode 100644 node_modules/grunt-contrib-watch/.jshintrc delete mode 100644 node_modules/grunt-contrib-watch/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/.travis.yml delete mode 100644 node_modules/grunt-contrib-watch/AUTHORS delete mode 100644 node_modules/grunt-contrib-watch/CHANGELOG delete mode 100644 node_modules/grunt-contrib-watch/CONTRIBUTING.md delete mode 100644 node_modules/grunt-contrib-watch/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-watch/README.md delete mode 100644 node_modules/grunt-contrib-watch/docs/watch-examples.md delete mode 100644 node_modules/grunt-contrib-watch/docs/watch-options.md delete mode 120000 node_modules/grunt-contrib-watch/node_modules/.bin/tiny-lr delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/.editorconfig delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/.jshintrc delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/.travis.yml delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/AUTHORS delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/benchmarks/gaze100s.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/lib/gaze.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/lib/helper.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/.jshintrc delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/.travis.yml delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/LICENSE-MIT delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/lib/globule.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/.travis.yml delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/examples/g.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/examples/usr-local.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/glob.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/graceful-fs/test/ulimit.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/inherits/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/node_modules/inherits/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/mark.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/root.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/lodash/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/css/baz.css delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/css/qux.css delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/deep/deep.txt delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/deep/deeper/deeper.txt delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/deep/deeper/deepest/deepest.txt delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/js/bar.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/fixtures/expand/js/foo.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/node_modules/globule/test/globule_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/add_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/api_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/file_poller.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/Project (LO)/one.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/nested/one.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/nested/sub/two.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/nested/sub2/two.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/nested/three.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/one.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/sub/one.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/fixtures/sub/two.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/helper.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/matching_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/patterns_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/relative_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/rename_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/safewrite_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/watch_race_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/gaze/test/watch_test.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/.travis.yml delete mode 100755 node_modules/grunt-contrib-watch/node_modules/tiny-lr/bin/tiny-lr delete mode 100755 node_modules/grunt-contrib-watch/node_modules/tiny-lr/bin/update-livereload delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/client.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/index.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/public/livereload.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/lib/server.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/debug/Readme.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/debug/debug.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/debug/index.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/debug/lib/debug.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/debug/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/CHANGELOG.txt delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/README.markdown delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/examples/autobahn_client.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/examples/client.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/examples/haproxy.conf delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/examples/server.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/examples/sse.html delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/examples/ws.html delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/eventsource.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/api.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/api/event.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/api/event_target.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/client.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/draft75_parser.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/draft76_parser.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/hybi_parser.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/hybi_parser/handshake.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/lib/faye/websocket/hybi_parser/stream_reader.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/faye/websocket/client_spec.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/faye/websocket/draft75parser_spec.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/faye/websocket/draft76parser_spec.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/faye/websocket/hybi_parser_spec.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/runner.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/server.crt delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/faye-websocket/spec/server.key delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/actions/collectable.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/actions/commandable.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/index.js delete mode 120000 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/.bin/nopt delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/README.md delete mode 100755 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/bin/nopt.js delete mode 100755 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/examples/my-program.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/lib/nopt.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/node_modules/abbrev/LICENSE delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/node_modules/abbrev/README.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/node_modules/abbrev/lib/abbrev.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/node_modules/abbrev/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/node_modules/nopt/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/readme.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/test/api.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/test/collectable.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/test/commandable.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/test/fixtures/a.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/test/fixtures/b.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/util/extend.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/noptify/util/index.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/.gitmodules delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/.npmignore delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/.travis.yml delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/History.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/Makefile delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/Readme.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/benchmark.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/component.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/examples.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/index.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/expect.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/index.html delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/jquery.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/mocha.css delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/mocha.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/qs.css delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/browser/qs.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/parse.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/node_modules/qs/test/stringify.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/package.json delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/readme.md delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/tasks/tiny-lr.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/tasks/tiny-lr.mk delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/test/client.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/test/middleware.js delete mode 100644 node_modules/grunt-contrib-watch/node_modules/tiny-lr/test/server.js delete mode 100644 node_modules/grunt-contrib-watch/package.json delete mode 100644 node_modules/grunt-contrib-watch/tasks/lib/livereload.js delete mode 100644 node_modules/grunt-contrib-watch/tasks/lib/taskrun.js delete mode 100644 node_modules/grunt-contrib-watch/tasks/lib/taskrunner.js delete mode 100644 node_modules/grunt-contrib-watch/tasks/watch.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/atBegin/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/atBegin/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/dateFormat/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/dateFormat/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/events/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/events/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/events/lib/one/test.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/events/lib/two/test.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/fail/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/fail/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/livereload/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/livereload/css/one.css delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/livereload/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/livereload/lib/two.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/livereload/sass/one.scss delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/multiTargets/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/multiTargets/lib/fail.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/multiTargets/lib/interrupt.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/multiTargets/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/multiTargets/lib/two.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/multiTargets/lib/wait.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/nospawn/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/nospawn/lib/interrupt.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/nospawn/lib/nospawn.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/nospawn/lib/spawn.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/oneTarget/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/oneTarget/lib/one.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/patterns/Gruntfile.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/patterns/lib/edit.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/patterns/lib/sub/dontedit.js delete mode 100644 node_modules/grunt-contrib-watch/test/fixtures/tasks/echo.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/events_test.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/fail_test.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/helper.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/livereload_test.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/nospawn_test.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/patterns_test.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/reloadgruntfile_test.js delete mode 100644 node_modules/grunt-contrib-watch/test/tasks/watch_test.js delete mode 100644 node_modules/grunt/.npmignore delete mode 100644 node_modules/grunt/CONTRIBUTING.md delete mode 100644 node_modules/grunt/LICENSE-MIT delete mode 100644 node_modules/grunt/README.md delete mode 100644 node_modules/grunt/internal-tasks/bump.js delete mode 100644 node_modules/grunt/internal-tasks/subgrunt.js delete mode 100644 node_modules/grunt/lib/grunt.js delete mode 100644 node_modules/grunt/lib/grunt/cli.js delete mode 100644 node_modules/grunt/lib/grunt/config.js delete mode 100644 node_modules/grunt/lib/grunt/event.js delete mode 100644 node_modules/grunt/lib/grunt/fail.js delete mode 100644 node_modules/grunt/lib/grunt/file.js delete mode 100644 node_modules/grunt/lib/grunt/help.js delete mode 100644 node_modules/grunt/lib/grunt/log.js delete mode 100644 node_modules/grunt/lib/grunt/option.js delete mode 100644 node_modules/grunt/lib/grunt/task.js delete mode 100644 node_modules/grunt/lib/grunt/template.js delete mode 100644 node_modules/grunt/lib/grunt/util.js delete mode 100644 node_modules/grunt/lib/util/task.js delete mode 120000 node_modules/grunt/node_modules/.bin/cake delete mode 120000 node_modules/grunt/node_modules/.bin/coffee delete mode 120000 node_modules/grunt/node_modules/.bin/js-yaml delete mode 120000 node_modules/grunt/node_modules/.bin/nopt delete mode 120000 node_modules/grunt/node_modules/.bin/which delete mode 100644 node_modules/grunt/node_modules/async/.gitmodules delete mode 100644 node_modules/grunt/node_modules/async/.npmignore delete mode 100644 node_modules/grunt/node_modules/async/LICENSE delete mode 100644 node_modules/grunt/node_modules/async/Makefile delete mode 100644 node_modules/grunt/node_modules/async/README.md delete mode 100644 node_modules/grunt/node_modules/async/index.js delete mode 100644 node_modules/grunt/node_modules/async/lib/async.js delete mode 100644 node_modules/grunt/node_modules/async/package.json delete mode 100644 node_modules/grunt/node_modules/coffee-script/.npmignore delete mode 100644 node_modules/grunt/node_modules/coffee-script/CNAME delete mode 100644 node_modules/grunt/node_modules/coffee-script/LICENSE delete mode 100644 node_modules/grunt/node_modules/coffee-script/README delete mode 100644 node_modules/grunt/node_modules/coffee-script/Rakefile delete mode 100755 node_modules/grunt/node_modules/coffee-script/bin/cake delete mode 100755 node_modules/grunt/node_modules/coffee-script/bin/coffee delete mode 100644 node_modules/grunt/node_modules/coffee-script/extras/jsl.conf delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/browser.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/cake.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/coffee-script.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/command.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/grammar.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/helpers.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/index.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/lexer.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/nodes.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/optparse.js delete mode 100755 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/parser.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/repl.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/rewriter.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/lib/coffee-script/scope.js delete mode 100644 node_modules/grunt/node_modules/coffee-script/package.json delete mode 100644 node_modules/grunt/node_modules/colors/MIT-LICENSE.txt delete mode 100644 node_modules/grunt/node_modules/colors/ReadMe.md delete mode 100644 node_modules/grunt/node_modules/colors/colors.js delete mode 100644 node_modules/grunt/node_modules/colors/example.html delete mode 100644 node_modules/grunt/node_modules/colors/example.js delete mode 100644 node_modules/grunt/node_modules/colors/package.json delete mode 100644 node_modules/grunt/node_modules/colors/test.js delete mode 100644 node_modules/grunt/node_modules/colors/themes/winston-dark.js delete mode 100644 node_modules/grunt/node_modules/colors/themes/winston-light.js delete mode 100644 node_modules/grunt/node_modules/dateformat/Readme.md delete mode 100644 node_modules/grunt/node_modules/dateformat/lib/dateformat.js delete mode 100644 node_modules/grunt/node_modules/dateformat/package.json delete mode 100644 node_modules/grunt/node_modules/dateformat/test/test_weekofyear.js delete mode 100644 node_modules/grunt/node_modules/dateformat/test/test_weekofyear.sh delete mode 100644 node_modules/grunt/node_modules/eventemitter2/README.md delete mode 100644 node_modules/grunt/node_modules/eventemitter2/index.js delete mode 100644 node_modules/grunt/node_modules/eventemitter2/lib/eventemitter2.js delete mode 100644 node_modules/grunt/node_modules/eventemitter2/package.json delete mode 100644 node_modules/grunt/node_modules/exit/.jshintrc delete mode 100644 node_modules/grunt/node_modules/exit/.npmignore delete mode 100644 node_modules/grunt/node_modules/exit/.travis.yml delete mode 100644 node_modules/grunt/node_modules/exit/Gruntfile.js delete mode 100644 node_modules/grunt/node_modules/exit/LICENSE-MIT delete mode 100644 node_modules/grunt/node_modules/exit/README.md delete mode 100644 node_modules/grunt/node_modules/exit/lib/exit.js delete mode 100644 node_modules/grunt/node_modules/exit/package.json delete mode 100644 node_modules/grunt/node_modules/exit/test/exit_test.js delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/10-stderr.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/10-stdout-stderr.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/10-stdout.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/100-stderr.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/100-stdout-stderr.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/100-stdout.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/1000-stderr.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/1000-stdout-stderr.txt delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/1000-stdout.txt delete mode 100755 node_modules/grunt/node_modules/exit/test/fixtures/create-files.sh delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/log-broken.js delete mode 100644 node_modules/grunt/node_modules/exit/test/fixtures/log.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/.jshintrc delete mode 100644 node_modules/grunt/node_modules/findup-sync/.npmignore delete mode 100644 node_modules/grunt/node_modules/findup-sync/Gruntfile.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/LICENSE-MIT delete mode 100644 node_modules/grunt/node_modules/findup-sync/README.md delete mode 100644 node_modules/grunt/node_modules/findup-sync/lib/findup-sync.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/README.md delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/node_modules/lodash/package.json delete mode 100644 node_modules/grunt/node_modules/findup-sync/package.json delete mode 100644 node_modules/grunt/node_modules/findup-sync/test/findup-sync_test.js delete mode 100644 node_modules/grunt/node_modules/findup-sync/test/fixtures/a.txt delete mode 100644 node_modules/grunt/node_modules/findup-sync/test/fixtures/a/b/bar.txt delete mode 100644 node_modules/grunt/node_modules/findup-sync/test/fixtures/a/foo.txt delete mode 100644 node_modules/grunt/node_modules/findup-sync/test/fixtures/aaa.txt delete mode 100644 node_modules/grunt/node_modules/getobject/.jshintrc delete mode 100644 node_modules/grunt/node_modules/getobject/.npmignore delete mode 100644 node_modules/grunt/node_modules/getobject/.travis.yml delete mode 100644 node_modules/grunt/node_modules/getobject/Gruntfile.js delete mode 100644 node_modules/grunt/node_modules/getobject/LICENSE-MIT delete mode 100644 node_modules/grunt/node_modules/getobject/README.md delete mode 100644 node_modules/grunt/node_modules/getobject/lib/getobject.js delete mode 100644 node_modules/grunt/node_modules/getobject/package.json delete mode 100644 node_modules/grunt/node_modules/getobject/test/namespace_test.js delete mode 100644 node_modules/grunt/node_modules/glob/.npmignore delete mode 100644 node_modules/grunt/node_modules/glob/.travis.yml delete mode 100644 node_modules/grunt/node_modules/glob/LICENSE delete mode 100644 node_modules/grunt/node_modules/glob/README.md delete mode 100644 node_modules/grunt/node_modules/glob/examples/g.js delete mode 100644 node_modules/grunt/node_modules/glob/examples/usr-local.js delete mode 100644 node_modules/grunt/node_modules/glob/glob.js delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/README.md delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/package.json delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/graceful-fs/test/ulimit.js delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/inherits/README.md delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 node_modules/grunt/node_modules/glob/node_modules/inherits/package.json delete mode 100644 node_modules/grunt/node_modules/glob/package.json delete mode 100644 node_modules/grunt/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/grunt/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/grunt/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/grunt/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/grunt/node_modules/glob/test/mark.js delete mode 100644 node_modules/grunt/node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/grunt/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/grunt/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/grunt/node_modules/glob/test/root.js delete mode 100644 node_modules/grunt/node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/grunt/node_modules/hooker/LICENSE-MIT delete mode 100644 node_modules/grunt/node_modules/hooker/README.md delete mode 100644 node_modules/grunt/node_modules/hooker/child.js delete mode 100644 node_modules/grunt/node_modules/hooker/dist/ba-hooker.js delete mode 100644 node_modules/grunt/node_modules/hooker/dist/ba-hooker.min.js delete mode 100644 node_modules/grunt/node_modules/hooker/grunt.js delete mode 100644 node_modules/grunt/node_modules/hooker/lib/hooker.js delete mode 100644 node_modules/grunt/node_modules/hooker/package.json delete mode 100644 node_modules/grunt/node_modules/hooker/parent.js delete mode 100644 node_modules/grunt/node_modules/hooker/test/hooker_test.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/.npmignore delete mode 100644 node_modules/grunt/node_modules/iconv-lite/.travis.yml delete mode 100644 node_modules/grunt/node_modules/iconv-lite/LICENSE delete mode 100644 node_modules/grunt/node_modules/iconv-lite/README.md delete mode 100644 node_modules/grunt/node_modules/iconv-lite/README.md~ delete mode 100644 node_modules/grunt/node_modules/iconv-lite/encodings/big5.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/encodings/gbk.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/encodings/singlebyte.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/encodings/table/big5.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/encodings/table/gbk.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/generation/generate-big5-table.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/generation/generate-singlebyte.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/index.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/package.json delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/big5-test.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/big5File.txt delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/cyrillic-test.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/gbk-test.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/gbkFile.txt delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/greek-test.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/main-test.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/performance.js delete mode 100644 node_modules/grunt/node_modules/iconv-lite/test/turkish-test.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/HISTORY.md delete mode 100644 node_modules/grunt/node_modules/js-yaml/LICENSE delete mode 100644 node_modules/grunt/node_modules/js-yaml/README.md delete mode 100755 node_modules/grunt/node_modules/js-yaml/bin/js-yaml.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/examples/custom_types.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/examples/custom_types.yaml delete mode 100644 node_modules/grunt/node_modules/js-yaml/examples/dumper.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/examples/dumper.json delete mode 100644 node_modules/grunt/node_modules/js-yaml/examples/sample_document.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/examples/sample_document.yaml delete mode 100644 node_modules/grunt/node_modules/js-yaml/index.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/common.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/dumper.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/exception.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/loader.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/mark.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/require.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema/default.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema/minimal.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/schema/safe.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/binary.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/bool.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/float.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/int.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/function.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/map.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/merge.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/null.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/omap.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/pairs.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/seq.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/set.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/str.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/timestamp.js delete mode 120000 node_modules/grunt/node_modules/js-yaml/node_modules/.bin/esparse delete mode 120000 node_modules/grunt/node_modules/js-yaml/node_modules/.bin/esvalidate delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/HISTORY.md delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/LICENSE delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/README.md delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/arguments.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/choice.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/constants.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/help.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/nargs.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/parents.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/sum.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/index.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/append.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/count.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/help.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action/version.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/action_container.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argparse.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/const.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/lib/namespace.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/Gemfile delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/Gemfile.lock delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/Rakefile delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/dist/underscore.string.min.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/run-qunit.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/speed.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/strings.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/strings_standalone.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test.html delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_standalone.html delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/arrays.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/chaining.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/collections.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/functions.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/index.html delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/objects.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/speed.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/utility.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/jquery.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/jslitmus.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/qunit.css delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/test_underscore/vendor/qunit.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/test/underscore.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/.npmignore delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/.travis.yml delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/CNAME delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/CONTRIBUTING.md delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/favicon.ico delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/index.html delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/index.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/argparse/package.json delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/README.md delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/bin/esparse.js delete mode 100755 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/esprima.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/package.json delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/compat.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/reflect.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/run.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/runner.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/node_modules/esprima/test/test.js delete mode 100644 node_modules/grunt/node_modules/js-yaml/package.json delete mode 100644 node_modules/grunt/node_modules/lodash/README.md delete mode 100644 node_modules/grunt/node_modules/lodash/lodash.js delete mode 100644 node_modules/grunt/node_modules/lodash/lodash.min.js delete mode 100644 node_modules/grunt/node_modules/lodash/lodash.underscore.js delete mode 100644 node_modules/grunt/node_modules/lodash/lodash.underscore.min.js delete mode 100644 node_modules/grunt/node_modules/lodash/package.json delete mode 100644 node_modules/grunt/node_modules/minimatch/.npmignore delete mode 100644 node_modules/grunt/node_modules/minimatch/LICENSE delete mode 100644 node_modules/grunt/node_modules/minimatch/README.md delete mode 100644 node_modules/grunt/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/grunt/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/grunt/node_modules/minimatch/package.json delete mode 100644 node_modules/grunt/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/grunt/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/grunt/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/grunt/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/grunt/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/grunt/node_modules/nopt/.npmignore delete mode 100644 node_modules/grunt/node_modules/nopt/LICENSE delete mode 100644 node_modules/grunt/node_modules/nopt/README.md delete mode 100755 node_modules/grunt/node_modules/nopt/bin/nopt.js delete mode 100755 node_modules/grunt/node_modules/nopt/examples/my-program.js delete mode 100644 node_modules/grunt/node_modules/nopt/lib/nopt.js delete mode 100644 node_modules/grunt/node_modules/nopt/node_modules/abbrev/LICENSE delete mode 100644 node_modules/grunt/node_modules/nopt/node_modules/abbrev/README.md delete mode 100644 node_modules/grunt/node_modules/nopt/node_modules/abbrev/lib/abbrev.js delete mode 100644 node_modules/grunt/node_modules/nopt/node_modules/abbrev/package.json delete mode 100644 node_modules/grunt/node_modules/nopt/package.json delete mode 100644 node_modules/grunt/node_modules/rimraf/AUTHORS delete mode 100644 node_modules/grunt/node_modules/rimraf/LICENSE delete mode 100644 node_modules/grunt/node_modules/rimraf/README.md delete mode 100644 node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/README.md delete mode 100644 node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/package.json delete mode 100644 node_modules/grunt/node_modules/rimraf/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/grunt/node_modules/rimraf/package.json delete mode 100644 node_modules/grunt/node_modules/rimraf/rimraf.js delete mode 100644 node_modules/grunt/node_modules/rimraf/test/run.sh delete mode 100644 node_modules/grunt/node_modules/rimraf/test/setup.sh delete mode 100644 node_modules/grunt/node_modules/rimraf/test/test-async.js delete mode 100644 node_modules/grunt/node_modules/rimraf/test/test-fiber.js delete mode 100644 node_modules/grunt/node_modules/rimraf/test/test-sync.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/.travis.yml delete mode 100644 node_modules/grunt/node_modules/underscore.string/Gemfile delete mode 100644 node_modules/grunt/node_modules/underscore.string/Gemfile.lock delete mode 100644 node_modules/grunt/node_modules/underscore.string/README.markdown delete mode 100644 node_modules/grunt/node_modules/underscore.string/Rakefile delete mode 100644 node_modules/grunt/node_modules/underscore.string/dist/underscore.string.min.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/lib/underscore.string.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/package.json delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/run-qunit.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/speed.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/strings.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/strings_standalone.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test.html delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_standalone.html delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/arrays.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/chaining.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/collections.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/functions.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/objects.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/speed.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/temp.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/temp_tests.html delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/test.html delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/utility.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/jquery.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/jslitmus.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/qunit.css delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/test_underscore/vendor/qunit.js delete mode 100644 node_modules/grunt/node_modules/underscore.string/test/underscore.js delete mode 100644 node_modules/grunt/node_modules/which/LICENSE delete mode 100644 node_modules/grunt/node_modules/which/README.md delete mode 100755 node_modules/grunt/node_modules/which/bin/which delete mode 100644 node_modules/grunt/node_modules/which/package.json delete mode 100644 node_modules/grunt/node_modules/which/which.js delete mode 100644 node_modules/grunt/package.json delete mode 100644 node_modules/load-grunt-tasks/load-grunt-tasks.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/.jshintrc delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/.npmignore delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/.travis.yml delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/Gruntfile.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/LICENSE-MIT delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/lib/findup-sync.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/LICENSE.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/lodash.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/node_modules/lodash/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/test/findup-sync_test.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/test/fixtures/a.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/test/fixtures/a/b/bar.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/test/fixtures/a/foo.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/findup-sync/test/fixtures/aaa.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/.jshintrc delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/.npmignore delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/.travis.yml delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/Gruntfile.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/LICENSE-MIT delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/lib/globule.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/.npmignore delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/.travis.yml delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/LICENSE delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/examples/g.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/examples/usr-local.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/glob.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/.npmignore delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/LICENSE delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/graceful-fs.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/test/open.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/graceful-fs/test/ulimit.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/inherits/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/node_modules/inherits/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/00-setup.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/bash-comparison.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/bash-results.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/cwd-test.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/mark.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/nocase-nomagic.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/pause-resume.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/root-nomount.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/root.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/glob/test/zz-cleanup.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/dist/lodash.compat.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/dist/lodash.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/dist/lodash.min.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/lodash/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/.npmignore delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/LICENSE delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/minimatch.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/test/basic.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/test/brace-expand.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/test/caching.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/test/defaults.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/package.json delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/README.md delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/css/baz.css delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/css/qux.css delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/deep/deep.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/deep/deeper/deeper.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/deep/deeper/deepest/deepest.txt delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/js/bar.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/fixtures/expand/js/foo.js delete mode 100644 node_modules/load-grunt-tasks/node_modules/globule/test/globule_test.js delete mode 100644 node_modules/load-grunt-tasks/package.json delete mode 100644 node_modules/load-grunt-tasks/readme.md diff --git a/node_modules/.bin/autoprefixer b/node_modules/.bin/autoprefixer deleted file mode 120000 index 6b1b92b7..00000000 --- a/node_modules/.bin/autoprefixer +++ /dev/null @@ -1 +0,0 @@ -../grunt-autoprefixer/node_modules/autoprefixer/bin/autoprefixer \ No newline at end of file diff --git a/node_modules/glob/.npmignore b/node_modules/glob/.npmignore deleted file mode 100644 index 2af4b71c..00000000 --- a/node_modules/glob/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.*.swp -test/a/ diff --git a/node_modules/glob/.travis.yml b/node_modules/glob/.travis.yml deleted file mode 100644 index baa0031d..00000000 --- a/node_modules/glob/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/node_modules/glob/LICENSE b/node_modules/glob/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/glob/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/glob/README.md b/node_modules/glob/README.md deleted file mode 100644 index cc691645..00000000 --- a/node_modules/glob/README.md +++ /dev/null @@ -1,250 +0,0 @@ -# Glob - -Match files using the patterns the shell uses, like stars and stuff. - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -## Attention: node-glob users! - -The API has changed dramatically between 2.x and 3.x. This library is -now 100% JavaScript, and the integer flags have been replaced with an -options object. - -Also, there's an event emitter class, proper tests, and all the other -things you've come to expect from node modules. - -And best of all, no compilation! - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Features - -Please see the [minimatch -documentation](https://github.com/isaacs/minimatch) for more details. - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options]) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instanting the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `error` The error encountered. When an error is encountered, the - glob object is in an undefined state, and should be discarded. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. -* `statCache` Collection of all the stat results the glob search - performed. -* `cache` Convenience object. Each field has the following possible - values: - * `false` - Path does not exist - * `true` - Path exists - * `1` - Path exists, and is not a directory - * `2` - Path exists, and is a directory - * `[file, entries, ...]` - Path exists, is a directory, and the - array value is the results of `fs.readdir` - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `abort` Stop the search. - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the glob object, as well. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `dot` Include `.dot` files in normal matches and `globstar` matches. - Note that an explicit dot in a portion of the pattern will always - match dot files. -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. It will cause - ELOOP to be triggered one level sooner in the case of cyclical - symbolic links. -* `silent` When an unusual error is encountered - when attempting to read a directory, a warning will be printed to - stderr. Set the `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered - when attempting to read a directory, the process will just continue on - in search of other matches. Set the `strict` option to raise an error - in these cases. -* `cache` See `cache` property above. Pass in a previously generated - cache object to save some fs calls. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary to - set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `sync` Perform a synchronous glob search. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. - Set this flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `nocase` Perform a case-insensitive match. Note that case-insensitive - filesystems will sometimes result in glob returning results that are - case-insensitively matched anyway, since readdir and stat will not - raise an error. -* `debug` Set to enable debug logging in minimatch and glob. -* `globDebug` Set to enable debug logging in glob, but not minimatch. - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the cache or statCache objects are reused between glob -calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast majority -of operations, this is never a problem. diff --git a/node_modules/glob/examples/g.js b/node_modules/glob/examples/g.js deleted file mode 100644 index be122df0..00000000 --- a/node_modules/glob/examples/g.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "test/a/**/[cg]/../[cg]" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/glob/examples/usr-local.js b/node_modules/glob/examples/usr-local.js deleted file mode 100644 index 327a425e..00000000 --- a/node_modules/glob/examples/usr-local.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "{./*/*,/*,/usr/local/*}" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/glob/glob.js b/node_modules/glob/glob.js deleted file mode 100644 index f646c448..00000000 --- a/node_modules/glob/glob.js +++ /dev/null @@ -1,728 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// readdir(PREFIX) as ENTRIES -// If fails, END -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $]) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $]) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - - - -module.exports = glob - -var fs = require("fs") -, minimatch = require("minimatch") -, Minimatch = minimatch.Minimatch -, inherits = require("inherits") -, EE = require("events").EventEmitter -, path = require("path") -, isDir = {} -, assert = require("assert").ok - -function glob (pattern, options, cb) { - if (typeof options === "function") cb = options, options = {} - if (!options) options = {} - - if (typeof options === "number") { - deprecated() - return - } - - var g = new Glob(pattern, options, cb) - return g.sync ? g.found : g -} - -glob.fnmatch = deprecated - -function deprecated () { - throw new Error("glob's interface has changed. Please see the docs.") -} - -glob.sync = globSync -function globSync (pattern, options) { - if (typeof options === "number") { - deprecated() - return - } - - options = options || {} - options.sync = true - return glob(pattern, options) -} - -this._processingEmitQueue = false - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (!(this instanceof Glob)) { - return new Glob(pattern, options, cb) - } - - if (typeof options === "function") { - cb = options - options = null - } - - if (typeof cb === "function") { - this.on("error", cb) - this.on("end", function (matches) { - cb(null, matches) - }) - } - - options = options || {} - - this._endEmitted = false - this.EOF = {} - this._emitQueue = [] - - this.paused = false - this._processingEmitQueue = false - - this.maxDepth = options.maxDepth || 1000 - this.maxLength = options.maxLength || Infinity - this.cache = options.cache || {} - this.statCache = options.statCache || {} - - this.changedCwd = false - var cwd = process.cwd() - if (!options.hasOwnProperty("cwd")) this.cwd = cwd - else { - this.cwd = options.cwd - this.changedCwd = path.resolve(options.cwd) !== cwd - } - - this.root = options.root || path.resolve(this.cwd, "/") - this.root = path.resolve(this.root) - if (process.platform === "win32") - this.root = this.root.replace(/\\/g, "/") - - this.nomount = !!options.nomount - - if (!pattern) { - throw new Error("must provide pattern") - } - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - this.strict = options.strict !== false - this.dot = !!options.dot - this.mark = !!options.mark - this.sync = !!options.sync - this.nounique = !!options.nounique - this.nonull = !!options.nonull - this.nosort = !!options.nosort - this.nocase = !!options.nocase - this.stat = !!options.stat - - this.debug = !!options.debug || !!options.globDebug - if (this.debug) - this.log = console.error - - this.silent = !!options.silent - - var mm = this.minimatch = new Minimatch(pattern, options) - this.options = mm.options - pattern = this.pattern = mm.pattern - - this.error = null - this.aborted = false - - // list of all the patterns that ** has resolved do, so - // we can avoid visiting multiple times. - this._globstars = {} - - EE.call(this) - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - this.minimatch.set.forEach(iterator.bind(this)) - function iterator (pattern, i, set) { - this._process(pattern, 0, i, function (er) { - if (er) this.emit("error", er) - if (-- n <= 0) this._finish() - }) - } -} - -Glob.prototype.log = function () {} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - - var nou = this.nounique - , all = nou ? [] : {} - - for (var i = 0, l = this.matches.length; i < l; i ++) { - var matches = this.matches[i] - this.log("matches[%d] =", i, matches) - // do like the shell, and spit out the literal glob - if (!matches) { - if (this.nonull) { - var literal = this.minimatch.globSet[i] - if (nou) all.push(literal) - else all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) all.push.apply(all, m) - else m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) all = Object.keys(all) - - if (!this.nosort) { - all = all.sort(this.nocase ? alphasorti : alphasort) - } - - if (this.mark) { - // at *some* point we statted all of these - all = all.map(this._mark, this) - } - - this.log("emitting end", all) - - this.EOF = this.found = all - this.emitMatch(this.EOF) -} - -function alphasorti (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return alphasort(a, b) -} - -function alphasort (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -Glob.prototype._mark = function (p) { - var c = this.cache[p] - var m = p - if (c) { - var isDir = c === 2 || Array.isArray(c) - var slash = p.slice(-1) === '/' - - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) - - if (m !== p) { - this.statCache[m] = this.statCache[p] - this.cache[m] = this.cache[p] - } - } - - return m -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit("abort") -} - -Glob.prototype.pause = function () { - if (this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = true - this.emit("pause") -} - -Glob.prototype.resume = function () { - if (!this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = false - this.emit("resume") - this._processEmitQueue() - //process.nextTick(this.emit.bind(this, "resume")) -} - -Glob.prototype.emitMatch = function (m) { - this.log('emitMatch', m) - this._emitQueue.push(m) - this._processEmitQueue() -} - -Glob.prototype._processEmitQueue = function (m) { - this.log("pEQ paused=%j processing=%j m=%j", this.paused, - this._processingEmitQueue, m) - var done = false - while (!this._processingEmitQueue && - !this.paused) { - this._processingEmitQueue = true - var m = this._emitQueue.shift() - this.log(">processEmitQueue", m === this.EOF ? ":EOF:" : m) - if (!m) { - this.log(">processEmitQueue, falsey m") - this._processingEmitQueue = false - break - } - - if (m === this.EOF || !(this.mark && !this.stat)) { - this.log("peq: unmarked, or eof") - next.call(this, 0, false) - } else if (this.statCache[m]) { - var sc = this.statCache[m] - var exists - if (sc) - exists = sc.isDirectory() ? 2 : 1 - this.log("peq: stat cached") - next.call(this, exists, exists === 2) - } else { - this.log("peq: _stat, then next") - this._stat(m, next) - } - - function next(exists, isDir) { - this.log("next", m, exists, isDir) - var ev = m === this.EOF ? "end" : "match" - - // "end" can only happen once. - assert(!this._endEmitted) - if (ev === "end") - this._endEmitted = true - - if (exists) { - // Doesn't mean it necessarily doesn't exist, it's possible - // we just didn't check because we don't care that much, or - // this is EOF anyway. - if (isDir && !m.match(/\/$/)) { - m = m + "/" - } else if (!isDir && m.match(/\/$/)) { - m = m.replace(/\/+$/, "") - } - } - this.log("emit", ev, m) - this.emit(ev, m) - this._processingEmitQueue = false - if (done && m !== this.EOF && !this.paused) - this._processEmitQueue() - } - } - done = true -} - -Glob.prototype._process = function (pattern, depth, index, cb_) { - assert(this instanceof Glob) - - var cb = function cb (er, res) { - assert(this instanceof Glob) - if (this.paused) { - if (!this._processQueue) { - this._processQueue = [] - this.once("resume", function () { - var q = this._processQueue - this._processQueue = null - q.forEach(function (cb) { cb() }) - }) - } - this._processQueue.push(cb_.bind(this, er, res)) - } else { - cb_.call(this, er, res) - } - }.bind(this) - - if (this.aborted) return cb() - - if (depth > this.maxDepth) return cb() - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === "string") { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - prefix = pattern.join("/") - this._stat(prefix, function (exists, isDir) { - // either it's there, or it isn't. - // nothing more to do, either way. - if (exists) { - if (prefix && isAbsolute(prefix) && !this.nomount) { - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - } - } - - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][prefix] = true - this.emitMatch(prefix) - } - return cb() - }) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's "absolute" like /foo/bar, - // or "relative" like "../baz" - prefix = pattern.slice(0, n) - prefix = prefix.join("/") - break - } - - // get the list of entries. - var read - if (prefix === null) read = "." - else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { - if (!prefix || !isAbsolute(prefix)) { - prefix = path.join("/", prefix) - } - read = prefix = path.resolve(prefix) - - // if (process.platform === "win32") - // read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/") - - this.log('absolute: ', prefix, this.root, pattern, read) - } else { - read = prefix - } - - this.log('readdir(%j)', read, this.cwd, this.root) - - return this._readdir(read, function (er, entries) { - if (er) { - // not a directory! - // this means that, whatever else comes after this, it can never match - return cb() - } - - // globstar is special - if (pattern[n] === minimatch.GLOBSTAR) { - // test without the globstar, and with every child both below - // and replacing the globstar. - var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ] - entries.forEach(function (e) { - if (e.charAt(0) === "." && !this.dot) return - // instead of the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))) - // below the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n))) - }, this) - - s = s.filter(function (pattern) { - var key = gsKey(pattern) - var seen = !this._globstars[key] - this._globstars[key] = true - return seen - }, this) - - if (!s.length) - return cb() - - // now asyncForEach over this - var l = s.length - , errState = null - s.forEach(function (gsPattern) { - this._process(gsPattern, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l <= 0) return cb() - }) - }, this) - - return - } - - // not a globstar - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = pattern[n] - var rawGlob = pattern[n]._glob - , dotOk = this.dot || rawGlob.charAt(0) === "." - - entries = entries.filter(function (e) { - return (e.charAt(0) !== "." || dotOk) && - e.match(pattern[n]) - }) - - // If n === pattern.length - 1, then there's no need for the extra stat - // *unless* the user has specified "mark" or "stat" explicitly. - // We know that they exist, since the readdir returned them. - if (n === pattern.length - 1 && - !this.mark && - !this.stat) { - entries.forEach(function (e) { - if (prefix) { - if (prefix !== "/") e = prefix + "/" + e - else e = prefix + e - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e) - } - - if (process.platform === "win32") - e = e.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][e] = true - this.emitMatch(e) - }, this) - return cb.call(this) - } - - - // now test all the remaining entries as stand-ins for that part - // of the pattern. - var l = entries.length - , errState = null - if (l === 0) return cb() // no matches possible - entries.forEach(function (e) { - var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)) - this._process(p, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l === 0) return cb.call(this) - }) - }, this) - }) - -} - -function gsKey (pattern) { - return '**' + pattern.map(function (p) { - return (p === minimatch.GLOBSTAR) ? '**' : (''+p) - }).join('/') -} - -Glob.prototype._stat = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterStat(f, abs, cb, er) - } - - this.log('stat', [this.cwd, f, '=', abs]) - - if (!this.stat && this.cache.hasOwnProperty(f)) { - var exists = this.cache[f] - , isDir = exists && (Array.isArray(exists) || exists === 2) - if (this.sync) return cb.call(this, !!exists, isDir) - return process.nextTick(cb.bind(this, !!exists, isDir)) - } - - var stat = this.statCache[abs] - if (this.sync || stat) { - var er - try { - stat = fs.statSync(abs) - } catch (e) { - er = e - } - this._afterStat(f, abs, cb, er, stat) - } else { - fs.stat(abs, this._afterStat.bind(this, f, abs, cb)) - } -} - -Glob.prototype._afterStat = function (f, abs, cb, er, stat) { - var exists - assert(this instanceof Glob) - - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) { - this.log("should be ENOTDIR, fake it") - - er = new Error("ENOTDIR, not a directory '" + abs + "'") - er.path = abs - er.code = "ENOTDIR" - stat = null - } - - var emit = !this.statCache[abs] - this.statCache[abs] = stat - - if (er || !stat) { - exists = false - } else { - exists = stat.isDirectory() ? 2 : 1 - if (emit) - this.emit('stat', f, stat) - } - this.cache[f] = this.cache[f] || exists - cb.call(this, !!exists, exists === 2) -} - -Glob.prototype._readdir = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (isAbsolute(f)) { - abs = f - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterReaddir(f, abs, cb, er) - } - - this.log('readdir', [this.cwd, f, abs]) - if (this.cache.hasOwnProperty(f)) { - var c = this.cache[f] - if (Array.isArray(c)) { - if (this.sync) return cb.call(this, null, c) - return process.nextTick(cb.bind(this, null, c)) - } - - if (!c || c === 1) { - // either ENOENT or ENOTDIR - var code = c ? "ENOTDIR" : "ENOENT" - , er = new Error((c ? "Not a directory" : "Not found") + ": " + f) - er.path = f - er.code = code - this.log(f, er) - if (this.sync) return cb.call(this, er) - return process.nextTick(cb.bind(this, er)) - } - - // at this point, c === 2, meaning it's a dir, but we haven't - // had to read it yet, or c === true, meaning it's *something* - // but we don't have any idea what. Need to read it, either way. - } - - if (this.sync) { - var er, entries - try { - entries = fs.readdirSync(abs) - } catch (e) { - er = e - } - return this._afterReaddir(f, abs, cb, er, entries) - } - - fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb)) -} - -Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) { - assert(this instanceof Glob) - if (entries && !er) { - this.cache[f] = entries - // if we haven't asked to stat everything for suresies, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. This also gets us one step - // further into ELOOP territory. - if (!this.mark && !this.stat) { - entries.forEach(function (e) { - if (f === "/") e = f + e - else e = f + "/" + e - this.cache[e] = true - }, this) - } - - return cb.call(this, er, entries) - } - - // now handle errors, and cache the information - if (er) switch (er.code) { - case "ENOTDIR": // totally normal. means it *does* exist. - this.cache[f] = 1 - return cb.call(this, er) - case "ENOENT": // not terribly unusual - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[f] = false - return cb.call(this, er) - default: // some unusual error. Treat as failure. - this.cache[f] = false - if (this.strict) this.emit("error", er) - if (!this.silent) console.error("glob error", er) - return cb.call(this, er) - } -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/node_modules/glob/node_modules/inherits/LICENSE b/node_modules/glob/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/node_modules/glob/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/glob/node_modules/inherits/README.md b/node_modules/glob/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/node_modules/glob/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/glob/node_modules/inherits/inherits.js b/node_modules/glob/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/node_modules/glob/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/glob/node_modules/inherits/inherits_browser.js b/node_modules/glob/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/node_modules/glob/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/glob/node_modules/inherits/package.json b/node_modules/glob/node_modules/inherits/package.json deleted file mode 100644 index 5bf0db56..00000000 --- a/node_modules/glob/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@2" -} diff --git a/node_modules/glob/node_modules/inherits/test.js b/node_modules/glob/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/node_modules/glob/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/glob/node_modules/minimatch/.npmignore b/node_modules/glob/node_modules/minimatch/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/glob/node_modules/minimatch/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/glob/node_modules/minimatch/LICENSE b/node_modules/glob/node_modules/minimatch/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/glob/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/glob/node_modules/minimatch/README.md b/node_modules/glob/node_modules/minimatch/README.md deleted file mode 100644 index 978268e2..00000000 --- a/node_modules/glob/node_modules/minimatch/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -Eventually, it will replace the C binding in node-glob. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself. When set, an empty list is returned if there are -no matches. - -### matchBase - -If set, then patterns without slashes will be matched -against the basename of the path if it contains slashes. For example, -`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. diff --git a/node_modules/glob/node_modules/minimatch/minimatch.js b/node_modules/glob/node_modules/minimatch/minimatch.js deleted file mode 100644 index c633f89f..00000000 --- a/node_modules/glob/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,1055 +0,0 @@ -;(function (require, exports, module, platform) { - -if (module) module.exports = minimatch -else exports.minimatch = minimatch - -if (!require) { - require = function (id) { - switch (id) { - case "sigmund": return function sigmund (obj) { - return JSON.stringify(obj) - } - case "path": return { basename: function (f) { - f = f.split(/[\/\\]/) - var e = f.pop() - if (!e) e = f.pop() - return e - }} - case "lru-cache": return function LRUCache () { - // not quite an LRU, but still space-limited. - var cache = {} - var cnt = 0 - this.set = function (k, v) { - cnt ++ - if (cnt >= 100) cache = {} - cache[k] = v - } - this.get = function (k) { return cache[k] } - } - } - } -} - -minimatch.Minimatch = Minimatch - -var LRU = require("lru-cache") - , cache = minimatch.cache = new LRU({max: 100}) - , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , sigmund = require("sigmund") - -var path = require("path") - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" - - // * => any number of characters - , star = qmark + "*?" - - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" - - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" - - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split("").reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - - -function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - return false - } - - // "" only matches "" - if (pattern.trim() === "") return p === "" - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options, cache) - } - - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - pattern = pattern.split("\\").join("/") - } - - // lru storage. - // these things aren't particularly big, but walking down the string - // and turning it into a regexp can get pretty costly. - var cacheKey = pattern + "\n" + sigmund(options) - var cached = minimatch.cache.get(cacheKey) - if (cached) return cached - minimatch.cache.set(cacheKey, this) - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function() {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return -1 === s.indexOf(false) - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 - - if (options.nonegate) return - - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { - negate = !negate - negateOffset ++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return new Minimatch(pattern, options).braceExpand() -} - -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - options = options || this.options - pattern = typeof pattern === "undefined" - ? this.pattern : pattern - - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - var escaping = false - - // examples and comments refer to this crazy pattern: - // a{b,c{d,e},{f,g}h}x{y,z} - // expected: - // abxy - // abxz - // acdxy - // acdxz - // acexy - // acexz - // afhxy - // afhxz - // aghxy - // aghxz - - // everything before the first \{ is just a prefix. - // So, we pluck that off, and work with the rest, - // and then prepend it to everything we find. - if (pattern.charAt(0) !== "{") { - this.debug(pattern) - var prefix = null - for (var i = 0, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug(i, c) - if (c === "\\") { - escaping = !escaping - } else if (c === "{" && !escaping) { - prefix = pattern.substr(0, i) - break - } - } - - // actually no sets, all { were escaped. - if (prefix === null) { - this.debug("no sets") - return [pattern] - } - - var tail = braceExpand.call(this, pattern.substr(i), options) - return tail.map(function (t) { - return prefix + t - }) - } - - // now we have something like: - // {b,c{d,e},{f,g}h}x{y,z} - // walk through the set, expanding each part, until - // the set ends. then, we'll expand the suffix. - // If the set only has a single member, then'll put the {} back - - // first, handle numeric sets, since they're easier - var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) - if (numset) { - this.debug("numset", numset[1], numset[2]) - var suf = braceExpand.call(this, pattern.substr(numset[0].length), options) - , start = +numset[1] - , end = +numset[2] - , inc = start > end ? -1 : 1 - , set = [] - for (var i = start; i != (end + inc); i += inc) { - // append all the suffixes - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - set.push(i + suf[ii]) - } - } - return set - } - - // ok, walk through the set - // We hope, somewhat optimistically, that there - // will be a } at the end. - // If the closing brace isn't found, then the pattern is - // interpreted as braceExpand("\\" + pattern) so that - // the leading \{ will be interpreted literally. - var i = 1 // skip the \{ - , depth = 1 - , set = [] - , member = "" - , sawEnd = false - , escaping = false - - function addMember () { - set.push(member) - member = "" - } - - this.debug("Entering for") - FOR: for (i = 1, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug("", i, c) - - if (escaping) { - escaping = false - member += "\\" + c - } else { - switch (c) { - case "\\": - escaping = true - continue - - case "{": - depth ++ - member += "{" - continue - - case "}": - depth -- - // if this closes the actual set, then we're done - if (depth === 0) { - addMember() - // pluck off the close-brace - i ++ - break FOR - } else { - member += c - continue - } - - case ",": - if (depth === 1) { - addMember() - } else { - member += c - } - continue - - default: - member += c - continue - } // switch - } // else - } // for - - // now we've either finished the set, and the suffix is - // pattern.substr(i), or we have *not* closed the set, - // and need to escape the leading brace - if (depth !== 0) { - this.debug("didn't close", pattern) - return braceExpand.call(this, "\\" + pattern, options) - } - - // x{y,z} -> ["xy", "xz"] - this.debug("set", set) - this.debug("suffix", pattern.substr(i)) - var suf = braceExpand.call(this, pattern.substr(i), options) - // ["b", "c{d,e}","{f,g}h"] -> - // [["b"], ["cd", "ce"], ["fh", "gh"]] - var addBraces = set.length === 1 - this.debug("set pre-expanded", set) - set = set.map(function (p) { - return braceExpand.call(this, p, options) - }, this) - this.debug("set expanded", set) - - - // [["b"], ["cd", "ce"], ["fh", "gh"]] -> - // ["b", "cd", "ce", "fh", "gh"] - set = set.reduce(function (l, r) { - return l.concat(r) - }) - - if (addBraces) { - set = set.map(function (s) { - return "{" + s + "}" - }) - } - - // now attach the suffixes. - var ret = [] - for (var i = 0, l = set.length; i < l; i ++) { - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - ret.push(set[i] + suf[ii]) - } - } - return ret -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - , self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += star - hasMagic = true - break - case "?": - re += qmark - hasMagic = true - break - default: - re += "\\"+stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - this.debug("%s\t%s %s %j", pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += "\\" + c - escaping = false - continue - } - - SWITCH: switch (c) { - case "/": - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case "\\": - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === "!" && i === classStart + 1) c = "^" - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case "(": - if (inClass) { - re += "(" - continue - } - - if (!stateChar) { - re += "\\(" - continue - } - - plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) - // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ")": - if (inClass || !patternListStack.length) { - re += "\\)" - continue - } - - clearStateChar() - hasMagic = true - re += ")" - plType = patternListStack.pop().type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case "!": - re += "[^/]*?)" - break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway - } - continue - - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|" - escaping = false - continue - } - - clearStateChar() - re += "|" - continue - - // these are mostly the same in regexp and glob - case "[": - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += "\\" + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case "]": - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += "\\" + c - escaping = false - continue - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" - } - - re += c - - } // switch - } // for - - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = "\\" - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" - }) - - this.debug("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += "\\\\" - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re - - if (addPatternStart) re = patternStart + re - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [ re, hasMagic ] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) return this.regexp = false - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" - - // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" - - try { - return this.regexp = new RegExp(re, flags) - } catch (ex) { - return this.regexp = false - } -} - -minimatch.match = function (list, pattern, options) { - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug("match", f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === "" - - if (f === "/" && partial) return true - - var options = this.options - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - f = f.split("\\").join("/") - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, "split", f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, "set", set) - - var splitFile = path.basename(f.join("/")).split("/") - - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i], file = f - if (options.matchBase && pattern.length === 1) { - file = splitFile - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug("matchOne", - { "this": this - , file: file - , pattern: pattern }) - - this.debug("matchOne", file.length, pattern.length) - - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - this.debug("matchOne loop") - var p = pattern[pi] - , f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - , pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', - file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - this.debug("dot detected!", file, fr, pattern, pr) - break WHILE - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr ++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug("\n>>> no match, partial?", file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug("string match", p, f, hit) - } else { - hit = f.match(p) - this.debug("pattern match", p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") - return emptyFileEnd - } - - // should be unreachable. - throw new Error("wtf?") -} - - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") -} - - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") -} - -})( typeof require === "function" ? require : null, - this, - typeof module === "object" ? module : null, - typeof process === "object" ? process.platform : "win32" - ) diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore deleted file mode 100644 index 07e6e472..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS deleted file mode 100644 index 4a0bc503..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS +++ /dev/null @@ -1,14 +0,0 @@ -# Authors, sorted by whether or not they are me -Isaac Z. Schlueter -Brian Cottingham -Carlos Brito Lage -Jesse Dailey -Kevin O'Hara -Marco Rogers -Mark Cavage -Marko Mikulicic -Nathan Rajlich -Satheesh Natesan -Trent Mick -ashleybrener -n4kz diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md deleted file mode 100644 index 03ee0f98..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# lru cache - -A cache object that deletes the least-recently-used items. - -## Usage: - -```javascript -var LRU = require("lru-cache") - , options = { max: 500 - , length: function (n) { return n * 2 } - , dispose: function (key, n) { n.close() } - , maxAge: 1000 * 60 * 60 } - , cache = LRU(options) - , otherCache = LRU(50) // sets just the max size - -cache.set("key", "value") -cache.get("key") // "value" - -cache.reset() // empty the cache -``` - -If you put more stuff in it, then items will fall out. - -If you try to put an oversized thing in it, then it'll fall out right -away. - -## Options - -* `max` The maximum size of the cache, checked by applying the length - function to all values in the cache. Not setting this is kind of - silly, since that's the whole purpose of this lib, but it defaults - to `Infinity`. -* `maxAge` Maximum age in ms. Items are not pro-actively pruned out - as they age, but if you try to get an item that is too old, it'll - drop it and return undefined instead of giving it to you. -* `length` Function that is used to calculate the length of stored - items. If you're storing strings or buffers, then you probably want - to do something like `function(n){return n.length}`. The default is - `function(n){return 1}`, which is fine if you want to store `n` - like-sized things. -* `dispose` Function that is called on items when they are dropped - from the cache. This can be handy if you want to close file - descriptors or do other cleanup tasks when items are no longer - accessible. Called with `key, value`. It's called *before* - actually removing the item from the internal cache, so if you want - to immediately put it back in, you'll have to do that in a - `nextTick` or `setTimeout` callback or it won't do anything. -* `stale` By default, if you set a `maxAge`, it'll only actually pull - stale items out of the cache when you `get(key)`. (That is, it's - not pre-emptively doing a `setTimeout` or anything.) If you set - `stale:true`, it'll return the stale value before deleting it. If - you don't set this, then it'll return `undefined` when you try to - get a stale entry, as if it had already been deleted. - -## API - -* `set(key, value)` -* `get(key) => value` - - Both of these will update the "recently used"-ness of the key. - They do what you think. - -* `peek(key)` - - Returns the key value (or `undefined` if not found) without - updating the "recently used"-ness of the key. - - (If you find yourself using this a lot, you *might* be using the - wrong sort of data structure, but there are some use cases where - it's handy.) - -* `del(key)` - - Deletes a key out of the cache. - -* `reset()` - - Clear the cache entirely, throwing away all values. - -* `has(key)` - - Check if a key is in the cache, without updating the recent-ness - or deleting it for being stale. - -* `forEach(function(value,key,cache), [thisp])` - - Just like `Array.prototype.forEach`. Iterates over all the keys - in the cache, in order of recent-ness. (Ie, more recently used - items are iterated over first.) - -* `keys()` - - Return an array of the keys in the cache. - -* `values()` - - Return an array of the values in the cache. diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js deleted file mode 100644 index d1d13817..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +++ /dev/null @@ -1,252 +0,0 @@ -;(function () { // closure for web browsers - -if (typeof module === 'object' && module.exports) { - module.exports = LRUCache -} else { - // just set the global for non-node platforms. - this.LRUCache = LRUCache -} - -function hOP (obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key) -} - -function naiveLength () { return 1 } - -function LRUCache (options) { - if (!(this instanceof LRUCache)) - return new LRUCache(options) - - if (typeof options === 'number') - options = { max: options } - - if (!options) - options = {} - - this._max = options.max - // Kind of weird to have a default max of Infinity, but oh well. - if (!this._max || !(typeof this._max === "number") || this._max <= 0 ) - this._max = Infinity - - this._lengthCalculator = options.length || naiveLength - if (typeof this._lengthCalculator !== "function") - this._lengthCalculator = naiveLength - - this._allowStale = options.stale || false - this._maxAge = options.maxAge || null - this._dispose = options.dispose - this.reset() -} - -// resize the cache when the max changes. -Object.defineProperty(LRUCache.prototype, "max", - { set : function (mL) { - if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity - this._max = mL - if (this._length > this._max) trim(this) - } - , get : function () { return this._max } - , enumerable : true - }) - -// resize the cache when the lengthCalculator changes. -Object.defineProperty(LRUCache.prototype, "lengthCalculator", - { set : function (lC) { - if (typeof lC !== "function") { - this._lengthCalculator = naiveLength - this._length = this._itemCount - for (var key in this._cache) { - this._cache[key].length = 1 - } - } else { - this._lengthCalculator = lC - this._length = 0 - for (var key in this._cache) { - this._cache[key].length = this._lengthCalculator(this._cache[key].value) - this._length += this._cache[key].length - } - } - - if (this._length > this._max) trim(this) - } - , get : function () { return this._lengthCalculator } - , enumerable : true - }) - -Object.defineProperty(LRUCache.prototype, "length", - { get : function () { return this._length } - , enumerable : true - }) - - -Object.defineProperty(LRUCache.prototype, "itemCount", - { get : function () { return this._itemCount } - , enumerable : true - }) - -LRUCache.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - var i = 0; - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - i++ - var hit = this._lruList[k] - if (this._maxAge && (Date.now() - hit.now > this._maxAge)) { - del(this, hit) - if (!this._allowStale) hit = undefined - } - if (hit) { - fn.call(thisp, hit.value, hit.key, this) - } - } -} - -LRUCache.prototype.keys = function () { - var keys = new Array(this._itemCount) - var i = 0 - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - var hit = this._lruList[k] - keys[i++] = hit.key - } - return keys -} - -LRUCache.prototype.values = function () { - var values = new Array(this._itemCount) - var i = 0 - for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { - var hit = this._lruList[k] - values[i++] = hit.value - } - return values -} - -LRUCache.prototype.reset = function () { - if (this._dispose && this._cache) { - for (var k in this._cache) { - this._dispose(k, this._cache[k].value) - } - } - - this._cache = Object.create(null) // hash of items by key - this._lruList = Object.create(null) // list of items in order of use recency - this._mru = 0 // most recently used - this._lru = 0 // least recently used - this._length = 0 // number of items in the list - this._itemCount = 0 -} - -// Provided for debugging/dev purposes only. No promises whatsoever that -// this API stays stable. -LRUCache.prototype.dump = function () { - return this._cache -} - -LRUCache.prototype.dumpLru = function () { - return this._lruList -} - -LRUCache.prototype.set = function (key, value) { - if (hOP(this._cache, key)) { - // dispose of the old one before overwriting - if (this._dispose) this._dispose(key, this._cache[key].value) - if (this._maxAge) this._cache[key].now = Date.now() - this._cache[key].value = value - this.get(key) - return true - } - - var len = this._lengthCalculator(value) - var age = this._maxAge ? Date.now() : 0 - var hit = new Entry(key, value, this._mru++, len, age) - - // oversized objects fall out of cache automatically. - if (hit.length > this._max) { - if (this._dispose) this._dispose(key, value) - return false - } - - this._length += hit.length - this._lruList[hit.lu] = this._cache[key] = hit - this._itemCount ++ - - if (this._length > this._max) trim(this) - return true -} - -LRUCache.prototype.has = function (key) { - if (!hOP(this._cache, key)) return false - var hit = this._cache[key] - if (this._maxAge && (Date.now() - hit.now > this._maxAge)) { - return false - } - return true -} - -LRUCache.prototype.get = function (key) { - return get(this, key, true) -} - -LRUCache.prototype.peek = function (key) { - return get(this, key, false) -} - -LRUCache.prototype.pop = function () { - var hit = this._lruList[this._lru] - del(this, hit) - return hit || null -} - -LRUCache.prototype.del = function (key) { - del(this, this._cache[key]) -} - -function get (self, key, doUse) { - var hit = self._cache[key] - if (hit) { - if (self._maxAge && (Date.now() - hit.now > self._maxAge)) { - del(self, hit) - if (!self._allowStale) hit = undefined - } else { - if (doUse) use(self, hit) - } - if (hit) hit = hit.value - } - return hit -} - -function use (self, hit) { - shiftLU(self, hit) - hit.lu = self._mru ++ - self._lruList[hit.lu] = hit -} - -function trim (self) { - while (self._lru < self._mru && self._length > self._max) - del(self, self._lruList[self._lru]) -} - -function shiftLU (self, hit) { - delete self._lruList[ hit.lu ] - while (self._lru < self._mru && !self._lruList[self._lru]) self._lru ++ -} - -function del (self, hit) { - if (hit) { - if (self._dispose) self._dispose(hit.key, hit.value) - self._length -= hit.length - self._itemCount -- - delete self._cache[ hit.key ] - shiftLU(self, hit) - } -} - -// classy, since V8 prefers predictable objects. -function Entry (key, value, lu, length, now) { - this.key = key - this.value = value - this.lu = lu - this.length = length - this.now = now -} - -})() diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json deleted file mode 100644 index 4472725d..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "lru-cache", - "description": "A cache object that deletes the least-recently-used items.", - "version": "2.5.0", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "scripts": { - "test": "tap test --gc" - }, - "main": "lib/lru-cache.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-lru-cache.git" - }, - "devDependencies": { - "tap": "", - "weak": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" - }, - "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-lru-cache/issues" - }, - "homepage": "https://github.com/isaacs/node-lru-cache", - "_id": "lru-cache@2.5.0", - "_from": "lru-cache@2" -} diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js deleted file mode 100644 index f72697c4..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js +++ /dev/null @@ -1,369 +0,0 @@ -var test = require("tap").test - , LRU = require("../") - -test("basic", function (t) { - var cache = new LRU({max: 10}) - cache.set("key", "value") - t.equal(cache.get("key"), "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.length, 1) - t.equal(cache.max, 10) - t.end() -}) - -test("least recently set", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.get("a") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), "A") - t.end() -}) - -test("del", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.del("a") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("max", function (t) { - var cache = new LRU(3) - - // test changing the max, verify that the LRU items get dropped. - cache.max = 100 - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - - // now remove the max restriction, and try again. - cache.max = "hello" - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - // should trigger an immediate resize - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - t.end() -}) - -test("reset", function (t) { - var cache = new LRU(10) - cache.set("a", "A") - cache.set("b", "B") - cache.reset() - t.equal(cache.length, 0) - t.equal(cache.max, 10) - t.equal(cache.get("a"), undefined) - t.equal(cache.get("b"), undefined) - t.end() -}) - - -// Note: `.dump()` is a debugging tool only. No guarantees are made -// about the format/layout of the response. -test("dump", function (t) { - var cache = new LRU(10) - var d = cache.dump(); - t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") - cache.set("a", "A") - var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } - t.ok(d.a) - t.equal(d.a.key, "a") - t.equal(d.a.value, "A") - t.equal(d.a.lu, 0) - - cache.set("b", "B") - cache.get("b") - d = cache.dump() - t.ok(d.b) - t.equal(d.b.key, "b") - t.equal(d.b.value, "B") - t.equal(d.b.lu, 2) - - t.end() -}) - - -test("basic with weighed length", function (t) { - var cache = new LRU({ - max: 100, - length: function (item) { return item.size } - }) - cache.set("key", {val: "value", size: 50}) - t.equal(cache.get("key").val, "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.lengthCalculator(cache.get("key")), 50) - t.equal(cache.length, 50) - t.equal(cache.max, 100) - t.end() -}) - - -test("weighed length item too large", function (t) { - var cache = new LRU({ - max: 10, - length: function (item) { return item.size } - }) - t.equal(cache.max, 10) - - // should fall out immediately - cache.set("key", {val: "value", size: 50}) - - t.equal(cache.length, 0) - t.equal(cache.get("key"), undefined) - t.end() -}) - -test("least recently set with weighed length", function (t) { - var cache = new LRU({ - max:8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.set("d", "DDDD") - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("c"), "CCC") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten with weighed length", function (t) { - var cache = new LRU({ - max: 8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.get("a") - cache.get("b") - cache.set("d", "DDDD") - t.equal(cache.get("c"), undefined) - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("b"), "BB") - t.equal(cache.get("a"), "A") - t.end() -}) - -test("set returns proper booleans", function(t) { - var cache = new LRU({ - max: 5, - length: function (item) { return item.length } - }) - - t.equal(cache.set("a", "A"), true) - - // should return false for max exceeded - t.equal(cache.set("b", "donuts"), false) - - t.equal(cache.set("b", "B"), true) - t.equal(cache.set("c", "CCCC"), true) - t.end() -}) - -test("drop the old items", function(t) { - var cache = new LRU({ - max: 5, - maxAge: 50 - }) - - cache.set("a", "A") - - setTimeout(function () { - cache.set("b", "b") - t.equal(cache.get("a"), "A") - }, 25) - - setTimeout(function () { - cache.set("c", "C") - // timed out - t.notOk(cache.get("a")) - }, 60) - - setTimeout(function () { - t.notOk(cache.get("b")) - t.equal(cache.get("c"), "C") - }, 90) - - setTimeout(function () { - t.notOk(cache.get("c")) - t.end() - }, 155) -}) - -test("disposal function", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - dispose: function (k, n) { - disposed = n - } - }) - - cache.set(1, 1) - cache.set(2, 2) - t.equal(disposed, 1) - cache.set(3, 3) - t.equal(disposed, 2) - cache.reset() - t.equal(disposed, 3) - t.end() -}) - -test("disposal function on too big of item", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - length: function (k) { - return k.length - }, - dispose: function (k, n) { - disposed = n - } - }) - var obj = [ 1, 2 ] - - t.equal(disposed, false) - cache.set("obj", obj) - t.equal(disposed, obj) - t.end() -}) - -test("has()", function(t) { - var cache = new LRU({ - max: 1, - maxAge: 10 - }) - - cache.set('foo', 'bar') - t.equal(cache.has('foo'), true) - cache.set('blu', 'baz') - t.equal(cache.has('foo'), false) - t.equal(cache.has('blu'), true) - setTimeout(function() { - t.equal(cache.has('blu'), false) - t.end() - }, 15) -}) - -test("stale", function(t) { - var cache = new LRU({ - maxAge: 10, - stale: true - }) - - cache.set('foo', 'bar') - t.equal(cache.get('foo'), 'bar') - t.equal(cache.has('foo'), true) - setTimeout(function() { - t.equal(cache.has('foo'), false) - t.equal(cache.get('foo'), 'bar') - t.equal(cache.get('foo'), undefined) - t.end() - }, 15) -}) - -test("lru update via set", function(t) { - var cache = LRU({ max: 2 }); - - cache.set('foo', 1); - cache.set('bar', 2); - cache.del('bar'); - cache.set('baz', 3); - cache.set('qux', 4); - - t.equal(cache.get('foo'), undefined) - t.equal(cache.get('bar'), undefined) - t.equal(cache.get('baz'), 3) - t.equal(cache.get('qux'), 4) - t.end() -}) - -test("least recently set w/ peek", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - t.equal(cache.peek("a"), "A") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("pop the least used item", function (t) { - var cache = new LRU(3) - , last - - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - - t.equal(cache.length, 3) - t.equal(cache.max, 3) - - // Ensure we pop a, c, b - cache.get("b", "B") - - last = cache.pop() - t.equal(last.key, "a") - t.equal(last.value, "A") - t.equal(cache.length, 2) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last.key, "c") - t.equal(last.value, "C") - t.equal(cache.length, 1) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last.key, "b") - t.equal(last.value, "B") - t.equal(cache.length, 0) - t.equal(cache.max, 3) - - last = cache.pop() - t.equal(last, null) - t.equal(cache.length, 0) - t.equal(cache.max, 3) - - t.end() -}) diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js deleted file mode 100644 index eefb80d9..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +++ /dev/null @@ -1,52 +0,0 @@ -var test = require('tap').test -var LRU = require('../') - -test('forEach', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - var i = 9 - l.forEach(function (val, key, cache) { - t.equal(cache, l) - t.equal(key, i.toString()) - t.equal(val, i.toString(2)) - i -= 1 - }) - - // get in order of most recently used - l.get(6) - l.get(8) - - var order = [ 8, 6, 9, 7, 5 ] - var i = 0 - - l.forEach(function (val, key, cache) { - var j = order[i ++] - t.equal(cache, l) - t.equal(key, j.toString()) - t.equal(val, j.toString(2)) - }) - - t.end() -}) - -test('keys() and values()', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - t.similar(l.keys(), ['9', '8', '7', '6', '5']) - t.similar(l.values(), ['1001', '1000', '111', '110', '101']) - - // get in order of most recently used - l.get(6) - l.get(8) - - t.similar(l.keys(), ['8', '6', '9', '7', '5']) - t.similar(l.values(), ['1000', '110', '1001', '111', '101']) - - t.end() -}) diff --git a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js b/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js deleted file mode 100644 index 7af45b02..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env node --expose_gc - -var weak = require('weak'); -var test = require('tap').test -var LRU = require('../') -var l = new LRU({ max: 10 }) -var refs = 0 -function X() { - refs ++ - weak(this, deref) -} - -function deref() { - refs -- -} - -test('no leaks', function (t) { - // fill up the cache - for (var i = 0; i < 100; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var start = process.memoryUsage() - - // capture the memory - var startRefs = refs - - // do it again, but more - for (var i = 0; i < 10000; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var end = process.memoryUsage() - t.equal(refs, startRefs, 'no leaky refs') - - console.error('start: %j\n' + - 'end: %j', start, end); - t.pass(); - t.end(); -}) diff --git a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE b/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md b/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md deleted file mode 100644 index 7e365129..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# sigmund - -Quick and dirty signatures for Objects. - -This is like a much faster `deepEquals` comparison, which returns a -string key suitable for caches and the like. - -## Usage - -```javascript -function doSomething (someObj) { - var key = sigmund(someObj, maxDepth) // max depth defaults to 10 - var cached = cache.get(key) - if (cached) return cached) - - var result = expensiveCalculation(someObj) - cache.set(key, result) - return result -} -``` - -The resulting key will be as unique and reproducible as calling -`JSON.stringify` or `util.inspect` on the object, but is much faster. -In order to achieve this speed, some differences are glossed over. -For example, the object `{0:'foo'}` will be treated identically to the -array `['foo']`. - -Also, just as there is no way to summon the soul from the scribblings -of a cocain-addled psychoanalyst, there is no way to revive the object -from the signature string that sigmund gives you. In fact, it's -barely even readable. - -As with `sys.inspect` and `JSON.stringify`, larger objects will -produce larger signature strings. - -Because sigmund is a bit less strict than the more thorough -alternatives, the strings will be shorter, and also there is a -slightly higher chance for collisions. For example, these objects -have the same signature: - - var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} - var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -Like a good Freudian, sigmund is most effective when you already have -some understanding of what you're looking for. It can help you help -yourself, but you must be willing to do some work as well. - -Cycles are handled, and cyclical objects are silently omitted (though -the key is included in the signature output.) - -The second argument is the maximum depth, which defaults to 10, -because that is the maximum object traversal depth covered by most -insurance carriers. diff --git a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js b/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js deleted file mode 100644 index 5acfd6d9..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js +++ /dev/null @@ -1,283 +0,0 @@ -// different ways to id objects -// use a req/res pair, since it's crazy deep and cyclical - -// sparseFE10 and sigmund are usually pretty close, which is to be expected, -// since they are essentially the same algorithm, except that sigmund handles -// regular expression objects properly. - - -var http = require('http') -var util = require('util') -var sigmund = require('./sigmund.js') -var sreq, sres, creq, cres, test - -http.createServer(function (q, s) { - sreq = q - sres = s - sres.end('ok') - this.close(function () { setTimeout(function () { - start() - }, 200) }) -}).listen(1337, function () { - creq = http.get({ port: 1337 }) - creq.on('response', function (s) { cres = s }) -}) - -function start () { - test = [sreq, sres, creq, cres] - // test = sreq - // sreq.sres = sres - // sreq.creq = creq - // sreq.cres = cres - - for (var i in exports.compare) { - console.log(i) - var hash = exports.compare[i]() - console.log(hash) - console.log(hash.length) - console.log('') - } - - require('bench').runMain() -} - -function customWs (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return customWs(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + customWs(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function custom (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return '' + obj - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return custom(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + custom(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function sparseFE2 (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k + ':' - ch(v[k], depth + 1) - }) - soFar += '}' - } - ch(obj, 0) - return soFar -} - -function sparseFE (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k - ch(v[k], depth + 1) - }) - } - ch(obj, 0) - return soFar -} - -function sparse (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k - ch(v[k], depth + 1) - } - } - ch(obj, 0) - return soFar -} - -function noCommas (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - - -function flatten (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - soFar += ',' - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - -exports.compare = -{ - // 'custom 2': function () { - // return custom(test, 2, 0) - // }, - // 'customWs 2': function () { - // return customWs(test, 2, 0) - // }, - 'JSON.stringify (guarded)': function () { - var seen = [] - return JSON.stringify(test, function (k, v) { - if (typeof v !== 'object' || !v) return v - if (seen.indexOf(v) !== -1) return undefined - seen.push(v) - return v - }) - }, - - 'flatten 10': function () { - return flatten(test, 10) - }, - - // 'flattenFE 10': function () { - // return flattenFE(test, 10) - // }, - - 'noCommas 10': function () { - return noCommas(test, 10) - }, - - 'sparse 10': function () { - return sparse(test, 10) - }, - - 'sparseFE 10': function () { - return sparseFE(test, 10) - }, - - 'sparseFE2 10': function () { - return sparseFE2(test, 10) - }, - - sigmund: function() { - return sigmund(test, 10) - }, - - - // 'util.inspect 1': function () { - // return util.inspect(test, false, 1, false) - // }, - // 'util.inspect undefined': function () { - // util.inspect(test) - // }, - // 'util.inspect 2': function () { - // util.inspect(test, false, 2, false) - // }, - // 'util.inspect 3': function () { - // util.inspect(test, false, 3, false) - // }, - // 'util.inspect 4': function () { - // util.inspect(test, false, 4, false) - // }, - // 'util.inspect Infinity': function () { - // util.inspect(test, false, Infinity, false) - // } -} - -/** results -**/ diff --git a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json b/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json deleted file mode 100644 index cb7e2bd4..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "sigmund", - "version": "1.0.0", - "description": "Quick and dirty signatures for Objects.", - "main": "sigmund.js", - "directories": { - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0" - }, - "scripts": { - "test": "tap test/*.js", - "bench": "node bench.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/sigmund" - }, - "keywords": [ - "object", - "signature", - "key", - "data", - "psychoanalysis" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/sigmund/issues" - }, - "homepage": "https://github.com/isaacs/sigmund", - "_id": "sigmund@1.0.0", - "_from": "sigmund@~1.0.0" -} diff --git a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js b/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js deleted file mode 100644 index 82c7ab8c..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = sigmund -function sigmund (subject, maxSessions) { - maxSessions = maxSessions || 10; - var notes = []; - var analysis = ''; - var RE = RegExp; - - function psychoAnalyze (subject, session) { - if (session > maxSessions) return; - - if (typeof subject === 'function' || - typeof subject === 'undefined') { - return; - } - - if (typeof subject !== 'object' || !subject || - (subject instanceof RE)) { - analysis += subject; - return; - } - - if (notes.indexOf(subject) !== -1 || session === maxSessions) return; - - notes.push(subject); - analysis += '{'; - Object.keys(subject).forEach(function (issue, _, __) { - // pseudo-private values. skip those. - if (issue.charAt(0) === '_') return; - var to = typeof subject[issue]; - if (to === 'function' || to === 'undefined') return; - analysis += issue; - psychoAnalyze(subject[issue], session + 1); - }); - } - psychoAnalyze(subject, 0); - return analysis; -} - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js b/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js deleted file mode 100644 index 50c53a13..00000000 --- a/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tap').test -var sigmund = require('../sigmund.js') - - -// occasionally there are duplicates -// that's an acceptable edge-case. JSON.stringify and util.inspect -// have some collision potential as well, though less, and collision -// detection is expensive. -var hash = '{abc/def/g{0h1i2{jkl' -var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} -var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -var obj3 = JSON.parse(JSON.stringify(obj1)) -obj3.c = /def/ -obj3.g[2].cycle = obj3 -var cycleHash = '{abc/def/g{0h1i2{jklcycle' - -test('basic', function (t) { - t.equal(sigmund(obj1), hash) - t.equal(sigmund(obj2), hash) - t.equal(sigmund(obj3), cycleHash) - t.end() -}) - diff --git a/node_modules/glob/node_modules/minimatch/package.json b/node_modules/glob/node_modules/minimatch/package.json deleted file mode 100644 index f8f545aa..00000000 --- a/node_modules/glob/node_modules/minimatch/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "minimatch", - "description": "a glob matcher in javascript", - "version": "0.2.14", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "main": "minimatch.js", - "scripts": { - "test": "tap test/*.js" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "devDependencies": { - "tap": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" - }, - "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\nminimatch(\"bar.foo\", \"*.+(bar|foo)\", { debug: true }) // true, and noisy!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn't have any \"magic\" in it\n (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself. When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "homepage": "https://github.com/isaacs/minimatch", - "_id": "minimatch@0.2.14", - "_from": "minimatch@~0.2.11" -} diff --git a/node_modules/glob/node_modules/minimatch/test/basic.js b/node_modules/glob/node_modules/minimatch/test/basic.js deleted file mode 100644 index ae7ac73c..00000000 --- a/node_modules/glob/node_modules/minimatch/test/basic.js +++ /dev/null @@ -1,399 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - - -var patterns = - [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - // https://github.com/isaacs/minimatch/issues/5 - , function () { - files = [ 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' - , 'a/b/.x' - , 'a/b/.x/' - , 'a/.x/b' - , '.x' - , '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b/.x/c' - , '.x/.x' ] - } - , ["**/.x/**", [ '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b' - , 'a/b/.x/' - , 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' ] ] - - ] - -var regexps = - [ '/^(?:(?=.)a[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:\\*)$/', - '/^(?:(?=.)\\*[^/]*?)$/', - '/^(?:\\*\\*)$/', - '/^(?:(?=.)b[^/]*?\\/)$/', - '/^(?:(?=.)c[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', - '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', - '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', - '/^(?:(?=.)a[^/]*?[^c])$/', - '/^(?:(?=.)a[X-]b)$/', - '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', - '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[^/]c)$/', - '/^(?:a\\*c)$/', - 'false', - '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', - '/^(?:man\\/man1\\/bash\\.1)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[-abc])$/', - '/^(?:(?!\\.)(?=.)[abc-])$/', - '/^(?:\\\\)$/', - '/^(?:(?!\\.)(?=.)[\\\\])$/', - '/^(?:(?!\\.)(?=.)[\\[])$/', - '/^(?:\\[)$/', - '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[\\]])$/', - '/^(?:(?!\\.)(?=.)[\\]-])$/', - '/^(?:(?!\\.)(?=.)[a-z])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:\\[\\])$/', - '/^(?:\\[abc)$/', - '/^(?:(?=.)XYZ)$/i', - '/^(?:(?=.)ab[^/]*?)$/i', - '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', - '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', - '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', - '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', - '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', - '/^(?:(?=.)a[^/]b)$/', - '/^(?:(?=.)#[^/]*?)$/', - '/^(?!^(?:(?=.)a[^/]*?)$).*$/', - '/^(?:(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)a[^/]*?)$/', - '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] -var re = 0; - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - patterns.forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var m = new mm.Minimatch(pattern, options) - var r = m.makeRe() - var expectRe = regexps[re++] - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - - t.equal(tapOpts.re, expectRe, tapOpts) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/glob/node_modules/minimatch/test/brace-expand.js b/node_modules/glob/node_modules/minimatch/test/brace-expand.js deleted file mode 100644 index 7ee278a2..00000000 --- a/node_modules/glob/node_modules/minimatch/test/brace-expand.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("tap") - , minimatch = require("../") - -tap.test("brace expansion", function (t) { - // [ pattern, [expanded] ] - ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" - , [ "abxy" - , "abxz" - , "acdxy" - , "acdxz" - , "acexy" - , "acexz" - , "afhxy" - , "afhxz" - , "aghxy" - , "aghxz" ] ] - , [ "a{1..5}b" - , [ "a1b" - , "a2b" - , "a3b" - , "a4b" - , "a5b" ] ] - , [ "a{b}c", ["a{b}c"] ] - ].forEach(function (tc) { - var p = tc[0] - , expect = tc[1] - t.equivalent(minimatch.braceExpand(p), expect, p) - }) - console.error("ending") - t.end() -}) - - diff --git a/node_modules/glob/node_modules/minimatch/test/caching.js b/node_modules/glob/node_modules/minimatch/test/caching.js deleted file mode 100644 index 0fec4b0f..00000000 --- a/node_modules/glob/node_modules/minimatch/test/caching.js +++ /dev/null @@ -1,14 +0,0 @@ -var Minimatch = require("../minimatch.js").Minimatch -var tap = require("tap") -tap.test("cache test", function (t) { - var mm1 = new Minimatch("a?b") - var mm2 = new Minimatch("a?b") - t.equal(mm1, mm2, "should get the same object") - // the lru should drop it after 100 entries - for (var i = 0; i < 100; i ++) { - new Minimatch("a"+i) - } - mm2 = new Minimatch("a?b") - t.notEqual(mm1, mm2, "cache should have dropped") - t.end() -}) diff --git a/node_modules/glob/node_modules/minimatch/test/defaults.js b/node_modules/glob/node_modules/minimatch/test/defaults.js deleted file mode 100644 index 25f1f601..00000000 --- a/node_modules/glob/node_modules/minimatch/test/defaults.js +++ /dev/null @@ -1,274 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var Class = mm.defaults(options).Minimatch - var m = new Class(pattern, {}) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js b/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js deleted file mode 100644 index 6676e262..00000000 --- a/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +++ /dev/null @@ -1,8 +0,0 @@ -var test = require('tap').test -var minimatch = require('../') - -test('extglob ending with statechar', function(t) { - t.notOk(minimatch('ax', 'a?(b*)')) - t.ok(minimatch('ax', '?(a*|b)')) - t.end() -}) diff --git a/node_modules/glob/package.json b/node_modules/glob/package.json deleted file mode 100644 index 17677a23..00000000 --- a/node_modules/glob/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "glob", - "description": "a little globber", - "version": "3.2.9", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "main": "glob.js", - "engines": { - "node": "*" - }, - "dependencies": { - "minimatch": "~0.2.11", - "inherits": "2" - }, - "devDependencies": { - "tap": "~0.4.0", - "mkdirp": "0", - "rimraf": "1" - }, - "scripts": { - "test": "tap test/*.js", - "test-regen": "TEST_REGEN=1 node test/00-setup.js" - }, - "license": "BSD", - "readme": "# Glob\n\nMatch files using the patterns the shell uses, like stars and stuff.\n\nThis is a glob implementation in JavaScript. It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n // files is an array of filenames.\n // If the `nonull` option is set, and nothing\n // was found, then files is [\"**/*.js\"]\n // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options])\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered. When an error is encountered, the\n glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`. There\n is no way at this time to continue a glob search after aborting, but\n you can re-use the statCache to avoid having to duplicate syscalls.\n* `statCache` Collection of all the stat results the glob search\n performed.\n* `cache` Convenience object. Each field has the following possible\n values:\n * `false` - Path does not exist\n * `true` - Path exists\n * `1` - Path exists, and is not a directory\n * `2` - Path exists, and is a directory\n * `[file, entries, ...]` - Path exists, is a directory, and the\n array value is the results of `fs.readdir`\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n matches found. If the `nonull` option is set, and no match was found,\n then the `matches` list contains the original pattern. The matches\n are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior. Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search. Defaults\n to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n onto. Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n systems, and `C:\\` or some such on Windows.)\n* `dot` Include `.dot` files in normal matches and `globstar` matches.\n Note that an explicit dot in a portion of the pattern will always\n match dot files.\n* `nomount` By default, a pattern starting with a forward-slash will be\n \"mounted\" onto the root setting, so that a valid filesystem path is\n returned. Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results. This reduces performance\n somewhat, and is completely unnecessary, unless `readdir` is presumed\n to be an untrustworthy indicator of file existence. It will cause\n ELOOP to be triggered one level sooner in the case of cyclical\n symbolic links.\n* `silent` When an unusual error is encountered\n when attempting to read a directory, a warning will be printed to\n stderr. Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n when attempting to read a directory, the process will just continue on\n in search of other matches. Set the `strict` option to raise an error\n in these cases.\n* `cache` See `cache` property above. Pass in a previously generated\n cache object to save some fs calls.\n* `statCache` A cache of results of filesystem information, to prevent\n unnecessary stat calls. While it should not normally be necessary to\n set this, you may pass the statCache from one glob() call to the\n options object of another, if you know that the filesystem will not\n change between calls. (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n same file showing up multiple times in the result set. By default,\n this implementation prevents duplicates in the result set.\n Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n containing the pattern itself. This is the default in glob(3).\n* `nocase` Perform a case-insensitive match. Note that case-insensitive\n filesystems will sometimes result in glob returning results that are\n case-insensitively matched anyway, since readdir and stat will not\n raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`. On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead. However, this also makes it even more susceptible to races,\nespecially if the cache or statCache objects are reused between glob\ncalls.\n\nUsers are thus advised not to use a glob result as a guarantee of\nfilesystem state in the face of rapid changes. For the vast majority\nof operations, this is never a problem.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "homepage": "https://github.com/isaacs/node-glob", - "_id": "glob@3.2.9", - "_from": "glob@" -} diff --git a/node_modules/glob/test/00-setup.js b/node_modules/glob/test/00-setup.js deleted file mode 100644 index 245afafd..00000000 --- a/node_modules/glob/test/00-setup.js +++ /dev/null @@ -1,176 +0,0 @@ -// just a little pre-run script to set up the fixtures. -// zz-finish cleans it up - -var mkdirp = require("mkdirp") -var path = require("path") -var i = 0 -var tap = require("tap") -var fs = require("fs") -var rimraf = require("rimraf") - -var files = -[ "a/.abcdef/x/y/z/a" -, "a/abcdef/g/h" -, "a/abcfed/g/h" -, "a/b/c/d" -, "a/bc/e/f" -, "a/c/d/c/b" -, "a/cb/e/f" -] - -var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c") -var symlinkFrom = "../.." - -files = files.map(function (f) { - return path.resolve(__dirname, f) -}) - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) - -files.forEach(function (f) { - tap.test(f, function (t) { - var d = path.dirname(f) - mkdirp(d, 0755, function (er) { - if (er) { - t.fail(er) - return t.bailout() - } - fs.writeFile(f, "i like tests", function (er) { - t.ifError(er, "make file") - t.end() - }) - }) - }) -}) - -if (process.platform !== "win32") { - tap.test("symlinky", function (t) { - var d = path.dirname(symlinkTo) - console.error("mkdirp", d) - mkdirp(d, 0755, function (er) { - t.ifError(er) - fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) { - t.ifError(er, "make symlink") - t.end() - }) - }) - }) -} - -;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) { - w = "/tmp/glob-test/" + w - tap.test("create " + w, function (t) { - mkdirp(w, function (er) { - if (er) - throw er - t.pass(w) - t.end() - }) - }) -}) - - -// generate the bash pattern test-fixtures if possible -if (process.platform === "win32" || !process.env.TEST_REGEN) { - console.error("Windows, or TEST_REGEN unset. Using cached fixtures.") - return -} - -var spawn = require("child_process").spawn; -var globs = - // put more patterns here. - // anything that would be directly in / should be in /tmp/glob-test - ["test/a/*/+(c|g)/./d" - ,"test/a/**/[cg]/../[cg]" - ,"test/a/{b,c,d,e,f}/**/g" - ,"test/a/b/**" - ,"test/**/g" - ,"test/a/abc{fed,def}/g/h" - ,"test/a/abc{fed/g,def}/**/" - ,"test/a/abc{fed/g,def}/**///**/" - ,"test/**/a/**/" - ,"test/+(a|b|c)/a{/,bc*}/**" - ,"test/*/*/*/f" - ,"test/**/f" - ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**" - ,"{./*/*,/tmp/glob-test/*}" - ,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me! - ,"test/a/!(symlink)/**" - ] -var bashOutput = {} -var fs = require("fs") - -globs.forEach(function (pattern) { - tap.test("generate fixture " + pattern, function (t) { - var cmd = "shopt -s globstar && " + - "shopt -s extglob && " + - "shopt -s nullglob && " + - // "shopt >&2; " + - "eval \'for i in " + pattern + "; do echo $i; done\'" - var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) }) - var out = [] - cp.stdout.on("data", function (c) { - out.push(c) - }) - cp.stderr.pipe(process.stderr) - cp.on("close", function (code) { - out = flatten(out) - if (!out) - out = [] - else - out = cleanResults(out.split(/\r*\n/)) - - bashOutput[pattern] = out - t.notOk(code, "bash test should finish nicely") - t.end() - }) - }) -}) - -tap.test("save fixtures", function (t) { - var fname = path.resolve(__dirname, "bash-results.json") - var data = JSON.stringify(bashOutput, null, 2) + "\n" - fs.writeFile(fname, data, function (er) { - t.ifError(er) - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -function flatten (chunks) { - var s = 0 - chunks.forEach(function (c) { s += c.length }) - var out = new Buffer(s) - s = 0 - chunks.forEach(function (c) { - c.copy(out, s) - s += c.length - }) - - return out.toString().trim() -} - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} diff --git a/node_modules/glob/test/bash-comparison.js b/node_modules/glob/test/bash-comparison.js deleted file mode 100644 index 239ed1a9..00000000 --- a/node_modules/glob/test/bash-comparison.js +++ /dev/null @@ -1,63 +0,0 @@ -// basic test -// show that it does the same thing by default as the shell. -var tap = require("tap") -, child_process = require("child_process") -, bashResults = require("./bash-results.json") -, globs = Object.keys(bashResults) -, glob = require("../") -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -globs.forEach(function (pattern) { - var expect = bashResults[pattern] - // anything regarding the symlink thing will fail on windows, so just skip it - if (process.platform === "win32" && - expect.some(function (m) { - return /\/symlink\//.test(m) - })) - return - - tap.test(pattern, function (t) { - glob(pattern, function (er, matches) { - if (er) - throw er - - // sort and unmark, just to match the shell results - matches = cleanResults(matches) - - t.deepEqual(matches, expect, pattern) - t.end() - }) - }) - - tap.test(pattern + " sync", function (t) { - var matches = cleanResults(glob.sync(pattern)) - - t.deepEqual(matches, expect, "should match shell") - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/') - }) -} diff --git a/node_modules/glob/test/bash-results.json b/node_modules/glob/test/bash-results.json deleted file mode 100644 index 8051c723..00000000 --- a/node_modules/glob/test/bash-results.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "test/a/*/+(c|g)/./d": [ - "test/a/b/c/./d" - ], - "test/a/**/[cg]/../[cg]": [ - "test/a/abcdef/g/../g", - "test/a/abcfed/g/../g", - "test/a/b/c/../c", - "test/a/c/../c", - "test/a/c/d/c/../c", - "test/a/symlink/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c" - ], - "test/a/{b,c,d,e,f}/**/g": [], - "test/a/b/**": [ - "test/a/b", - "test/a/b/c", - "test/a/b/c/d" - ], - "test/**/g": [ - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed,def}/g/h": [ - "test/a/abcdef/g/h", - "test/a/abcfed/g/h" - ], - "test/a/abc{fed/g,def}/**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed/g,def}/**///**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/**/a/**/": [ - "test/a", - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/b", - "test/a/b/c", - "test/a/bc", - "test/a/bc/e", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/cb", - "test/a/cb/e", - "test/a/symlink", - "test/a/symlink/a", - "test/a/symlink/a/b", - "test/a/symlink/a/b/c", - "test/a/symlink/a/b/c/a", - "test/a/symlink/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b" - ], - "test/+(a|b|c)/a{/,bc*}/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h" - ], - "test/*/*/*/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/**/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [ - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c" - ], - "{./*/*,/tmp/glob-test/*}": [ - "./examples/g.js", - "./examples/usr-local.js", - "./node_modules/inherits", - "./node_modules/minimatch", - "./node_modules/mkdirp", - "./node_modules/rimraf", - "./node_modules/tap", - "./test/00-setup.js", - "./test/a", - "./test/bash-comparison.js", - "./test/bash-results.json", - "./test/cwd-test.js", - "./test/globstar-match.js", - "./test/mark.js", - "./test/new-glob-optional-options.js", - "./test/nocase-nomagic.js", - "./test/pause-resume.js", - "./test/readme-issue.js", - "./test/root-nomount.js", - "./test/root.js", - "./test/stat.js", - "./test/zz-cleanup.js", - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq" - ], - "{/tmp/glob-test/*,*}": [ - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq", - "examples", - "glob.js", - "LICENSE", - "node_modules", - "package.json", - "README.md", - "test" - ], - "test/a/!(symlink)/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h", - "test/a/b", - "test/a/b/c", - "test/a/b/c/d", - "test/a/bc", - "test/a/bc/e", - "test/a/bc/e/f", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/c/d/c/b", - "test/a/cb", - "test/a/cb/e", - "test/a/cb/e/f" - ] -} diff --git a/node_modules/glob/test/cwd-test.js b/node_modules/glob/test/cwd-test.js deleted file mode 100644 index 352c27ef..00000000 --- a/node_modules/glob/test/cwd-test.js +++ /dev/null @@ -1,55 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing cwd and searching for **/d", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('**/d', function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('a', function (t) { - glob('**/d', {cwd:path.resolve('a')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'b/c/d', 'c/d' ]) - t.end() - }) - }) - - t.test('a/b', function (t) { - glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('a/b/', function (t) { - glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('.', function (t) { - glob('**/d', {cwd: process.cwd()}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/glob/test/globstar-match.js b/node_modules/glob/test/globstar-match.js deleted file mode 100644 index 9b234fa2..00000000 --- a/node_modules/glob/test/globstar-match.js +++ /dev/null @@ -1,19 +0,0 @@ -var Glob = require("../glob.js").Glob -var test = require('tap').test - -test('globstar should not have dupe matches', function(t) { - var pattern = 'a/**/[gh]' - var g = new Glob(pattern, { cwd: __dirname }) - var matches = [] - g.on('match', function(m) { - console.error('match %j', m) - matches.push(m) - }) - g.on('end', function(set) { - console.error('set', set) - matches = matches.sort() - set = set.sort() - t.same(matches, set, 'should have same set of matches') - t.end() - }) -}) diff --git a/node_modules/glob/test/mark.js b/node_modules/glob/test/mark.js deleted file mode 100644 index bf411c0e..00000000 --- a/node_modules/glob/test/mark.js +++ /dev/null @@ -1,118 +0,0 @@ -var test = require("tap").test -var glob = require('../') -process.chdir(__dirname) - -// expose timing issues -var lag = 5 -glob.Glob.prototype._stat = function(o) { return function(f, cb) { - var args = arguments - setTimeout(function() { - o.call(this, f, cb) - }.bind(this), lag += 5) -}}(glob.Glob.prototype._stat) - - -test("mark, with **", function (t) { - glob("a/*b*/**", {mark: true}, function (er, results) { - if (er) - throw er - var expect = - [ 'a/abcdef/', - 'a/abcdef/g/', - 'a/abcdef/g/h', - 'a/abcfed/', - 'a/abcfed/g/', - 'a/abcfed/g/h', - 'a/b/', - 'a/b/c/', - 'a/b/c/d', - 'a/bc/', - 'a/bc/e/', - 'a/bc/e/f', - 'a/cb/', - 'a/cb/e/', - 'a/cb/e/f' ] - - t.same(results, expect) - t.end() - }) -}) - -test("mark, no / on pattern", function (t) { - glob("a/*", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - - if (process.platform !== "win32") - expect.push('a/symlink/') - - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) - -test("mark=false, no / on pattern", function (t) { - glob("a/*", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef', - 'a/abcfed', - 'a/b', - 'a/bc', - 'a/c', - 'a/cb' ] - - if (process.platform !== "win32") - expect.push('a/symlink') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /[^\/]$/) - }) -}) - -test("mark=true, / on pattern", function (t) { - glob("a/*/", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) - -test("mark=false, / on pattern", function (t) { - glob("a/*/", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) diff --git a/node_modules/glob/test/new-glob-optional-options.js b/node_modules/glob/test/new-glob-optional-options.js deleted file mode 100644 index 3e7dc5ac..00000000 --- a/node_modules/glob/test/new-glob-optional-options.js +++ /dev/null @@ -1,10 +0,0 @@ -var Glob = require('../glob.js').Glob; -var test = require('tap').test; - -test('new glob, with cb, and no options', function (t) { - new Glob(__filename, function(er, results) { - if (er) throw er; - t.same(results, [__filename]); - t.end(); - }); -}); diff --git a/node_modules/glob/test/nocase-nomagic.js b/node_modules/glob/test/nocase-nomagic.js deleted file mode 100644 index 2503f231..00000000 --- a/node_modules/glob/test/nocase-nomagic.js +++ /dev/null @@ -1,113 +0,0 @@ -var fs = require('fs'); -var test = require('tap').test; -var glob = require('../'); - -test('mock fs', function(t) { - var stat = fs.stat - var statSync = fs.statSync - var readdir = fs.readdir - var readdirSync = fs.readdirSync - - function fakeStat(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = { isDirectory: function() { return true } } - break - case '/tmp/a': - ret = { isDirectory: function() { return false } } - break - } - return ret - } - - fs.stat = function(path, cb) { - var f = fakeStat(path); - if (f) { - process.nextTick(function() { - cb(null, f) - }) - } else { - stat.call(fs, path, cb) - } - } - - fs.statSync = function(path) { - return fakeStat(path) || statSync.call(fs, path) - } - - function fakeReaddir(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = [ 'a', 'A' ] - break - case '/': - ret = ['tmp', 'tMp', 'tMP', 'TMP'] - } - return ret - } - - fs.readdir = function(path, cb) { - var f = fakeReaddir(path) - if (f) - process.nextTick(function() { - cb(null, f) - }) - else - readdir.call(fs, path, cb) - } - - fs.readdirSync = function(path) { - return fakeReaddir(path) || readdirSync.call(fs, path) - } - - t.pass('mocked') - t.end() -}) - -test('nocase, nomagic', function(t) { - var n = 2 - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/a', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) - glob('/tmp/A', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) -}) - -test('nocase, with some magic', function(t) { - t.plan(2) - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) -}) diff --git a/node_modules/glob/test/pause-resume.js b/node_modules/glob/test/pause-resume.js deleted file mode 100644 index e1ffbab1..00000000 --- a/node_modules/glob/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -// show that no match events happen while paused. -var tap = require("tap") -, child_process = require("child_process") -// just some gnarly pattern with lots of matches -, pattern = "test/a/!(symlink)/**" -, bashResults = require("./bash-results.json") -, patterns = Object.keys(bashResults) -, glob = require("../") -, Glob = glob.Glob -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -var globResults = [] -tap.test("use a Glob object, and pause/resume it", function (t) { - var g = new Glob(pattern) - , paused = false - , res = [] - , expect = bashResults[pattern] - - g.on("pause", function () { - console.error("pause") - }) - - g.on("resume", function () { - console.error("resume") - }) - - g.on("match", function (m) { - t.notOk(g.paused, "must not be paused") - globResults.push(m) - g.pause() - t.ok(g.paused, "must be paused") - setTimeout(g.resume.bind(g), 10) - }) - - g.on("end", function (matches) { - t.pass("reached glob end") - globResults = cleanResults(globResults) - matches = cleanResults(matches) - t.deepEqual(matches, globResults, - "end event matches should be the same as match events") - - t.deepEqual(matches, expect, - "glob matches should be the same as bash results") - - t.end() - }) -}) - diff --git a/node_modules/glob/test/readme-issue.js b/node_modules/glob/test/readme-issue.js deleted file mode 100644 index 0b4e0be2..00000000 --- a/node_modules/glob/test/readme-issue.js +++ /dev/null @@ -1,36 +0,0 @@ -var test = require("tap").test -var glob = require("../") - -var mkdirp = require("mkdirp") -var fs = require("fs") -var rimraf = require("rimraf") -var dir = __dirname + "/package" - -test("setup", function (t) { - mkdirp.sync(dir) - fs.writeFileSync(dir + "/package.json", "{}", "ascii") - fs.writeFileSync(dir + "/README", "x", "ascii") - t.pass("setup done") - t.end() -}) - -test("glob", function (t) { - var opt = { - cwd: dir, - nocase: true, - mark: true - } - - glob("README?(.*)", opt, function (er, files) { - if (er) - throw er - t.same(files, ["README"]) - t.end() - }) -}) - -test("cleanup", function (t) { - rimraf.sync(dir) - t.pass("clean") - t.end() -}) diff --git a/node_modules/glob/test/root-nomount.js b/node_modules/glob/test/root-nomount.js deleted file mode 100644 index 3ac5979b..00000000 --- a/node_modules/glob/test/root-nomount.js +++ /dev/null @@ -1,39 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing root and searching for /b*/**", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) - }) - - t.test('a', function (t) { - glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/glob/test/root.js b/node_modules/glob/test/root.js deleted file mode 100644 index 95c23f99..00000000 --- a/node_modules/glob/test/root.js +++ /dev/null @@ -1,46 +0,0 @@ -var t = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -var glob = require('../') -var path = require('path') - -t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) -}) - - -t.test('a', function (t) { - console.error("root=" + path.resolve('a')) - glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) { - t.ifError(er) - var wanted = [ - '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' - ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - }) - - t.like(matches, wanted) - t.end() - }) -}) - -t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - })) - t.end() - }) -}) - -t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() -}) diff --git a/node_modules/glob/test/stat.js b/node_modules/glob/test/stat.js deleted file mode 100644 index 62917114..00000000 --- a/node_modules/glob/test/stat.js +++ /dev/null @@ -1,32 +0,0 @@ -var glob = require('../') -var test = require('tap').test -var path = require('path') - -test('stat all the things', function(t) { - var g = new glob.Glob('a/*abc*/**', { stat: true, cwd: __dirname }) - var matches = [] - g.on('match', function(m) { - matches.push(m) - }) - var stats = [] - g.on('stat', function(m) { - stats.push(m) - }) - g.on('end', function(eof) { - stats = stats.sort() - matches = matches.sort() - eof = eof.sort() - t.same(stats, matches) - t.same(eof, matches) - var cache = Object.keys(this.statCache) - t.same(cache.map(function (f) { - return path.relative(__dirname, f) - }).sort(), matches) - - cache.forEach(function(c) { - t.equal(typeof this.statCache[c], 'object') - }, this) - - t.end() - }) -}) diff --git a/node_modules/glob/test/zz-cleanup.js b/node_modules/glob/test/zz-cleanup.js deleted file mode 100644 index e085f0fa..00000000 --- a/node_modules/glob/test/zz-cleanup.js +++ /dev/null @@ -1,11 +0,0 @@ -// remove the fixtures -var tap = require("tap") -, rimraf = require("rimraf") -, path = require("path") - -tap.test("cleanup fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "removed") - t.end() - }) -}) diff --git a/node_modules/grunt-autoprefixer/.travis.yml b/node_modules/grunt-autoprefixer/.travis.yml deleted file mode 100644 index cbace30b..00000000 --- a/node_modules/grunt-autoprefixer/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" -before_script: - - npm install -g grunt-cli diff --git a/node_modules/grunt-autoprefixer/LICENSE-MIT b/node_modules/grunt-autoprefixer/LICENSE-MIT deleted file mode 100644 index 276b2229..00000000 --- a/node_modules/grunt-autoprefixer/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 Dmitry Nikitenko - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION 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/node_modules/grunt-autoprefixer/README.md b/node_modules/grunt-autoprefixer/README.md deleted file mode 100644 index 3008a402..00000000 --- a/node_modules/grunt-autoprefixer/README.md +++ /dev/null @@ -1,155 +0,0 @@ -# grunt-autoprefixer -[![Build Status](https://travis-ci.org/nDmitry/grunt-autoprefixer.png?branch=master)](https://travis-ci.org/nDmitry/grunt-autoprefixer) -[![Dependency Status](https://david-dm.org/nDmitry/grunt-autoprefixer.png)](https://david-dm.org/nDmitry/grunt-autoprefixer) -[![Built with Grunt](https://cdn.gruntjs.com/builtwith.png)](http://gruntjs.com/) - -> [Autoprefixer](https://github.com/ai/autoprefixer) parses CSS and adds vendor-prefixed CSS properties using the [Can I Use](http://caniuse.com/) database. - -## Getting Started -This plugin requires Grunt `~0.4.0` - -If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: - -```shell -npm install grunt-autoprefixer --save-dev -``` - -Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: - -```js -grunt.loadNpmTasks('grunt-autoprefixer'); -``` - -## The "autoprefixer" task - -### Overview -In your project's Gruntfile, add a section named `autoprefixer` to the data object passed into `grunt.initConfig()`. - -```js -grunt.initConfig({ - autoprefixer: { - options: { - // Task-specific options go here. - }, - your_target: { - // Target-specific file lists and/or options go here. - }, - }, -}) -``` - -### Options - -#### options.browsers -Type: `Array` -Default value: `['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']` - -You can specify browsers actual for your project: - -```js -options: { - browsers: ['last 2 version', 'ie 8', 'ie 9'] -} -``` - -[Read more](https://github.com/ai/autoprefixer#browsers). - -#### options.cascade -Type: `Boolean` -Default value: `false` - -Pass `true` to enable ‘cascade’ indentation. Read more [here](https://github.com/ai/autoprefixer#visual-cascade). - -#### options.diff -Type: `Boolean|String` -Default value: `false` - -Set it to `true` if you want to get an output patch file: - -```js -options: { - diff: true // or 'custom/path/to/file.css.patch' -} -``` -Also you can specify a path where to save this file. More examples in [Gruntfile](https://github.com/nDmitry/grunt-autoprefixer/blob/master/Gruntfile.js). - -#### options.map -Type: `Boolean|String|undefined` -Default value: `undefined` - -If the map option isn't defined, Autoprefixer will look for source map from a previous compilation step (either inline map or separate one) and update it automatically. Let's say you have `path/file.css` and `path/file.css.map` from SASS, Autoprefixer will find that map, update it and save to a specified destination. - -If `true` is specified, Autoprefixer will try to find an input source map file as described above and generate a new map based on the found one (or just generate a new map, unlike the situation when the map option is undefined). - -If you keep your map from a pre-processor in another directory (e.g. `path/file.css` and `another-path/file.css.map`), you can specify the path `another-path/` in the map option to point out where grunt-autoprefixer should look for an input map to update it. - -Also you can specify `false`. In that case Autoprefixer will not generate or update source map even if there is one from a previous compilation step near an input file or inlined to it (Autoprefixer will delete a map annotation comment from an input file). - -You cannot specify a path where to save a map file, it will be saved at the same directory as the output CSS file or inlined to it (check out the option below). - -#### options.mapInline -Type: `Boolean|undefined` -Default value: `undefined` - -If the option isn't specified, Autoprefixer will inline its map if a map from a previous compilation step was inlined to an input file or save its map as a separate file respectively. - -You can specify `true` or `false` to force that behaviour as you like. - -### Usage Examples - -```js -grunt.initConfig({ - - autoprefixer: { - - options: { - // Task-specific options go here. - }, - - // prefix the specified file - single_file: { - options: { - // Target-specific options go here. - }, - src: 'src/css/file.css', - dest: 'dest/css/file.css' - }, - - // prefix all files - multiple_files: { - expand: true, - flatten: true, - src: 'src/css/*.css', // -> src/css/file1.css, src/css/file2.css - dest: 'dest/css/' // -> dest/css/file1.css, dest/css/file2.css - }, - - // if you have specified only the `src` param, the destination will be set automatically, - // so source files will be overwritten - no_dest: { - src: 'dest/css/file.css' // globbing is also possible here - }, - - diff: { - options: { - diff: true - }, - src: 'src/css/file.css', - dest: 'dest/css/file.css' // -> dest/css/file.css, dest/css/file.css.patch - }, - - sourcemap: { - options: { - map: true - }, - src: 'src/css/file.css', - dest: 'dest/css/file.css' // -> dest/css/file.css, dest/css/file.css.map - }, - } - -}); -``` - -Check out project's [Gruntfile.js](https://github.com/nDmitry/grunt-autoprefixer/blob/master/Gruntfile.js) for more examples. - -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). diff --git a/node_modules/grunt-autoprefixer/node_modules/.bin/autoprefixer b/node_modules/grunt-autoprefixer/node_modules/.bin/autoprefixer deleted file mode 120000 index e876d81c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/.bin/autoprefixer +++ /dev/null @@ -1 +0,0 @@ -../autoprefixer/bin/autoprefixer \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/ChangeLog.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/ChangeLog.md deleted file mode 100644 index 79db72fa..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/ChangeLog.md +++ /dev/null @@ -1,300 +0,0 @@ -## 1.1 “Nutrisco et extingo†-* Add source map annotation comment support. -* Add inline source map support. -* Autodetect previous source map. -* Fix source maps support on Windows. -* Fix source maps support in subdirectory. -* Prefix selector even if it is already prefixed by developer. -* Add option `cascade` to create nice visual cascade of prefixes. -* Fix flexbox support for IE 10 (by Roland Warmerdam). -* Better `break-inside` support. -* Fix prefixing, when two same properties are near. - -### 20140222: -* Add `touch-action` support. - -### 20140226: -* Chrome 33 is moved to released versions. -* Add Chrome 36 data. - -### 20140302: -* Add `text-decoration-*` properties support. -* Update browsers usage statistics. -* Use new PostCSS version. - -## 1.0 “Plus ultra†-* Source map support. -* Save origin indents and code formatting. -* Change CSS parser to PostCSS. -* Preserve vendor-prefixed properties put right after unprefixed ones. -* Rename compile() to process() and return result object, instead of CSS string. -* Rename inspect() to info(). -* Add in binary -d option to specify output directory. -* Binary now will not concat output files. -* Allow to select last versions for specified browser. -* Add full browser names aliases: `firefox`, `explorer` and `blackberry`. -* Ignore case in browser names. -* Change license to MIT. -* Add prefixes inside custom at-rules. -* Add only necessary prefixes to selector inside prefixed at-rule. -* Safer backgrounds list parser in gradient hack. -* Prefix @keyframes inside @media. -* Don’t prefix values for CSS3 PIE properties. -* Binary now shows file name in syntax error. -* Use browserify to build standalone version. - -### 20131225: -* Fix deprecated API convertor. -* Add ::placeholder support for Firefix >= 18. -* Fix vendor prefixes order. - -### 20140103: -* Add webkit prefix for sticky position. -* Update browsers popularity statistics. - -### 20140109: -* Add selectors and at-rules sections to debug info. -* Fix outdated prefixes cleaning. - -### 20140110: -* Add `Firefox ESR` browser requirement. -* Opera 18 is moved to released versions. -* Add Opera 20 data. - -### 20140117: -* Chrome 32 is moved to released versions. -* Add Opera 34 data. - -### 20140130: -* Fix flexbox properties names in transitions. -* Add Chrome 35 and Firefox 29 data. - -### 20140203: -* Android 4.4 stock browser and Opera 19 are moved to released versions. -* Add Opera 21 data. -* Update browsers usage statistics. - -### 20140213: -* Add case insensitive to IE’s filter hack (by Dominik Schilling). -* Improve selector prefixing in some rare cases (by Simon Lydell). -* Firefox 27 is moved to released versions. -* Add Firefox 30 data. - -## 0.8 “Unbowed, Unbent, Unbroken†-* Add more browsers to defaults ("> 1%, last 2 versions, ff 17, opera 12.1" - instead of just "last 2 browsers"). -* Keep vendor prefixes without unprefixed version (like vendor-specific hacks). -* Convert gradients to old WebKit syntax (actual for Android 2.3). -* Better support for several syntaxes with one prefix (like Flexbox and - gradients in WebKit). -* Add intrinsic and extrinsic sizing values support. -* Remove never existed prefixes from common mistakes (like -ms-transition). -* Add Opera 17 data. -* Fix selector prefixes order. -* Fix browser versions order in inspect. - -### 20130903: -* Fix old WebKit gradients convertor on rgba() colors. -* Allow to write old direction syntax in gradients. - -### 20130906: -* Fix direction syntax in radial gradients. -* Don’t prefix IE filter with modern syntax. - -### 20130911: -* Fix parsing property name with spaces. - -### 20130919: -* Fix processing custom framework prefixes (by Johannes J. Schmidt). -* Concat outputs if several files compiled to one output. -* Decrease standalone build size by removing unnecessary Binary class. -* iOS 7 is moved to released versions. -* Clean up binary code (by Simon Lydell). - -### 20130923: -* Firefox 24 is moved to released versions. - -### 20131001: -* Add support for grab, grabbing, zoom-in and zoom-out cursor values. - -### 20131006: -* Chrome 30 is moved to released versions. - -### 20131007: -* Don’t add another prefixes in rule with prefixed selector. - -### 20131009: -* Opera 17 is moved to released versions. - -### 20131015: -* Fix converting multiple gradients to old webkit syntax (by Aleksei Androsov). - -### 20131017: -* Fix @host at-rule parsing. - -### 20131020: -* IE 11 and Andrid 4.3 is moved to released versions. -* Add Opera 18 data. -* Add @namespace support. -* Sort browser versions in data file. - -### 20131029: -* Add Safari 6.1 data. -* Add fx alias for Firefox. - -### 20131104: -* Update Android future version to 4.4. -* Google Chrome 32 added to future versions list. -* Firefox 25 now is actual version, 27 and 28 added to future versions. -* Browsers statistics are updated. - -### 20131205: -* Google Chrome 33 added to future releases list. -* Google Chrome 31 moved to current releases list. - -### 20131209: -* Use old webkit gradients for old iOS and Safari (by Chad von Nau). -* Fix direction conversion for old webkit gradients (by Chad von Nau). -* Update browsers popularity statistics. - -### 20131213: -* Firefox ESR in default browsers was changed to 24 version. -* Firefox 26 was moved to current releases list. -* Firefox 28 was added to future releases list. - -## 0.7 “We Do Not Sow†-* Add vendor prefixes to selectors. -* Add ::selection and ::placeholder selectors support. -* Allow to load support data from Can I Use pull requests. -* Remove deprecated API. - -### 20130806: -* Add hyphens support. - -### 20130807: -* Add tab-size support. -* Add :fullscreen support. - -### 20130808: -* Allow to select browser versions by > and >= operator. -* Fix flex properties in transition. - -### 20130810: -* Add Firefox 25 data. - -### 20130824: -* Add Chrome 31 and 30 data. -* Fix CSS comments parsing (by vladkens). - -## 0.6 “As High As Honor†-* New faster API, which cache preprocessed data. Old API is deprecated. -* A lot of perfomance improvements. -* Add Opera 15 -webkit- prefix support. -* Update Chrome 29 and Safari 7 prefixes data. -* Add minor browsers in popularity select. -* Better syntax error messages. - -### 20130721: -* Add Chrome 30 data. - -### 20130728: -* Don’t remove non-standard -webkit-background-clip: text. -* Don’t remove IE hack on CSS parse. - -### 20130729: -* Add Opera 16 data. -* Fix “Invalid range in character class†error on Firefox. - -### 20130730: -* Fix correct clone comments inside keyframes (by Alexey Plutalov). -* Fix angle recalculation in gradients (by Roman Komarov). - -### 20130731: -* Add border-image support. - -## 0.5 “Ours is the Fury†-* Rewrite Autoprefixer to be more flexible. -* Use css, instead of Rework, to fix CSS parsing errors faster. -* Fix a lot of CSS parsing errors. - -### 20130616: -* More useful message for CSS parsing errors. -* Remove old WebKit gradient syntax. -* Fix parsing error on comment with braces. - -### 20130617: -* Remove old Mozilla border-radius. -* Don’t prefix old IE filter. -* Remove old background-clip, background-size and background-origin prefixes. -* Speed up regexps in values. -* Allow to hack property declarations. - -### 20130625: -* Convert flexbox properties to 2009 and 2012 specifications. -* Improve messages on syntax errors. - -### 20130626: -* Add Firefox 24 data. -* Add prefixes for font-feature-settings. - -### 20130629: -* Fix convert flex properties to old box-flex. - -## 0.4 “Winter Is Coming†-* Remove outdated prefixes. -* Add border-radius and box-shadow properties to database. -* Change degrees in webkit gradients. - -### 20130515: -* Add old syntax in gradient direction. -* Add old syntax for display: flex. -* Update browser global usage statistics. - -### 20130521: -* Add Firefox 23 data. - -### 20130524: -* Add Chrome 29 data. - -### 20130528: -* Fix compatibilty with Rework from git master. -* Add minor browsers to data, which can be selected only directly. - -### 20130530: -* Add Opera 15 and iOS 6.1 data. -* Fix iOS versions in properties and values data. - -### 20130603: -* Use latest Rework 0.15 with a lot of CSS parsing fixes. -* Update browsers usage statistics. - -## 0.3 “Growing Strong†-* Rename `autoprefixer.filter()` to `autoprefixer.rework()`. -* Use own filters instead of Rework’s `prefix` and `prefixValue`. -* Smarter value prefixer without false match “order†in “borderâ€. -* 40% faster. -* Don’t add unnecessary properties instead of Rework’s `prefixValue`. -* Don’t change properties order. -* Sort properties and values in inspect output. -* Add main to component config (by Jonathan Ong). -* Fix documentation (by Sergey Leschina and Mark Vasilkov). - -### 20130424: -* Fix value override in prefixer. - -### 20130427: -* Prefix several same values in one property. -* Fix Windows support in binary. -* Improve print errors in binary. - -### 20130502: -* Don’t add -webkit- prefix to IE filter. -* Don’t duplicate prefixes on second run. - -## 0.2 “Hear Me Roar!†-* Update parse libraries. -* Use component package manager to build standalone script. -* Add inspect to standalone script. - -## 0.1 “Fire and Blood†-* Initial release. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/LICENSE deleted file mode 100644 index da057b45..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright 2013 Andrey Sitnik - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/README.md deleted file mode 100644 index 084df7a9..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/README.md +++ /dev/null @@ -1,524 +0,0 @@ -# Autoprefixer - - - -Parse CSS and add vendor prefixes to CSS rules using values -from the [Can I Use](http://caniuse.com/). - -Write your CSS rules without vendor prefixes (in fact, forget about them -entirely): - -```css -:fullscreen a { - transition: transform 1s -} -``` - -Process your CSS by Autoprefixer: - -```js -var prefixed = autoprefixer.process(css).css; -``` - -It will use the data on current browser popularity and properties support -to apply prefixes for you: - -```css -:-webkit-full-screen a { - -webkit-transition: -webkit-transform 1s; - transition: transform 1s -} -:-moz-full-screen a { - transition: transform 1s -} -:-ms-fullscreen a { - transition: transform 1s -} -:fullscreen a { - -webkit-transition: -webkit-transform 1s; - transition: transform 1s -} -``` - -You can play with your CSS in [interactive demo] of Autoprefixer. - -Twitter account for news and releases: [@autoprefixer]. - -Sponsored by [Evil Martians]. Based on [PostCSS] framework. - -[interactive demo]: http://jsfiddle.net/simevidas/udyTs/show/light/ -[@autoprefixer]: https://twitter.com/autoprefixer -[Evil Martians]: http://evilmartians.com/ -[PostCSS]: https://github.com/ai/postcss - -## Features - -### Forget about prefixes - -The best tool is a tool you can't see and one that does the work for you. -This is the main idea behind Autoprefixer. - -Autoprefixer interface is simple: just forget about vendor prefixes -and write normal CSS according to latest W3C specs. You don’t need -a special language (like Sass) or special mixins. - -Because Autoprefixer is a postprocessor for CSS, -you can also use it with preprocessors, such as Sass, Stylus or LESS. - -### Actual data from Can I Use - -Autoprefixer uses the most recent data from [Can I Use](http://caniuse.com/), -understands which browsers are actual and popular and adds only the necessary -vendor prefixes. - -It also cleans your CSS from old prefixes (like prefixed `border-radius`, -produced by many CSS libraries): - -```css -a { - -webkit-border-radius: 5px; - border-radius: 5px -} -``` - -compiles to: - -```css -a { - border-radius: 5px -} -``` - -Note, that Autoprefixer doesn’t load Can I Use data every time. This data -is already packed to release, so with same Autoprefixer version you always will -have same output result. - -### Flexbox, Gradients, etc. - -Flexbox or gradients have different syntaxes in different browsers -(sometimes you need to recalculate angles, sometimes you need 2 old properties -instead of new one), but Autoprefixer hides this from you. - -Just code by latest W3C specs and Autoprefixer will produce the code -for old browsers: - -```css -a { - display: flex; -} -``` - -compiles to: - -```css -a { - display: -webkit-box; - display: -webkit-flex; - display: -moz-box; - display: -ms-flexbox; - display: flex -} -``` - -Autoprefixer has [22 special hacks] to fix browser’s differences. - -[22 special hacks]: https://github.com/ai/autoprefixer/tree/master/lib/hacks - -### Fast - -Autoprefixer is about 16 times faster than Compass and 8 times faster -than Stylus. - -On a Core i7 with 10 GB of RAM and SSD, benchmark with GitHub styles is: - -``` -~/Dev/autoprefixer$ ./node_modules/.bin/cake bench -Load GitHub styles -Autoprefixer: 450 ms -Compass: 3825 ms (8.5 times slower) -Stylus: 3720 ms (8.3 times slower) -``` - -Unlike [-prefix-free](http://leaverou.github.io/prefixfree/), Autoprefixer -compiles CSS once on deploy and doesn’t hit client-side performance. - -## Browsers - -You can specify the browsers you want to target in your project: - -```js -autoprefixer("last 1 version", "> 1%", "Explorer 7").process(css).css; -``` - -* `last 2 versions` is last versions for each browser. Like “last 2 versions†- [strategy](http://support.google.com/a/bin/answer.py?answer=33864) in - Google. -* `last 2 Chrome versions` is last versions of specify browser. -* `> 5%` is browser versions, selected by global usage statistics. -* `Firefox > 20` is Firefox newer versions than 20. -* `Firefox >= 20` is Firefox version 20 or newer. -* `Firefox ESR` is latest [Firefox ESR] version. -* `none` don’t set any browsers to clean CSS from any vendor prefixes. -* You can also set browsers directly. - -Blackberry and stock Android browsers will not be used in `last n versions`. -You can add them by name: - -```js -autoprefixer("last 1 version", "BlackBerry 10", "Android 4").process(css).css; -``` - -Browsers names (case insensitive): -* `Android` for old Android stock browser. -* `BlackBerry` or `bb` for Blackberry browser. -* `Chrome` for Google Chrome. -* `Firefox` or `ff` for Mozilla Firefox. -* `Explorer` or `ie` for Internet Explorer. -* `iOS` for iOS Safari. -* `Opera` for Opera. -* `Safari` for desktop Safari. - -By default, Autoprefixer uses `> 1%, last 2 versions, Firefox ESR, Opera 12.1`: -* Latest [Firefox ESR] is a 24 version. -* Opera 12.1 will be in list until Opera supports non-Blink 12.x branch. - -[Firefox ESR]: http://www.mozilla.org/en/firefox/organizations/faq/ - -## Source Map - -You must set input and output CSS files paths (by `from` and `to` options) -to generate a correct map. - -Autoprefixer can modify previous source map (for example, from Sass). -it will autodetect previous map if it will be in annotation comment or in file -near input CSS. You can disable source map with `map: false` or set previous -source map content manually to `map` option (as string or JS object). - -```js -var result = autoprefixer.process(css, { - map: fs.readFileSync('main.sass.css.map'), - from: 'main.sass.css', - to: 'main.min.css' -}); - -result.css //=> CSS with source map annotation comment -result.map //=> Source map from main.sass to main.min.css - -fs.writeFileSync('main.min.css.map', result.map); -``` - -Autoprefixer supports inline source maps too. If input CSS contains annotation -from previous step with map in `data:uri`, Autoprefixer will update source map -with prefixes changes and inine new map back to output CSS. - -You can read more about source map options in -[PostCSS documentation](https://github.com/ai/postcss#source-map-1). - -## Visual Cascade - -Autoprefixer can change CSS indentation to create nice visual cascade -of prefixes. You need to send `cascade: true` option to processor constructor: - -```js -autoprefixer("> 1 %", "last 2 version", { cascade: true }).process(css).css -``` - -and, if CSS will be uncompressed, output would be like: - -```css -a { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box -} -``` - -## Debug - -You can check which browsers are selected and which properties will be prefixed: - -```js -info = autoprefixer("last 1 version").info(); -console.log(info); -``` - -Or by CLI command: - -```sh -autoprefixer -i -``` - -## FAQ - -### Does it add polyfills for old browsers? - -No. Autoprefixer only adds prefixes, not polyfills. There are two reasons: - -1. Prefixes and polyfills are very different and need a different API. - Two separate libraries would be much better. -2. Most of IE polyfills are very bad for client perfomance. They use slow hacks - and old IEs is mostly used on old hardware. Most of CSS 3 features that is - only used for styling should be ignored in old IEs as it is recommended in - Graceful Degradation. - -### Why don’t gradients work in Firefox? - -Check that you use correct [direction syntax]. For example, you should use -`to bottom` instead of `top`: - -```css -a { - background: linear-gradient(to bottom, white, black) -} -``` - -Unfortunately, unprefixed gradients use different direction syntax, that most -of old gradients examples, so be careful and use always latest W3C specs with -Autoprefixer. - -[direction syntax]: https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient - -### Why doesn’t Autoprefixer add prefixes to `border-radius`? - -Developers are often surprised by how few prefixes are required today. -If Autoprefixer doesn’t add prefixes to your CSS, check if they’re still -required on [Can I Use](http://caniuse.com/). - -If a prefix is required, but Autoprefixer doesn’t add it or adds it -incorrectly, please -[report an issue](https://github.com/ai/autoprefixer/issues/new) -and include your source CSS and expected output. - -### Why doesn’t Autoprefixer support `appearance`? - -Unlike `transition`, the `appearance` property is not a part of -any specification. So there is no `appearance`, only `-moz-appearance` -and `-webkit-appearance`. Quote from [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance): - -> Do not use this property on Web sites: not only is it non-standard, but its -> behavior changes from one browser to another. Even the keyword `none` does not -> have the same behavior on each form element across different browsers, and -> some do not support it at all. - -### Why Autoprefixer uses CoffeeScript? - -JavaScript is very popular, but this is the same reason why its syntax does not -evolve. There is an entire Internet with a lot of legacy code which should -be supported by browsers. If developers will add an inappropriate feature then -it can’t be removed in next versions but must be supported for a very long time. -This is very bad for innovation. To create new, we need to experiment and -to choose. - -As a result JavaScript doesn’t have even basic syntax features, which are -present in other languages like Ruby or Python. There are no string -interpolation, short lambda syntax, foreach statement for arrays, string and -arrays slicing, etc. This features are really important, so they will be in -ECMAScript 6 (first update of JS syntax after 15 years). But this -new specification is not still released and, of cource, we must wait until -all browsers will support it. - -With JavaScript preprocessors like CoffeeScript or TypeScript we can bring -innovation back. We can add new operator and use it right now, without waiting -for support in all browsers. - -Autoprefixer was written in pure JavaScript before. But CoffeeScript made -Autoprefixer code much cleaner and more readable. Often 2 lines of code -become 1. - -Don’t be afraid of CoffeeScript. It is just a new syntax, not another language -(like ClojureScript). You can open [examples on CoffeeScript.org] and start -to code. After a week your eyes will adjust and you will see, that CoffeeScript -is cleaner and more readable. - -Situation with CoffeeScript and JavaScript is absolutely the same as with -CSS preprocessors and postprocessors. How we can develop CSS postprocessor -and avoid JS preproccesor :). - -[examples on CoffeeScript.org]: http://coffeescript.org/ - -## Usage - -### Grunt - -You can use the -[grunt-autoprefixer](https://github.com/nDmitry/grunt-autoprefixer) -plugin for Grunt. Install the npm package and add it to Gruntfile: - -```js -grunt.loadNpmTasks('grunt-autoprefixer'); -``` - -### Compass - -If you use Compass binary to compile your styles, you can easily integrate -Autoprefixer with it. Install `autoprefixer-rails` gem: - -``` -gem install autoprefixer-rails -``` - -and add post-compile hook to `config.rb`: - -```ruby -require 'autoprefixer-rails' - -on_stylesheet_saved do |file| - css = File.read(file) - File.open(file, 'w') do |io| - io << AutoprefixerRails.process(css) - end -end -``` - -You can set browsers array as second argument in `process` method: - -```ruby -io << AutoprefixerRails.process(css, ["last 1 version", "> 1%", "Explorer 7"]) -``` - -### Stylus - -If you use Stylus CLI, you can add Autoprefixer by -[autoprefixer-stylus](https://github.com/jenius/autoprefixer-stylus) plugin. - -Just install npm package and use it in `-u` option: - -``` -stylus -u autoprefixer-stylus file.css -``` - -### Ruby on Rails - -Add [autoprefixer-rails](https://github.com/ai/autoprefixer-rails) gem -to `Gemfile` and write CSS in a usual way: - -```ruby -gem "autoprefixer-rails" -``` - -### Ruby - -You can integrate Autoprefixer into your Sprockets environment -by `autoprefixer-rails` gem: - -```ruby -AutoprefixerRails.install(sprockets_env) -``` - -or process CSS from plain Ruby: - -```ruby -prefixed = AutoprefixerRails.compile(css) -``` - -### Prepros - -If you want to build your assets in GUI, try -[Prepros](http://alphapixels.com/prepros/). Just set “Auto Prefix CSS†-[checkbox](https://f.cloud.github.com/assets/3478693/930798/faa29892-0016-11e3-8901-87850de7aed2.jpg) -in right panel. - - - -### Mincer - -To use Autoprefixer in [Mincer](https://github.com/nodeca/mincer), -install `autoprefixer` npm package and enable it: - -```js -environment.enable('autoprefixer'); -``` - -### Middleman - -Add [middleman-autoprefixer](https://github.com/porada/middleman-autoprefixer) -gem to `Gemfile`: - -```ruby -gem "middleman-autoprefixer" -``` - -and activate the extension in your project’s `config.rb`: - -```ruby -activate :autoprefixer -``` - -### Node.js - -Use `autoprefixer` npm package: - -```js -var autoprefixer = require('autoprefixer'); -var css = 'a { transition: transform 1s }'; -var prefixed = autoprefixer.process(css).css; -``` - -### PHP - -You can use Autoprefixer in PHP by -[autoprefixer-php](https://github.com/vladkens/autoprefixer-php) library: - - -```php -$autoprefixer = new Autoprefixer(); -$css = 'a { transition: transform 1s }'; -$prefixed = $autoprefixer->compile($css); -``` - -### JavaScript - -You can use Autoprefixer in the browser or a non-Node.js runtime -with [standalone version](https://raw.github.com/ai/autoprefixer-rails/master/vendor/autoprefixer.js). - -### PostCSS - -Autoprefixer can be also used as a [PostCSS](https://github.com/ai/postcss) -processor, so you can combine it with other processors and parse CSS only once: - -```js -postcss(). - use( autoprefixer(['> 1%', 'opera 12.5']).postcss ). - use( compressor ). - process(css); -``` - -### Sublime Text - -You can process your styles directly in Sublime Text with the -[sublime-autoprefixer](https://github.com/sindresorhus/sublime-autoprefixer) -plugin. - -### Brackets - -Styles can processed automatically in Brackets using the -[brackets-autoprefixer](https://github.com/mikaeljorhult/brackets-autoprefixer) -extension. - - -### Others - -You can use the `autoprefixer` binary to process CSS files using -any assets manager: - -``` -sudo npm install --global autoprefixer -autoprefixer *.css -``` - -See `autoprefixer -h` for help. - -## In-package Update - -It’s highly recommended that you always use the latest version of Autoprefixer. -If by any chance you or your company are not able to update the package -(e.g. in case of long test periods before any library updates), you can still -update the very browser data that Autoprefixer fetches from Can I Use: - -``` -autoprefixer --update -``` - -Note that the in-package update doesn’t get any code fixes nor the -implementation of new features. It just keeps the browser popularity and -support data up to date, and adds new browser versions. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/bin/autoprefixer b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/bin/autoprefixer deleted file mode 100755 index f98e533b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/bin/autoprefixer +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node -(function() { - var Binary, binary; - - Binary = require('../lib/binary'); - - binary = new Binary(process); - - binary.run(function() { - return process.exit(binary.status); - }); - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/browsers.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/browsers.js deleted file mode 100644 index 3c25435d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/browsers.js +++ /dev/null @@ -1,50 +0,0 @@ -(function() { - module.exports = { - android: { - prefix: "-webkit-", - minor: true, - versions: [4.4, 4.3, 4.2, 4.1, 4, 3, 2.3, 2.2, 2.1], - popularity: [0.116989, 0.818925, 0.818925, 2.30729, 1.0464, 0.00649939, 1.29988, 0.0844921, 0.0259976] - }, - bb: { - prefix: "-webkit-", - minor: true, - versions: [10, 7], - popularity: [0, 0.136974] - }, - chrome: { - prefix: "-webkit-", - future: [36, 35, 34], - versions: [33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4], - popularity: [2.44037, 27.2658, 1.60432, 0.33894, 0.459452, 0.256088, 0.30128, 0.22596, 0.120512, 0.067788, 0.082852, 0.097916, 0.60256, 0.045192, 0.03766, 0.07532, 0.030128, 0.03766, 0.060256, 0.045192, 0.052724, 0.060256, 0.120512, 0.03766, 0.015064, 0.022596, 0.022596, 0.030128, 0.022596, 0.022596] - }, - ff: { - prefix: "-moz-", - future: [30, 29, 28], - versions: [27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3.6, 3.5, 3, 2], - popularity: [6.04066, 6.51518, 0.241024, 0.256088, 0.135576, 0.128044, 0.143108, 0.11298, 0.097916, 0.090384, 0.128044, 0.173236, 0.105448, 0.07532, 0.07532, 0.180768, 0.07532, 0.090384, 0.045192, 0.067788, 0.030128, 0.045192, 0.03766, 0.052724, 0.233492, 0.03766, 0.07532, 0.015064] - }, - ie: { - prefix: "-ms-", - versions: [11, 10, 9, 8, 7, 6, 5.5], - popularity: [6.68983, 3.50751, 2.98874, 5.19546, 0.185829, 0.240029, 0.009298] - }, - ios: { - prefix: "-webkit-", - versions: [7, 6.1, 6, 5.1, 5, 4.3, 4.2, 4.1, 4, 3.2], - popularity: [4.20662, 0.468007, 0.468007, 0.1333275, 0.1333275, 0.0108839, 0.0108839, 0.00544195, 0.00544195, 0] - }, - opera: { - prefix: "-o-", - future: [21, 20], - versions: [19, 18, 17, 16, 15, 12.1, 12, 11.6, 11.5, 11.1, 11, 10.6, 10.5, 10.1, 10, 9.6, 9.5], - popularity: [0.361536, 0.082852, 0.022596, 0.015064, 0.015064, 0.391664, 0.030128, 0.022596, 0.007532, 0.008219, 0.008219, 0.007532, 0.008392, 0.007532, 0.007532, 0.0038115, 0.0038115] - }, - safari: { - prefix: "-webkit-", - versions: [7, 6.1, 6, 5.1, 5, 4, 3.2, 3.1], - popularity: [1.26538, 0.760732, 0.497112, 0.881244, 0.256088, 0.090384, 0.008692, 0] - } - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/prefixes.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/prefixes.js deleted file mode 100644 index 20f09fa3..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/data/prefixes.js +++ /dev/null @@ -1,327 +0,0 @@ -(function() { - module.exports = { - "::placeholder": { - selector: true, - browsers: ["android 4.4", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4 old", "ff 5 old", "ff 6 old", "ff 7 old", "ff 8 old", "ff 9 old", "ff 10 old", "ff 11 old", "ff 12 old", "ff 13 old", "ff 14 old", "ff 15 old", "ff 16 old", "ff 17 old", "ff 18 old", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ie 10", "ie 11", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "::selection": { - selector: true, - browsers: ["ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30"] - }, - ":fullscreen": { - selector: true, - browsers: ["chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ie 11", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "@keyframes": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "align-content": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "align-items": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "align-self": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - animation: { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-delay": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-direction": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-duration": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-fill-mode": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-iteration-count": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-name": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-play-state": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "animation-timing-function": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "backface-visibility": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ie 9", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "background-clip": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "ff 3.6", "opera 10", "opera 10.1"] - }, - "background-origin": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "ff 3.6", "opera 10", "opera 10.1"] - }, - "background-size": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "ff 3.6", "opera 10", "opera 10.1"] - }, - "border-bottom-left-radius": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "chrome 4", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ios 3.2", "safari 3.1", "safari 3.2", "safari 4"], - transition: true - }, - "border-bottom-right-radius": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "chrome 4", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ios 3.2", "safari 3.1", "safari 3.2", "safari 4"], - transition: true - }, - "border-image": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 12.1", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1"] - }, - "border-radius": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "chrome 4", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ios 3.2", "safari 3.1", "safari 3.2", "safari 4"], - transition: true - }, - "border-top-left-radius": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "chrome 4", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ios 3.2", "safari 3.1", "safari 3.2", "safari 4"], - transition: true - }, - "border-top-right-radius": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "chrome 4", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ios 3.2", "safari 3.1", "safari 3.2", "safari 4"], - transition: true - }, - "box-shadow": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "bb 7", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "ff 3.5", "ff 3.6", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "safari 3.1", "safari 3.2", "safari 4", "safari 5"], - transition: true - }, - "box-sizing": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "bb 7", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "safari 3.1", "safari 3.2", "safari 4", "safari 5"] - }, - "break-after": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "break-before": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "break-inside": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - calc: { - props: ["*"], - browsers: ["bb 10", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 6", "ios 6.1", "safari 6"] - }, - "column-count": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "column-fill": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "column-gap": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "column-rule": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "column-rule-color": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "column-rule-style": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "column-rule-width": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "column-span": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "column-width": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - columns: { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "display-flex": { - props: ["display"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "fill-available": { - props: ["width", "min-width", "max-width", "height", "min-height", "max-height"], - browsers: ["android 4.4", "bb 10", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - filter: { - browsers: ["android 4.4", "bb 10", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "fit-content": { - props: ["width", "min-width", "max-width", "height", "min-height", "max-height"], - browsers: ["android 4.4", "bb 10", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - flex: { - transition: true, - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "flex-basis": { - transition: true, - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "flex-direction": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "flex-flow": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "flex-grow": { - transition: true, - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "flex-shrink": { - transition: true, - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "flex-wrap": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "font-feature-settings": { - browsers: ["android 4.4", "bb 10", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - "font-kerning": { - browsers: ["android 4.4", "bb 10", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - "font-language-override": { - browsers: ["android 4.4", "bb 10", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - "font-variant-ligatures": { - browsers: ["android 4.4", "bb 10", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - grab: { - props: ["cursor"], - browsers: ["chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - grabbing: { - props: ["cursor"], - browsers: ["chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - hyphens: { - browsers: ["ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ie 10", "ie 11", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "inline-flex": { - props: ["display"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "justify-content": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - "linear-gradient": { - props: ["background", "background-image", "border-image"], - mistakes: ["-ms-"], - browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2 old", "ios 4 old", "ios 4.1 old", "ios 4.2 old", "ios 4.3 old", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4 old", "safari 5 old", "safari 5.1", "safari 6"] - }, - "max-content": { - props: ["width", "min-width", "max-width", "height", "min-height", "max-height"], - browsers: ["android 4.4", "bb 10", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - "min-content": { - props: ["width", "min-width", "max-width", "height", "min-height", "max-height"], - browsers: ["android 4.4", "bb 10", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 6.1", "safari 7"] - }, - order: { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4 2009", "chrome 5 2009", "chrome 6 2009", "chrome 7 2009", "chrome 8 2009", "chrome 9 2009", "chrome 10 2009", "chrome 11 2009", "chrome 12 2009", "chrome 13 2009", "chrome 14 2009", "chrome 15 2009", "chrome 16 2009", "chrome 17 2009", "chrome 18 2009", "chrome 19 2009", "chrome 20 2009", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ie 10", "ios 3.2 2009", "ios 4 2009", "ios 4.1 2009", "ios 4.2 2009", "ios 4.3 2009", "ios 5 2009", "ios 5.1 2009", "ios 6 2009", "ios 6.1 2009", "ios 7", "opera 15", "opera 16", "safari 3.1 2009", "safari 3.2 2009", "safari 4 2009", "safari 5 2009", "safari 5.1 2009", "safari 6 2009", "safari 6.1 2009", "safari 7"] - }, - perspective: { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ie 9", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "perspective-origin": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ie 9", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "radial-gradient": { - props: ["background", "background-image", "border-image"], - mistakes: ["-ms-"], - browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2 old", "ios 4 old", "ios 4.1 old", "ios 4.2 old", "ios 4.3 old", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4 old", "safari 5 old", "safari 5.1", "safari 6"] - }, - "repeating-linear-gradient": { - props: ["background", "background-image", "border-image"], - mistakes: ["-ms-"], - browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2 old", "ios 4 old", "ios 4.1 old", "ios 4.2 old", "ios 4.3 old", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4 old", "safari 5 old", "safari 5.1", "safari 6"] - }, - "repeating-radial-gradient": { - props: ["background", "background-image", "border-image"], - mistakes: ["-ms-"], - browsers: ["android 2.1 old", "android 2.2 old", "android 2.3 old", "android 3 old", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2 old", "ios 4 old", "ios 4.1 old", "ios 4.2 old", "ios 4.3 old", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 4 old", "safari 5 old", "safari 5.1", "safari 6"] - }, - sticky: { - props: ["position"], - browsers: ["ios 6", "ios 6.1", "ios 7", "safari 6.1", "safari 7"] - }, - "tab-size": { - browsers: ["ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 12.1"] - }, - "text-decoration-color": { - browsers: ["ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30"] - }, - "text-decoration-line": { - browsers: ["ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30"] - }, - "text-decoration-style": { - browsers: ["chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21"] - }, - "touch-action": { - browsers: ["ie 10"] - }, - transform: { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ie 9", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "transform-origin": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ie 9", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"], - transition: true - }, - "transform-style": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ie 9", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - transition: { - mistakes: ["-ms-"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6"] - }, - "transition-delay": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6"] - }, - "transition-duration": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6"] - }, - "transition-property": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6"] - }, - "transition-timing-function": { - mistakes: ["-ms-"], - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "bb 7", "bb 10", "chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "opera 10.5", "opera 10.6", "opera 11", "opera 11.1", "opera 11.5", "opera 11.6", "opera 12", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6"] - }, - "user-select": { - browsers: ["android 2.1", "android 2.2", "android 2.3", "android 3", "android 4", "android 4.1", "android 4.2", "android 4.3", "android 4.4", "bb 7", "bb 10", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30", "ie 10", "ie 11", "ios 3.2", "ios 4", "ios 4.1", "ios 4.2", "ios 4.3", "ios 5", "ios 5.1", "ios 6", "ios 6.1", "ios 7", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - wavy: { - props: ["text-decoration", "text-decoration-style"], - browsers: ["ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "ff 24", "ff 25", "ff 26", "ff 27", "ff 28", "ff 29", "ff 30"] - }, - "zoom-in": { - props: ["cursor"], - browsers: ["chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - }, - "zoom-out": { - props: ["cursor"], - browsers: ["chrome 4", "chrome 5", "chrome 6", "chrome 7", "chrome 8", "chrome 9", "chrome 10", "chrome 11", "chrome 12", "chrome 13", "chrome 14", "chrome 15", "chrome 16", "chrome 17", "chrome 18", "chrome 19", "chrome 20", "chrome 21", "chrome 22", "chrome 23", "chrome 24", "chrome 25", "chrome 26", "chrome 27", "chrome 28", "chrome 29", "chrome 30", "chrome 31", "chrome 32", "chrome 33", "chrome 34", "chrome 35", "chrome 36", "ff 2", "ff 3", "ff 3.5", "ff 3.6", "ff 4", "ff 5", "ff 6", "ff 7", "ff 8", "ff 9", "ff 10", "ff 11", "ff 12", "ff 13", "ff 14", "ff 15", "ff 16", "ff 17", "ff 18", "ff 19", "ff 20", "ff 21", "ff 22", "ff 23", "opera 15", "opera 16", "opera 17", "opera 18", "opera 19", "opera 20", "opera 21", "safari 3.1", "safari 3.2", "safari 4", "safari 5", "safari 5.1", "safari 6", "safari 6.1", "safari 7"] - } - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/autoprefixer.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/autoprefixer.js deleted file mode 100644 index 370c20f5..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/autoprefixer.js +++ /dev/null @@ -1,109 +0,0 @@ -(function() { - var Autoprefixer, Browsers, Prefixes, autoprefixer, infoCache, isPlainObject, postcss, - __slice = [].slice, - __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - postcss = require('postcss'); - - Browsers = require('./browsers'); - - Prefixes = require('./prefixes'); - - infoCache = null; - - isPlainObject = function(obj) { - return Object.prototype.toString.apply(obj) === '[object Object]'; - }; - - autoprefixer = function() { - var browsers, options, prefixes, reqs; - reqs = 1 <= arguments.length ? __slice.call(arguments, 0) : []; - if (reqs.length === 1 && isPlainObject(reqs[0])) { - options = reqs[0]; - reqs = void 0; - } else if (reqs.length === 0 || (reqs.length === 1 && (reqs[0] == null))) { - reqs = void 0; - } else if (reqs.length <= 2 && (reqs[0] instanceof Array || (reqs[0] == null))) { - options = reqs[1]; - reqs = reqs[0]; - } else if (typeof reqs[reqs.length - 1] === 'object') { - options = reqs.pop(); - } - if (reqs == null) { - reqs = autoprefixer["default"]; - } - browsers = new Browsers(autoprefixer.data.browsers, reqs); - prefixes = new Prefixes(autoprefixer.data.prefixes, browsers, options); - return new Autoprefixer(prefixes, autoprefixer.data); - }; - - autoprefixer.data = { - browsers: require('../data/browsers'), - prefixes: require('../data/prefixes') - }; - - Autoprefixer = (function() { - function Autoprefixer(prefixes, data, options) { - this.prefixes = prefixes; - this.data = data; - this.options = options != null ? options : {}; - this.postcss = __bind(this.postcss, this); - this.browsers = this.prefixes.browsers.selected; - } - - Autoprefixer.prototype.process = function(str, options) { - if (options == null) { - options = {}; - } - return this.processor().process(str, options); - }; - - Autoprefixer.prototype.postcss = function(css) { - this.prefixes.processor.remove(css); - return this.prefixes.processor.add(css); - }; - - Autoprefixer.prototype.info = function() { - infoCache || (infoCache = require('./info')); - return infoCache(this.prefixes); - }; - - Autoprefixer.prototype.processor = function() { - return this.processorCache || (this.processorCache = postcss(this.postcss)); - }; - - return Autoprefixer; - - })(); - - autoprefixer["default"] = ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']; - - autoprefixer.loadDefault = function() { - return this.defaultCache || (this.defaultCache = autoprefixer(this["default"])); - }; - - autoprefixer.process = function(str, options) { - if (options == null) { - options = {}; - } - return this.loadDefault().process(str, options); - }; - - autoprefixer.compile = function(str, options) { - if (options == null) { - options = {}; - } - return this.loadDefault().compile(str, options); - }; - - autoprefixer.postcss = function(css) { - return this.loadDefault().postcss(css); - }; - - autoprefixer.info = function() { - return this.loadDefault().info(); - }; - - module.exports = autoprefixer; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/binary.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/binary.js deleted file mode 100644 index 3f8b0d76..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/binary.js +++ /dev/null @@ -1,344 +0,0 @@ -(function() { - var Binary, autoprefixer, fs, path; - - autoprefixer = require('./autoprefixer'); - - path = require('path'); - - fs = require('fs-extra'); - - Binary = (function() { - function Binary(process) { - this["arguments"] = process.argv.slice(2); - this.stdin = process.stdin; - this.stderr = process.stderr; - this.stdout = process.stdout; - this.status = 0; - this.command = 'compile'; - this.inputFiles = []; - this.processOptions = {}; - this.processorOptions = {}; - this.parseArguments(); - } - - Binary.prototype.help = function() { - return 'Usage: autoprefixer [OPTION...] FILES\n\nParse CSS files and add prefixed properties and values.\n\nOptions:\n -b, --browsers BROWSERS add prefixes for selected browsers\n -o, --output FILE set output file\n -d, --dir DIR set output dir\n -m, --map generate source map\n --no-map skip source map even if previous map exists\n -I, --inline-map inline map by data:uri to annotation comment\n --no-map-annotation skip source map annotation comment is CSS\n -c, --cascade create nice visual cascade of prefixes\n -i, --info show selected browsers and properties\n -h, --help show help text\n -v, --version print program version'; - }; - - Binary.prototype.desc = function() { - return 'Files:\n If you didn\'t set input files, autoprefixer will read from stdin stream.\n\n By default, prefixed CSS will rewrite original files.\n\n You can specify output file or directory by `-o` argument.\n For several input files you can specify only output directory by `-d`.\n\n Output CSS will be written to stdout stream on `-o -\' argument or stdin input.\n\nSource maps:\n On `-m` argument Autoprefixer will generate source map for changes near\n output CSS (for out/main.css it generates out/main.css.map).\n\n If previous source map will be near input files (for example, in/main.css\n and in/main.css.map) Autoprefixer will apply previous map to output\n source map.\n\nBrowsers:\n Separate browsers by comma. For example, `-b "> 1%, opera 12"\'.\n You can set browsers by global usage statictics: `-b \"> 1%\"\'.\n or last version: `-b "last 2 versions"\'.'; - }; - - Binary.prototype.print = function(str) { - str = str.replace(/\n$/, ''); - return this.stdout.write(str + "\n"); - }; - - Binary.prototype.error = function(str) { - this.status = 1; - return this.stderr.write(str + "\n"); - }; - - Binary.prototype.version = function() { - return require('../package.json').version; - }; - - Binary.prototype.parseArguments = function() { - var arg, args; - args = this["arguments"].slice(); - while (args.length > 0) { - arg = args.shift(); - switch (arg) { - case '-h': - case '--help': - this.command = 'showHelp'; - break; - case '-v': - case '--version': - this.command = 'showVersion'; - break; - case '-i': - case '--info': - this.command = 'info'; - break; - case '-u': - case '--update': - this.command = 'update'; - break; - case '-m': - case '--map': - this.processOptions.map = true; - break; - case '--no-map': - this.processOptions.map = false; - break; - case '-I': - case '--inline-map': - this.processOptions.inlineMap = true; - break; - case '--no-map-annotation': - this.processOptions.mapAnnotation = false; - break; - case '-c': - case '--cascade': - this.processorOptions.cascade = true; - break; - case '-b': - case '--browsers': - this.requirements = args.shift().split(',').map(function(i) { - return i.trim(); - }); - break; - case '-o': - case '--output': - this.outputFile = args.shift(); - break; - case '-d': - case '--dir': - this.outputDir = args.shift(); - break; - default: - if (arg.match(/^-\w$/) || arg.match(/^--\w[\w-]+$/)) { - this.command = void 0; - this.error("autoprefixer: Unknown argument " + arg); - this.error(''); - this.error(this.help()); - } else { - this.inputFiles.push(arg); - } - } - } - }; - - Binary.prototype.showHelp = function(done) { - this.print(this.help()); - this.print(''); - this.print(this.desc()); - return done(); - }; - - Binary.prototype.showVersion = function(done) { - this.print("autoprefixer " + (this.version())); - return done(); - }; - - Binary.prototype.info = function(done) { - this.print(this.compiler().info()); - return done(); - }; - - Binary.prototype.update = function(done) { - var coffee, updater; - try { - coffee = require('coffee-script'); - } catch (_error) { - this.error("Install coffee-script npm package"); - return done(); - } - updater = require('./updater'); - updater.request((function(_this) { - return function() { - return _this.stdout.write('.'); - }; - })(this)); - updater.done((function(_this) { - return function() { - _this.print(''); - if (updater.changed.length === 0) { - _this.print('Everything up-to-date'); - } else { - _this.print("Update " + (updater.changed.join(' and ')) + " data"); - } - return done(); - }; - })(this)); - return updater.run(); - }; - - Binary.prototype.startWork = function() { - return this.waiting += 1; - }; - - Binary.prototype.endWork = function() { - this.waiting -= 1; - if (this.waiting <= 0) { - return this.doneCallback(); - } - }; - - Binary.prototype.workError = function(str) { - this.error(str); - return this.endWork(); - }; - - Binary.prototype.compiler = function() { - return this.compilerCache || (this.compilerCache = autoprefixer(this.requirements, this.processorOptions)); - }; - - Binary.prototype.compileCSS = function(css, output, input) { - var error, name, opts, result, value, _ref; - opts = {}; - _ref = this.processOptions; - for (name in _ref) { - value = _ref[name]; - opts[name] = value; - } - if (input) { - opts.from = input; - } - if (output !== '-') { - opts.to = output; - } - if (opts.map && input && fs.existsSync(input + '.map')) { - opts.map = fs.readFileSync(input + '.map').toString(); - } - try { - result = this.compiler().process(css, opts); - } catch (_error) { - error = _error; - if (error.autoprefixer || error.message.match(/^Can't parse CSS/)) { - this.error("autoprefixer: " + error.message); - } else { - this.error('autoprefixer: Internal error'); - } - if (error.css || !error.autoprefixer) { - if (error.stack != null) { - this.error(''); - this.error(error.stack); - } - } - } - if (result == null) { - return this.endWork(); - } - if (output === '-') { - this.print(result.css); - return this.endWork(); - } else { - return fs.outputFile(output, result.css, (function(_this) { - return function(error) { - if (error) { - _this.error("autoprefixer: " + error); - } - if (result.map) { - return fs.writeFile(output + '.map', result.map, function(error) { - if (error) { - _this.error("autoprefixer: " + error); - } - return _this.endWork(); - }); - } else { - return _this.endWork(); - } - }; - })(this)); - } - }; - - Binary.prototype.files = function() { - var file, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results, _results1, _results2; - if (this.inputFiles.length === 0) { - this.outputFile || (this.outputFile = '-'); - } - if (this.outputDir) { - if (this.inputFiles.length === 0) { - this.error("autoprefixer: For STDIN input you need to specify output file (by `-o FILE`),\nnot output dir"); - return; - } - if (fs.existsSync(this.outputDir) && !fs.statSync(this.outputDir).isDirectory()) { - this.error("autoprefixer: Path " + this.outputDir + " is a file, not directory"); - return; - } - _ref = this.inputFiles; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - file = _ref[_i]; - _results.push([file, path.join(this.outputDir, path.basename(file))]); - } - return _results; - } else if (this.outputFile) { - if (this.inputFiles.length > 1) { - this.error("autoprefixer: For several files you can specify only output dir (by `-d DIR`),\nnot one output file"); - return; - } - _ref1 = this.inputFiles; - _results1 = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - file = _ref1[_j]; - _results1.push([file, this.outputFile]); - } - return _results1; - } else { - _ref2 = this.inputFiles; - _results2 = []; - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - file = _ref2[_k]; - _results2.push([file, file]); - } - return _results2; - } - }; - - Binary.prototype.compile = function(done) { - var css, file, files, input, output, _fn, _i, _j, _len, _len1, _ref; - this.waiting = 0; - this.doneCallback = done; - files = this.files(); - if (!files) { - return done(); - } - if (files.length === 0) { - this.startWork(); - css = ''; - this.stdin.resume(); - this.stdin.on('data', function(chunk) { - return css += chunk; - }); - return this.stdin.on('end', (function(_this) { - return function() { - return _this.compileCSS(css, _this.outputFile); - }; - })(this)); - } else { - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - this.startWork(); - } - _fn = (function(_this) { - return function(input, output) { - return fs.readFile(input, function(error, css) { - if (error) { - return _this.workError("autoprefixer: " + error.message); - } else { - return _this.compileCSS(css, output, input); - } - }); - }; - })(this); - for (_j = 0, _len1 = files.length; _j < _len1; _j++) { - _ref = files[_j], input = _ref[0], output = _ref[1]; - if (!fs.existsSync(input)) { - this.workError("autoprefixer: File " + input + " doesn't exists"); - continue; - } - _fn(input, output); - } - return false; - } - }; - - Binary.prototype.run = function(done) { - if (this.command) { - return this[this.command](done); - } else { - return done(); - } - }; - - return Binary; - - })(); - - module.exports = Binary; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/browsers.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/browsers.js deleted file mode 100644 index 435e03e2..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/browsers.js +++ /dev/null @@ -1,197 +0,0 @@ -(function() { - var Browsers, utils; - - utils = require('./utils'); - - Browsers = (function() { - Browsers.prefixes = function() { - var data, i, name; - if (this.prefixesCache) { - return this.prefixesCache; - } - data = require('../data/browsers'); - return this.prefixesCache = utils.uniq((function() { - var _results; - _results = []; - for (name in data) { - i = data[name]; - _results.push(i.prefix); - } - return _results; - })()).sort(function(a, b) { - return b.length - a.length; - }); - }; - - Browsers.withPrefix = function(value) { - if (!this.prefixesRegexp) { - this.prefixesRegexp = RegExp("" + (this.prefixes().join('|'))); - } - return this.prefixesRegexp.test(value); - }; - - function Browsers(data, requirements) { - this.data = data; - this.selected = this.parse(requirements); - } - - Browsers.prototype.parse = function(requirements) { - var selected; - if (!(requirements instanceof Array)) { - requirements = [requirements]; - } - selected = []; - requirements.map((function(_this) { - return function(req) { - var i, match, name, _ref; - _ref = _this.requirements; - for (name in _ref) { - i = _ref[name]; - if (match = req.match(i.regexp)) { - selected = selected.concat(i.select.apply(_this, match.slice(1))); - return; - } - } - return utils.error("Unknown browser requirement `" + req + "`"); - }; - })(this)); - return utils.uniq(selected); - }; - - Browsers.prototype.aliases = { - fx: 'ff', - firefox: 'ff', - explorer: 'ie', - blackberry: 'bb' - }; - - Browsers.prototype.requirements = { - none: { - regexp: /^none$/i, - select: function() { - return []; - } - }, - lastVersions: { - regexp: /^last (\d+) versions?$/i, - select: function(versions) { - return this.browsers(function(data) { - if (data.minor) { - return []; - } else { - return data.versions.slice(0, versions); - } - }); - } - }, - lastByBrowser: { - regexp: /^last (\d+) (\w+) versions?$/i, - select: function(versions, browser) { - var data; - data = this.byName(browser); - return data.versions.slice(0, versions).map(function(v) { - return "" + data.name + " " + v; - }); - } - }, - globalStatistics: { - regexp: /^> (\d+(\.\d+)?)%$/, - select: function(popularity) { - return this.browsers(function(data) { - return data.versions.filter(function(version, i) { - return data.popularity[i] > popularity; - }); - }); - } - }, - newerThen: { - regexp: /^(\w+) (>=?)\s*([\d\.]+)/, - select: function(browser, sign, version) { - var data, filter; - data = this.byName(browser); - version = parseFloat(version); - if (sign === '>') { - filter = function(v) { - return v > version; - }; - } else if (sign === '>=') { - filter = function(v) { - return v >= version; - }; - } - return data.versions.filter(filter).map(function(v) { - return "" + data.name + " " + v; - }); - } - }, - esr: { - regexp: /^(firefox|ff|fx) esr$/i, - select: function() { - return ['ff 24']; - } - }, - direct: { - regexp: /^(\w+) ([\d\.]+)$/, - select: function(browser, version) { - var data, first, last; - data = this.byName(browser); - version = parseFloat(version); - last = data.future ? data.future[0] : data.versions[0]; - first = data.versions[data.versions.length - 1]; - if (version > last) { - version = last; - } else if (version < first) { - version = first; - } - return ["" + data.name + " " + version]; - } - } - }; - - Browsers.prototype.browsers = function(criteria) { - var browser, data, selected, versions, _ref; - selected = []; - _ref = this.data; - for (browser in _ref) { - data = _ref[browser]; - versions = criteria(data).map(function(version) { - return "" + browser + " " + version; - }); - selected = selected.concat(versions); - } - return selected; - }; - - Browsers.prototype.prefix = function(browser) { - var name, version, _ref; - _ref = browser.split(' '), name = _ref[0], version = _ref[1]; - if (name === 'opera' && parseFloat(version) >= 15) { - return '-webkit-'; - } else { - return this.data[name].prefix; - } - }; - - Browsers.prototype.isSelected = function(browser) { - return this.selected.indexOf(browser) !== -1; - }; - - Browsers.prototype.byName = function(name) { - var data; - name = name.toLowerCase(); - name = this.aliases[name] || name; - data = this.data[name]; - if (!data) { - utils.error("Unknown browser " + browser); - } - data.name = name; - return data; - }; - - return Browsers; - - })(); - - module.exports = Browsers; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/declaration.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/declaration.js deleted file mode 100644 index 661998ec..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/declaration.js +++ /dev/null @@ -1,149 +0,0 @@ -(function() { - var Browsers, Declaration, Prefixer, utils, vendor, - __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; }; - - Prefixer = require('./prefixer'); - - Browsers = require('./browsers'); - - vendor = require('postcss/lib/vendor'); - - utils = require('./utils'); - - Declaration = (function(_super) { - __extends(Declaration, _super); - - function Declaration() { - return Declaration.__super__.constructor.apply(this, arguments); - } - - Declaration.prototype.check = function(decl) { - return true; - }; - - Declaration.prototype.prefixed = function(prop, prefix) { - return prefix + prop; - }; - - Declaration.prototype.normalize = function(prop) { - return prop; - }; - - Declaration.prototype.otherPrefixes = function(value, prefix) { - var other, _i, _len, _ref; - _ref = Browsers.prefixes(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - other = _ref[_i]; - if (other === prefix) { - continue; - } - if (value.indexOf(other) !== -1) { - return true; - } - } - return false; - }; - - Declaration.prototype.set = function(decl, prefix) { - decl.prop = this.prefixed(decl.prop, prefix); - return decl; - }; - - Declaration.prototype.needCascade = function(decl) { - return decl._autoprefixerCascade || (decl._autoprefixerCascade = !!this.all.options.cascade && decl.before.indexOf("\n") !== -1); - }; - - Declaration.prototype.maxPrefixed = function(prefixes, decl) { - var max, prefix, _i, _len; - if (decl._autoprefixerMax) { - return decl._autoprefixerMax; - } - max = 0; - for (_i = 0, _len = prefixes.length; _i < _len; _i++) { - prefix = prefixes[_i]; - prefix = utils.removeNote(prefix); - if (prefix.length > max) { - max = prefix.length; - } - } - return decl._autoprefixerMax = max; - }; - - Declaration.prototype.calcBefore = function(prefixes, decl, prefix) { - var before, diff, i, max, _i; - if (prefix == null) { - prefix = ''; - } - before = decl.before; - max = this.maxPrefixed(prefixes, decl); - diff = max - utils.removeNote(prefix).length; - for (i = _i = 0; 0 <= diff ? _i < diff : _i > diff; i = 0 <= diff ? ++_i : --_i) { - before += ' '; - } - return before; - }; - - Declaration.prototype.restoreBefore = function(decl) { - var lines, min; - lines = decl.before.split("\n"); - min = lines[lines.length - 1]; - this.all.group(decl).up(function(prefixed) { - var array, last; - array = prefixed.before.split("\n"); - last = array[array.length - 1]; - if (last.length < min.length) { - return min = last; - } - }); - lines[lines.length - 1] = min; - return decl.before = lines.join("\n"); - }; - - Declaration.prototype.insert = function(decl, prefix, prefixes) { - var cloned; - cloned = this.set(this.clone(decl), prefix); - if (!cloned) { - return; - } - if (this.needCascade(decl)) { - cloned.before = this.calcBefore(prefixes, decl, prefix); - } - return decl.parent.insertBefore(decl, cloned); - }; - - Declaration.prototype.add = function(decl, prefix, prefixes) { - var already, prefixed; - prefixed = this.prefixed(decl.prop, prefix); - already = this.all.group(decl).up(function(i) { - return i.prop === prefixed; - }); - if (already || this.otherPrefixes(decl.value, prefix)) { - return; - } - return this.insert(decl, prefix, prefixes); - }; - - Declaration.prototype.process = function(decl) { - var prefixes; - if (this.needCascade(decl)) { - this.restoreBefore(decl); - if (prefixes = Declaration.__super__.process.apply(this, arguments)) { - return decl.before = this.calcBefore(prefixes, decl); - } - } else { - return Declaration.__super__.process.apply(this, arguments); - } - }; - - Declaration.prototype.old = function(prop, prefix) { - return [this.prefixed(prop, prefix)]; - }; - - return Declaration; - - })(Prefixer); - - module.exports = Declaration; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-content.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-content.js deleted file mode 100644 index 74885370..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-content.js +++ /dev/null @@ -1,57 +0,0 @@ -(function() { - var AlignContent, Declaration, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - AlignContent = (function(_super) { - __extends(AlignContent, _super); - - function AlignContent() { - return AlignContent.__super__.constructor.apply(this, arguments); - } - - AlignContent.names = ['align-content', 'flex-line-pack']; - - AlignContent.oldValues = { - 'flex-end': 'end', - 'flex-start': 'start', - 'space-between': 'justify', - 'space-around': 'distribute' - }; - - AlignContent.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012) { - return prefix + 'flex-line-pack'; - } else { - return AlignContent.__super__.prefixed.apply(this, arguments); - } - }; - - AlignContent.prototype.normalize = function(prop) { - return 'align-content'; - }; - - AlignContent.prototype.set = function(decl, prefix) { - var spec; - spec = flexSpec(prefix)[0]; - if (spec === 2012) { - decl.value = AlignContent.oldValues[decl.value] || decl.value; - return AlignContent.__super__.set.call(this, decl, prefix); - } else if (spec === 'final') { - return AlignContent.__super__.set.apply(this, arguments); - } - }; - - return AlignContent; - - })(Declaration); - - module.exports = AlignContent; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-items.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-items.js deleted file mode 100644 index 71144d55..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-items.js +++ /dev/null @@ -1,57 +0,0 @@ -(function() { - var AlignItems, Declaration, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - AlignItems = (function(_super) { - __extends(AlignItems, _super); - - function AlignItems() { - return AlignItems.__super__.constructor.apply(this, arguments); - } - - AlignItems.names = ['align-items', 'flex-align', 'box-align']; - - AlignItems.oldValues = { - 'flex-end': 'end', - 'flex-start': 'start' - }; - - AlignItems.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - return prefix + 'box-align'; - } else if (spec === 2012) { - return prefix + 'flex-align'; - } else { - return AlignItems.__super__.prefixed.apply(this, arguments); - } - }; - - AlignItems.prototype.normalize = function(prop) { - return 'align-items'; - }; - - AlignItems.prototype.set = function(decl, prefix) { - var spec; - spec = flexSpec(prefix)[0]; - if (spec === 2009 || spec === 2012) { - decl.value = AlignItems.oldValues[decl.value] || decl.value; - return AlignItems.__super__.set.call(this, decl, prefix); - } else { - return AlignItems.__super__.set.apply(this, arguments); - } - }; - - return AlignItems; - - })(Declaration); - - module.exports = AlignItems; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-self.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-self.js deleted file mode 100644 index fa7e81ce..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/align-self.js +++ /dev/null @@ -1,55 +0,0 @@ -(function() { - var AlignSelf, Declaration, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - AlignSelf = (function(_super) { - __extends(AlignSelf, _super); - - function AlignSelf() { - return AlignSelf.__super__.constructor.apply(this, arguments); - } - - AlignSelf.names = ['align-self', 'flex-item-align']; - - AlignSelf.oldValues = { - 'flex-end': 'end', - 'flex-start': 'start' - }; - - AlignSelf.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012) { - return prefix + 'flex-item-align'; - } else { - return AlignSelf.__super__.prefixed.apply(this, arguments); - } - }; - - AlignSelf.prototype.normalize = function(prop) { - return 'align-self'; - }; - - AlignSelf.prototype.set = function(decl, prefix) { - var spec; - spec = flexSpec(prefix)[0]; - if (spec === 2012) { - decl.value = AlignSelf.oldValues[decl.value] || decl.value; - return AlignSelf.__super__.set.call(this, decl, prefix); - } else if (spec === 'final') { - return AlignSelf.__super__.set.apply(this, arguments); - } - }; - - return AlignSelf; - - })(Declaration); - - module.exports = AlignSelf; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-image.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-image.js deleted file mode 100644 index 95b430fa..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-image.js +++ /dev/null @@ -1,28 +0,0 @@ -(function() { - var BorderImage, Declaration, - __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; }; - - Declaration = require('../declaration'); - - BorderImage = (function(_super) { - __extends(BorderImage, _super); - - function BorderImage() { - return BorderImage.__super__.constructor.apply(this, arguments); - } - - BorderImage.names = ['border-image']; - - BorderImage.prototype.set = function(decl, prefix) { - decl.value = decl.value.replace(/\s+fill(\s)/, '$1'); - return BorderImage.__super__.set.call(this, decl, prefix); - }; - - return BorderImage; - - })(Declaration); - - module.exports = BorderImage; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-radius.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-radius.js deleted file mode 100644 index 97bcfa31..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/border-radius.js +++ /dev/null @@ -1,56 +0,0 @@ -(function() { - var BorderRadius, Declaration, - __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; }; - - Declaration = require('../declaration'); - - BorderRadius = (function(_super) { - var hor, mozilla, normal, ver, _i, _j, _len, _len1, _ref, _ref1; - - __extends(BorderRadius, _super); - - function BorderRadius() { - return BorderRadius.__super__.constructor.apply(this, arguments); - } - - BorderRadius.names = ['border-radius']; - - BorderRadius.toMozilla = {}; - - BorderRadius.toNormal = {}; - - _ref = ['top', 'bottom']; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - ver = _ref[_i]; - _ref1 = ['left', 'right']; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - hor = _ref1[_j]; - normal = "border-" + ver + "-" + hor + "-radius"; - mozilla = "border-radius-" + ver + hor; - BorderRadius.names.push(normal); - BorderRadius.names.push(mozilla); - BorderRadius.toMozilla[normal] = mozilla; - BorderRadius.toNormal[mozilla] = normal; - } - } - - BorderRadius.prototype.prefixed = function(prop, prefix) { - if (prefix === '-moz-') { - return prefix + (BorderRadius.toMozilla[prop] || prop); - } else { - return BorderRadius.__super__.prefixed.apply(this, arguments); - } - }; - - BorderRadius.prototype.normalize = function(prop) { - return BorderRadius.toNormal[prop] || prop; - }; - - return BorderRadius; - - })(Declaration); - - module.exports = BorderRadius; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/break-inside.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/break-inside.js deleted file mode 100644 index baeafaf4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/break-inside.js +++ /dev/null @@ -1,54 +0,0 @@ -(function() { - var BreakInside, Declaration, - __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; }; - - Declaration = require('../declaration'); - - BreakInside = (function(_super) { - __extends(BreakInside, _super); - - function BreakInside() { - return BreakInside.__super__.constructor.apply(this, arguments); - } - - BreakInside.names = ['break-inside', 'page-break-inside', 'column-break-inside']; - - BreakInside.prototype.prefixed = function(prop, prefix) { - if (prefix === '-webkit-') { - return prefix + 'column-break-inside'; - } else if (prefix === '-moz-') { - return 'page-break-inside'; - } else { - return BreakInside.__super__.prefixed.apply(this, arguments); - } - }; - - BreakInside.prototype.normalize = function() { - return 'break-inside'; - }; - - BreakInside.prototype.set = function(decl, prefix) { - if (decl.value === 'avoid-column' || decl.value === 'avoid-page') { - decl.value = 'avoid'; - } - return BreakInside.__super__.set.apply(this, arguments); - }; - - BreakInside.prototype.insert = function(decl, prefix, prefixes) { - if (decl.value === 'avoid-region') { - - } else if (decl.value === 'avoid-page' && prefix === '-webkit-') { - - } else { - return BreakInside.__super__.insert.apply(this, arguments); - } - }; - - return BreakInside; - - })(Declaration); - - module.exports = BreakInside; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/display-flex.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/display-flex.js deleted file mode 100644 index 4529e356..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/display-flex.js +++ /dev/null @@ -1,70 +0,0 @@ -(function() { - var DisplayFlex, OldDisplayFlex, OldValue, Value, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - OldValue = require('../old-value'); - - Value = require('../value'); - - OldDisplayFlex = (function(_super) { - __extends(OldDisplayFlex, _super); - - function OldDisplayFlex(name) { - this.name = name; - } - - OldDisplayFlex.prototype.check = function(value) { - return value === this.name; - }; - - return OldDisplayFlex; - - })(OldValue); - - DisplayFlex = (function(_super) { - __extends(DisplayFlex, _super); - - DisplayFlex.names = ['display-flex', 'inline-flex']; - - function DisplayFlex(name, prefixes) { - DisplayFlex.__super__.constructor.apply(this, arguments); - if (name === 'display-flex') { - this.name = 'flex'; - } - } - - DisplayFlex.prototype.check = function(decl) { - return decl.value === this.name; - }; - - DisplayFlex.prototype.prefixed = function(prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009 && this.name === 'inline-flex') { - return; - } - return prefix + (spec === 2009 ? 'box' : spec === 2012 ? this.name === 'flex' ? 'flexbox' : 'inline-flexbox' : spec === 'final' ? this.name : void 0); - }; - - DisplayFlex.prototype.replace = function(string, prefix) { - return this.prefixed(prefix); - }; - - DisplayFlex.prototype.old = function(prefix) { - var prefixed; - prefixed = this.prefixed(prefix); - if (prefixed) { - return new OldValue(prefixed); - } - }; - - return DisplayFlex; - - })(Value); - - module.exports = DisplayFlex; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fill-available.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fill-available.js deleted file mode 100644 index f9594652..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fill-available.js +++ /dev/null @@ -1,41 +0,0 @@ -(function() { - var FillAvailable, OldValue, Value, - __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; }; - - OldValue = require('../old-value'); - - Value = require('../value'); - - FillAvailable = (function(_super) { - __extends(FillAvailable, _super); - - function FillAvailable() { - return FillAvailable.__super__.constructor.apply(this, arguments); - } - - FillAvailable.names = ['fill-available']; - - FillAvailable.prototype.replace = function(string, prefix) { - if (prefix === '-moz-') { - return string.replace(this.regexp(), '$1-moz-available$3'); - } else { - return FillAvailable.__super__.replace.apply(this, arguments); - } - }; - - FillAvailable.prototype.old = function(prefix) { - if (prefix === '-moz-') { - return new OldValue('-moz-available'); - } else { - return FillAvailable.__super__.old.apply(this, arguments); - } - }; - - return FillAvailable; - - })(Value); - - module.exports = FillAvailable; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/filter.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/filter.js deleted file mode 100644 index 7a109a78..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/filter.js +++ /dev/null @@ -1,29 +0,0 @@ -(function() { - var Declaration, Filter, - __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; }; - - Declaration = require('../declaration'); - - Filter = (function(_super) { - __extends(Filter, _super); - - function Filter() { - return Filter.__super__.constructor.apply(this, arguments); - } - - Filter.names = ['filter']; - - Filter.prototype.check = function(decl) { - var v; - v = decl.value; - return v.toLowerCase().indexOf('alpha(') === -1 && v.indexOf('DXImageTransform.Microsoft') === -1; - }; - - return Filter; - - })(Declaration); - - module.exports = Filter; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-basis.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-basis.js deleted file mode 100644 index 1aaa3f4c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-basis.js +++ /dev/null @@ -1,47 +0,0 @@ -(function() { - var Declaration, FlexBasis, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - FlexBasis = (function(_super) { - __extends(FlexBasis, _super); - - function FlexBasis() { - return FlexBasis.__super__.constructor.apply(this, arguments); - } - - FlexBasis.names = ['flex-basis', 'flex-preferred-size']; - - FlexBasis.prototype.normalize = function() { - return 'flex-basis'; - }; - - FlexBasis.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012) { - return prefix + 'flex-preferred-size'; - } else { - return FlexBasis.__super__.prefixed.apply(this, arguments); - } - }; - - FlexBasis.prototype.set = function(decl, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012 || spec === 'final') { - return FlexBasis.__super__.set.apply(this, arguments); - } - }; - - return FlexBasis; - - })(Declaration); - - module.exports = FlexBasis; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-direction.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-direction.js deleted file mode 100644 index bf2fd304..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-direction.js +++ /dev/null @@ -1,71 +0,0 @@ -(function() { - var Declaration, FlexDirection, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - FlexDirection = (function(_super) { - __extends(FlexDirection, _super); - - function FlexDirection() { - return FlexDirection.__super__.constructor.apply(this, arguments); - } - - FlexDirection.names = ['flex-direction', 'box-direction', 'box-orient']; - - FlexDirection.prototype.normalize = function(prop) { - return 'flex-direction'; - }; - - FlexDirection.prototype.insert = function(decl, prefix, prefixes) { - var already, cloned, dir, orient, spec, value, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - already = decl.parent.some(function(i) { - return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction'; - }); - if (already) { - return; - } - value = decl.value; - orient = value.indexOf('row') !== -1 ? 'horizontal' : 'vertical'; - dir = value.indexOf('reverse') !== -1 ? 'reverse' : 'normal'; - cloned = this.clone(decl); - cloned.prop = prefix + 'box-orient'; - cloned.value = orient; - if (this.needCascade(decl)) { - cloned.before = this.calcBefore(prefixes, decl, prefix); - } - decl.parent.insertBefore(decl, cloned); - cloned = this.clone(decl); - cloned.prop = prefix + 'box-direction'; - cloned.value = dir; - if (this.needCascade(decl)) { - cloned.before = this.calcBefore(prefixes, decl, prefix); - } - return decl.parent.insertBefore(decl, cloned); - } else { - return FlexDirection.__super__.insert.apply(this, arguments); - } - }; - - FlexDirection.prototype.old = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - return [prefix + 'box-orient', prefix + 'box-direction']; - } else { - return FlexDirection.__super__.old.apply(this, arguments); - } - }; - - return FlexDirection; - - })(Declaration); - - module.exports = FlexDirection; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-flow.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-flow.js deleted file mode 100644 index 011199b4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-flow.js +++ /dev/null @@ -1,35 +0,0 @@ -(function() { - var Declaration, FlexFlow, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - FlexFlow = (function(_super) { - __extends(FlexFlow, _super); - - function FlexFlow() { - return FlexFlow.__super__.constructor.apply(this, arguments); - } - - FlexFlow.names = ['flex-flow']; - - FlexFlow.prototype.set = function(decl, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012) { - return FlexFlow.__super__.set.apply(this, arguments); - } else if (spec === 'final') { - return FlexFlow.__super__.set.apply(this, arguments); - } - }; - - return FlexFlow; - - })(Declaration); - - module.exports = FlexFlow; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-grow.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-grow.js deleted file mode 100644 index 7bbcada7..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-grow.js +++ /dev/null @@ -1,41 +0,0 @@ -(function() { - var Declaration, Flex, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - Flex = (function(_super) { - __extends(Flex, _super); - - function Flex() { - return Flex.__super__.constructor.apply(this, arguments); - } - - Flex.names = ['flex-grow', 'flex-positive']; - - Flex.prototype.normalize = function() { - return 'flex'; - }; - - Flex.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - return prefix + 'box-flex'; - } else if (spec === 2012) { - return prefix + 'flex-positive'; - } else { - return Flex.__super__.prefixed.apply(this, arguments); - } - }; - - return Flex; - - })(Declaration); - - module.exports = Flex; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-shrink.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-shrink.js deleted file mode 100644 index 2b48910c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-shrink.js +++ /dev/null @@ -1,47 +0,0 @@ -(function() { - var Declaration, FlexShrink, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - FlexShrink = (function(_super) { - __extends(FlexShrink, _super); - - function FlexShrink() { - return FlexShrink.__super__.constructor.apply(this, arguments); - } - - FlexShrink.names = ['flex-shrink', 'flex-negative']; - - FlexShrink.prototype.normalize = function() { - return 'flex-shrink'; - }; - - FlexShrink.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012) { - return prefix + 'flex-negative'; - } else { - return FlexShrink.__super__.prefixed.apply(this, arguments); - } - }; - - FlexShrink.prototype.set = function(decl, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2012 || spec === 'final') { - return FlexShrink.__super__.set.apply(this, arguments); - } - }; - - return FlexShrink; - - })(Declaration); - - module.exports = FlexShrink; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-spec.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-spec.js deleted file mode 100644 index 59ec38e9..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-spec.js +++ /dev/null @@ -1,11 +0,0 @@ -(function() { - module.exports = function(prefix) { - var spec; - spec = prefix === '-webkit- 2009' || prefix === '-moz-' ? 2009 : prefix === '-ms-' ? 2012 : prefix === '-webkit-' ? 'final' : void 0; - if (prefix === '-webkit- 2009') { - prefix = '-webkit-'; - } - return [spec, prefix]; - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-wrap.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-wrap.js deleted file mode 100644 index f7ffddc8..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex-wrap.js +++ /dev/null @@ -1,33 +0,0 @@ -(function() { - var Declaration, FlexWrap, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - FlexWrap = (function(_super) { - __extends(FlexWrap, _super); - - function FlexWrap() { - return FlexWrap.__super__.constructor.apply(this, arguments); - } - - FlexWrap.names = ['flex-wrap']; - - FlexWrap.prototype.set = function(decl, prefix) { - var spec; - spec = flexSpec(prefix)[0]; - if (spec !== 2009) { - return FlexWrap.__super__.set.apply(this, arguments); - } - }; - - return FlexWrap; - - })(Declaration); - - module.exports = FlexWrap; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex.js deleted file mode 100644 index 8d634267..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/flex.js +++ /dev/null @@ -1,56 +0,0 @@ -(function() { - var Declaration, Flex, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - Flex = (function(_super) { - __extends(Flex, _super); - - function Flex() { - return Flex.__super__.constructor.apply(this, arguments); - } - - Flex.names = ['flex', 'box-flex']; - - Flex.oldValues = { - 'auto': '1', - 'none': '0' - }; - - Flex.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - return prefix + 'box-flex'; - } else { - return Flex.__super__.prefixed.apply(this, arguments); - } - }; - - Flex.prototype.normalize = function() { - return 'flex'; - }; - - Flex.prototype.set = function(decl, prefix) { - var spec; - spec = flexSpec(prefix)[0]; - if (spec === 2009) { - decl.value = decl.value.split(' ')[0]; - decl.value = Flex.oldValues[decl.value] || decl.value; - return Flex.__super__.set.call(this, decl, prefix); - } else { - return Flex.__super__.set.apply(this, arguments); - } - }; - - return Flex; - - })(Declaration); - - module.exports = Flex; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fullscreen.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fullscreen.js deleted file mode 100644 index f8a601f5..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/fullscreen.js +++ /dev/null @@ -1,33 +0,0 @@ -(function() { - var Fullscreen, Selector, - __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; }; - - Selector = require('../selector'); - - Fullscreen = (function(_super) { - __extends(Fullscreen, _super); - - function Fullscreen() { - return Fullscreen.__super__.constructor.apply(this, arguments); - } - - Fullscreen.names = [':fullscreen']; - - Fullscreen.prototype.prefixed = function(prefix) { - if ('-webkit-' === prefix) { - return ':-webkit-full-screen'; - } else if ('-moz-' === prefix) { - return ':-moz-full-screen'; - } else { - return ":" + prefix + "fullscreen"; - } - }; - - return Fullscreen; - - })(Selector); - - module.exports = Fullscreen; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/gradient.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/gradient.js deleted file mode 100644 index 3701fbce..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/gradient.js +++ /dev/null @@ -1,213 +0,0 @@ -(function() { - var Gradient, OldValue, Value, isDirection, list, utils, - __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; }; - - OldValue = require('../old-value'); - - Value = require('../value'); - - utils = require('../utils'); - - list = require('postcss/lib/list'); - - isDirection = /top|left|right|bottom/gi; - - Gradient = (function(_super) { - __extends(Gradient, _super); - - function Gradient() { - return Gradient.__super__.constructor.apply(this, arguments); - } - - Gradient.names = ['linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient']; - - Gradient.prototype.replace = function(string, prefix) { - var values; - values = list.comma(string).map((function(_this) { - return function(value) { - var after, args, close, params; - if (value.slice(0, +_this.name.length + 1 || 9e9) !== _this.name + '(') { - return value; - } - close = value.lastIndexOf(')'); - after = value.slice(close + 1); - args = value.slice(_this.name.length + 1, +(close - 1) + 1 || 9e9); - params = list.comma(args); - params = _this.newDirection(params); - if (prefix === '-webkit- old') { - return _this.oldWebkit(value, args, params, after); - } else { - _this.convertDirection(params); - return prefix + _this.name + '(' + params.join(', ') + ')' + after; - } - }; - })(this)); - return values.join(', '); - }; - - Gradient.prototype.directions = { - top: 'bottom', - left: 'right', - bottom: 'top', - right: 'left' - }; - - Gradient.prototype.oldDirections = { - 'top': 'left bottom, left top', - 'left': 'right top, left top', - 'bottom': 'left top, left bottom', - 'right': 'left top, right top', - 'top right': 'left bottom, right top', - 'top left': 'right bottom, left top', - 'bottom right': 'left top, right bottom', - 'bottom left': 'right top, left bottom' - }; - - Gradient.prototype.newDirection = function(params) { - var first, value; - first = params[0]; - if (first.indexOf('to ') === -1 && isDirection.test(first)) { - first = first.split(' '); - first = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = first.length; _i < _len; _i++) { - value = first[_i]; - _results.push(this.directions[value.toLowerCase()] || value); - } - return _results; - }).call(this); - params[0] = 'to ' + first.join(' '); - } - return params; - }; - - Gradient.prototype.oldWebkit = function(value, args, params, after) { - if (this.name !== 'linear-gradient') { - return value; - } - if (params[0] && params[0].indexOf('deg') !== -1) { - return value; - } - if (args.indexOf('-corner') !== -1) { - return value; - } - if (args.indexOf('-side') !== -1) { - return value; - } - params = this.oldDirection(params); - params = this.colorStops(params); - return '-webkit-gradient(linear, ' + params.join(', ') + ')' + after; - }; - - Gradient.prototype.convertDirection = function(params) { - if (params.length > 0) { - if (params[0].slice(0, 3) === 'to ') { - return params[0] = this.fixDirection(params[0]); - } else if (params[0].indexOf('deg') !== -1) { - return params[0] = this.fixAngle(params[0]); - } else if (params[0].indexOf(' at ') !== -1) { - return this.fixRadial(params); - } - } - }; - - Gradient.prototype.fixDirection = function(param) { - var value; - param = param.split(' '); - param.splice(0, 1); - param = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = param.length; _i < _len; _i++) { - value = param[_i]; - _results.push(this.directions[value.toLowerCase()] || value); - } - return _results; - }).call(this); - return param.join(' '); - }; - - Gradient.prototype.roundFloat = function(float, digits) { - return parseFloat(float.toFixed(digits)); - }; - - Gradient.prototype.fixAngle = function(param) { - param = parseFloat(param); - param = Math.abs(450 - param) % 360; - param = this.roundFloat(param, 3); - return "" + param + "deg"; - }; - - Gradient.prototype.oldDirection = function(params) { - var direction; - if (params.length === 0) { - params; - } - if (params[0].indexOf('to ') !== -1) { - direction = params[0].replace(/^to\s+/, ''); - direction = this.oldDirections[direction]; - params[0] = direction; - return params; - } else { - direction = this.oldDirections.bottom; - return [direction].concat(params); - } - }; - - Gradient.prototype.colorStops = function(params) { - return params.map(function(param, i) { - var color, position, separator; - if (i === 0) { - return param; - } - separator = param.lastIndexOf(' '); - if (separator === -1) { - color = param; - position = void 0; - } else { - color = param.slice(0, separator); - position = param.slice(separator + 1); - } - if (position && position.indexOf(')') !== -1) { - color += ' ' + position; - position = void 0; - } - if (i === 1) { - return "from(" + color + ")"; - } else if (i === params.length - 1) { - return "to(" + color + ")"; - } else if (position) { - return "color-stop(" + position + ", " + color + ")"; - } else { - return "color-stop(" + color + ")"; - } - }); - }; - - Gradient.prototype.fixRadial = function(params) { - var first; - first = params[0].split(/\s+at\s+/); - return params.splice(0, 1, first[1], first[0]); - }; - - Gradient.prototype.old = function(prefix) { - var regexp, string, type; - if (prefix === '-webkit-') { - type = this.name === 'linear-gradient' ? 'linear' : 'radial'; - string = '-gradient'; - regexp = utils.regexp("-webkit-(" + type + "-gradient|gradient\\(\\s*" + type + ")", false); - return new OldValue(prefix + this.name, string, regexp); - } else { - return Gradient.__super__.old.apply(this, arguments); - } - }; - - return Gradient; - - })(Value); - - module.exports = Gradient; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/justify-content.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/justify-content.js deleted file mode 100644 index 1a7554b8..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/justify-content.js +++ /dev/null @@ -1,62 +0,0 @@ -(function() { - var Declaration, JustifyContent, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - JustifyContent = (function(_super) { - __extends(JustifyContent, _super); - - function JustifyContent() { - return JustifyContent.__super__.constructor.apply(this, arguments); - } - - JustifyContent.names = ['justify-content', 'flex-pack', 'box-pack']; - - JustifyContent.oldValues = { - 'flex-end': 'end', - 'flex-start': 'start', - 'space-between': 'justify', - 'space-around': 'distribute' - }; - - JustifyContent.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - return prefix + 'box-pack'; - } else if (spec === 2012) { - return prefix + 'flex-pack'; - } else { - return JustifyContent.__super__.prefixed.apply(this, arguments); - } - }; - - JustifyContent.prototype.normalize = function(prop) { - return 'justify-content'; - }; - - JustifyContent.prototype.set = function(decl, prefix) { - var spec, value; - spec = flexSpec(prefix)[0]; - if (spec === 2009 || spec === 2012) { - value = JustifyContent.oldValues[decl.value] || decl.value; - decl.value = value; - if (spec !== 2009 || value !== 'distribute') { - return JustifyContent.__super__.set.call(this, decl, prefix); - } - } else if (spec === 'final') { - return JustifyContent.__super__.set.apply(this, arguments); - } - }; - - return JustifyContent; - - })(Declaration); - - module.exports = JustifyContent; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/order.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/order.js deleted file mode 100644 index 4a1c619c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/order.js +++ /dev/null @@ -1,52 +0,0 @@ -(function() { - var Declaration, Order, flexSpec, - __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; }; - - flexSpec = require('./flex-spec'); - - Declaration = require('../declaration'); - - Order = (function(_super) { - __extends(Order, _super); - - function Order() { - return Order.__super__.constructor.apply(this, arguments); - } - - Order.names = ['order', 'flex-order', 'box-ordinal-group']; - - Order.prototype.prefixed = function(prop, prefix) { - var spec, _ref; - _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; - if (spec === 2009) { - return prefix + 'box-ordinal-group'; - } else if (spec === 2012) { - return prefix + 'flex-order'; - } else { - return Order.__super__.prefixed.apply(this, arguments); - } - }; - - Order.prototype.normalize = function(prop) { - return 'order'; - }; - - Order.prototype.set = function(decl, prefix) { - var spec; - spec = flexSpec(prefix)[0]; - if (spec === 2009) { - decl.value = (parseInt(decl.value) + 1).toString(); - return Order.__super__.set.call(this, decl, prefix); - } else { - return Order.__super__.set.apply(this, arguments); - } - }; - - return Order; - - })(Declaration); - - module.exports = Order; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/placeholder.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/placeholder.js deleted file mode 100644 index 16b9f3b4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/placeholder.js +++ /dev/null @@ -1,39 +0,0 @@ -(function() { - var Placeholder, Selector, - __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; }; - - Selector = require('../selector'); - - Placeholder = (function(_super) { - __extends(Placeholder, _super); - - function Placeholder() { - return Placeholder.__super__.constructor.apply(this, arguments); - } - - Placeholder.names = ['::placeholder']; - - Placeholder.prototype.possible = function() { - return Placeholder.__super__.possible.apply(this, arguments).concat('-moz- old'); - }; - - Placeholder.prototype.prefixed = function(prefix) { - if ('-webkit-' === prefix) { - return '::-webkit-input-placeholder'; - } else if ('-ms-' === prefix) { - return ':-ms-input-placeholder'; - } else if ('-moz- old' === prefix) { - return ':-moz-placeholder'; - } else { - return "::" + prefix + "placeholder"; - } - }; - - return Placeholder; - - })(Selector); - - module.exports = Placeholder; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transform.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transform.js deleted file mode 100644 index dd1e456a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transform.js +++ /dev/null @@ -1,31 +0,0 @@ -(function() { - var Transform, Value, - __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; }; - - Value = require('../value'); - - Transform = (function(_super) { - __extends(Transform, _super); - - function Transform() { - return Transform.__super__.constructor.apply(this, arguments); - } - - Transform.names = ['transform']; - - Transform.prototype.replace = function(value, prefix) { - if (prefix === '-ms-') { - return value; - } else { - return Transform.__super__.replace.apply(this, arguments); - } - }; - - return Transform; - - })(Value); - - module.exports = Transform; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transition.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transition.js deleted file mode 100644 index 70306f30..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/hacks/transition.js +++ /dev/null @@ -1,37 +0,0 @@ -(function() { - var OldValue, Transition, Value, - __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; }; - - OldValue = require('../old-value'); - - Value = require('../value'); - - Transition = (function(_super) { - __extends(Transition, _super); - - function Transition() { - return Transition.__super__.constructor.apply(this, arguments); - } - - Transition.names = ['flex', 'flex-grow', 'flex-shrink', 'flex-basis']; - - Transition.prototype.prefixed = function(prefix) { - return this.all.prefixed(this.name, prefix); - }; - - Transition.prototype.replace = function(string, prefix) { - return string.replace(this.regexp(), '$1' + this.prefixed(prefix) + '$3'); - }; - - Transition.prototype.old = function(prefix) { - return new OldValue(this.prefixed(prefix)); - }; - - return Transition; - - })(Value); - - module.exports = Transition; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/info.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/info.js deleted file mode 100644 index c097a1b2..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/info.js +++ /dev/null @@ -1,114 +0,0 @@ -(function() { - var capitalize, names, prefix; - - capitalize = function(str) { - return str.slice(0, 1).toUpperCase() + str.slice(1); - }; - - names = { - ie: 'IE', - ff: 'Firefox', - ios: 'iOS' - }; - - prefix = function(name, transition, prefixes) { - var out; - out = ' ' + name + (transition ? '*' : '') + ': '; - out += prefixes.map(function(i) { - return i.replace(/^-(.*)-$/g, '$1'); - }).join(', '); - out += "\n"; - return out; - }; - - module.exports = function(prefixes) { - var atrules, browser, data, list, name, needTransition, out, props, selector, selectors, string, transitionProp, useTransition, value, values, version, versions, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6; - if (prefixes.browsers.selected.length === 0) { - return "No browsers selected"; - } - versions = []; - _ref = prefixes.browsers.selected; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - browser = _ref[_i]; - _ref1 = browser.split(' '), name = _ref1[0], version = _ref1[1]; - name = names[name] || capitalize(name); - if (versions[name]) { - versions[name].push(version); - } else { - versions[name] = [version]; - } - } - out = "Browsers:\n"; - for (browser in versions) { - list = versions[browser]; - list = list.sort(function(a, b) { - return parseFloat(b) - parseFloat(a); - }); - out += ' ' + browser + ': ' + list.join(', ') + "\n"; - } - atrules = ''; - _ref2 = prefixes.add; - for (name in _ref2) { - data = _ref2[name]; - if (name[0] === '@' && data.prefixes) { - atrules += prefix(name, false, data.prefixes); - } - } - if (atrules !== '') { - out += "\nAt-Rules:\n" + atrules; - } - selectors = ''; - _ref3 = prefixes.add.selectors; - for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) { - selector = _ref3[_j]; - if (selector.prefixes) { - selectors += prefix(selector.name, false, selector.prefixes); - } - } - if (selectors !== '') { - out += "\nSelectors:\n" + selectors; - } - values = ''; - props = ''; - useTransition = false; - needTransition = (_ref4 = prefixes.add.transition) != null ? _ref4.prefixes : void 0; - _ref5 = prefixes.add; - for (name in _ref5) { - data = _ref5[name]; - if (name[0] !== '@' && data.prefixes) { - transitionProp = needTransition && prefixes.data[name].transition; - if (transitionProp) { - useTransition = true; - } - props += prefix(name, transitionProp, data.prefixes); - } - if (!data.values) { - continue; - } - if (prefixes.transitionProps.some(function(i) { - return i === name; - })) { - continue; - } - _ref6 = data.values; - for (_k = 0, _len2 = _ref6.length; _k < _len2; _k++) { - value = _ref6[_k]; - string = prefix(value.name, false, value.prefixes); - if (values.indexOf(string) === -1) { - values += string; - } - } - } - if (useTransition) { - props += " * - can be used in transition\n"; - } - if (props !== '') { - out += "\nProperties:\n" + props; - } - if (values !== '') { - out += "\nValues:\n" + values; - } - return out; - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/keyframes.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/keyframes.js deleted file mode 100644 index 60f2850e..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/keyframes.js +++ /dev/null @@ -1,40 +0,0 @@ -(function() { - var Keyframes, Prefixer, - __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; }; - - Prefixer = require('./prefixer'); - - Keyframes = (function(_super) { - __extends(Keyframes, _super); - - function Keyframes() { - return Keyframes.__super__.constructor.apply(this, arguments); - } - - Keyframes.prototype.check = function(atRule) { - return atRule.name === 'keyframes'; - }; - - Keyframes.prototype.add = function(atRule, prefix) { - var already, cloned, prefixed; - prefixed = prefix + atRule.name; - already = atRule.parent.some(function(i) { - return i.name === prefixed && i.params === atRule.params; - }); - if (already) { - return; - } - cloned = this.clone(atRule, { - name: prefixed - }); - return atRule.parent.insertBefore(atRule, cloned); - }; - - return Keyframes; - - })(Prefixer); - - module.exports = Keyframes; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-selector.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-selector.js deleted file mode 100644 index 185892e9..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-selector.js +++ /dev/null @@ -1,68 +0,0 @@ -(function() { - var OldSelector; - - OldSelector = (function() { - function OldSelector(selector, prefix) { - var _i, _len, _ref; - this.prefix = prefix; - this.prefixed = selector.prefixed(this.prefix); - this.regexp = selector.regexp(this.prefix); - this.prefixeds = []; - _ref = selector.possible(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - prefix = _ref[_i]; - this.prefixeds.push([selector.prefixed(prefix), selector.regexp(prefix)]); - } - this.unprefixed = selector.name; - this.nameRegexp = selector.regexp(); - } - - OldSelector.prototype.isHack = function(rule) { - var before, index, regexp, rules, some, string, _i, _len, _ref, _ref1; - index = rule.parent.index(rule) + 1; - rules = rule.parent.rules; - while (index < rules.length) { - before = rules[index].selector; - if (!before) { - return true; - } - if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) { - return false; - } - some = false; - _ref = this.prefixeds; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - _ref1 = _ref[_i], string = _ref1[0], regexp = _ref1[1]; - if (before.indexOf(string) !== -1 && before.match(regexp)) { - some = true; - break; - } - } - if (!some) { - return true; - } - index += 1; - } - return true; - }; - - OldSelector.prototype.check = function(rule) { - if (rule.selector.indexOf(this.prefixed) === -1) { - return false; - } - if (!rule.selector.match(this.regexp)) { - return false; - } - if (this.isHack(rule)) { - return false; - } - return true; - }; - - return OldSelector; - - })(); - - module.exports = OldSelector; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-value.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-value.js deleted file mode 100644 index 38819e2c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/old-value.js +++ /dev/null @@ -1,29 +0,0 @@ -(function() { - var OldValue, utils; - - utils = require('./utils'); - - OldValue = (function() { - function OldValue(name, string, regexp) { - this.name = name; - this.string = string; - this.regexp = regexp; - this.regexp || (this.regexp = utils.regexp(this.name)); - this.string || (this.string = this.name); - } - - OldValue.prototype.check = function(value) { - if (value.indexOf(this.string) !== -1) { - return !!value.match(this.regexp); - } else { - return false; - } - }; - - return OldValue; - - })(); - - module.exports = OldValue; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixer.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixer.js deleted file mode 100644 index 0dc8041d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixer.js +++ /dev/null @@ -1,88 +0,0 @@ -(function() { - var Browsers, Prefixer, utils, vendor; - - Browsers = require('./browsers'); - - vendor = require('postcss/lib/vendor'); - - utils = require('./utils'); - - Prefixer = (function() { - Prefixer.hack = function(klass) { - var name, _i, _len, _ref, _results; - this.hacks || (this.hacks = {}); - _ref = klass.names; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - _results.push(this.hacks[name] = klass); - } - return _results; - }; - - Prefixer.load = function(name, prefixes, all) { - var klass, _ref; - klass = (_ref = this.hacks) != null ? _ref[name] : void 0; - if (klass) { - return new klass(name, prefixes, all); - } else { - return new this(name, prefixes, all); - } - }; - - Prefixer.clone = function(node, overrides) { - var cloned; - cloned = node.clone(overrides); - delete cloned._autoprefixerPrefix; - delete cloned._autoprefixerValues; - return cloned; - }; - - function Prefixer(name, prefixes, all) { - this.name = name; - this.prefixes = prefixes; - this.all = all; - } - - Prefixer.prototype.parentPrefix = function(node) { - var prefix; - prefix = node._autoprefixerPrefix != null ? node._autoprefixerPrefix : node.type === 'decl' && node.prop[0] === '-' ? vendor.prefix(node.prop) : node.type === 'root' ? false : node.type === 'rule' && node.selector.indexOf(':-') !== -1 ? node.selector.match(/:(-\w+-)/)[1] : node.type === 'atrule' && node.name[0] === '-' ? vendor.prefix(node.name) : this.parentPrefix(node.parent); - if (Browsers.prefixes().indexOf(prefix) === -1) { - prefix = false; - } - return node._autoprefixerPrefix = prefix; - }; - - Prefixer.prototype.process = function(node) { - var parent, prefix, prefixes, _i, _j, _len, _len1, _ref; - if (!this.check(node)) { - return; - } - parent = this.parentPrefix(node); - prefixes = []; - _ref = this.prefixes; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - prefix = _ref[_i]; - if (parent && parent !== utils.removeNote(prefix)) { - continue; - } - prefixes.push(prefix); - } - for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) { - prefix = prefixes[_j]; - this.add(node, prefix, prefixes); - } - return prefixes; - }; - - Prefixer.prototype.clone = function(node, overrides) { - return Prefixer.clone(node, overrides); - }; - - return Prefixer; - - })(); - - module.exports = Prefixer; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixes.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixes.js deleted file mode 100644 index 015c9afa..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/prefixes.js +++ /dev/null @@ -1,332 +0,0 @@ -(function() { - var Browsers, Declaration, Keyframes, Prefixes, Processor, Selector, Value, declsCache, utils, vendor; - - utils = require('./utils'); - - vendor = require('postcss/lib/vendor'); - - Declaration = require('./declaration'); - - Processor = require('./processor'); - - Keyframes = require('./keyframes'); - - Browsers = require('./browsers'); - - Selector = require('./selector'); - - Value = require('./value'); - - Selector.hack(require('./hacks/fullscreen')); - - Selector.hack(require('./hacks/placeholder')); - - Declaration.hack(require('./hacks/flex')); - - Declaration.hack(require('./hacks/order')); - - Declaration.hack(require('./hacks/filter')); - - Declaration.hack(require('./hacks/flex-flow')); - - Declaration.hack(require('./hacks/flex-grow')); - - Declaration.hack(require('./hacks/flex-wrap')); - - Declaration.hack(require('./hacks/align-self')); - - Declaration.hack(require('./hacks/flex-basis')); - - Declaration.hack(require('./hacks/align-items')); - - Declaration.hack(require('./hacks/flex-shrink')); - - Declaration.hack(require('./hacks/break-inside')); - - Declaration.hack(require('./hacks/border-image')); - - Declaration.hack(require('./hacks/align-content')); - - Declaration.hack(require('./hacks/border-radius')); - - Declaration.hack(require('./hacks/flex-direction')); - - Declaration.hack(require('./hacks/justify-content')); - - Value.hack(require('./hacks/gradient')); - - Value.hack(require('./hacks/transform')); - - Value.hack(require('./hacks/transition')); - - Value.hack(require('./hacks/display-flex')); - - Value.hack(require('./hacks/fill-available')); - - declsCache = {}; - - Prefixes = (function() { - function Prefixes(data, browsers, options) { - var _ref; - this.data = data; - this.browsers = browsers; - this.options = options != null ? options : {}; - _ref = this.preprocess(this.select(this.data)), this.add = _ref[0], this.remove = _ref[1]; - this.processor = new Processor(this); - } - - Prefixes.prototype.transitionProps = ['transition', 'transition-property']; - - Prefixes.prototype.select = function(list) { - var add, all, data, name, notes, selected; - selected = { - add: {}, - remove: {} - }; - for (name in list) { - data = list[name]; - add = data.browsers.map(function(i) { - var params; - params = i.split(' '); - return { - browser: params[0] + ' ' + params[1], - note: params[2] - }; - }); - notes = add.filter(function(i) { - return i.note; - }).map((function(_this) { - return function(i) { - return _this.browsers.prefix(i.browser) + ' ' + i.note; - }; - })(this)); - notes = utils.uniq(notes); - add = add.filter((function(_this) { - return function(i) { - return _this.browsers.isSelected(i.browser); - }; - })(this)).map((function(_this) { - return function(i) { - var prefix; - prefix = _this.browsers.prefix(i.browser); - if (i.note) { - return prefix + ' ' + i.note; - } else { - return prefix; - } - }; - })(this)); - add = this.sort(utils.uniq(add)); - all = data.browsers.map((function(_this) { - return function(i) { - return _this.browsers.prefix(i); - }; - })(this)); - if (data.mistakes) { - all = all.concat(data.mistakes); - } - all = all.concat(notes); - all = utils.uniq(all); - if (add.length) { - selected.add[name] = add; - if (add.length < all.length) { - selected.remove[name] = all.filter(function(i) { - return add.indexOf(i) === -1; - }); - } - } else { - selected.remove[name] = all; - } - } - return selected; - }; - - Prefixes.prototype.sort = function(prefixes) { - return prefixes.sort(function(a, b) { - var aLength, bLength; - aLength = utils.removeNote(a).length; - bLength = utils.removeNote(b).length; - if (aLength === bLength) { - return b.length - a.length; - } else { - return bLength - aLength; - } - }); - }; - - Prefixes.prototype.preprocess = function(selected) { - var add, name, old, olds, prefix, prefixed, prefixes, prop, props, remove, selector, value, values, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2; - add = { - selectors: [] - }; - _ref = selected.add; - for (name in _ref) { - prefixes = _ref[name]; - if (name === '@keyframes') { - add[name] = new Keyframes(name, prefixes, this); - } else if (this.data[name].selector) { - add.selectors.push(Selector.load(name, prefixes, this)); - } else { - props = this.data[name].transition ? this.transitionProps : this.data[name].props; - if (props) { - value = Value.load(name, prefixes, this); - for (_i = 0, _len = props.length; _i < _len; _i++) { - prop = props[_i]; - if (!add[prop]) { - add[prop] = { - values: [] - }; - } - add[prop].values.push(value); - } - } - if (!this.data[name].props) { - values = ((_ref1 = add[name]) != null ? _ref1.values : void 0) || []; - add[name] = Declaration.load(name, prefixes, this); - add[name].values = values; - } - } - } - remove = { - selectors: [] - }; - _ref2 = selected.remove; - for (name in _ref2) { - prefixes = _ref2[name]; - if (this.data[name].selector) { - selector = Selector.load(name, prefixes); - for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) { - prefix = prefixes[_j]; - remove.selectors.push(selector.old(prefix)); - } - } else if (name[0] === '@') { - for (_k = 0, _len2 = prefixes.length; _k < _len2; _k++) { - prefix = prefixes[_k]; - prefixed = '@' + prefix + name.slice(1); - remove[prefixed] = { - remove: true - }; - } - } else { - props = this.data[name].transition ? this.transitionProps : this.data[name].props; - if (props) { - value = Value.load(name, [], this); - for (_l = 0, _len3 = prefixes.length; _l < _len3; _l++) { - prefix = prefixes[_l]; - old = value.old(prefix); - if (old) { - for (_m = 0, _len4 = props.length; _m < _len4; _m++) { - prop = props[_m]; - if (!remove[prop]) { - remove[prop] = {}; - } - if (!remove[prop].values) { - remove[prop].values = []; - } - remove[prop].values.push(old); - } - } - } - } - if (!this.data[name].props) { - for (_n = 0, _len5 = prefixes.length; _n < _len5; _n++) { - prefix = prefixes[_n]; - prop = vendor.unprefixed(name); - olds = this.decl(name).old(name, prefix); - for (_o = 0, _len6 = olds.length; _o < _len6; _o++) { - prefixed = olds[_o]; - if (!remove[prefixed]) { - remove[prefixed] = {}; - } - remove[prefixed].remove = true; - } - } - } - } - } - return [add, remove]; - }; - - Prefixes.prototype.decl = function(prop) { - var decl; - decl = declsCache[prop]; - if (decl) { - return decl; - } else { - return declsCache[prop] = Declaration.load(prop); - } - }; - - Prefixes.prototype.unprefixed = function(prop) { - prop = vendor.unprefixed(prop); - return this.decl(prop).normalize(prop); - }; - - Prefixes.prototype.prefixed = function(prop, prefix) { - prop = vendor.unprefixed(prop); - return this.decl(prop).prefixed(prop, prefix); - }; - - Prefixes.prototype.values = function(type, prop) { - var data, global, values, _ref, _ref1; - data = this[type]; - global = (_ref = data['*']) != null ? _ref.values : void 0; - values = (_ref1 = data[prop]) != null ? _ref1.values : void 0; - if (global && values) { - return utils.uniq(global.concat(values)); - } else { - return global || values || []; - } - }; - - Prefixes.prototype.group = function(decl) { - var checker, index, length, rule, unprefixed; - rule = decl.parent; - index = rule.index(decl); - length = rule.decls.length; - unprefixed = this.unprefixed(decl.prop); - checker = (function(_this) { - return function(step, callback) { - var other; - index += step; - while (index >= 0 && index < length) { - other = rule.decls[index]; - if (other.type === 'decl') { - if (step === -1 && other.prop === unprefixed) { - if (!Browsers.withPrefix(other.value)) { - break; - } - } - if (_this.unprefixed(other.prop) !== unprefixed) { - break; - } else if (callback(other) === true) { - return true; - } - if (step === +1 && other.prop === unprefixed) { - if (!Browsers.withPrefix(other.value)) { - break; - } - } - } - index += step; - } - return false; - }; - })(this); - return { - up: function(callback) { - return checker(-1, callback); - }, - down: function(callback) { - return checker(+1, callback); - } - }; - }; - - return Prefixes; - - })(); - - module.exports = Prefixes; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/processor.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/processor.js deleted file mode 100644 index 78e06eea..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/processor.js +++ /dev/null @@ -1,105 +0,0 @@ -(function() { - var Processor, Value, utils, vendor; - - vendor = require('postcss/lib/vendor'); - - Value = require('./value'); - - utils = require('./utils'); - - Processor = (function() { - function Processor(prefixes) { - this.prefixes = prefixes; - } - - Processor.prototype.add = function(css) { - var prefixer, selector, _i, _len, _ref; - prefixer = this.prefixes.add['@keyframes']; - if (prefixer) { - css.eachAtRule(function(rule) { - return prefixer.process(rule); - }); - } - _ref = this.prefixes.add.selectors; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - selector = _ref[_i]; - css.eachRule(function(rule) { - return selector.process(rule); - }); - } - css.eachDecl((function(_this) { - return function(decl) { - var prefix; - prefix = _this.prefixes.add[decl.prop]; - if (prefix && prefix.prefixes) { - return prefix.process(decl); - } - }; - })(this)); - return css.eachDecl((function(_this) { - return function(decl) { - var unprefixed, value, _j, _len1, _ref1; - unprefixed = _this.prefixes.unprefixed(decl.prop); - _ref1 = _this.prefixes.values('add', unprefixed); - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - value = _ref1[_j]; - value.process(decl); - } - return Value.save(_this.prefixes, decl); - }; - })(this)); - }; - - Processor.prototype.remove = function(css) { - var checker, _i, _len, _ref; - css.eachAtRule((function(_this) { - return function(rule, i) { - if (_this.prefixes.remove['@' + rule.name]) { - return rule.parent.remove(i); - } - }; - })(this)); - _ref = this.prefixes.remove.selectors; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - checker = _ref[_i]; - css.eachRule((function(_this) { - return function(rule, i) { - if (checker.check(rule)) { - return rule.parent.remove(i); - } - }; - })(this)); - } - return css.eachDecl((function(_this) { - return function(decl, i) { - var notHack, rule, unprefixed, _j, _len1, _ref1, _ref2; - rule = decl.parent; - unprefixed = _this.prefixes.unprefixed(decl.prop); - if ((_ref1 = _this.prefixes.remove[decl.prop]) != null ? _ref1.remove : void 0) { - notHack = _this.prefixes.group(decl).down(function(i) { - return i.prop === unprefixed; - }); - if (notHack) { - rule.remove(i); - return; - } - } - _ref2 = _this.prefixes.values('remove', unprefixed); - for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { - checker = _ref2[_j]; - if (checker.check(decl.value)) { - rule.remove(i); - return; - } - } - }; - })(this)); - }; - - return Processor; - - })(); - - module.exports = Processor; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/selector.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/selector.js deleted file mode 100644 index 042137f2..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/selector.js +++ /dev/null @@ -1,117 +0,0 @@ -(function() { - var Browsers, OldSelector, Prefixer, Selector, utils, - __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; }; - - OldSelector = require('./old-selector'); - - Prefixer = require('./prefixer'); - - Browsers = require('./browsers'); - - utils = require('./utils'); - - Selector = (function(_super) { - __extends(Selector, _super); - - function Selector(name, prefixes, all) { - this.name = name; - this.prefixes = prefixes; - this.all = all; - this.regexpCache = {}; - } - - Selector.prototype.check = function(rule) { - if (rule.selector.indexOf(this.name) !== -1) { - return !!rule.selector.match(this.regexp()); - } else { - return false; - } - }; - - Selector.prototype.prefixed = function(prefix) { - return this.name.replace(/^([^\w]*)/, '$1' + prefix); - }; - - Selector.prototype.regexp = function(prefix) { - var name; - if (this.regexpCache[prefix]) { - return this.regexpCache[prefix]; - } - name = prefix ? this.prefixed(prefix) : this.name; - return this.regexpCache[prefix] = RegExp("(^|[^:\"'=])" + (utils.escapeRegexp(name)), "gi"); - }; - - Selector.prototype.possible = function() { - return Browsers.prefixes(); - }; - - Selector.prototype.prefixeds = function(rule) { - var prefix, prefixeds, _i, _len, _ref; - if (rule._autoprefixerPrefixeds) { - return rule._autoprefixerPrefixeds; - } - prefixeds = {}; - _ref = this.possible(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - prefix = _ref[_i]; - prefixeds[prefix] = this.replace(rule.selector, prefix); - } - return rule._autoprefixerPrefixeds = prefixeds; - }; - - Selector.prototype.already = function(rule, prefixeds, prefix) { - var before, index, key, prefixed, some; - index = rule.parent.index(rule) - 1; - while (index >= 0) { - before = rule.parent.rules[index]; - if (before.type !== 'rule') { - return false; - } - some = false; - for (key in prefixeds) { - prefixed = prefixeds[key]; - if (before.selector === prefixed) { - if (prefix === key) { - return true; - } else { - some = true; - break; - } - } - } - if (!some) { - return false; - } - index -= 1; - } - return false; - }; - - Selector.prototype.replace = function(selector, prefix) { - return selector.replace(this.regexp(), '$1' + this.prefixed(prefix)); - }; - - Selector.prototype.add = function(rule, prefix) { - var cloned, prefixeds; - prefixeds = this.prefixeds(rule); - if (this.already(rule, prefixeds, prefix)) { - return; - } - cloned = this.clone(rule, { - selector: prefixeds[prefix] - }); - return rule.parent.insertBefore(rule, cloned); - }; - - Selector.prototype.old = function(prefix) { - return new OldSelector(this, prefix); - }; - - return Selector; - - })(Prefixer); - - module.exports = Selector; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/updater.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/updater.js deleted file mode 100644 index 3563d588..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/updater.js +++ /dev/null @@ -1,232 +0,0 @@ -(function() { - var coffee, fs, https; - - coffee = require('coffee-script'); - - https = require('https'); - - fs = require('fs'); - - module.exports = { - browsers: { - firefox: 'ff', - chrome: 'chrome', - safari: 'safari', - ios_saf: 'ios', - opera: 'opera', - ie: 'ie', - bb: 'bb', - android: 'android' - }, - run: function() { - var i, updaters, _i, _len, _ref, _results; - updaters = __dirname + '/../updaters/'; - _ref = fs.readdirSync(updaters).sort(); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - i = _ref[_i]; - if (!i.match(/\.(coffee|js)$/)) { - continue; - } - _results.push(require(updaters + i).apply(this)); - } - return _results; - }, - requests: 0, - doneCallbacks: [], - requestCallbacks: [], - done: function(callback) { - this.doneCallbacks || (this.doneCallbacks = []); - return this.doneCallbacks.push(callback); - }, - error: function(message) { - process.stderr.write("\n" + message + "\n"); - return process.exit(1); - }, - request: function(callback) { - this.requestCallbacks || (this.requestCallbacks = []); - return this.requestCallbacks.push(callback); - }, - github: function(path, callback) { - this.requests += 1; - return https.get("https://raw.github.com/" + path, (function(_this) { - return function(res) { - var data; - data = ''; - res.on('data', function(chunk) { - return data += chunk; - }); - return res.on('end', function() { - var e, func, title, _i, _j, _len, _len1, _ref, _ref1, _results; - try { - callback(JSON.parse(data)); - } catch (_error) { - e = _error; - title = data.match(/([^<]+)<\/title>/); - if (title) { - _this.error("" + title[1] + " on " + path); - } else { - _this.error("Parsing error in " + path + ":\n" + e.message); - } - } - _this.requests -= 1; - _ref = _this.requestCallbacks; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - func = _ref[_i]; - func(); - } - if (_this.requests === 0) { - _ref1 = _this.doneCallbacks.reverse(); - _results = []; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - func = _ref1[_j]; - _results.push(func()); - } - return _results; - } - }); - }; - })(this)); - }, - sort: function(browsers) { - return browsers.sort(function(a, b) { - a = a.split(' '); - b = b.split(' '); - if (a[0] > b[0]) { - return 1; - } else if (a[0] < b[0]) { - return -1; - } else { - return parseFloat(a[1]) - parseFloat(b[1]); - } - }); - }, - parse: function(data, opts) { - var browser, interval, match, need, support, version, versions, _i, _len, _ref, _ref1; - match = opts.full ? /y\sx($|\s)/ : /\sx($|\s)/; - need = []; - _ref = data.stats; - for (browser in _ref) { - versions = _ref[browser]; - for (interval in versions) { - support = versions[interval]; - _ref1 = interval.split('-'); - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - version = _ref1[_i]; - if (this.browsers[browser] && support.match(match)) { - version = version.replace(/\.0$/, ''); - need.push(this.browsers[browser] + ' ' + version); - } - } - } - } - return this.sort(need); - }, - feature: function(file, opts, callback) { - var url, _ref; - if (!callback) { - _ref = [opts, {}], callback = _ref[0], opts = _ref[1]; - } - url = "Fyrd/caniuse/master/features-json/" + file + ".json"; - return this.github(url, (function(_this) { - return function(data) { - return callback(_this.parse(data, opts)); - }; - })(this)); - }, - fork: function(fork, file, opts, callback) { - var branch, url, user, _ref, _ref1; - if (!callback) { - _ref = [opts, {}], callback = _ref[0], opts = _ref[1]; - } - _ref1 = fork.split(':'), user = _ref1[0], branch = _ref1[1]; - branch || (branch = 'master'); - url = "" + user + "/caniuse/" + branch + "/features-json/" + file + ".json"; - return this.github(url, (function(_this) { - return function(data) { - return callback(_this.parse(data, opts)); - }; - })(this)); - }, - all: function(callback) { - var browsers, data, list, name, version, _i, _len, _ref; - browsers = require('../data/browsers'); - list = []; - for (name in browsers) { - data = browsers[name]; - _ref = data.versions; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - version = _ref[_i]; - list.push(name + ' ' + version); - } - } - return callback(this.sort(list)); - }, - map: function(browsers, callback) { - var browser, name, version, _i, _len, _ref, _results; - _results = []; - for (_i = 0, _len = browsers.length; _i < _len; _i++) { - browser = browsers[_i]; - _ref = browser.split(' '), name = _ref[0], version = _ref[1]; - version = parseFloat(version); - _results.push(callback(browser, name, version)); - } - return _results; - }, - stringify: function(obj, indent) { - var key, local, processed, value; - if (indent == null) { - indent = ''; - } - if (obj instanceof Array) { - local = indent + ' '; - return ("[\n" + local) + obj.map((function(_this) { - return function(i) { - return _this.stringify(i, local); - }; - })(this)).join("\n" + local) + ("\n" + indent + "]"); - } else if (typeof obj === 'object') { - local = indent + ' '; - processed = []; - for (key in obj) { - value = obj[key]; - if (key.match(/'|-|@|:/)) { - key = "\"" + key + "\""; - } - value = this.stringify(value, local); - if (value[0] !== "\n") { - value = ' ' + value; - } - processed.push(key + ':' + value); - } - return "\n" + local + processed.join("\n" + local) + "\n"; - } else { - return JSON.stringify(obj); - } - }, - changed: [], - save: function(name, json) { - var content, file, key, sorted, _i, _len, _ref; - sorted = {}; - _ref = Object.keys(json).sort(); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - key = _ref[_i]; - sorted[key] = json[key]; - } - file = __dirname + ("/../data/" + name); - content = "# Don't edit this files, because it's autogenerated.\n" + "# See updaters/ dir for generator. " + "Run `bin/autoprefixer --update` to update." + "\n\n"; - content += "module.exports =" + this.stringify(sorted) + ";\n"; - if (fs.existsSync(file + '.js')) { - file += '.js'; - content = coffee.compile(content); - } else { - file += '.coffee'; - } - if (fs.readFileSync(file).toString() !== content) { - this.changed.push(name); - return fs.writeFileSync(file, content); - } - } - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/utils.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/utils.js deleted file mode 100644 index 32568164..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/utils.js +++ /dev/null @@ -1,41 +0,0 @@ -(function() { - module.exports = { - error: function(text) { - var err; - err = new Error(text); - err.autoprefixer = true; - throw err; - }, - uniq: function(array) { - var filtered, i, _i, _len; - filtered = []; - for (_i = 0, _len = array.length; _i < _len; _i++) { - i = array[_i]; - if (filtered.indexOf(i) === -1) { - filtered.push(i); - } - } - return filtered; - }, - removeNote: function(string) { - if (string.indexOf(' ') === -1) { - return string; - } else { - return string.split(' ')[0]; - } - }, - escapeRegexp: function(string) { - return string.replace(/[.?*+\^\$\[\]\\(){}|\-]/g, '\\$&'); - }, - regexp: function(word, escape) { - if (escape == null) { - escape = true; - } - if (escape) { - word = this.escapeRegexp(word); - } - return RegExp("(^|[\\s,(])(" + word + "($|[\\s(,]))", "gi"); - } - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/value.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/value.js deleted file mode 100644 index 242c14b4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/lib/value.js +++ /dev/null @@ -1,97 +0,0 @@ -(function() { - var OldValue, Prefixer, Value, utils, vendor, - __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; }; - - Prefixer = require('./prefixer'); - - OldValue = require('./old-value'); - - vendor = require('postcss/lib/vendor'); - - utils = require('./utils'); - - Value = (function(_super) { - __extends(Value, _super); - - function Value() { - return Value.__super__.constructor.apply(this, arguments); - } - - Value.save = function(prefixes, decl) { - var cloned, prefix, prefixed, propPrefix, rule, value, _ref, _results; - _ref = decl._autoprefixerValues; - _results = []; - for (prefix in _ref) { - value = _ref[prefix]; - if (value === decl.value) { - continue; - } - propPrefix = vendor.prefix(decl.prop); - if (propPrefix === prefix) { - _results.push(decl.value = value); - } else if (propPrefix === '-pie-') { - continue; - } else { - prefixed = prefixes.prefixed(decl.prop, prefix); - rule = decl.parent; - if (rule.every(function(i) { - return i.prop !== prefixed; - })) { - if (rule.every(function(i) { - return i.prop !== decl.prop || i.value !== value; - })) { - cloned = this.clone(decl, { - value: value - }); - _results.push(decl.parent.insertBefore(decl, cloned)); - } else { - _results.push(void 0); - } - } else { - _results.push(void 0); - } - } - } - return _results; - }; - - Value.prototype.check = function(decl) { - var value; - value = decl.value; - if (value.indexOf(this.name) !== -1) { - return !!value.match(this.regexp()); - } else { - return false; - } - }; - - Value.prototype.regexp = function() { - return this.regexpCache || (this.regexpCache = utils.regexp(this.name)); - }; - - Value.prototype.replace = function(string, prefix) { - return string.replace(this.regexp(), '$1' + prefix + '$2'); - }; - - Value.prototype.add = function(decl, prefix) { - var value; - decl._autoprefixerValues || (decl._autoprefixerValues = {}); - value = decl._autoprefixerValues[prefix] || decl.value; - value = this.replace(value, prefix); - if (value) { - return decl._autoprefixerValues[prefix] = value; - } - }; - - Value.prototype.old = function(prefix) { - return new OldValue(prefix + this.name); - }; - - return Value; - - })(Prefixer); - - module.exports = Value; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/.npmignore b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/.npmignore deleted file mode 100644 index cefaa67a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/ -.travis.yml \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/CHANGELOG.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/CHANGELOG.md deleted file mode 100644 index 73c222b8..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/CHANGELOG.md +++ /dev/null @@ -1,112 +0,0 @@ -0.8.1 / 2013-10-24 ------------------- -* copy failed to return an error to the callback if a file doesn't exist (ulikoehler #38, #39) - -0.8.0 / 2013-10-14 ------------------- -* `filter` implemented on `copy()` and `copySync()`. (Srirangan / #36) - -0.7.1 / 2013-10-12 ------------------- -* `copySync()` implemented (Srirangan / #33) -* updated to the latest `jsonfile` version `1.1.0` which gives `options` params for the JSON methods. Closes #32 - -0.7.0 / 2013-10-07 ------------------- -* update readme conventions -* `copy()` now works if destination directory does not exist. Closes #29 - -0.6.4 / 2013-09-05 ------------------- -* changed `homepage` field in package.json to remove NPM warning - -0.6.3 / 2013-06-28 ------------------- -* changed JSON spacing default from `4` to `2` to follow Node conventions -* updated `jsonfile` dep -* updated `rimraf` dep - -0.6.2 / 2013-06-28 ------------------- -* added .npmignore, #25 - -0.6.1 / 2013-05-14 ------------------- -* modified for `strict` mode, closes #24 -* added `outputJson()/outputJsonSync()`, closes #23 - -0.6.0 / 2013-03-18 ------------------- -* removed node 0.6 support -* added node 0.10 support -* upgraded to latest `ncp` and `rimraf`. -* optional `graceful-fs` support. Closes #17 - - -0.5.0 / 2013-02-03 ------------------- -* Removed `readTextFile`. -* Renamed `readJSONFile` to `readJSON` and `readJson`, same with write. -* Restructured documentation a bit. Added roadmap. - -0.4.0 / 2013-01-28 ------------------- -* Set default spaces in `jsonfile` from 4 to 2. -* Updated `testutil` deps for tests. -* Renamed `touch()` to `createFile()` -* Added `outputFile()` and `outputFileSync()` -* Changed creation of testing diretories so the /tmp dir is not littered. -* Added `readTextFile()` and `readTextFileSync()`. - -0.3.2 / 2012-11-01 ------------------- -* Added `touch()` and `touchSync()` methods. - -0.3.1 / 2012-10-11 ------------------- -* Fixed some stray globals. - -0.3.0 / 2012-10-09 ------------------- -* Removed all CoffeeScript from tests. -* Renamed `mkdir` to `mkdirs`/`mkdirp`. - -0.2.1 / 2012-09-11 ------------------- -* Updated `rimraf` dep. - -0.2.0 / 2012-09-10 ------------------- -* Rewrote module into JavaScript. (Must still rewrite tests into JavaScript) -* Added all methods of [jsonfile][https://github.com/jprichardson/node-jsonfile] -* Added Travis-CI. - -0.1.3 / 2012-08-13 ------------------- -* Added method `readJSONFile`. - -0.1.2 / 2012-06-15 ------------------- -* Bug fix: `deleteSync()` didn't exist. -* Verified Node v0.8 compatibility. - -0.1.1 / 2012-06-15 ------------------- -* Fixed bug in `remove()`/`delete()` that wouldn't execute the function if a callback wasn't passed. - -0.1.0 / 2012-05-31 ------------------- -* Renamed `copyFile()` to `copy()`. `copy()` can now copy directories (recursively) too. -* Renamed `rmrf()` to `remove()`. -* `remove()` aliased with `delete()`. -* Added `mkdirp` capabilities. Named: `mkdir()`. Hides Node.js native `mkdir()`. -* Instead of exporting the native `fs` module with new functions, I now copy over the native methods to a new object and export that instead. - -0.0.4 / 2012-03-14 ------------------- -* Removed CoffeeScript dependency - -0.0.3 / 2012-01-11 ------------------- -* Added methods rmrf and rmrfSync -* Moved tests from Jasmine to Mocha diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/LICENSE deleted file mode 100644 index c73f7930..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ - -(The MIT License) - -Copyright (c) 2011-2013 JP Richardson - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files -(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, - merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/README.md deleted file mode 100644 index 8fda86af..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/README.md +++ /dev/null @@ -1,332 +0,0 @@ - -Node.js: fs-extra -================= - -[![build status](https://secure.travis-ci.org/jprichardson/node-fs-extra.png)](http://travis-ci.org/jprichardson/node-fs-extra) - -This module adds a few extra file system methods that aren't included in the native `fs` module. It is a drop in replacement for `fs`. - - - -Why? ----- - -I got tired of including `mkdirp`, `rimraf`, and `cp -r` in most of my projects. - - - - -Installation ------------- - - npm install --save fs-extra - - - -Usage ------ - -`fs-extra` is a drop in replacement for native `fs`. All methods in `fs` are unmodified and attached to `fs-extra`. - -You don't ever need to include the original `fs` module again: - -```javascript -var fs = require('fs') //this is no longer necessary -``` - -you can now do this: - -```javascript -var fs = require('fs-extra'); //var fs = require('fs') -``` - -or if you prefer to make it clear that you're using `fs-extra` and not `fs`, you may want -to do this: - -```javascript -//var fs = require('fs') -var fse = require('fs-extra') -``` - -you can also keep, both, but it's redundant: - -```javascript -var fs = require('fs') - , fse = require('fs-extra') -``` - - - -Methods -------- - -**NOTE:** You can still use the native Node.js methods. They are copied over to `fs-extra`. - - -### copy(src, dest, [filter], callback) - -Copy a file or directory. The directory can have contents. Like `cp -r`. There isn't a synchronous version implemented yet. - -Sync: `copySync()` - - -Examples: - -```javascript -var fs = require('fs-extra'); - -fs.copy('/tmp/myfile', '/tmp/mynewfile', function(err){ - if (err) return console.error(err); - - console.log("success!") -}); //copies file - -fs.copy('/tmp/mydir', '/tmp/mynewdir', function(err){ - if (err) return console.error(err); - - console.log("success!") -}); //copies directory, even if it has subdirectories or files -``` - - -### createFile(file, callback) - -Creates a file. If the file that is requested to be created is in directories that do not exist, these directories are created. If the file already exists, it is **NOT MODIFIED**. - -Sync: `createFileSync()` - - -Example: - -```javascript -var fs = require('fs-extra') - -var file = '/tmp/this/path/does/not/exist/file.txt' - -fs.createFile(file, function(err) { - console.log(err); //null - //file has now been created, including the directory it is to be placed in -}) -``` - - - -### mkdirs(dir, callback) - -Creates a directory. If the parent hierarchy doesn't exist, it's created. Like `mkdir -p`. - -Alias: `mkdirp()` - -Sync: `mkdirsSync()` / `mkdirpSync()` - - -Examples: - -```javascript -var fs = require('fs-extra'); - -fs.mkdirs('/tmp/some/long/path/that/prob/doesnt/exist', function(err){ - if (err) return console.error(err); - - console.log("success!") -}); - -fs.mkdirsSync('/tmp/another/path'); -``` - - -### outputFile(file, data, callback) - -Almost the same as `writeFile`, except that if the directory does not exist, it's created. - -Sync: `outputFileSync()` - - -Example: - -```javascript -var fs = require('fs-extra') -var file = '/tmp/this/path/does/not/exist/file.txt' - -fs.outputFile(file, 'hello!', function(err) { - console.log(err); //null - - fs.readFile(file, 'utf8', function(err, data) { - console.log(data); //hello! - }) -}) -``` - - - -### outputJson(file, data, callback) - -Almost the same as `writeJson`, except that if the directory does not exist, it's created. - -Alias: `outputJSON() - -Sync: `outputJsonSync()`, `outputJSONSync()` - - -Example: - -```javascript -var fs = require('fs-extra') -var file = '/tmp/this/path/does/not/exist/file.txt' - -fs.outputJson(file, {name: 'JP'}, function(err) { - console.log(err); //null - - fs.readJson(file, function(err, data) { - console.log(data.name); //'JP - }) -}) -``` - - - -### readJson(file, [options], callback) - -Reads a JSON file and then parses it into an object. `options` are the same that you'd pass to `fs.readFile`. - -Alias: `readJSON()` - -Sync: `readJsonSync()`, `readJSONSync()` - - -Example: - -```javascript -var fs = require('fs-extra'); - -fs.readJson('./package.json', function(err, packageObj) { - console.log(packageObj.version); //0.1.3 -}); -``` - - -### remove(dir, callback) - -Removes a file or directory. The directory can have contents. Like `rm -rf`. - -Alias: `delete()` - -Sync: `removeSync()` / `deleteSync()` - - -Examples: - -```javascript -var fs = require('fs-extra'); - -fs.remove('/tmp/myfile', function(err){ - if (err) return console.error(err); - - console.log("success!") -}); - -fs.removeSync('/home/jprichardson'); //I just deleted my entire HOME directory. -``` - - - -### writeJson(file, object, [options], callback) - -Writes an object to a JSON file. `options` are the same that you'd pass to `fs.readFile`. - -Alias: `writeJSON()` - -Sync: `writeJsonSync()`, `writeJSONSync()` - -Example: - -```javascript -var fs = require('fs-extra'); -fs.writeJson('./package.json', {name: 'fs-extra'}, function(err){ - console.log(err); -}); -``` - - - -Roadmap to 1.0.0 ------------------ - -This contains items that I'm considering doing. I'd love community feedback. - -* File system walker. I really like this one: https://github.com/daaku/nodejs-walker ... this might be adding too much. Thoughts? -* File/directory tree watcher. There are quite a few. ... this also might be adding too much. I like this one: https://github.com/paulmillr/chokidar but I don't like that it's written in CoffeeScript. Thoughts? -* Method to move files. -* Thinking about moving `rimraf`, `ncp`, and `mkdirps` code into this library. I'd like fs-extra to be a stable library that module authors -can depend upon. A bunch of other dependencies kinda sucks for modules/libraries. (I'm leaning against this now.) -* Change documentation to use the `fse` prefix instead of `fs`. This may encourage people to start using `fse` as a prefix and hence make their code clearer that they're not using the native `fs`. I'm very undecided on this one since `fs-extra` is a drop in replacement for the native `fs`. (I'm leaning against this now.) - - - -Naming ------- - -I put a lot of thought into the naming of these functions. Inspired by @coolaj86's request. So he deserves much of the credit for raising the issue. See discussion(s) here: - -* https://github.com/jprichardson/node-fs-extra/issues/2 -* https://github.com/flatiron/utile/issues/11 -* https://github.com/ryanmcgrath/wrench-js/issues/29 -* https://github.com/substack/node-mkdirp/issues/17 - -First, I believe that in as many cases as possible, the [Node.js naming schemes](http://nodejs.org/api/fs.html) should be chosen. However, there are problems with the Node.js own naming schemes. - -For example, `fs.readFile()` and `fs.readdir()`: the **F** is capitalized in *File* and the **d** is not capitalized in *dir*. Perhaps a bit pedantic, but they should still be consistent. Also, Node.js has chosen a lot of POSIX naming schemes, which I believe is great. See: `fs.mkdir()`, `fs.rmdir()`, `fs.chown()`, etc. - -We have a dilemma though. How do you consistently name methods that perform the following POSIX commands: `cp`, `cp -r`, `mkdir -p`, and `rm -rf`? - -My perspective: when in doubt, err on the side of simplicity. A directory is just a hierarchical grouping of directories and files. Consider that for a moment. So when you want to copy it or remove it, in most cases you'll want to copy or remove all of its contents. When you want to create a directory, if the directory that it's suppose to be contained in does not exist, then in most cases you'll want to create that too. - -So, if you want to remove a file or a directory regardless of whether it has contents, just call `fs.remove(path)` or its alias `fs.delete(path)`. If you want to copy a file or a directory whether it has contents, just call `fs.copy(source, destination)`. If you want to create a directory regardless of whether its parent directories exist, just call `fs.mkdirs(path)` or `fs.mkdirp(path)`. - - -Credit ------- - -`fs-extra` wouldn't be possible without using the modules from the following authors: - -- [Isaac Shlueter](https://github.com/isaacs) -- [Charlie McConnel](https://github.com/avianflu) -- [James Halliday](https://github.com/substack) - - -Contributions -------------- - -If you want to contribute, please add a test if you can. Also, don't change the version in `package.json`. - - -### Contributors - -- [JP Richardson](https://github.com/jprichardson) -- [Mike McNeil](https://github.com/mikermcneil) -- [Ian Crowther](https://github.com/iancrowther) -- [Stephen Mathieson](https://github.com/stephenmathieson) -- [Srirangan](https://github.com/Srirangan) -- [Uli Köhler](https://github.com/ulikoehler) -- `<your name here>` - - - - -License -------- - - -Licensed under MIT - -Copyright (c) 2011-2013 JP Richardson - -[1]: http://nodejs.org/docs/latest/api/fs.html - - -[jsonfile]: https://github.com/jprichardson/node-jsonfile - - - - - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/copy.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/copy.js deleted file mode 100644 index 7a29f3ec..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/copy.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict" - -var fs = require('fs') - , ncp = require('ncp').ncp - , path = require('path') - , mkdir = require('./mkdir'), - create = require('./create') - -module.exports.copy = copy; -module.exports.copySync = copySync; - -var BUF_LENGTH = 64 * 1024 -var _buff = new Buffer(BUF_LENGTH) - -var copyFileSync = function(srcFile, destFile) { - var bytesRead, fdr, fdw, pos; - fdr = fs.openSync(srcFile, 'r'); - fdw = fs.openSync(destFile, 'w'); - bytesRead = 1; - pos = 0; - while (bytesRead > 0) { - bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos); - fs.writeSync(fdw, _buff, 0, bytesRead); - pos += bytesRead; - } - fs.closeSync(fdr); - return fs.closeSync(fdw); -} - -function copy(src, dest, filter, callback) { - if( typeof filter === "function" && !callback) { - callback = filter; - filter = null; - } - callback = callback || function(){} - - fs.lstat(src, function(err, stats) { - if (err) return callback(err) - - var dir = null - if (stats.isDirectory()) { - var parts = dest.split(path.sep) - parts.pop() - dir = parts.join(path.sep) - } else { - dir = path.dirname(dest) - } - - fs.exists(dir, function(dirExists) { - if (dirExists) return ncp(src, dest, {filter: filter}, callback); - mkdir.mkdirs(dir, function(err) { - if (err) return callback(err) - ncp(src, dest, {filter: filter}, callback); - }) - }) - }) -} - -function copySync(src, dest, filter) { - filter = filter || function () { return true; }; - var stats = fs.lstatSync(src), - destExists = fs.exists(dest), - performCopy = false; - if (stats.isFile()) { - if (filter instanceof RegExp) performCopy = filter.test(src); - else if (typeof filter === "function") performCopy = filter(src); - if(performCopy) { - if (!destExists) create.createFileSync(dest); - copyFileSync(src, dest); - } - } - else if (stats.isDirectory()) { - if (!destExists) mkdir.mkdirsSync(dest); - var contents = fs.readdirSync(src); - contents.forEach(function (content) { - copySync(src + "/" + content, dest + "/" + content); - }); - } -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/create.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/create.js deleted file mode 100644 index cf3a34bd..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/create.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict" - -var mkdir = require('./mkdir') - , path = require('path') - , fs = require('fs') - , exists = fs.exists || path.exists - , existsSync = fs.existsSync || path.existsSync - -function createFile (file, callback) { - function makeFile() { - fs.writeFile(file, '', function(err) { - if (err) - callback(err) - else - callback(null); - }) - } - - exists(file, function(fileExists) { - if (fileExists) - return callback(null); - else { - var dir = path.dirname(file); - - exists(dir, function(dirExists) { - if (!dirExists) { - mkdir.mkdirs(dir, function(err) { - if (err) - callback(err) - else - makeFile(); - }) - } else { - makeFile(); - } - }) - } - }) -} - - -function createFileSync (file) { - if (existsSync(file)) - return; - - var dir = path.dirname(file); - if (!existsSync(dir)) - mkdir.mkdirsSync(dir); - - fs.writeFileSync(file, ''); -} - - -module.exports.createFile = createFile; -module.exports.createFileSync = createFileSync; \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/index.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/index.js deleted file mode 100644 index 2ad3923d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/index.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict" - -var fs = null - , path = require('path') - , jsonFile = require('jsonfile') - , json = require('./json') - , fse = {}; - -try { - // optional dependency - fs = require("graceful-fs") -} catch (er) { - fs = require("fs") -} - -Object.keys(fs).forEach(function(key) { - var func = fs[key]; - if (typeof func == 'function') - fse[key] = func; -}); - -fs = fse; - -// copy - -fs.copy = require('./copy').copy; -fs.copySync = require('./copy').copySync; - -// remove - -var remove = require('./remove'); -fs.remove = remove.remove; -fs.removeSync = remove.removeSync; -fs['delete'] = fs.remove -fs.deleteSync = fs.removeSync - -// mkdir - -var mkdir = require('./mkdir') -fs.mkdirs = mkdir.mkdirs -fs.mkdirsSync = mkdir.mkdirsSync -fs.mkdirp = mkdir.mkdirs -fs.mkdirpSync = mkdir.mkdirsSync - -// create - -var create = require('./create') -fs.createFile = create.createFile; -fs.createFileSync = create.createFileSync; - -//deprecated -fs.touch = function touch() { - console.log('fs.touch() is deprecated. Please use fs.createFile().') - fs.createFile.apply(null, arguments) -} - -fs.touchSync = function touchSync() { - console.log('fs.touchSync() is deprecated. Please use fs.createFileSync().') - fs.createFileSync.apply(null, arguments) -} - -// output - -var output = require('./output'); -fs.outputFile = output.outputFile; -fs.outputFileSync = output.outputFileSync; - -// read - -/*fs.readTextFile = function(file, callback) { - return fs.readFile(file, 'utf8', callback) -} - -fs.readTextFileSync = function(file, callback) { - return fs.readFileSync(file, 'utf8') -}*/ - -// json files - -fs.readJsonFile = jsonFile.readFile; -fs.readJSONFile = jsonFile.readFile; -fs.readJsonFileSync = jsonFile.readFileSync; -fs.readJSONFileSync = jsonFile.readFileSync; - -fs.readJson = jsonFile.readFile; -fs.readJSON = jsonFile.readFile; -fs.readJsonSync = jsonFile.readFileSync; -fs.readJSONSync = jsonFile.readFileSync; - -fs.outputJsonSync = json.outputJsonSync; -fs.outputJSONSync = json.outputJsonSync; -fs.outputJson = json.outputJson; -fs.outputJSON = json.outputJson; - -fs.writeJsonFile = jsonFile.writeFile; -fs.writeJSONFile = jsonFile.writeFile; -fs.writeJsonFileSync = jsonFile.writeFileSync; -fs.writeJSONFileSync = jsonFile.writeFileSync; - -fs.writeJson = jsonFile.writeFile; -fs.writeJSON = jsonFile.writeFile; -fs.writeJsonSync = jsonFile.writeFileSync; -fs.writeJSONSync = jsonFile.writeFileSync; - - -module.exports = fs - -jsonFile.spaces = 2; //set to 2 -module.exports.jsonfile = jsonFile; //so users of fs-extra can modify jsonFile.spaces; - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/json.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/json.js deleted file mode 100644 index a0b8c2a4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/json.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict" - -var jsonFile = require('jsonfile') - , fs = require('fs') - , mkdir = require('./mkdir') - , path = require('path') - -var me = module.exports - -me.outputJsonSync = function(file, data) { - var dir = path.dirname(file) - - if (!fs.existsSync(dir)) - mkdir.mkdirsSync(dir) - - jsonFile.writeFileSync(file, data) -} - -me.outputJson = function(file, data, callback) { - var dir = path.dirname(file) - - fs.exists(dir, function(itDoes) { - if (itDoes) return jsonFile.writeFile(file, data, callback) - - mkdir.mkdirs(dir, function(err) { - if (err) return callback(err) - jsonFile.writeFile(file, data, callback) - }) - }) -} \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/mkdir.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/mkdir.js deleted file mode 100644 index e0b16253..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/mkdir.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict" - -var mkdirp = require('mkdirp'); - -module.exports.mkdirs = mkdirp; -module.exports.mkdirsSync = mkdirp.sync; - - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/output.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/output.js deleted file mode 100644 index 85840aa7..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/output.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict" - -var mkdir = require('./mkdir') - , path = require('path') - , fs = require('fs') - , exists = fs.exists || path.exists - , existsSync = fs.existsSync || path.existsSync - -function outputFile (file, data, encoding, callback) { - if (typeof encoding === 'function') { - callback = encoding - encoding = 'utf8' - } - - var dir = path.dirname(file) - exists(dir, function(itDoes) { - if (itDoes) return fs.writeFile(file, data, encoding, callback) - - mkdir.mkdirs(dir, function(err) { - if (err) return callback(err) - - fs.writeFile(file, data, encoding, callback) - }) - }) -} - - -function outputFileSync (file, data, encoding) { - var dir = path.dirname(file) - if (existsSync(dir)) return fs.writeFileSync.apply(fs, arguments) - mkdir.mkdirsSync(dir) - fs.writeFileSync.apply(fs, arguments) -} - - -module.exports.outputFile = outputFile; -module.exports.outputFileSync = outputFileSync; \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/remove.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/remove.js deleted file mode 100644 index 9d5573b1..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/lib/remove.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict" - -var rimraf = require('rimraf') - , fs = require('fs'); - -function rmrfSync(dir) { - return rimraf.sync(dir); -} - -function rmrf(dir, cb) { - if (cb != null) { - return rimraf(dir, cb); - } else { - return rimraf(dir, (function() {})); - } -} - -module.exports.remove = rmrf; -module.exports.removeSync = rmrfSync; diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/ncp b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/ncp deleted file mode 120000 index 1c026480..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/ncp +++ /dev/null @@ -1 +0,0 @@ -../ncp/bin/ncp \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/rimraf b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/.npmignore b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/.npmignore deleted file mode 100644 index cefaa67a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/ -.travis.yml \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/CHANGELOG.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/CHANGELOG.md deleted file mode 100644 index fb9ec881..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/CHANGELOG.md +++ /dev/null @@ -1,20 +0,0 @@ -1.1.1 / 2013-11-11 ------------------- -* fixed catching of callback bug (ffissore / #5) - -1.1.0 / 2013-10-11 ------------------- -* added `options` param to methods, (seanodell / #4) - -1.0.1 / 2013-09-05 ------------------- -* removed `homepage` field from package.json to remove NPM warning - -1.0.0 / 2013-06-28 ------------------- -* added `.npmignore`, #1 -* changed spacing default from `4` to `2` to follow Node conventions - -0.0.1 / 2012-09-10 ------------------- -* Initial release. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/LICENSE deleted file mode 100644 index 83642bff..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -(The MIT License) - -Copyright (c) 2012, JP Richardson <jprichardson@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files -(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, - merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/README.md deleted file mode 100644 index 489b3945..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/README.md +++ /dev/null @@ -1,121 +0,0 @@ -[![build status](https://secure.travis-ci.org/jprichardson/node-jsonfile.png)](http://travis-ci.org/jprichardson/node-jsonfile) - -Node.js - jsonfile -================ - -Easily read/write JSON files. - - -Why? ----- - -Writing `JSON.stringify()` and then `fs.writeFile()` and `JSON.parse()` with `fs.readFile()` enclosed in `try/catch` blocks became annoying. - - - -Installation ------------- - - npm install jsonfile --save - - - -API ---- - -### readFile(filename, [options], callback) - -```javascript -var jf = require('jsonfile') - , util = require('util'); - -var file = '/tmp/data.json'; -js.readFile(file, function(err, obj) { - console.log(util.inspect(obj)); -}); -``` - - -### readFileSync(filename, [options]) - -```javascript -var jf = require('jsonfile') - , util = require('util'); - -var file = '/tmp/data.json'; - -console.log(util.inspect(jf.readFileSync(file))); -``` - - -### writeFile(filename, [options], callback) - -```javascript -var jf = require('jsonfile') - -var file = '/tmp/data.json'; -var obj = {name: 'JP'}; - -jf.writeFile(file, obj, function(err) { - console.log(err); -}) -``` - -### writeFileSync(filename, [options]) - -```javascript -var jf = require('jsonfile') - -var file = '/tmp/data.json'; -var obj = {name: 'JP'}; - -jf.writeFileSync(file, obj); -``` - - -### spaces - -Number of spaces to indent JSON files. - -**default:** 2 - -``` -var jf = require('jsonfile'); - -jf.spaces = 4; - -var file = '/tmp/data.json'; -var obj = {name: 'JP'}; - -jf.writeFile(file, obj, function(err) { //json file has four space indenting now - console.log(err); -}); -``` - - -Contributions -------------- - -If you contribute to this library, please don't change the version numbers in your pull request. - - -### Contributors - -(You can add your name, or I'll add it if you forget) - -- [*] [JP Richardson](https://github.com/jprichardson) -- [2] [Sean O'Dell](https://github.com/seanodell) -- [1] [Federico Fissore](https://github.com/ffissore) - - -License -------- - -(MIT License) - -Copyright 2012-2013, JP Richardson <jprichardson@gmail.com> - - - - - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/lib/jsonfile.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/lib/jsonfile.js deleted file mode 100644 index 011a7756..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/lib/jsonfile.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('fs'); - -var me = module.exports; - -me.spaces = 2; - -me.readFile = function(file, callback) { - fs.readFile(file, 'utf8', function(err, data) { - if (err) return callback(err, null); - - var obj = null; - try { - obj = JSON.parse(data); - } catch (err2) { - callback(err2, null); - return; - } - callback(null, obj); - }) -} - -me.readFileSync = function(file) { - return JSON.parse(fs.readFileSync(file, 'utf8')); -} - -me.writeFile = function(file, obj, options, callback) { - if (callback == null) { // odd little swap because options is optional - callback = options; - options = null; - } - - var str = ''; - try { - str = JSON.stringify(obj, null, module.exports.spaces); - } catch (err) { - if (callback) { - callback(err, null); - } - return; - } - fs.writeFile(file, str, options, callback); -} - -me.writeFileSync = function(file, obj, options) { - var str = JSON.stringify(obj, null, module.exports.spaces); - return fs.writeFileSync(file, str, options); //not sure if fs.writeFileSync returns anything, but just in case -} \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/package.json deleted file mode 100644 index bf18753c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/jsonfile/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "jsonfile", - "version": "1.1.1", - "description": "Easily read/write JSON files.", - "repository": { - "type": "git", - "url": "git@github.com:jprichardson/node-jsonfile.git" - }, - "keywords": [ - "read", - "write", - "file", - "json" - ], - "author": { - "name": "JP Richardson", - "email": "jprichardson@gmail.com" - }, - "licenses": [ - { - "type": "MIT", - "url": "" - } - ], - "dependencies": {}, - "devDependencies": { - "testutil": "~0.5.1", - "mocha": "*" - }, - "main": "./lib/jsonfile.js", - "scripts": { - "test": "mocha test" - }, - "readme": "[![build status](https://secure.travis-ci.org/jprichardson/node-jsonfile.png)](http://travis-ci.org/jprichardson/node-jsonfile)\n\nNode.js - jsonfile\n================\n\nEasily read/write JSON files. \n\n\nWhy?\n----\n\nWriting `JSON.stringify()` and then `fs.writeFile()` and `JSON.parse()` with `fs.readFile()` enclosed in `try/catch` blocks became annoying.\n\n\n\nInstallation\n------------\n\n npm install jsonfile --save\n\n\n\nAPI\n---\n\n### readFile(filename, [options], callback)\n\n```javascript\nvar jf = require('jsonfile')\n , util = require('util');\n\nvar file = '/tmp/data.json';\njs.readFile(file, function(err, obj) {\n console.log(util.inspect(obj)); \n});\n```\n\n\n### readFileSync(filename, [options])\n\n```javascript\nvar jf = require('jsonfile')\n , util = require('util');\n\nvar file = '/tmp/data.json';\n\nconsole.log(util.inspect(jf.readFileSync(file)));\n```\n\n\n### writeFile(filename, [options], callback)\n\n```javascript\nvar jf = require('jsonfile')\n\nvar file = '/tmp/data.json';\nvar obj = {name: 'JP'};\n\njf.writeFile(file, obj, function(err) {\n console.log(err);\n})\n```\n\n### writeFileSync(filename, [options])\n\n```javascript\nvar jf = require('jsonfile')\n\nvar file = '/tmp/data.json';\nvar obj = {name: 'JP'};\n\njf.writeFileSync(file, obj);\n```\n\n\n### spaces\n\nNumber of spaces to indent JSON files. \n\n**default:** 2\n\n```\nvar jf = require('jsonfile');\n\njf.spaces = 4;\n\nvar file = '/tmp/data.json';\nvar obj = {name: 'JP'};\n\njf.writeFile(file, obj, function(err) { //json file has four space indenting now\n console.log(err);\n});\n```\n\n\nContributions\n-------------\n\nIf you contribute to this library, please don't change the version numbers in your pull request.\n\n\n### Contributors\n\n(You can add your name, or I'll add it if you forget)\n\n- [*] [JP Richardson](https://github.com/jprichardson)\n- [2] [Sean O'Dell](https://github.com/seanodell)\n- [1] [Federico Fissore](https://github.com/ffissore)\n\n\nLicense\n-------\n\n(MIT License)\n\nCopyright 2012-2013, JP Richardson <jprichardson@gmail.com>\n\n\n\n\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jprichardson/node-jsonfile/issues" - }, - "homepage": "https://github.com/jprichardson/node-jsonfile", - "_id": "jsonfile@1.1.1", - "_from": "jsonfile@~1.1.0" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.npmignore b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c347..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.travis.yml b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.travis.yml deleted file mode 100644 index 84fd7ca2..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1aeb..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/examples/pow.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e6924212..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/index.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/index.js deleted file mode 100644 index fda6de8a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/index.js +++ /dev/null @@ -1,82 +0,0 @@ -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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/package.json deleted file mode 100644 index dc434821..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "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", - "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, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `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\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, - "homepage": "https://github.com/substack/node-mkdirp", - "_id": "mkdirp@0.3.5", - "_from": "mkdirp@0.3.x" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/readme.markdown b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/readme.markdown deleted file mode 100644 index 83b0216a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/readme.markdown +++ /dev/null @@ -1,63 +0,0 @@ -# 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/chmod.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8e..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/clobber.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb70998..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/mkdirp.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abbd..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm_sync.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f609..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/race.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a04476..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/rel.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 79858243..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e56..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return_sync.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d35..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/root.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2f..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/sync.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cada..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe2..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask_sync.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cbb..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.npmignore b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.npmignore deleted file mode 100644 index 9ecd205c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -.*.sw[op] -.DS_Store -test/fixtures/out diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.travis.yml b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.travis.yml deleted file mode 100644 index f686c49b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js - -node_js: - - 0.4 - - 0.6 - - 0.7 - - 0.8 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/LICENSE.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/LICENSE.md deleted file mode 100644 index e2b9b413..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# MIT License - -###Copyright (C) 2011 by Charlie McConnell - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/README.md deleted file mode 100644 index 79ad086c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# ncp - Asynchronous recursive file & directory copying - -[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp) - -Think `cp -r`, but pure node, and asynchronous. `ncp` can be used both as a CLI tool and programmatically. - -## Command Line usage - -Usage is simple: `ncp [source] [dest] [--limit=concurrency limit] -[--filter=filter] --stopOnErr` - -The 'filter' is a Regular Expression - matched files will be copied. - -The 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time. - -'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any -errors arise, rather than attempting to continue while logging errors. - -If there are no errors, `ncp` will output `done.` when complete. If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue. - -## Programmatic usage - -Programmatic usage of `ncp` is just as simple. The only argument to the completion callback is a possible error. - -```javascript -var ncp = require('ncp').ncp; - -ncp.limit = 16; - -ncp(source, destination, function (err) { - if (err) { - return console.error(err); - } - console.log('done!'); -}); -``` - -You can also call ncp like `ncp(source, destination, options, callback)`. -`options` should be a dictionary. Currently, such options are available: - - * `options.filter` - a `RegExp` instance, against which each file name is - tested to determine whether to copy it or not, or a function taking single - parameter: copied file name, returning `true` or `false`, determining - whether to copy file or not. - - * `options.transform` - a function: `function (read, write) { read.pipe(write) }` - used to apply streaming transforms while copying. - - * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite - destination files that already exist. - -Please open an issue if any bugs arise. As always, I accept (working) pull requests, and refunds are available at `/dev/null`. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/bin/ncp b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/bin/ncp deleted file mode 100755 index 388eaba6..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/bin/ncp +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env node - - - - -var ncp = require('../lib/ncp'), - args = process.argv.slice(2), - source, dest; - -if (args.length < 2) { - console.error('Usage: ncp [source] [destination] [--filter=filter] [--limit=concurrency limit]'); - process.exit(1); -} - -// parse arguments the hard way -function startsWith(str, prefix) { - return str.substr(0, prefix.length) == prefix; -} - -var options = {}; -args.forEach(function (arg) { - if (startsWith(arg, "--limit=")) { - options.limit = parseInt(arg.split('=', 2)[1], 10); - } - if (startsWith(arg, "--filter=")) { - options.filter = new RegExp(arg.split('=', 2)[1]); - } - if (startsWith(arg, "--stoponerr")) { - options.stopOnErr = true; - } -}); - -ncp.ncp(args[0], args[1], options, function (err) { - if (Array.isArray(err)) { - console.error('There were errors during the copy.'); - err.forEach(function (err) { - console.error(err.stack || err.message); - }); - process.exit(1); - } - else if (err) { - console.error('An error has occurred.'); - console.error(err.stack || err.message); - process.exit(1); - } -}); - - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/lib/ncp.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/lib/ncp.js deleted file mode 100644 index d871e009..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/lib/ncp.js +++ /dev/null @@ -1,222 +0,0 @@ -var fs = require('fs'), - path = require('path'); - -module.exports = ncp -ncp.ncp = ncp - -function ncp (source, dest, options, callback) { - if (!callback) { - callback = options; - options = {}; - } - - var basePath = process.cwd(), - currentPath = path.resolve(basePath, source), - targetPath = path.resolve(basePath, dest), - filter = options.filter, - transform = options.transform, - clobber = options.clobber !== false, - errs = null, - started = 0, - finished = 0, - running = 0, - limit = options.limit || ncp.limit || 16; - - limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit; - - startCopy(currentPath); - - function startCopy(source) { - started++; - if (filter) { - if (filter instanceof RegExp) { - if (!filter.test(source)) { - return cb(true); - } - } - else if (typeof filter === 'function') { - if (!filter(source)) { - return cb(true); - } - } - } - return getStats(source); - } - - function defer(fn) { - if (typeof(setImmediate) === 'function') - return setImmediate(fn); - return process.nextTick(fn); - } - - function getStats(source) { - if (running >= limit) { - return defer(function () { - getStats(source); - }); - } - running++; - fs.lstat(source, function (err, stats) { - var item = {}; - if (err) { - return onError(err); - } - - // We need to get the mode from the stats object and preserve it. - item.name = source; - item.mode = stats.mode; - - if (stats.isDirectory()) { - return onDir(item); - } - else if (stats.isFile()) { - return onFile(item); - } - else if (stats.isSymbolicLink()) { - // Symlinks don't really need to know about the mode. - return onLink(source); - } - }); - } - - function onFile(file) { - var target = file.name.replace(currentPath, targetPath); - isWritable(target, function (writable) { - if (writable) { - return copyFile(file, target); - } - if(clobber) - rmFile(target, function () { - copyFile(file, target); - }); - }); - } - - function copyFile(file, target) { - var readStream = fs.createReadStream(file.name), - writeStream = fs.createWriteStream(target, { mode: file.mode }); - if(transform) { - transform(readStream, writeStream,file); - } else { - readStream.pipe(writeStream); - } - readStream.once('end', cb); - } - - function rmFile(file, done) { - fs.unlink(file, function (err) { - if (err) { - return onError(err); - } - return done(); - }); - } - - function onDir(dir) { - var target = dir.name.replace(currentPath, targetPath); - isWritable(target, function (writable) { - if (writable) { - return mkDir(dir, target); - } - copyDir(dir.name); - }); - } - - function mkDir(dir, target) { - fs.mkdir(target, dir.mode, function (err) { - if (err) { - return onError(err); - } - copyDir(dir.name); - }); - } - - function copyDir(dir) { - fs.readdir(dir, function (err, items) { - if (err) { - return onError(err); - } - items.forEach(function (item) { - startCopy(dir + '/' + item); - }); - return cb(); - }); - } - - function onLink(link) { - var target = link.replace(currentPath, targetPath); - fs.readlink(link, function (err, resolvedPath) { - if (err) { - return onError(err); - } - checkLink(resolvedPath, target); - }); - } - - function checkLink(resolvedPath, target) { - isWritable(target, function (writable) { - if (writable) { - return makeLink(resolvedPath, target); - } - fs.readlink(target, function (err, targetDest) { - if (err) { - return onError(err); - } - if (targetDest === resolvedPath) { - return cb(); - } - return rmFile(target, function () { - makeLink(resolvedPath, target); - }); - }); - }); - } - - function makeLink(linkPath, target) { - fs.symlink(linkPath, target, function (err) { - if (err) { - return onError(err); - } - return cb(); - }); - } - - function isWritable(path, done) { - fs.lstat(path, function (err, stats) { - if (err) { - if (err.code === 'ENOENT') return done(true); - return done(false); - } - return done(false); - }); - } - - function onError(err) { - if (options.stopOnError) { - return callback(err); - } - else if (!errs && options.errs) { - errs = fs.createWriteStream(options.errs); - } - else if (!errs) { - errs = []; - } - if (typeof errs.write === 'undefined') { - errs.push(err); - } - else { - errs.write(err.stack + '\n\n'); - } - return cb(); - } - - function cb(skipped) { - if (!skipped) running--; - finished++; - if ((started === finished) && (running === 0)) { - return errs ? callback(errs) : callback(null); - } - } -}; - - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/package.json deleted file mode 100644 index 7c87da71..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "ncp", - "version": "0.4.2", - "author": { - "name": "AvianFlu", - "email": "charlie@charlieistheman.com" - }, - "description": "Asynchronous recursive file copy utility.", - "bin": { - "ncp": "./bin/ncp" - }, - "devDependencies": { - "vows": "0.6.x", - "rimraf": "1.0.x", - "read-dir-files": "0.0.x" - }, - "main": "./lib/ncp.js", - "repository": { - "type": "git", - "url": "https://github.com/AvianFlu/ncp.git" - }, - "keywords": [ - "cli", - "copy" - ], - "license": "MIT", - "engine": { - "node": ">=0.4" - }, - "scripts": { - "test": "vows --isolate --spec" - }, - "readme": "# ncp - Asynchronous recursive file & directory copying\n\n[![Build Status](https://secure.travis-ci.org/AvianFlu/ncp.png)](http://travis-ci.org/AvianFlu/ncp)\n\nThink `cp -r`, but pure node, and asynchronous. `ncp` can be used both as a CLI tool and programmatically.\n\n## Command Line usage\n\nUsage is simple: `ncp [source] [dest] [--limit=concurrency limit]\n[--filter=filter] --stopOnErr`\n\nThe 'filter' is a Regular Expression - matched files will be copied.\n\nThe 'concurrency limit' is an integer that represents how many pending file system requests `ncp` has at a time.\n\n'stopOnErr' is a boolean flag that will tell `ncp` to stop immediately if any\nerrors arise, rather than attempting to continue while logging errors.\n\nIf there are no errors, `ncp` will output `done.` when complete. If there are errors, the error messages will be logged to `stdout` and to `./ncp-debug.log`, and the copy operation will attempt to continue.\n\n## Programmatic usage\n\nProgrammatic usage of `ncp` is just as simple. The only argument to the completion callback is a possible error. \n\n```javascript\nvar ncp = require('ncp').ncp;\n\nncp.limit = 16;\n\nncp(source, destination, function (err) {\n if (err) {\n return console.error(err);\n }\n console.log('done!');\n});\n```\n\nYou can also call ncp like `ncp(source, destination, options, callback)`. \n`options` should be a dictionary. Currently, such options are available:\n\n * `options.filter` - a `RegExp` instance, against which each file name is\n tested to determine whether to copy it or not, or a function taking single\n parameter: copied file name, returning `true` or `false`, determining\n whether to copy file or not.\n\n * `options.transform` - a function: `function (read, write) { read.pipe(write) }`\n used to apply streaming transforms while copying.\n\n * `options.clobber` - boolean=true. if set to false, `ncp` will not overwrite \n destination files that already exist.\n\nPlease open an issue if any bugs arise. As always, I accept (working) pull requests, and refunds are available at `/dev/null`.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/AvianFlu/ncp/issues" - }, - "homepage": "https://github.com/AvianFlu/ncp", - "_id": "ncp@0.4.2", - "_from": "ncp@~0.4.2" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/a b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/a deleted file mode 100644 index 802992c4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/a +++ /dev/null @@ -1 +0,0 @@ -Hello world diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/b b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/b deleted file mode 100644 index 9f6bb185..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/b +++ /dev/null @@ -1 +0,0 @@ -Hello ncp diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/c b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/c deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/d b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/d deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/e b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/e deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/f b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/f deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/a b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/a deleted file mode 100644 index cf291b5e..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/a +++ /dev/null @@ -1 +0,0 @@ -Hello nodejitsu diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/b b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/fixtures/src/sub/b deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/ncp-test.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/ncp-test.js deleted file mode 100644 index 3c613f77..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/ncp/test/ncp-test.js +++ /dev/null @@ -1,86 +0,0 @@ -var assert = require('assert'), - path = require('path'), - rimraf = require('rimraf'), - vows = require('vows'), - readDirFiles = require('read-dir-files'), - ncp = require('../').ncp; - -var fixtures = path.join(__dirname, 'fixtures'), - src = path.join(fixtures, 'src'), - out = path.join(fixtures, 'out'); - -vows.describe('ncp').addBatch({ - 'When copying a directory of files': { - topic: function () { - var cb = this.callback; - rimraf(out, function () { - ncp(src, out, cb); - }); - }, - 'files should be copied': { - topic: function () { - var cb = this.callback; - - readDirFiles(src, 'utf8', function (srcErr, srcFiles) { - readDirFiles(out, 'utf8', function (outErr, outFiles) { - cb(outErr, srcFiles, outFiles); - }); - }); - }, - 'and the destination should match the source': function (err, srcFiles, outFiles) { - assert.isNull(err); - assert.deepEqual(srcFiles, outFiles); - } - } - } -}).addBatch({ - 'When copying files using filter': { - topic: function() { - var cb = this.callback; - var filter = function(name) { - return name.substr(name.length - 1) != 'a' - } - rimraf(out, function () { - ncp(src, out, {filter: filter}, cb); - }); - }, - 'it should copy files': { - topic: function () { - var cb = this.callback; - - readDirFiles(src, 'utf8', function (srcErr, srcFiles) { - function filter(files) { - for (var fileName in files) { - var curFile = files[fileName]; - if (curFile instanceof Object) - return filter(curFile); - if (fileName.substr(fileName.length - 1) == 'a') - delete files[fileName]; - } - } - filter(srcFiles); - readDirFiles(out, 'utf8', function (outErr, outFiles) { - cb(outErr, srcFiles, outFiles); - }); - }); - }, - 'and destination files should match source files that pass filter': function (err, srcFiles, outFiles) { - assert.isNull(err); - assert.deepEqual(srcFiles, outFiles); - } - } - } -}).addBatch({ - 'When copying files using transform': { - 'it should pass file descriptors along to transform functions': function() { - ncp(src, out, { - transform: function(read,write,file) { - assert.notEqual(file.name, undefined); - assert.strictEqual(typeof file.mode,'number'); - read.pipe(write); - } - }, function(){}); - } - } -}).export(module); - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/AUTHORS b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/AUTHORS deleted file mode 100644 index 247b7543..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -# 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/README.md deleted file mode 100644 index cd123b65..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/README.md +++ /dev/null @@ -1,30 +0,0 @@ -`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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/bin.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/bin.js deleted file mode 100755 index 29bfa8a6..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/bin.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/package.json deleted file mode 100644 index 71f7dea0..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "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" - } - ], - "readme": "`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.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n successfully, since your desired outcome is already the case.\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", - "bugs": { - "url": "https://github.com/isaacs/rimraf/issues" - }, - "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.2.6", - "_from": "rimraf@~2.2.0" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/rimraf.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/rimraf.js deleted file mode 100644 index ce62051f..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/rimraf.js +++ /dev/null @@ -1,178 +0,0 @@ -module.exports = rimraf -rimraf.sync = rimrafSync - -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 rimraf (p, cb) { - if (!cb) throw new Error("No callback passed to rimraf()") - - var busyTries = 0 - rimraf_(p, 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, 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, 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, cb) { - fs.unlink(p, function (er) { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb) - if (er.code === "EISDIR") - return rmdir(p, er, cb) - } - return cb(er) - }) -} - -function fixWinEPERM (p, er, cb) { - fs.chmod(p, 666, function (er2) { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - fs.stat(p, function(er3, stats) { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, er, cb) - else - fs.unlink(p, cb) - }) - }) -} - -function fixWinEPERMSync (p, er, cb) { - try { - fs.chmodSync(p, 666) - } catch (er2) { - if (er2.code !== "ENOENT") - throw er - } - - try { - var stats = fs.statSync(p) - } catch (er3) { - if (er3 !== "ENOENT") - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, er) - else - fs.unlinkSync(p) -} - -function rmdir (p, originalEr, cb) { - // 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. - fs.rmdir(p, function (er) { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -function rmkids(p, cb) { - fs.readdir(p, function (er, files) { - if (er) - return cb(er) - var n = files.length - if (n === 0) - return fs.rmdir(p, cb) - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), function (er) { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - fs.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) { - try { - fs.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er) - if (er.code !== "EISDIR") - throw er - rmdirSync(p, er) - } -} - -function rmdirSync (p, originalEr) { - try { - fs.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) - } -} - -function rmkidsSync (p) { - fs.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f)) - }) - fs.rmdirSync(p) -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/run.sh b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/run.sh deleted file mode 100644 index 598f0163..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -for i in test-*.js; do - echo -n $i ... - bash setup.sh - node $i - ! [ -d target ] - echo "pass" -done -rm -rf target diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/setup.sh b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/setup.sh deleted file mode 100644 index 2602e631..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-async.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-async.js deleted file mode 100644 index 9c2e0b7b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-async.js +++ /dev/null @@ -1,5 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf(path.join(__dirname, "target"), function (er) { - if (er) throw er -}) diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-sync.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-sync.js deleted file mode 100644 index eb71f104..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/node_modules/rimraf/test/test-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf.sync(path.join(__dirname, "target")) diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/package.json deleted file mode 100755 index 03491b04..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/fs-extra/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "fs-extra", - "version": "0.8.1", - "description": "fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as mkdir -p, cp -r, and rm -rf.", - "homepage": "https://github.com/jprichardson/node-fs-extra", - "repository": { - "type": "git", - "url": "https://github.com/jprichardson/node-fs-extra" - }, - "keywords": [ - "fs", - "file", - "file system", - "copy", - "directory", - "extra", - "mkdirp", - "mkdir", - "mkdirs", - "recursive", - "json", - "read", - "write", - "extra", - "delete", - "remove", - "touch", - "create", - "text", - "output" - ], - "author": { - "name": "JP Richardson", - "email": "jprichardson@gmail.com" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/jprichardson/node-fs-extra/raw/master/LICENSE" - } - ], - "dependencies": { - "ncp": "~0.4.2", - "mkdirp": "0.3.x", - "jsonfile": "~1.1.0", - "rimraf": "~2.2.0" - }, - "devDependencies": { - "mocha": "*", - "path-extra": "0.0.x", - "testutil": "~0.5.0" - }, - "main": "./lib/index", - "scripts": { - "test": "mocha test" - }, - "readme": "\nNode.js: fs-extra\n=================\n\n[![build status](https://secure.travis-ci.org/jprichardson/node-fs-extra.png)](http://travis-ci.org/jprichardson/node-fs-extra)\n\nThis module adds a few extra file system methods that aren't included in the native `fs` module. It is a drop in replacement for `fs`.\n\n\n\nWhy?\n----\n\nI got tired of including `mkdirp`, `rimraf`, and `cp -r` in most of my projects. \n\n\n\n\nInstallation\n------------\n\n npm install --save fs-extra\n\n\n\nUsage\n-----\n\n`fs-extra` is a drop in replacement for native `fs`. All methods in `fs` are unmodified and attached to `fs-extra`.\n\nYou don't ever need to include the original `fs` module again:\n\n```javascript\nvar fs = require('fs') //this is no longer necessary\n```\n\nyou can now do this:\n\n```javascript\nvar fs = require('fs-extra'); //var fs = require('fs')\n```\n\nor if you prefer to make it clear that you're using `fs-extra` and not `fs`, you may want \nto do this:\n\n```javascript\n//var fs = require('fs')\nvar fse = require('fs-extra')\n```\n\nyou can also keep, both, but it's redundant:\n\n```javascript\nvar fs = require('fs')\n , fse = require('fs-extra')\n```\n\n\n\nMethods\n-------\n\n**NOTE:** You can still use the native Node.js methods. They are copied over to `fs-extra`.\n\n\n### copy(src, dest, [filter], callback)\n\nCopy a file or directory. The directory can have contents. Like `cp -r`. There isn't a synchronous version implemented yet.\n\nSync: `copySync()`\n\n\nExamples:\n\n```javascript\nvar fs = require('fs-extra');\n\nfs.copy('/tmp/myfile', '/tmp/mynewfile', function(err){\n if (err) return console.error(err);\n\n console.log(\"success!\")\n}); //copies file\n\nfs.copy('/tmp/mydir', '/tmp/mynewdir', function(err){\n if (err) return console.error(err);\n \n console.log(\"success!\")\n}); //copies directory, even if it has subdirectories or files\n```\n\n\n### createFile(file, callback) \n\nCreates a file. If the file that is requested to be created is in directories that do not exist, these directories are created. If the file already exists, it is **NOT MODIFIED**.\n\nSync: `createFileSync()`\n\n\nExample:\n\n```javascript\nvar fs = require('fs-extra')\n\nvar file = '/tmp/this/path/does/not/exist/file.txt'\n\nfs.createFile(file, function(err) {\n console.log(err); //null\n //file has now been created, including the directory it is to be placed in\n})\n```\n\n\n\n### mkdirs(dir, callback) \n\nCreates a directory. If the parent hierarchy doesn't exist, it's created. Like `mkdir -p`.\n\nAlias: `mkdirp()`\n\nSync: `mkdirsSync()` / `mkdirpSync()`\n\n\nExamples:\n\n```javascript\nvar fs = require('fs-extra');\n\nfs.mkdirs('/tmp/some/long/path/that/prob/doesnt/exist', function(err){\n if (err) return console.error(err);\n \n console.log(\"success!\")\n});\n\nfs.mkdirsSync('/tmp/another/path');\n```\n\n\n### outputFile(file, data, callback)\n\nAlmost the same as `writeFile`, except that if the directory does not exist, it's created.\n\nSync: `outputFileSync()`\n\n\nExample:\n\n```javascript\nvar fs = require('fs-extra')\nvar file = '/tmp/this/path/does/not/exist/file.txt'\n\nfs.outputFile(file, 'hello!', function(err) {\n console.log(err); //null\n\n fs.readFile(file, 'utf8', function(err, data) {\n console.log(data); //hello!\n })\n})\n```\n\n\n\n### outputJson(file, data, callback)\n\nAlmost the same as `writeJson`, except that if the directory does not exist, it's created.\n\nAlias: `outputJSON()\n\nSync: `outputJsonSync()`, `outputJSONSync()`\n\n\nExample:\n\n```javascript\nvar fs = require('fs-extra')\nvar file = '/tmp/this/path/does/not/exist/file.txt'\n\nfs.outputJson(file, {name: 'JP'}, function(err) {\n console.log(err); //null\n\n fs.readJson(file, function(err, data) {\n console.log(data.name); //'JP\n })\n})\n```\n\n\n\n### readJson(file, [options], callback) \n\nReads a JSON file and then parses it into an object. `options` are the same that you'd pass to `fs.readFile`.\n\nAlias: `readJSON()`\n\nSync: `readJsonSync()`, `readJSONSync()`\n\n\nExample:\n\n```javascript\nvar fs = require('fs-extra');\n\nfs.readJson('./package.json', function(err, packageObj) {\n console.log(packageObj.version); //0.1.3\n});\n```\n\n\n### remove(dir, callback)\n\nRemoves a file or directory. The directory can have contents. Like `rm -rf`.\n\nAlias: `delete()`\n\nSync: `removeSync()` / `deleteSync()`\n\n\nExamples:\n\n```javascript\nvar fs = require('fs-extra');\n\nfs.remove('/tmp/myfile', function(err){\n if (err) return console.error(err);\n \n console.log(\"success!\")\n});\n\nfs.removeSync('/home/jprichardson'); //I just deleted my entire HOME directory. \n```\n\n\n\n### writeJson(file, object, [options], callback) \n\nWrites an object to a JSON file. `options` are the same that you'd pass to `fs.readFile`.\n\nAlias: `writeJSON()`\n\nSync: `writeJsonSync()`, `writeJSONSync()`\n\nExample:\n\n```javascript\nvar fs = require('fs-extra');\nfs.writeJson('./package.json', {name: 'fs-extra'}, function(err){\n console.log(err);\n});\n```\n\n\n\nRoadmap to 1.0.0\n-----------------\n\nThis contains items that I'm considering doing. I'd love community feedback.\n\n* File system walker. I really like this one: https://github.com/daaku/nodejs-walker ... this might be adding too much. Thoughts?\n* File/directory tree watcher. There are quite a few. ... this also might be adding too much. I like this one: https://github.com/paulmillr/chokidar but I don't like that it's written in CoffeeScript. Thoughts?\n* Method to move files.\n* Thinking about moving `rimraf`, `ncp`, and `mkdirps` code into this library. I'd like fs-extra to be a stable library that module authors\ncan depend upon. A bunch of other dependencies kinda sucks for modules/libraries. (I'm leaning against this now.)\n* Change documentation to use the `fse` prefix instead of `fs`. This may encourage people to start using `fse` as a prefix and hence make their code clearer that they're not using the native `fs`. I'm very undecided on this one since `fs-extra` is a drop in replacement for the native `fs`. (I'm leaning against this now.)\n\n\n\nNaming\n------\n\nI put a lot of thought into the naming of these functions. Inspired by @coolaj86's request. So he deserves much of the credit for raising the issue. See discussion(s) here:\n\n* https://github.com/jprichardson/node-fs-extra/issues/2\n* https://github.com/flatiron/utile/issues/11\n* https://github.com/ryanmcgrath/wrench-js/issues/29\n* https://github.com/substack/node-mkdirp/issues/17\n\nFirst, I believe that in as many cases as possible, the [Node.js naming schemes](http://nodejs.org/api/fs.html) should be chosen. However, there are problems with the Node.js own naming schemes.\n\nFor example, `fs.readFile()` and `fs.readdir()`: the **F** is capitalized in *File* and the **d** is not capitalized in *dir*. Perhaps a bit pedantic, but they should still be consistent. Also, Node.js has chosen a lot of POSIX naming schemes, which I believe is great. See: `fs.mkdir()`, `fs.rmdir()`, `fs.chown()`, etc.\n\nWe have a dilemma though. How do you consistently name methods that perform the following POSIX commands: `cp`, `cp -r`, `mkdir -p`, and `rm -rf`?\n\nMy perspective: when in doubt, err on the side of simplicity. A directory is just a hierarchical grouping of directories and files. Consider that for a moment. So when you want to copy it or remove it, in most cases you'll want to copy or remove all of its contents. When you want to create a directory, if the directory that it's suppose to be contained in does not exist, then in most cases you'll want to create that too. \n\nSo, if you want to remove a file or a directory regardless of whether it has contents, just call `fs.remove(path)` or its alias `fs.delete(path)`. If you want to copy a file or a directory whether it has contents, just call `fs.copy(source, destination)`. If you want to create a directory regardless of whether its parent directories exist, just call `fs.mkdirs(path)` or `fs.mkdirp(path)`. \n\n\nCredit\n------\n\n`fs-extra` wouldn't be possible without using the modules from the following authors:\n\n- [Isaac Shlueter](https://github.com/isaacs)\n- [Charlie McConnel](https://github.com/avianflu)\n- [James Halliday](https://github.com/substack)\n\n\nContributions\n-------------\n\nIf you want to contribute, please add a test if you can. Also, don't change the version in `package.json`.\n\n\n### Contributors\n\n- [JP Richardson](https://github.com/jprichardson)\n- [Mike McNeil](https://github.com/mikermcneil)\n- [Ian Crowther](https://github.com/iancrowther)\n- [Stephen Mathieson](https://github.com/stephenmathieson)\n- [Srirangan](https://github.com/Srirangan)\n- [Uli Köhler](https://github.com/ulikoehler)\n- `<your name here>`\n\n\n\n\nLicense\n-------\n\n\nLicensed under MIT\n\nCopyright (c) 2011-2013 JP Richardson\n\n[1]: http://nodejs.org/docs/latest/api/fs.html \n\n\n[jsonfile]: https://github.com/jprichardson/node-jsonfile\n\n\n\n\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jprichardson/node-fs-extra/issues" - }, - "_id": "fs-extra@0.8.1", - "_from": "fs-extra@~0.8.1" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/ChangeLog.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/ChangeLog.md deleted file mode 100644 index f301786e..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/ChangeLog.md +++ /dev/null @@ -1,42 +0,0 @@ -## 0.3.4 -* Better space symbol detect to read UTF-8 BOM correctly. - -## 0.3.3 -* Remove source map hacks by using new Mozilla’s `source-map` (by Simon Lydell). - -## 0.3.2 -* Add URI encoding support for inline source maps. - -## 0.3.1 -* Fix relative paths from previous source map. -* Safer space split in `Rule#selectors` (by Simon Lydell). - -## 0.3 “Prince Seere†-* Add `Comment` node for comments between declarations or rules. -* Add source map annotation comment to output CSS. -* Allow to inline source map to annotation comment by data:uri. -* Fix source maps on Windows. -* Fix source maps for styles in subdirectory (by @nDmitry and @lydell). -* Autodetect previous source map. -* Add `first` and `last` shortcuts to container nodes. -* Parse `!important` to separated property in `Declaration`. -* Allow to break iteration by returning `false`. -* Copy code style to new nodes. -* Add `eachInside` method to recursivelly iterate all nodes. -* Add `selectors` shortcut to get selectors array. -* Add `toResult` method to `Rule` to simplify work with several input files. -* Clean declaration’s `value`, rule’s `selector` and at-rule’s `params` - by storing spaces in `between` property. - -## 0.2 “Duke Dantalion†-* Add source map support. -* Add shortcuts to create nodes. -* Method `process()` now returns object with `css` and `map` keys. -* Origin CSS file option was renamed from `file` to `from`. -* Rename `Node#remove()` method to `removeSelf()` to fix name conflict. -* Node source was moved to `source` property with origin file - and node end position. -* You can set own stringify function. - -## 0.1 “Count Andromalius†-* Initial release. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/LICENSE deleted file mode 100644 index da057b45..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright 2013 Andrey Sitnik <andrey@sitnik.ru> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/README.md deleted file mode 100644 index 6508b04b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/README.md +++ /dev/null @@ -1,732 +0,0 @@ -# PostCSS - -PostCSS is a framework for CSS postprocessors, -to modify CSS with JavaScript. - -It takes care of most common CSS tool tasks: - -1. parses CSS; -2. gives you usable JS API to edit CSS node tree; -3. dumps modified node tree into CSS string; -4. generates (or modifies existent) source map for your changes; - -You can use this framework to write you own: - -* CSS minifier or beautifizer. -* CSS polyfills. -* Grunt plugin to generate sprites, include `data-uri` images - or any other works. -* Text editor plugin to automate CSS routine. -* Command-line CSS tool. - -Sponsored by [Evil Martians](http://evilmartians.com/). - -## Built with PostCSS - -* [Autoprefixer] adds vendor prefixes by Can I Use data. -* [grunt-pixrem], `rem` unit polyfill. -* [CSS MQPacker] joins same media queries. - -[Autoprefixer]: https://github.com/ai/autoprefixer -[grunt-pixrem]: https://github.com/robwierzbowski/grunt-pixrem -[CSS MQPacker]: https://github.com/hail2u/node-css-mqpacker - -## Quick Example - -Let’s fix forgotten `content` property in `::before` and `::after`: - -```js -var postcss = require('postcss'); - -var contenter = postcss(function (css) { - css.eachRule(function (rule) { - if ( rule.selector.match(/::(before|after)/) ) { - // In every ::before/::after rule - - // Did we forget content property? - var good = rule.some(function (i) { return i.prop == 'content'; }); - - if ( !good ) { - // Add content: "" if we forget it - rule.prepend({ prop: 'content', value: '""' }); - } - - } - }); -}); -``` - -And then CSS with forgotten `content`: - -```css -a::before { - width: 10px; - height: 10px -} -``` - -will be fixed by our new `contenter`: - -```js -var fixed = contenter.process(css).css; -``` - -to: - -```css -a::before { - content: ""; - width: 10px; - height: 10px -} -``` - -## Features - -### Source Map - -PostCSS generates source map for its changes: - -```js -result = processor.process(css, { map: true, from: 'from.css', to: 'to.css' }); -result.css // String with processed CSS -result.map // Source map -``` - -And modifies source map from previous step (like Sass preprocessor): - -```js -var sassMap = fs.readFileSync('from.sass.css.map'); -processor.process(css, { map: sassMap, from: 'from.sass.css', to: 'to.css' }); -``` - -### Preserves code formatting and indentations - -PostCSS will not change any byte of a rule if you don’t modify its node: - -```js -postcss(function (css) { }).process(css).css == css; -``` - -And when you modify CSS nodes, PostCSS will try to copy coding style: - -```js -contenter.process("a::before{color:black}") -// a::before{content:'';color:black} - -contenter.process("a::before {\n color: black;\n }") -// a::before { -// content: ''; -// color: black; -// } -``` - -## Why PostCSS Better Than … - -### Preprocessors - -Preprocessors (like Sass or Stylus) give us special language with variables, -mixins, statements and compile it to CSS. Compass, nib and other mixins -libraries use these languages to work with prefixes, sprites and inline images. - -But Sass and Stylus languages were created to be syntax-sugar for CSS. -Writing really complicated programs using preporcessor languages -is very difficult. [Autoprefixer] is absolutely impossible to implement -on top of Sass. - -PostCSS gives you comfort and power of JS or CoffeeScript to working with CSS. -You can do really magic things with wide range of [npm] libraries. - -But postprocessors are not enemies for preprocessors. Sass and Stylus are still -the best way to improve readability and add some syntax sugar to CSS. -You can easily combine preprocessors and postprocessors -(and PostCSS will also update source map from Sass or Stylus). - -[Autoprefixer]: https://github.com/ai/autoprefixer -[npm]: https://npmjs.org/ - -### RegExp - -Some Grunt plugins modify CSS with regular expressions but using a CSS parser -and a node tree is a much safer way to edit CSS. Also, regexps will break -source maps generated by preprocessors. - -### CSS Parsers - -There are a lot of good CSS parsers, like [Gonzales]. But they help you only -with first step. - -Unlike them PostCSS gives you full source map support and useful high level API -(for example, safe iterators). - -[Gonzales]: https://github.com/css/gonzales - -### Rework - -[Rework] and PostCSS are very similar, but they has different targets. - -Rework was created to build new CSS sublanguage to replace Stylus (like [Myth]). -PostCSS was created for CSS tools, which works in chain with legacy CSS code -(like Autoprefixer). - -Because of this background difference, PostCSS: - -* better works with source map, because it should update map from previous step - (like Sass compiling) -* saves all your spaces and code style, because it can be worked in text editor - plugins -* has safer parser, because it can be used for legacy code -* has high level API to clean your processor from common tasks - -[Myth]: http://www.myth.io/ -[Rework]: https://github.com/visionmedia/rework - -## Usage - -### Processor - -The function `postcss(fn)` creates a processor from your function: - -```js -var postcss = require('postcss'); - -var processor = postcss(function (css) { - // Code to modify CSS -}); -``` - -If you want to combine multiple processors (and parse CSS only once), -you can add several functions using the `use(fn)` method: - -```js -var all = postcss(). - use(prefixer). - use(minifing); -``` - -Processor function can change the current CSS node tree: - -```js -postcss(function (css) { - css.append( /* new rule */ ) -}); -``` - -or create a completely new CSS root node and return it instead: - -```js -postcss(function (css) { - var newCSS = postcss.root() - // Add rules and declarations - return newCSS; -}); -``` - -This generated processor transforms some CSS using `process(css, opts)` method: - -```js -var doubler = postcss(function (css) { - // Clone each declaration - css.eachDecl(function (decl) { - decl.parent.prepend( decl.clone() ); - }); -}); - -var css = "a { color: black; }"; -var result = doubler.process(css); - -result.css //=> "a { color: black; color: black; }" -``` - -You can set the original CSS filename via `from` option and make syntax error -messages much more helpful: - -```js -var wrong = "a {"; -processor.process(wrong, { from: 'main.css' }); -//=> Can't parse CSS: Unclosed block at line 1:1 in main.css -``` - -### Multiple Inputs - -The function `postcss()` generates processor only for one input. -If you need to process several inputs (like in files concatenation) you can use -`postcss.parse()`. - -Let’s join two CSS with source map support in 5 lines of code: - -```js -var file1 = postcss.parse(css1, { from: 'a.css' }); -var file2 = postcss.parse(css2, { from: 'b.css' }); - -file1.rules = file1.rules.concat( file2.rules ); - -var result = file1.toResult({ to: 'app.css', map: true }); -``` - -### Source Map - -PostCSS will generate a source map, if you set `map` option to `true` -in the `process(css, opts)` method. - -You must set input and output CSS files paths (using `from` and `to` -options respectively) to generate correct source map. - -```js -var result = processor.process(css, { - map: true, - from: 'main.css', - to: 'main.out.css' -}); - -result.map //=> '{"version":3,"file":"main.out.css","sources":["main.css"],"names":[],"mappings":"AAAA,KAAI"}' - -fs.writeFileSync('main.out.css.map', result.map); -``` - -PostCSS can also modify previous source map (for example, from Sass -compilation). So if you compile Sass to CSS and then minify this CSS -by postprocessor, final source map will contain mapping from Sass code -to minified CSS. - -Just set `map` option with an original source map (a string or a JS object): - -```js -var result = minifier.process(css, { - map: fs.readFileSync('main.sass.css.map'), - from: 'main.sass.css', - to: 'main.min.css' -}); - -result.map //=> Source map from main.sass to main.min.css -``` - -PostCSS try to autodetect previous map file. For example, if you process `a.css` -and `a.css.map` is placed in same dir, PostCSS will read previous map and -generate new one. You can disable autodetection by `map: false`. - -PostCSS, by default, will add annotation comment with path to new source map -file: - -```css -a { } -/*# sourceMappingURL=main.out.css.map */ -``` - -If you want to remove annotation, set `mapAnnotation` option to `false`. - -Inline maps are also supported. If input CSS will contain annotation -from previous step with map in `data:uri`, PostCSS will update source map -with yours changes and inine new map back to output CSS. - -Option `inlineMap` will force PostCSS to inline new map to CSS: - -```js -var result = minifier.process(css, { - from: 'main.css', - to: 'main.min.css', - inlineMap: true -}); - -result.map //=> undefined, because map is in CSS -result.css //=> "a{}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uY3NzIiwic291cmNlcyI6WyJtYWluLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFLIn0= */" -``` - -### Helpers - -#### Vendor - -PostCSS contains heigh optimized code to split vendor prefix: - -```js -var vendor = require('postcss/lib/vendor'); - -vendor.prefix('-moz-tab-size') //=> '-moz-' -vendor.unprefixed('-moz-tab-size') //=> 'tab-size' -``` - -#### List - -To safely split comma- or space-separated values (like in `background-image` -or `transform` ) with brackets and quotes support you can use `list` helper: - -```js -var list = require('postcss/lib/list'); - -list.space(image.value) //=> ['linear-gradient(white, black)', 'blue'] -list.comma(transform.value) //=> ['color 200ms', 'background 200ms'] -``` - -### Nodes - -Processor function receives `Root` node with CSS node tree inside. - -```js -var processor = postcss(function (cssRoot) { -}); -``` - -There are 4 types of child nodes: `Comment`, `AtRule`, `Rule` and `Declaration`. -All nodes have `toString()` and `clone()` methods. - -You can parse CSS and get a `Root` node by `postcss.parse(css, opts)` method: - -```js -var cssRoot = postcss.parse('a { }'); -``` - -All node‘s methods return current node, so you can build nice method chains: - -```js -root.append( rule1 ).append( rule2 ).toString(); -``` - -### Node Source - -Every node stores its origin file (if you set `from` option to `process` -or `parse` method) and position: - -```js -var root = postcss.parse(css, { from: 'main.css' }); -var rule = root.rules[0]; - -rule.source.file //=> 'main.css' -rule.source.start //=> { line: 5, position: 1 } -rule.source.end //=> { line: 10, position: 5 } -``` - -### Whitespaces - -All nodes (exclude `Root`) have `before` property with indentation -and all earlier spaces. - -Nodes with children (`Root`, `AtRule` and `Rule`) contain also `after` property -with spaces after last child and before `}` or end of file. - -Every `Declaration` has `between` property with colon, spaces and comments -between property name and value. `Rule` stores spaces and comments between -selector and `{` in `between` property. `AtRule` uses `between` also to store -spaces and comments before `{` or `;` for bodiless at-rule. - -```js -var root = postcss.parse("a {\n color: black;\n}\n"); - -root.rules[0].between //=> " " between selector and { -root.rules[0].decls[0].before //=> "\n " before color: black -root.rules[0].decls[0].between //=> ": " between property name and value -root.rules[0].after //=> "\n" before } -root.after //=> "\n" from end of file -``` - -The simplest way to minify CSS is to set `before`, `between` and `after` -properties to an empty string: - -```js -var minifier = postcss(function (css) { - css.eachDecl(function (decl) { - decl.before = ''; - decl.between = ':'; - }); - css.eachRule(function (rule) { - rule.before = ''; - rule.between = ''; - rule.after = ''; - }); - css.eachAtRule(function (atRule) { - atRule.before = ''; - atRule.between = ''; - atRule.after = ''; - }); - css.eachComment(function (comment) { - comment.removeSelf(); - }); -}); - -var css = "a {\n color:black\n}\n"; -minifier.process(css).css //=> "a{color:black}" -``` - -### Raw Properties - -Some CSS values (selectors, comment text, at-rule params and declaration values) -can contain comments. PostCSS will clean them from trailing spaces for you: - -```js -var root = postcss.parse("a /**/ b {}"); -var rule = root.rules[0]; - -rule.selector //=> 'a b' trimmed and cleaned from comments -rule._selector.raw //=> 'a /**/ b' original raw value -``` - -But PostCSS saves raw content to be able to stringify it to CSS, if you don’t -change origin value. As you can remember, PostCSS tries to save origin CSS -byte-to-byte, when it’s possible: - -```js -rule.toString() //=> 'a /**/ b {}' with comment - -rule.selector = '.link b'; -rule.toString() //=> '.link b {}' you change value and origin comment was gone -``` - -### Containers - -`Root`, `AtRule` and `Rule` nodes can contain children in `rules` or `decls` -property. - -There are common method to work with children: - -* `append(newChild)` to add child at the end of children list. -* `prepend(newChild)` to add child at the beginning of children list. -* `insertBefore(existsChild, newChild)` to insert new child before some - existent child. -* `insertAfter(existsChild, newChild)` to insert new child after some - existent child. -* `remove(existsChild)` to remove child. -* `index(existsChild)` to return child index. -* `some(fn)` to return true if `fn` returns true on any child. -* `every(fn)` to return true if `fn` returns true on all children. - -Methods `insertBefore`, `insertAfter` and `remove` can receive child node -or child index as an `existsChild` argument. Have in mind that child index works -much faster. - -There are two shorcuts to get first and last child: - -```js -rule.first //=> First declaration in rule -rule.last //=> Last declaration in rule -``` - -### Children - -`Comment`, `AtRule`, `Rule` and `Declaration` nodes should be wrapped -in other nodes. - -All children contain `parent` property with parent node: - -```js -rule.decls[0].parent == rule; -``` - -All children has `removeSelf()` method: - -```js -rule.decls[0].removeSelf(); -``` - -But `remove(index)` in parent with child index is much faster: - -```js -rule.each(function (decl, i) { - rule.remove(i); -}); -``` - -### Iterators - -All parent nodes have `each` method to iterate over children nodes: - -```js -root = postcss.parse('a { color: black; display: none }'); - -root.each(function (rule, i) { - if ( rule.type == 'rule' ) { - console.log(rule.selector, i); // Will log "a 0" - } -}); - -root.rules[0].each(function (decl, i) { - if ( rule.type != 'comment' ) { - console.log(decl.prop, i); // Will log "color 0" and "display 1" - } -}); -``` - -Unlike `for {}`-cycle construct or `Array#forEach()` this iterator is safe. -You can mutate children while iteration and it will fix current index: - -```js -rule.rules.forEach(function (decl, i) { - rule.prepend( decl.clone() ); - // Will be infinity cycle, because on prepend current declaration become - // second and next index will go to current declaration again -}); - -rule.each(function (decl, i) { - rule.prepend( decl.clone() ); - // Will work correct (once clone each declaration), because after prepend - // iterator index will be recalculated -}); -``` - -Because CSS have nested structure, PostCSS also contains recursive iterator -`eachInside`: - -```js -root.eachInside(function (node, i) { - console.log(node.type ' inside ' + parent.type); -}); -``` - -There are also shortcuts to recursive iterate all nodes of specific type: - -```js -root.eachDecl(function (decl, i) { - // Each declaration inside root -}); - -root.eachRule(function (rule, i) { - // Each rule inside root and any nested at-rules -}); - -root.eachAtRule(function (atRule, i) { - // Each at-rule inside root and any nested at-rules -}); - -root.eachComment(function (comment, i) { - // Each comment inside root -}) -``` - -### Root Node - -`Root` node contains entire CSS tree. Its children can be only `Comment`, -`AtRule` or `Rule` nodes in `rules` property. - -You can create a new root using shortcut: - -```js -var root = postcss.root(); -``` - -Method `toString()` stringifies entire node tree to CSS string: - -```js -root = postcss.parse(css); -root.toString() == css; -``` - -### Comment Node - -```css -/* Block comment */ -``` - -PostCSS creates `Comment` nodes only for comments between rules or declarations. -Comments inside selectors, at-rules params, declaration values will be stored -in Raw property. - -`Comment` has only one property: `text` with trimmed text inside comment. - -```js -comment.text //=> "Block comment" -``` - -You can create a new comment using shortcut: - -```js -var comment = postcss.comment({ text: 'New comment' }); -``` - -### AtRule Node - -```css -@charset 'utf-8'; - -@font-face { - font-family: 'Cool' -} - -@media print { - img { display: none } -} -``` - -`AtRule` has two own properties: `name` and `params`. - -As you see, some at-rules don’t contain any children (like `@charset` -or `@import`), some of at-rules can contain only declarations -(like `@font-face` or `@page`), but most of them can contain rules -and nested at-rules (like `@media`, `@keyframes` and others). - -Parser selects `AtRule` content type by its name. If you create `AtRule` -node manually, it will detect own content type with new child type on first -`append` or other add method call: - -```js -var atRule = postcss.atRule({ name: '-x-animations' }); -atRule.rules //=> undefined -atRule.decls //=> undefined - -atRule.append( postcss.rule({ selector: 'from' }) ); -atRule.rules.length //=> 1 -atRule.decls //=> undefined -``` - -You can create a new at-rule using shortcut: - -```js -var atRule = postcss.atRule({ name: 'charset', params: 'utf-8' }); -``` - -### Rule Node - -```css -a { - color: black; -} -``` - -`Rule` node has `selector` property and contains `Declaration` and `Comment` -children in `decls` property. - -There is `selectors` shortcut, which return array: - -```js -rule.selector //=> "a, b" -rule.selectors //=> ['a', 'b'] -``` - -You can miss `Declaration` constructor in `append` and other insert methods: - -```js -rule.append({ prop: 'color', value: 'black' }); -``` - -Property `semicolon` indicates if last declaration in rule has semicolon or not: - -```js -var root = postcss.parse('a { color: black }'); -root.rules[0].semicolon //=> false - -var root = postcss.parse('a { color: black; }'); -root.rules[0].semicolon //=> true -``` - -You can create a new rule using shortcut: - -```js -var rule = postcss.rule({ selector: 'a' }); -``` - -### Declaration Node - -```css -color: black -``` - -`Declaration` node has `prop`, `value` and `important` properties. - -You can create a new declaration using this shortcut: - -```js -var decl = postcss.decl({ prop: 'color', value: 'black' }); -``` - -Or use short form in rule’s `append()` and other add methods: - -```js -rule.append({ prop: 'color', value: 'black' }); -``` diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/at-rule.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/at-rule.js deleted file mode 100644 index ebb541fd..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/at-rule.js +++ /dev/null @@ -1,94 +0,0 @@ -(function() { - var AtRule, Container, name, _fn, _i, _len, _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; }; - - Container = require('./container'); - - AtRule = (function(_super) { - __extends(AtRule, _super); - - function AtRule() { - this.type = 'atrule'; - AtRule.__super__.constructor.apply(this, arguments); - } - - AtRule.prototype.styleType = function() { - return this.type + ((this.rules != null) || (this.decls != null) ? '-body' : '-bodiless'); - }; - - AtRule.prototype.defaultStyle = function(type) { - if (type === 'atrule-body') { - return { - between: ' ', - after: this.defaultAfter() - }; - } else { - return { - between: '' - }; - } - }; - - AtRule.prototype.addMixin = function(type) { - var container, detector, mixin, name, value, _ref; - mixin = type === 'rules' ? Container.WithRules : Container.WithDecls; - if (!mixin) { - return; - } - _ref = mixin.prototype; - for (name in _ref) { - value = _ref[name]; - if (name === 'constructor') { - continue; - } - container = Container.prototype[name] === value; - detector = name === 'append' || name === 'prepend'; - if (container && !detector) { - continue; - } - this[name] = value; - } - return mixin.apply(this); - }; - - AtRule.raw('params'); - - AtRule.prototype.stringify = function(builder, last) { - var name, params, semicolon, style; - style = this.style(); - name = '@' + this.name; - params = this._params ? this._params.toString() : ''; - name += this.afterName != null ? this.afterName : params ? ' ' : ''; - if ((this.rules != null) || (this.decls != null)) { - return this.stringifyBlock(builder, name + params + style.between + '{'); - } else { - if (this.before) { - builder(this.before); - } - semicolon = !last || this.semicolon ? ';' : ''; - return builder(name + params + style.between + semicolon, this); - } - }; - - return AtRule; - - })(Container); - - _ref = ['append', 'prepend']; - _fn = function(name) { - return AtRule.prototype[name] = function(child) { - var mixin; - mixin = child.type === 'decl' ? 'decls' : 'rules'; - this.addMixin(mixin); - return this[name](child); - }; - }; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - name = _ref[_i]; - _fn(name); - } - - module.exports = AtRule; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/comment.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/comment.js deleted file mode 100644 index 1c8ff9b4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/comment.js +++ /dev/null @@ -1,38 +0,0 @@ -(function() { - var Comment, Node, - __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; }; - - Node = require('./node'); - - Comment = (function(_super) { - __extends(Comment, _super); - - function Comment() { - this.type = 'comment'; - Comment.__super__.constructor.apply(this, arguments); - } - - Comment.prototype.defaultStyle = function() { - return { - left: ' ', - right: ' ' - }; - }; - - Comment.prototype.stringify = function(builder) { - var style; - if (this.before) { - builder(this.before); - } - style = this.style(); - return builder("/*" + (style.left + this.text + style.right) + "*/", this); - }; - - return Comment; - - })(Node); - - module.exports = Comment; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/container.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/container.js deleted file mode 100644 index f92fa866..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/container.js +++ /dev/null @@ -1,315 +0,0 @@ -(function() { - var Container, Declaration, Node, - __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; }; - - Node = require('./node'); - - Declaration = require('./declaration'); - - Container = (function(_super) { - __extends(Container, _super); - - function Container() { - return Container.__super__.constructor.apply(this, arguments); - } - - Container.prototype.stringifyContent = function(builder) { - var last; - if (!this.rules && !this.decls) { - return; - } - if (this.rules) { - last = this.rules.length - 1; - return this.rules.map(function(rule, i) { - return rule.stringify(builder, last === i); - }); - } else if (this.decls) { - last = this.decls.length - 1; - return this.decls.map((function(_this) { - return function(decl, i) { - return decl.stringify(builder, last !== i || _this.semicolon); - }; - })(this)); - } - }; - - Container.prototype.defaultAfter = function() { - var _ref; - if (this.list.length === 0) { - return ''; - } else if (((_ref = this.list[0].before) != null ? _ref.indexOf("\n") : void 0) === -1) { - return this.list[0].before; - } else { - return "\n"; - } - }; - - Container.prototype.stringifyBlock = function(builder, start) { - var style; - style = this.style(); - if (this.before) { - builder(this.before); - } - builder(start, this, 'start'); - this.stringifyContent(builder); - if (style.after) { - builder(style.after); - } - return builder('}', this, 'end'); - }; - - Container.prototype.push = function(child) { - child.parent = this; - this.list.push(child); - return this; - }; - - Container.prototype.each = function(callback) { - var id, index, list, result; - this.lastEach || (this.lastEach = 0); - this.indexes || (this.indexes = {}); - this.lastEach += 1; - id = this.lastEach; - this.indexes[id] = 0; - list = this.list; - if (!list) { - return; - } - while (this.indexes[id] < list.length) { - index = this.indexes[id]; - result = callback(list[index], index); - if (result === false) { - break; - } - this.indexes[id] += 1; - } - delete this.indexes[id]; - if (result === false) { - return false; - } - }; - - Container.prototype.eachInside = function(callback) { - return this.each((function(_this) { - return function(child, i) { - var result; - result = callback(child, i); - if (result !== false && child.eachInside) { - result = child.eachInside(callback); - } - if (result === false) { - return result; - } - }; - })(this)); - }; - - Container.prototype.eachDecl = function(callback) {}; - - Container.prototype.eachComment = function(callback) { - return this.eachInside((function(_this) { - return function(child, i) { - var result; - result = child.type === 'comment' ? callback(child, i) : void 0; - if (result === false) { - return result; - } - }; - })(this)); - }; - - Container.prototype.append = function(child) { - child = this.normalize(child, this.list[this.list.length - 1]); - this.list.push(child); - return this; - }; - - Container.prototype.prepend = function(child) { - var id, index, _ref; - child = this.normalize(child, this.list[0], 'prepend'); - this.list.unshift(child); - _ref = this.indexes; - for (id in _ref) { - index = _ref[id]; - this.indexes[id] = index + 1; - } - return this; - }; - - Container.prototype.insertBefore = function(exist, add) { - var id, index, _ref; - exist = this.index(exist); - add = this.normalize(add, this.list[exist], exist === 0 ? 'prepend' : void 0); - this.list.splice(exist, 0, add); - _ref = this.indexes; - for (id in _ref) { - index = _ref[id]; - if (index >= exist) { - this.indexes[id] = index + 1; - } - } - return this; - }; - - Container.prototype.insertAfter = function(exist, add) { - var id, index, _ref; - exist = this.index(exist); - add = this.normalize(add, this.list[exist]); - this.list.splice(exist + 1, 0, add); - _ref = this.indexes; - for (id in _ref) { - index = _ref[id]; - if (index > exist) { - this.indexes[id] = index + 1; - } - } - return this; - }; - - Container.prototype.remove = function(child) { - var id, index, _ref; - child = this.index(child); - this.list.splice(child, 1); - _ref = this.indexes; - for (id in _ref) { - index = _ref[id]; - if (index >= child) { - this.indexes[id] = index - 1; - } - } - return this; - }; - - Container.prototype.every = function(condition) { - return this.list.every(condition); - }; - - Container.prototype.some = function(condition) { - return this.list.some(condition); - }; - - Container.prototype.index = function(child) { - if (typeof child === 'number') { - return child; - } else { - return this.list.indexOf(child); - } - }; - - Container.prop('first', { - get: function() { - return this.list[0]; - } - }); - - Container.prop('last', { - get: function() { - return this.list[this.list.length - 1]; - } - }); - - Container.prop('list', { - get: function() { - return this.rules || this.decls; - } - }); - - Container.prototype.normalize = function(child, sample) { - child.parent = this; - if ((child.before == null) && sample) { - child.before = sample.before; - } - return child; - }; - - return Container; - - })(Node); - - Container.WithRules = (function(_super) { - __extends(WithRules, _super); - - function WithRules() { - this.rules = []; - WithRules.__super__.constructor.apply(this, arguments); - } - - WithRules.prototype.eachDecl = function(callback) { - return this.each(function(child) { - var result; - if (!child.eachDecl) { - return; - } - result = child.eachDecl(callback); - if (result === false) { - return result; - } - }); - }; - - WithRules.prototype.eachRule = function(callback) { - return this.each((function(_this) { - return function(child, i) { - var result; - result = child.type === 'rule' ? callback(child, i) : child.eachRule ? child.eachRule(callback) : void 0; - if (result === false) { - return result; - } - }; - })(this)); - }; - - WithRules.prototype.eachAtRule = function(callback) { - return this.eachInside((function(_this) { - return function(child, i) { - var result; - result = child.type === 'atrule' ? callback(child, i) : void 0; - if (result === false) { - return result; - } - }; - })(this)); - }; - - return WithRules; - - })(Container); - - Container.WithDecls = (function(_super) { - __extends(WithDecls, _super); - - function WithDecls() { - this.decls = []; - WithDecls.__super__.constructor.apply(this, arguments); - } - - WithDecls.prototype.normalize = function(child, sample) { - if (!child.type) { - child = new Declaration(child); - } - return WithDecls.__super__.normalize.call(this, child, sample); - }; - - WithDecls.prototype.eachDecl = function(callback) { - return this.each((function(_this) { - return function(node, i) { - var result; - if (node.type !== 'decl') { - return; - } - result = callback(node, i); - if (result === false) { - return result; - } - }; - })(this)); - }; - - return WithDecls; - - })(Container); - - module.exports = Container; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/declaration.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/declaration.js deleted file mode 100644 index fce7678a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/declaration.js +++ /dev/null @@ -1,69 +0,0 @@ -(function() { - var Declaration, Node, vendor, - __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; }; - - Node = require('./node'); - - vendor = require('./vendor'); - - Declaration = (function(_super) { - __extends(Declaration, _super); - - function Declaration() { - this.type = 'decl'; - Declaration.__super__.constructor.apply(this, arguments); - } - - Declaration.prototype.defaultStyle = function() { - return { - before: "\n ", - between: ': ' - }; - }; - - Declaration.raw('value'); - - Declaration.prop('important', { - get: function() { - return !!this._important; - }, - set: function(value) { - if (typeof value === 'string' && value !== '') { - return this._important = value; - } else if (value) { - return this._important = ' !important'; - } else { - return this._important = false; - } - } - }); - - Declaration.prototype.stringify = function(builder, semicolon) { - var string, style; - style = this.style(); - if (style.before) { - builder(style.before); - } - string = this.prop + style.between + this._value.toString(); - string += this._important || ''; - if (semicolon) { - string += ';'; - } - return builder(string, this); - }; - - Declaration.prototype.clone = function(obj) { - var cloned; - cloned = Declaration.__super__.clone.apply(this, arguments); - delete cloned.before; - return cloned; - }; - - return Declaration; - - })(Node); - - module.exports = Declaration; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/lazy.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/lazy.js deleted file mode 100644 index 92a03760..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/lazy.js +++ /dev/null @@ -1,18 +0,0 @@ -(function() { - var lazy; - - lazy = function(klass, name, callback) { - var cache; - cache = name + 'Cache'; - return klass.prototype[name] = function() { - if (this[cache] != null) { - return this[cache]; - } else { - return this[cache] = callback.apply(this, arguments); - } - }; - }; - - module.exports = lazy; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/list.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/list.js deleted file mode 100644 index 5f984c8d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/list.js +++ /dev/null @@ -1,64 +0,0 @@ -(function() { - var list; - - list = { - split: function(string, separators, last) { - var array, current, escape, func, letter, quote, separator, split, _i, _j, _len, _len1; - array = []; - current = ''; - split = false; - func = 0; - quote = false; - escape = false; - for (_i = 0, _len = string.length; _i < _len; _i++) { - letter = string[_i]; - if (quote) { - if (escape) { - escape = false; - } else if (letter === '\\') { - escape = true; - } else if (letter === quote) { - quote = false; - } - } else if (letter === '"' || letter === "'") { - quote = letter; - } else if (letter === '(') { - func += 1; - } else if (letter === ')') { - if (func > 0) { - func -= 1; - } - } else if (func === 0) { - for (_j = 0, _len1 = separators.length; _j < _len1; _j++) { - separator = separators[_j]; - if (letter === separator) { - split = true; - } - } - } - if (split) { - if (current !== '') { - array.push(current.trim()); - } - current = ''; - split = false; - } else { - current += letter; - } - } - if (last || current !== '') { - array.push(current.trim()); - } - return array; - }, - space: function(string) { - return this.split(string, [' ', "\n", "\t"]); - }, - comma: function(string) { - return this.split(string, [','], true); - } - }; - - module.exports = list; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/map-generator.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/map-generator.js deleted file mode 100644 index 75b49940..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/map-generator.js +++ /dev/null @@ -1,242 +0,0 @@ -(function() { - var MapGenerator, Result, base64js, fs, lazy, mozilla, path; - - base64js = require('base64-js'); - - mozilla = require('source-map'); - - Result = require('./result'); - - lazy = require('./lazy'); - - path = require('path'); - - fs = require('fs'); - - MapGenerator = (function() { - function MapGenerator(root, opts) { - this.root = root; - this.opts = opts; - } - - MapGenerator.prototype.startWith = function(string, start) { - return string.slice(0, +(start.length - 1) + 1 || 9e9) === start; - }; - - MapGenerator.prototype.isMap = function() { - if (typeof this.opts.map === 'boolean') { - return this.opts.map; - } - return !!this.opts.inlineMap || !!this.prevMap(); - }; - - lazy(MapGenerator, 'isInline', function() { - if (this.opts.inlineMap != null) { - return this.opts.inlineMap; - } - return this.isPrevInline(); - }); - - lazy(MapGenerator, 'isPrevInline', function() { - var text; - if (!this.prevAnnotation()) { - return false; - } - text = this.prevAnnotation().text; - return this.startWith(text, '# sourceMappingURL=data:'); - }); - - lazy(MapGenerator, 'prevMap', function() { - var file, map; - if (this.opts.map && typeof this.opts.map !== 'boolean') { - return this.opts.map; - } - if (this.isPrevInline()) { - return this.encodeInline(this.prevAnnotation().text); - } else if (this.opts.from) { - map = this.opts.from + '.map'; - if (this.prevAnnotation()) { - file = this.prevAnnotation().text.replace('# sourceMappingURL=', ''); - map = path.join(path.dirname(this.opts.from), file); - } - if (typeof fs.existsSync === "function" ? fs.existsSync(map) : void 0) { - return fs.readFileSync(map).toString(); - } else { - return false; - } - } - }); - - lazy(MapGenerator, 'prevAnnotation', function() { - var last; - last = this.root.last; - if (!last) { - return null; - } - if (last.type === 'comment' && this.startWith(last.text, '# sourceMappingURL=')) { - return last; - } else { - return null; - } - }); - - MapGenerator.prototype.encodeInline = function(text) { - var base64, byte, bytes, uri; - uri = '# sourceMappingURL=data:application/json,'; - base64 = '# sourceMappingURL=data:application/json;base64,'; - if (this.startWith(text, uri)) { - return decodeURIComponent(text.slice(uri.length)); - } else if (this.startWith(text, base64)) { - text = text.slice(base64.length); - bytes = base64js.toByteArray(text); - return ((function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = bytes.length; _i < _len; _i++) { - byte = bytes[_i]; - _results.push(String.fromCharCode(byte)); - } - return _results; - })()).join(''); - } else { - throw new Error('Unknown source map encoding'); - } - }; - - MapGenerator.prototype.clearAnnotation = function() { - var _ref; - return (_ref = this.prevAnnotation()) != null ? _ref.removeSelf() : void 0; - }; - - MapGenerator.prototype.applyPrevMap = function() { - var from, prev; - if (this.prevMap()) { - prev = this.prevMap(); - prev = typeof prev === 'string' ? JSON.parse(prev) : prev instanceof mozilla.SourceMapConsumer ? mozilla.SourceMapGenerator.fromSourceMap(prev).toJSON() : typeof prev === 'object' && prev.toJSON ? prev.toJSON() : prev; - prev = new mozilla.SourceMapConsumer(prev); - from = this.relative(this.opts.from); - return this.map.applySourceMap(prev, from, path.dirname(from)); - } - }; - - MapGenerator.prototype.addAnnotation = function() { - var bytes, char, content; - if (this.opts.mapAnnotation === false) { - return; - } - if (this.prevMap() && !this.prevAnnotation()) { - return; - } - content = this.isInline() ? (bytes = (function() { - var _i, _len, _ref, _results; - _ref = this.map.toString(); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - char = _ref[_i]; - _results.push(char.charCodeAt(0)); - } - return _results; - }).call(this), "data:application/json;base64," + base64js.fromByteArray(bytes)) : this.outputFile() + '.map'; - return this.css += "\n/*# sourceMappingURL=" + content + " */"; - }; - - MapGenerator.prototype.outputFile = function() { - if (this.opts.to) { - return path.basename(this.opts.to); - } else { - return 'to.css'; - } - }; - - MapGenerator.prototype.generateMap = function() { - this.stringify(); - this.applyPrevMap(); - this.addAnnotation(); - if (this.isInline()) { - return new Result(this.css); - } else { - return new Result(this.css, this.map.toString()); - } - }; - - MapGenerator.prototype.relative = function(file) { - var from; - from = this.opts.to ? path.dirname(this.opts.to) : '.'; - file = path.relative(from, file); - if (path.sep === '\\') { - file = file.replace('\\', '/'); - } - return file; - }; - - MapGenerator.prototype.sourcePath = function(node) { - return this.relative(node.source.file || 'from.css'); - }; - - MapGenerator.prototype.stringify = function() { - var builder, column, line; - this.css = ''; - this.map = new mozilla.SourceMapGenerator({ - file: this.outputFile() - }); - line = 1; - column = 1; - builder = (function(_this) { - return function(str, node, type) { - var last, lines, _ref, _ref1; - _this.css += str; - if ((node != null ? (_ref = node.source) != null ? _ref.start : void 0 : void 0) && type !== 'end') { - _this.map.addMapping({ - source: _this.sourcePath(node), - original: { - line: node.source.start.line, - column: node.source.start.column - 1 - }, - generated: { - line: line, - column: column - 1 - } - }); - } - lines = str.match(/\n/g); - if (lines) { - line += lines.length; - last = str.lastIndexOf("\n"); - column = str.length - last; - } else { - column = column + str.length; - } - if ((node != null ? (_ref1 = node.source) != null ? _ref1.end : void 0 : void 0) && type !== 'start') { - return _this.map.addMapping({ - source: _this.sourcePath(node), - original: { - line: node.source.end.line, - column: node.source.end.column - }, - generated: { - line: line, - column: column - } - }); - } - }; - })(this); - return this.root.stringify(builder); - }; - - MapGenerator.prototype.getResult = function() { - this.clearAnnotation(); - if (this.isMap()) { - return this.generateMap(); - } else { - return new Result(this.root.toString()); - } - }; - - return MapGenerator; - - })(); - - module.exports = MapGenerator; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/node.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/node.js deleted file mode 100644 index 5c3af9fc..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/node.js +++ /dev/null @@ -1,189 +0,0 @@ -(function() { - var Node, Raw, clone, keys, - __hasProp = {}.hasOwnProperty; - - Raw = require('./raw'); - - clone = function(obj, parent) { - var cloned, name, value; - if (typeof obj !== 'object') { - return obj; - } - cloned = new obj.constructor(); - for (name in obj) { - if (!__hasProp.call(obj, name)) continue; - value = obj[name]; - if (name === 'parent' && typeof value === 'object') { - if (parent) { - cloned[name] = parent; - } - } else if (value instanceof Array) { - cloned[name] = value.map(function(i) { - return clone(i, cloned); - }); - } else { - cloned[name] = clone(value, cloned); - } - } - return cloned; - }; - - keys = function(obj, keys) { - var all, key; - all = {}; - for (key in keys) { - if (obj[key] != null) { - all[key] = obj[key]; - } else { - return false; - } - } - return all; - }; - - Node = (function() { - function Node(defaults) { - var name, value; - if (defaults == null) { - defaults = {}; - } - for (name in defaults) { - value = defaults[name]; - this[name] = value; - } - } - - Node.prop = function(name, params) { - return Object.defineProperty(this.prototype, name, params); - }; - - Node.raw = function(name) { - var hidden; - hidden = '_' + name; - return this.prop(name, { - get: function() { - var prop; - prop = this[hidden]; - if (prop instanceof Raw) { - return prop.value; - } else { - return prop; - } - }, - set: function(value) { - if (value instanceof Raw) { - return this[hidden] = value; - } else { - return this[hidden] = value; - } - } - }); - }; - - Node.prototype.removeSelf = function() { - if (!this.parent) { - return; - } - this.parent.remove(this); - return this; - }; - - Node.prototype.toString = function() { - var builder, result; - result = ''; - builder = function(str) { - return result += str; - }; - this.stringify(builder); - return result; - }; - - Node.prototype.clone = function(overrides) { - var cloned, name, value; - if (overrides == null) { - overrides = {}; - } - cloned = clone(this); - for (name in overrides) { - value = overrides[name]; - cloned[name] = value; - } - return cloned; - }; - - Node.prototype.toJSON = function() { - var fixed, name, value; - fixed = {}; - for (name in this) { - if (!__hasProp.call(this, name)) continue; - value = this[name]; - if (name === 'parent') { - continue; - } - fixed[name] = value instanceof Array ? value.map(function(i) { - if (typeof i === 'object' && i.toJSON) { - return i.toJSON(); - } else { - return i; - } - }) : typeof value === 'object' && value.toJSON ? value.toJSON() : value; - } - return fixed; - }; - - Node.prototype.defaultStyle = function() { - return {}; - }; - - Node.prototype.styleType = function() { - return this.type; - }; - - Node.prototype.style = function() { - var all, defaults, key, merge, root, style, type; - type = this.styleType(); - defaults = this.defaultStyle(type); - all = keys(this, defaults); - if (all) { - return all; - } - style = defaults; - if (this.parent) { - root = this; - while (root.parent) { - root = root.parent; - } - root.styleCache || (root.styleCache = {}); - if (root.styleCache[type]) { - style = root.styleCache[type]; - } else { - root.eachInside(function(another) { - if (another.styleType() !== type) { - return; - } - if (this === another) { - return; - } - all = keys(another, style); - if (all) { - style = all; - return false; - } - }); - root.styleCache[type] = style; - } - } - merge = {}; - for (key in style) { - merge[key] = this[key] != null ? this[key] : style[key]; - } - return merge; - }; - - return Node; - - })(); - - module.exports = Node; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/parse.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/parse.js deleted file mode 100644 index be308621..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/parse.js +++ /dev/null @@ -1,496 +0,0 @@ -(function() { - var AtRule, Comment, Declaration, Parser, Raw, Root, Rule, SyntexError; - - SyntexError = require('./syntax-error'); - - Declaration = require('./declaration'); - - Comment = require('./comment'); - - AtRule = require('./at-rule'); - - Root = require('./root'); - - Rule = require('./rule'); - - Raw = require('./raw'); - - Parser = (function() { - function Parser(source, opts) { - this.opts = opts; - this.source = source.toString(); - this.root = new Root(); - this.current = this.root; - this.parents = [this.current]; - this.type = 'rules'; - this.types = [this.type]; - this.pos = -1; - this.line = 1; - this.lines = []; - this.column = 0; - this.buffer = ''; - } - - Parser.prototype.loop = function() { - while (this.pos < this.source.length - 1) { - this.move(); - this.nextLetter(); - } - return this.endFile(); - }; - - Parser.prototype.nextLetter = function() { - this.inString() || this.inComment() || this.isComment() || this.isString() || this.isWrong() || this.inAtrule() || this.isAtrule() || this.isBlockEnd() || this.inSelector() || this.isSelector() || this.inProperty() || this.isProperty() || this.inValue(); - return this.unknown(); - }; - - Parser.prototype.inString = function() { - if (this.quote) { - if (this.escape) { - this.escape = false; - } else if (this.letter === '\\') { - this.escape = true; - } else if (this.letter === this.quote) { - this.quote = void 0; - } - this.trimmed += this.letter; - return true; - } - }; - - Parser.prototype.isString = function() { - if (this.letter === '"' || this.letter === "'") { - this.quote = this.letter; - this.quotePos = { - line: this.line, - column: this.column - }; - this.trimmed += this.letter; - return true; - } - }; - - Parser.prototype.inComment = function() { - var left, right, text, _ref, _ref1; - if (this.inside('comment')) { - if (this.next('*/')) { - _ref = this.startSpaces(this.prevBuffer()), text = _ref[0], left = _ref[1]; - _ref1 = this.endSpaces(text), text = _ref1[0], right = _ref1[1]; - this.current.text = text; - this.current.left = left; - this.current.right = right; - this.move(); - this.pop(); - } - return true; - } else if (this.inside('value-comment')) { - if (this.next('*/')) { - this.popType(); - this.move(); - } - return true; - } - }; - - Parser.prototype.isComment = function() { - if (this.next('/*')) { - if (this.inside('rules') || this.inside('decls')) { - this.init(new Comment()); - this.addType('comment'); - this.move(); - return this.buffer = ''; - } else { - this.commentPos = { - line: this.line, - column: this.column - }; - this.addType('value-comment'); - this.move(); - return true; - } - } - }; - - Parser.prototype.isWrong = function() { - if (this.letter === '{' && (this.inside('decls') || this.inside('value'))) { - this.error("Unexpected {"); - } - if (this.inside('prop') && (this.letter === '}' || this.letter === ';')) { - return this.error('Missing property value'); - } - }; - - Parser.prototype.isAtrule = function() { - if (this.letter === '@' && this.inside('rules')) { - this.init(new AtRule()); - this.current.name = ''; - this.addType('atrule-name'); - return true; - } - }; - - Parser.prototype.inAtrule = function(close) { - var left, raw, right, _ref, _ref1; - if (this.inside('atrule-name')) { - if (this.space()) { - this.checkAtruleName(); - this.buffer = this.buffer.slice(this.current.name.length); - this.trimmed = ''; - this.setType('atrule-param'); - } else if (this.letter === ';' || this.letter === '{' || close) { - this.current.between = ''; - this.checkAtruleName(); - this.endAtruleParams(); - } else { - this.current.name += this.letter; - } - return true; - } else if (this.inside('atrule-param')) { - if (this.letter === ';' || this.letter === '{' || close) { - _ref = this.startSpaces(this.prevBuffer()), raw = _ref[0], left = _ref[1]; - _ref1 = this.endSpaces(raw), raw = _ref1[0], right = _ref1[1]; - this.current.params = this.raw(this.trimmed.trim(), raw); - if (this.current.params) { - this.current.afterName = left; - this.current.between = right; - } else { - this.current.afterName = ''; - this.current.between = left + right; - } - this.endAtruleParams(); - } else { - this.trimmed += this.letter; - } - return true; - } - }; - - Parser.prototype.inSelector = function() { - var raw, spaces, _ref; - if (this.inside('selector')) { - if (this.letter === '{') { - _ref = this.endSpaces(this.prevBuffer()), raw = _ref[0], spaces = _ref[1]; - this.current.selector = this.raw(this.trimmed.trim(), raw); - this.current.between = spaces; - this.semicolon = false; - this.buffer = ''; - this.setType('decls'); - } else { - this.trimmed += this.letter; - } - return true; - } - }; - - Parser.prototype.isSelector = function() { - if (!this.space() && this.inside('rules')) { - this.init(new Rule()); - if (this.letter === '{') { - this.addType('decls'); - this.current.selector = ''; - this.current.between = ''; - this.semicolon = false; - this.buffer = ''; - } else { - this.addType('selector'); - this.buffer = this.letter; - this.trimmed = this.letter; - } - return true; - } - }; - - Parser.prototype.isBlockEnd = function() { - if (this.letter === '}') { - if (this.parents.length === 1) { - this.error('Unexpected }'); - } else { - if (this.inside('value')) { - this.fixEnd(function() { - return this.inValue('close'); - }); - } else { - if (this.semicolon) { - this.current.semicolon = true; - } - this.current.after = this.prevBuffer(); - } - this.pop(); - } - return true; - } - }; - - Parser.prototype.inProperty = function() { - if (this.inside('prop')) { - if (this.letter === ':') { - if (this.buffer[0] === '*' || this.buffer[0] === '_') { - this.current.before += this.buffer[0]; - this.trimmed = this.trimmed.slice(1); - this.buffer = this.buffer.slice(1); - } - this.current.prop = this.trimmed.trim(); - this.current.between = this.prevBuffer().slice(this.current.prop.length); - this.buffer = ''; - this.setType('value'); - this.trimmed = ''; - } else if (this.letter === '{') { - this.error('Unexpected { in decls'); - } else { - this.trimmed += this.letter; - } - return true; - } - }; - - Parser.prototype.isProperty = function() { - if (this.inside('decls') && !this.space() && this.letter !== ';') { - this.init(new Declaration()); - this.addType('prop'); - this.buffer = this.letter; - this.trimmed = this.letter; - this.semicolon = false; - return true; - } - }; - - Parser.prototype.inValue = function(close) { - var end, match, raw, spaces, trim, _ref; - if (this.inside('value')) { - if (this.letter === '(') { - this.inBrackets = true; - } else if (this.inBrackets && this.letter === ')') { - this.inBrackets = false; - } - if ((this.letter === ';' && !this.inBrackets) || close) { - if (this.letter === ';') { - this.semicolon = true; - } - _ref = this.startSpaces(this.prevBuffer()), raw = _ref[0], spaces = _ref[1]; - trim = this.trimmed.trim(); - if (match = raw.match(/\s+!important\s*$/)) { - this.current._important = match[0]; - end = -match[0].length - 1; - raw = raw.slice(0, +end + 1 || 9e9); - trim = trim.replace(/\s+!important$/, ''); - } - this.current.value = this.raw(trim, raw); - this.current.between += ':' + spaces; - this.pop(); - } else { - this.trimmed += this.letter; - } - return true; - } - }; - - Parser.prototype.unknown = function() { - if (!this.space) { - return this.error("Unexpected symbol " + this.letter); - } - }; - - Parser.prototype.endFile = function() { - if (this.inside('atrule-param') || this.inside('atrule-name')) { - this.fixEnd(function() { - return this.inAtrule('close'); - }); - } - if (this.inside('comment')) { - return this.error('Unclosed comment', this.current.source.start); - } else if (this.parents.length > 1) { - return this.error('Unclosed block', this.current.source.start); - } else if (this.inside('value-comment')) { - return this.error('Unclosed comment', this.commentPos); - } else if (this.quote) { - return this.error('Unclosed quote', this.quotePos); - } else { - return this.root.after = this.buffer; - } - }; - - Parser.prototype.error = function(message, position) { - if (position == null) { - position = { - line: this.line, - column: this.column - }; - } - throw new SyntexError(message, this.source, position, this.opts.from); - }; - - Parser.prototype.move = function() { - this.pos += 1; - this.column += 1; - this.letter = this.source[this.pos]; - this.buffer += this.letter; - if (this.letter === "\n") { - this.lines[this.line] = this.column - 1; - this.line += 1; - return this.column = 0; - } - }; - - Parser.prototype.prevBuffer = function() { - return this.buffer.slice(0, -1); - }; - - Parser.prototype.inside = function(type) { - return this.type === type; - }; - - Parser.prototype.next = function(string) { - return this.source.slice(this.pos, +(this.pos + string.length - 1) + 1 || 9e9) === string; - }; - - Parser.prototype.space = function() { - return this.letter.match(/\s/); - }; - - Parser.prototype.init = function(node) { - this.current.push(node); - this.parents.push(node); - this.current = node; - this.current.source = { - start: { - line: this.line, - column: this.column - } - }; - if (this.opts.from) { - this.current.source.file = this.opts.from; - } - this.current.before = this.buffer.slice(0, -1); - return this.buffer = ''; - }; - - Parser.prototype.raw = function(value, raw) { - if (value !== raw) { - return new Raw(value, raw); - } else { - return value; - } - }; - - Parser.prototype.fixEnd = function(callback) { - var after, all, el, last, lines, start; - if (this.letter === '}') { - start = this.buffer.search(/\s*\}$/); - after = this.buffer.slice(start, -1); - } else { - start = this.buffer.search(/\s*$/); - after = this.buffer.slice(start); - } - this.buffer = this.buffer.slice(0, +start + 1 || 9e9); - el = this.current; - callback.apply(this); - lines = after.match(/\n/g); - if (lines) { - el.source.end.line -= lines.length; - all = this.lines[el.source.end.line]; - last = after.indexOf("\n"); - if (last === -1) { - last = after.length; - } - el.source.end.column = all - last; - } else { - el.source.end.column -= after.length; - } - this.current.after = after; - return this.buffer = after; - }; - - Parser.prototype.pop = function() { - this.current.source.end = { - line: this.line, - column: this.column - }; - this.popType(); - this.parents.pop(); - this.current = this.parents[this.parents.length - 1]; - return this.buffer = ''; - }; - - Parser.prototype.addType = function(type) { - this.types.push(type); - return this.type = type; - }; - - Parser.prototype.setType = function(type) { - this.types[this.types.length - 1] = type; - return this.type = type; - }; - - Parser.prototype.popType = function() { - this.types.pop(); - return this.type = this.types[this.types.length - 1]; - }; - - Parser.prototype.atruleType = function() { - var name; - name = this.current.name.toLowerCase(); - if (name === 'page' || name === 'font-face' || name.slice(-8) === 'viewport') { - return 'decls'; - } else { - return 'rules'; - } - }; - - Parser.prototype.endAtruleParams = function() { - var type; - if (this.letter === '{') { - type = this.atruleType(); - this.current.addMixin(type); - this.setType(type); - return this.buffer = ''; - } else { - if (this.letter === ';') { - this.current.semicolon = true; - } - return this.pop(); - } - }; - - Parser.prototype.checkAtruleName = function() { - if (this.current.name === '') { - return this.error('At-rule without name'); - } - }; - - Parser.prototype.startSpaces = function(string) { - var match, pos; - match = string.match(/^\s*/); - if (match) { - pos = match[0].length; - return [string.slice(pos), match[0]]; - } else { - return [string, '']; - } - }; - - Parser.prototype.endSpaces = function(string) { - var match, pos; - match = string.match(/\s*$/); - if (match) { - pos = match[0].length + 1; - return [string.slice(0, +(-pos) + 1 || 9e9), match[0]]; - } else { - return [string, '']; - } - }; - - return Parser; - - })(); - - module.exports = function(source, opts) { - var parser; - if (opts == null) { - opts = {}; - } - parser = new Parser(source, opts); - parser.loop(); - return parser.root; - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/postcss.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/postcss.js deleted file mode 100644 index 9ac3e9aa..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/postcss.js +++ /dev/null @@ -1,76 +0,0 @@ -(function() { - var AtRule, Comment, Declaration, PostCSS, Root, Rule, postcss, - __slice = [].slice; - - Declaration = require('./declaration'); - - Comment = require('./comment'); - - AtRule = require('./at-rule'); - - Rule = require('./rule'); - - Root = require('./root'); - - PostCSS = (function() { - function PostCSS(processors) { - this.processors = processors != null ? processors : []; - } - - PostCSS.prototype.use = function(processor) { - this.processors.push(processor); - return this; - }; - - PostCSS.prototype.process = function(css, opts) { - var parsed, processor, returned, _i, _len, _ref; - if (opts == null) { - opts = {}; - } - parsed = postcss.parse(css, opts); - _ref = this.processors; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - processor = _ref[_i]; - returned = processor(parsed); - if (returned instanceof Root) { - parsed = returned; - } - } - return parsed.toResult(opts); - }; - - return PostCSS; - - })(); - - postcss = function() { - var processors; - processors = 1 <= arguments.length ? __slice.call(arguments, 0) : []; - return new PostCSS(processors); - }; - - postcss.parse = require('./parse'); - - postcss.comment = function(defaults) { - return new Comment(defaults); - }; - - postcss.atRule = function(defaults) { - return new AtRule(defaults); - }; - - postcss.decl = function(defaults) { - return new Declaration(defaults); - }; - - postcss.rule = function(defaults) { - return new Rule(defaults); - }; - - postcss.root = function(defaults) { - return new Root(defaults); - }; - - module.exports = postcss; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/raw.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/raw.js deleted file mode 100644 index 94f2cba6..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/raw.js +++ /dev/null @@ -1,32 +0,0 @@ -(function() { - var Raw; - - Raw = (function() { - Raw.load = function(value, raw) { - if ((raw != null) && value !== raw) { - return new Raw(value, raw); - } else { - return value; - } - }; - - function Raw(value, raw) { - this.value = value; - this.raw = raw; - } - - Raw.prototype.toString = function() { - if (this.changed) { - return this.value || ''; - } else { - return this.raw || this.value || ''; - } - }; - - return Raw; - - })(); - - module.exports = Raw; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/result.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/result.js deleted file mode 100644 index 713cae95..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/result.js +++ /dev/null @@ -1,22 +0,0 @@ -(function() { - var Result; - - Result = (function() { - function Result(css, map) { - this.css = css; - if (map) { - this.map = map; - } - } - - Result.prototype.toString = function() { - return this.css; - }; - - return Result; - - })(); - - module.exports = Result; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/root.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/root.js deleted file mode 100644 index dd006d7c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/root.js +++ /dev/null @@ -1,57 +0,0 @@ -(function() { - var AtRule, Comment, Container, Declaration, MapGenerator, Root, Rule, - __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; }; - - MapGenerator = require('./map-generator'); - - Declaration = require('./declaration'); - - Container = require('./container'); - - Comment = require('./comment'); - - AtRule = require('./at-rule'); - - Rule = require('./rule'); - - Root = (function(_super) { - __extends(Root, _super); - - function Root() { - this.type = 'root'; - this.rules = []; - Root.__super__.constructor.apply(this, arguments); - } - - Root.prototype.normalize = function(child, sample, type) { - child = Root.__super__.normalize.apply(this, arguments); - if (type === 'prepend') { - sample.before = this.rules.length > 1 ? this.rules[1].before : this.after; - } - return child; - }; - - Root.prototype.stringify = function(builder) { - this.stringifyContent(builder); - if (this.after) { - return builder(this.after); - } - }; - - Root.prototype.toResult = function(opts) { - var map; - if (opts == null) { - opts = {}; - } - map = new MapGenerator(this, opts); - return map.getResult(); - }; - - return Root; - - })(Container.WithRules); - - module.exports = Root; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/rule.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/rule.js deleted file mode 100644 index 3ab00960..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/rule.js +++ /dev/null @@ -1,59 +0,0 @@ -(function() { - var Container, Declaration, Rule, list, - __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; }; - - Container = require('./container'); - - Declaration = require('./declaration'); - - list = require('./list'); - - Rule = (function(_super) { - __extends(Rule, _super); - - function Rule() { - this.type = 'rule'; - Rule.__super__.constructor.apply(this, arguments); - } - - Rule.prototype.styleType = function() { - return this.type + (this.decls.length ? '-body' : '-empty'); - }; - - Rule.prototype.defaultStyle = function(type) { - if (type === 'rule-body') { - return { - between: ' ', - after: this.defaultAfter() - }; - } else { - return { - between: ' ', - after: '' - }; - } - }; - - Rule.raw('selector'); - - Rule.prop('selectors', { - get: function() { - return list.comma(this.selector); - }, - set: function(values) { - return this.selector = values.join(', '); - } - }); - - Rule.prototype.stringify = function(builder) { - return this.stringifyBlock(builder, this._selector + this.style().between + '{'); - }; - - return Rule; - - })(Container.WithDecls); - - module.exports = Rule; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/syntax-error.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/syntax-error.js deleted file mode 100644 index 349dfae9..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/syntax-error.js +++ /dev/null @@ -1,27 +0,0 @@ -(function() { - var SyntaxError, - __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; }; - - SyntaxError = (function(_super) { - __extends(SyntaxError, _super); - - function SyntaxError(text, source, pos, file) { - this.source = source; - this.file = file; - this.line = pos.line; - this.column = pos.column; - this.message = "Can't parse CSS: " + text; - this.message += " at line " + pos.line + ":" + pos.column; - if (this.file) { - this.message += " in " + this.file; - } - } - - return SyntaxError; - - })(Error); - - module.exports = SyntaxError; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/vendor.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/vendor.js deleted file mode 100644 index a1a8223b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/lib/vendor.js +++ /dev/null @@ -1,27 +0,0 @@ -(function() { - var vendor; - - vendor = { - prefix: function(prop) { - var separator; - if (prop[0] === '-') { - separator = prop.indexOf('-', 1) + 1; - return prop.slice(0, separator); - } else { - return ''; - } - }, - unprefixed: function(prop) { - var separator; - if (prop[0] === '-') { - separator = prop.indexOf('-', 1) + 1; - return prop.slice(separator); - } else { - return prop; - } - } - }; - - module.exports = vendor; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/.travis.yml b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/.travis.yml deleted file mode 100644 index 939cb517..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/LICENSE.MIT b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/LICENSE.MIT deleted file mode 100644 index 96d3f68a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/LICENSE.MIT +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/README.md deleted file mode 100644 index ed31d1ab..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/README.md +++ /dev/null @@ -1,31 +0,0 @@ -base64-js -========= - -`base64-js` does basic base64 encoding/decoding in pure JS. - -[![build status](https://secure.travis-ci.org/beatgammit/base64-js.png)](http://travis-ci.org/beatgammit/base64-js) - -[![testling badge](https://ci.testling.com/beatgammit/base64-js.png)](https://ci.testling.com/beatgammit/base64-js) - -Many browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data. - -Sometimes encoding/decoding binary data in the browser is useful, and that is what this module does. - -## install - -With [npm](https://npmjs.org) do: - -`npm install base64-js` - -## methods - -`var base64 = require('base64-js')` - -`base64` has two exposed functions, `toByteArray` and `fromByteArray`, which both take a single argument. - -* `toByteArray` - Takes a base64 string and returns a byte array -* `fromByteArray` - Takes a byte array and returns a base64 string - -## license - -MIT \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/bench/bench.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/bench/bench.js deleted file mode 100644 index 0689e08a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/bench/bench.js +++ /dev/null @@ -1,19 +0,0 @@ -var random = require('crypto').pseudoRandomBytes - -var b64 = require('../') -var fs = require('fs') -var path = require('path') -var data = random(1e6).toString('base64') -//fs.readFileSync(path.join(__dirname, 'example.b64'), 'ascii').split('\n').join('') -var start = Date.now() -var raw = b64.toByteArray(data) -var middle = Date.now() -var data = b64.fromByteArray(raw) -var end = Date.now() - -console.log('decode ms, decode ops/ms, encode ms, encode ops/ms') -console.log( - middle - start, data.length / (middle - start), - end - middle, data.length / (end - middle)) -//console.log(data) - diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/lib/b64.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/lib/b64.js deleted file mode 100644 index 887f7068..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/lib/b64.js +++ /dev/null @@ -1,121 +0,0 @@ -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -;(function (exports) { - 'use strict'; - - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var ZERO = '0'.charCodeAt(0) - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS) - return 62 // '+' - if (code === SLASH) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } - - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length - - var L = 0 - - function push (v) { - arr[L++] = v - } - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } - - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } - - return arr - } - - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length - - function encode (num) { - return lookup.charAt(num) - } - - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } - - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } - - return output - } - - module.exports.toByteArray = b64ToByteArray - module.exports.fromByteArray = uint8ToBase64 -}()) diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/package.json deleted file mode 100644 index 3baf7e44..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "T. Jameson Little", - "email": "t.jameson.little@gmail.com" - }, - "name": "base64-js", - "description": "Base64 encoding/decoding in pure JS", - "version": "0.0.6", - "repository": { - "type": "git", - "url": "git://github.com/beatgammit/base64-js.git" - }, - "main": "lib/b64.js", - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "chrome/4..latest", - "firefox/3..latest", - "safari/5.1..latest", - "opera/11.0..latest", - "iphone/6", - "ipad/6" - ] - }, - "engines": { - "node": ">= 0.4" - }, - "license": "MIT", - "dependencies": {}, - "devDependencies": { - "tape": "~2.3.2" - }, - "readme": "base64-js\n=========\n\n`base64-js` does basic base64 encoding/decoding in pure JS.\n\n[![build status](https://secure.travis-ci.org/beatgammit/base64-js.png)](http://travis-ci.org/beatgammit/base64-js)\n\n[![testling badge](https://ci.testling.com/beatgammit/base64-js.png)](https://ci.testling.com/beatgammit/base64-js)\n\nMany browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data.\n\nSometimes encoding/decoding binary data in the browser is useful, and that is what this module does.\n\n## install\n\nWith [npm](https://npmjs.org) do:\n\n`npm install base64-js`\n\n## methods\n\n`var base64 = require('base64-js')`\n\n`base64` has two exposed functions, `toByteArray` and `fromByteArray`, which both take a single argument.\n\n* `toByteArray` - Takes a base64 string and returns a byte array\n* `fromByteArray` - Takes a byte array and returns a base64 string\n\n## license\n\nMIT", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/beatgammit/base64-js/issues" - }, - "homepage": "https://github.com/beatgammit/base64-js", - "_id": "base64-js@0.0.6", - "dist": { - "shasum": "32676ce361321d276e0c922234051ca5d3a05528" - }, - "_from": "base64-js@~0.0.6", - "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.6.tgz" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/test/convert.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/test/convert.js deleted file mode 100644 index 48fbba78..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/base64-js/test/convert.js +++ /dev/null @@ -1,52 +0,0 @@ -var test = require('tape'), - b64 = require('../lib/b64'), - checks = [ - 'a', - 'aa', - 'aaa', - 'hi', - 'hi!', - 'hi!!', - 'sup', - 'sup?', - 'sup?!' - ], - res; - -test('convert to base64 and back', function (t) { - t.plan(checks.length); - - for (var i = 0; i < checks.length; i++) { - var check = checks[i], - b64Str, - arr, - str; - - b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0); })); - - arr = b64.toByteArray(b64Str); - str = map(arr, function (byte) { return String.fromCharCode(byte); }).join(''); - - t.equal(check, str, 'Checked ' + check); - } - -}); - -function map (arr, callback) { - var res = [], - kValue, - mappedValue; - - for (var k = 0, len = arr.length; k < len; k++) { - if ((typeof arr === 'string' && !!arr.charAt(k))) { - kValue = arr.charAt(k); - mappedValue = callback(kValue, k, arr); - res[k] = mappedValue; - } else if (typeof arr !== 'string' && k in arr) { - kValue = arr[k]; - mappedValue = callback(kValue, k, arr); - res[k] = mappedValue; - } - } - return res; -} \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.npmignore b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.npmignore deleted file mode 100644 index 3dddf3f6..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/* -node_modules/* diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.travis.yml b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.travis.yml deleted file mode 100644 index ddc9c4f9..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/CHANGELOG.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index a0e1b9c4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,130 +0,0 @@ -# Change Log - -## 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 isse 72. - -## 0.1.28 - -* Skip duplicate mappings when creating source maps from SourceNode; github - issue 75. - -## 0.1.27 - -* Don't throw an error when the `file` property is missing in SourceMapConsumer, - we don't use it anyway. - -## 0.1.26 - -* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. - -## 0.1.25 - -* Make compatible with browserify - -## 0.1.24 - -* Fix issue with absolute paths and `file://` URIs. See - https://bugzilla.mozilla.org/show_bug.cgi?id=885597 - -## 0.1.23 - -* Fix issue with absolute paths and sourcesContent, github issue 64. - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf2..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/Makefile.dryice.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/Makefile.dryice.js deleted file mode 100644 index d6fc26a7..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/Makefile.dryice.js +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var path = require('path'); -var fs = require('fs'); -var copy = require('dryice').copy; - -function removeAmdefine(src) { - src = String(src).replace( - /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module,\s*require\);\s*}\s*/g, - ''); - src = src.replace( - /\b(define\(.*)('amdefine',?)/gm, - '$1'); - return src; -} -removeAmdefine.onRead = true; - -function makeNonRelative(src) { - return src - .replace(/require\('.\//g, 'require(\'source-map/') - .replace(/\.\.\/\.\.\/lib\//g, ''); -} -makeNonRelative.onRead = true; - -function buildBrowser() { - console.log('\nCreating dist/source-map.js'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/mini-require.js', - { - project: project, - require: [ 'source-map/source-map-generator', - 'source-map/source-map-consumer', - 'source-map/source-node'] - }, - 'build/suffix-browser.js' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine - ], - dest: 'dist/source-map.js' - }); -} - -function buildBrowserMin() { - console.log('\nCreating dist/source-map.min.js'); - - copy({ - source: 'dist/source-map.js', - filter: copy.filter.uglifyjs, - dest: 'dist/source-map.min.js' - }); -} - -function buildFirefox() { - console.log('\nCreating dist/SourceMap.jsm'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-source-map.jsm', - { - project: project, - require: [ 'source-map/source-map-consumer', - 'source-map/source-map-generator', - 'source-map/source-node' ] - }, - 'build/suffix-source-map.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/SourceMap.jsm' - }); - - // Create dist/test/Utils.jsm - console.log('\nCreating dist/test/Utils.jsm'); - - project = copy.createCommonJsProject({ - roots: [ __dirname, path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-utils.jsm', - 'build/assert-shim.js', - { - project: project, - require: [ 'test/source-map/util' ] - }, - 'build/suffix-utils.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/test/Utils.jsm' - }); - - function isTestFile(f) { - return /^test\-.*?\.js/.test(f); - } - - var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile); - - testFiles.forEach(function (testFile) { - console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_'))); - - copy({ - source: [ - 'build/test-prefix.js', - path.join('test', 'source-map', testFile), - 'build/test-suffix.js' - ], - filter: [ - removeAmdefine, - makeNonRelative, - function (input, source) { - return input.replace('define(', - 'define("' - + path.join('test', 'source-map', testFile.replace(/\.js$/, '')) - + '", ["require", "exports", "module"], '); - }, - function (input, source) { - return input.replace('{THIS_MODULE}', function () { - return "test/source-map/" + testFile.replace(/\.js$/, ''); - }); - } - ], - dest: path.join('dist', 'test', testFile.replace(/\-/g, '_')) - }); - }); -} - -function ensureDir(name) { - var dirExists = false; - try { - dirExists = fs.statSync(name).isDirectory(); - } catch (err) {} - - if (!dirExists) { - fs.mkdirSync(name, 0777); - } -} - -ensureDir("dist"); -ensureDir("dist/test"); -buildFirefox(); -buildBrowser(); -buildBrowserMin(); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/README.md deleted file mode 100644 index b00e970c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/README.md +++ /dev/null @@ -1,446 +0,0 @@ -# Source Map - -This is a library to generate and consume the source map format -[described here][format]. - -This library is written in the Asynchronous Module Definition format, and works -in the following environments: - -* Modern Browsers supporting ECMAScript 5 (either after the build, or with an - AMD loader such as RequireJS) - -* Inside Firefox (as a JSM file, after the build) - -* With NodeJS versions 0.8.X and higher - -## Node - - $ npm install source-map - -## Building from Source (for everywhere else) - -Install Node and then run - - $ git clone https://fitzgen@github.com/mozilla/source-map.git - $ cd source-map - $ npm link . - -Next, run - - $ node Makefile.dryice.js - -This should spew a bunch of stuff to stdout, and create the following files: - -* `dist/source-map.js` - The unminified browser version. - -* `dist/source-map.min.js` - The minified browser version. - -* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox source. - -## Examples - -### Consuming a source map - - var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - - var smc = new SourceMapConsumer(rawSourceMap); - - console.log(smc.sources); - // [ 'http://example.com/www/js/one.js', - // 'http://example.com/www/js/two.js' ] - - console.log(smc.originalPositionFor({ - line: 2, - column: 28 - })); - // { source: 'http://example.com/www/js/two.js', - // line: 2, - // column: 10, - // name: 'n' } - - console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 - })); - // { line: 2, column: 28 } - - smc.eachMapping(function (m) { - // ... - }); - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - - function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } - } - - var ast = parse("40 + 2", "add.js"); - console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' - })); - // { code: '40 + 2', - // map: [object SourceMapGenerator] } - -#### With SourceMapGenerator (low level API) - - var map = new SourceMapGenerator({ - file: "source-mapped.js" - }); - - map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" - }); - - console.log(map.toString()); - // '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' - -## API - -Get a reference to the module: - - // NodeJS - var sourceMap = require('source-map'); - - // Browser builds - var sourceMap = window.sourceMap; - - // Inside Firefox - let sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referrenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: Optional. The generated filename this source map is associated with. - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. - -* `column`: The column number in the generated source. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. - -* `column`: The column number in the original source, or null or null if this - information is not available. - -* `name`: The original identifier, or null if this information is not available. - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: The column number in the original source. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -#### SourceMapConsumer.prototype.sourceContentFor(source) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator([startOfSourceMap]) - -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. - -#### 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) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming whitespace from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap]) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -## Tests - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`. - -To add new tests, create a new file named `test/test-<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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/assert-shim.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/assert-shim.js deleted file mode 100644 index daa1a623..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/assert-shim.js +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -define('test/source-map/assert', ['exports'], function (exports) { - - let do_throw = function (msg) { - throw new Error(msg); - }; - - exports.init = function (throw_fn) { - do_throw = throw_fn; - }; - - exports.doesNotThrow = function (fn) { - try { - fn(); - } - catch (e) { - do_throw(e.message); - } - }; - - exports.equal = function (actual, expected, msg) { - msg = msg || String(actual) + ' != ' + String(expected); - if (actual != expected) { - do_throw(msg); - } - }; - - exports.ok = function (val, msg) { - msg = msg || String(val) + ' is falsey'; - if (!Boolean(val)) { - do_throw(msg); - } - }; - - exports.strictEqual = function (actual, expected, msg) { - msg = msg || String(actual) + ' !== ' + String(expected); - if (actual !== expected) { - do_throw(msg); - } - }; - - exports.throws = function (fn) { - try { - fn(); - do_throw('Expected an error to be thrown, but it wasn\'t.'); - } - catch (e) { - } - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/mini-require.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/mini-require.js deleted file mode 100644 index 0daf4537..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/mini-require.js +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * Define a module along with a payload. - * @param {string} moduleName Name for the payload - * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec - * @param {function} payload Function with (require, exports, module) params - */ -function define(moduleName, deps, payload) { - if (typeof moduleName != "string") { - throw new TypeError('Expected string, got: ' + moduleName); - } - - if (arguments.length == 2) { - payload = deps; - } - - if (moduleName in define.modules) { - throw new Error("Module already defined: " + moduleName); - } - define.modules[moduleName] = payload; -}; - -/** - * The global store of un-instantiated modules - */ -define.modules = {}; - - -/** - * We invoke require() in the context of a Domain so we can have multiple - * sets of modules running separate from each other. - * This contrasts with JSMs which are singletons, Domains allows us to - * optionally load a CommonJS module twice with separate data each time. - * Perhaps you want 2 command lines with a different set of commands in each, - * for example. - */ -function Domain() { - this.modules = {}; - this._currentModule = null; -} - -(function () { - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * There are 2 ways to call this, either with an array of dependencies and a - * callback to call when the dependencies are found (which can happen - * asynchronously in an in-page context) or with a single string an no callback - * where the dependency is resolved synchronously and returned. - * The API is designed to be compatible with the CommonJS AMD spec and - * RequireJS. - * @param {string[]|string} deps A name, or names for the payload - * @param {function|undefined} callback Function to call when the dependencies - * are resolved - * @return {undefined|object} The module required or undefined for - * array/callback method - */ - Domain.prototype.require = function(deps, callback) { - if (Array.isArray(deps)) { - var params = deps.map(function(dep) { - return this.lookup(dep); - }, this); - if (callback) { - callback.apply(null, params); - } - return undefined; - } - else { - return this.lookup(deps); - } - }; - - function normalize(path) { - var bits = path.split('/'); - var i = 1; - while (i < bits.length) { - if (bits[i] === '..') { - bits.splice(i-1, 1); - } else if (bits[i] === '.') { - bits.splice(i, 1); - } else { - i++; - } - } - return bits.join('/'); - } - - function join(a, b) { - a = a.trim(); - b = b.trim(); - if (/^\//.test(b)) { - return b; - } else { - return a.replace(/\/*$/, '/') + b; - } - } - - function dirname(path) { - var bits = path.split('/'); - bits.pop(); - return bits.join('/'); - } - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * @param {string} moduleName A name for the payload to lookup - * @return {object} The module specified by aModuleName or null if not found. - */ - Domain.prototype.lookup = function(moduleName) { - if (/^\./.test(moduleName)) { - moduleName = normalize(join(dirname(this._currentModule), moduleName)); - } - - if (moduleName in this.modules) { - var module = this.modules[moduleName]; - return module; - } - - if (!(moduleName in define.modules)) { - throw new Error("Module not defined: " + moduleName); - } - - var module = define.modules[moduleName]; - - if (typeof module == "function") { - var exports = {}; - var previousModule = this._currentModule; - this._currentModule = moduleName; - module(this.require.bind(this), exports, { id: moduleName, uri: "" }); - this._currentModule = previousModule; - module = exports; - } - - // cache the resulting module object for next time - this.modules[moduleName] = module; - - return module; - }; - -}()); - -define.Domain = Domain; -define.globalDomain = new Domain(); -var require = define.globalDomain.require.bind(define.globalDomain); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-source-map.jsm b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-source-map.jsm deleted file mode 100644 index ee2539d8..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-source-map.jsm +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -/////////////////////////////////////////////////////////////////////////////// - - -this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ]; - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-utils.jsm b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-utils.jsm deleted file mode 100644 index 80341d45..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/prefix-utils.jsm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); -Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm'); - -this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ]; diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-browser.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-browser.js deleted file mode 100644 index fb29ff5f..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-browser.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.sourceMap = { - SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer, - SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator, - SourceNode: require('source-map/source-node').SourceNode -}; diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-source-map.jsm b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-source-map.jsm deleted file mode 100644 index cf3c2d8d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-source-map.jsm +++ /dev/null @@ -1,6 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer; -this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator; -this.SourceNode = require('source-map/source-node').SourceNode; diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-utils.jsm b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-utils.jsm deleted file mode 100644 index b31b84cb..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/suffix-utils.jsm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -function runSourceMapTests(modName, do_throw) { - let mod = require(modName); - let assert = require('test/source-map/assert'); - let util = require('test/source-map/util'); - - assert.init(do_throw); - - for (let k in mod) { - if (/^test/.test(k)) { - mod[k](assert, util); - } - } - -} -this.runSourceMapTests = runSourceMapTests; diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-prefix.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-prefix.js deleted file mode 100644 index 1b13f300..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-prefix.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://test/Utils.jsm'); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-suffix.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-suffix.js deleted file mode 100644 index bec2de3f..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/build/test-suffix.js +++ /dev/null @@ -1,3 +0,0 @@ -function run_test() { - runSourceMapTests('{THIS_MODULE}', do_throw); -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map.js deleted file mode 100644 index 121ad241..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./source-map/source-node').SourceNode; diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/array-set.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/array-set.js deleted file mode 100644 index 40f9a18b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/array-set.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = {}; - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var isDuplicate = this.has(aStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - this._set[util.toSetString(aStr)] = idx; - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - return Object.prototype.hasOwnProperty.call(this._set, - util.toSetString(aStr)); - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (this.has(aStr)) { - return this._set[util.toSetString(aStr)]; - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64-vlq.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64-vlq.js deleted file mode 100644 index 1b67bb37..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64-vlq.js +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('./base64'); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string. - */ - exports.decode = function base64VLQ_decode(aStr) { - var i = 0; - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (i >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charAt(i++)); - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - return { - value: fromVLQSigned(result), - rest: aStr.slice(i) - }; - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64.js deleted file mode 100644 index 863cc465..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/base64.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var charToIntMap = {}; - var intToCharMap = {}; - - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - .split('') - .forEach(function (ch, index) { - charToIntMap[ch] = index; - intToCharMap[index] = ch; - }); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function base64_encode(aNumber) { - if (aNumber in intToCharMap) { - return intToCharMap[aNumber]; - } - throw new TypeError("Must be between 0 and 63: " + aNumber); - }; - - /** - * Decode a single base 64 digit to an integer. - */ - exports.decode = function base64_decode(aChar) { - if (aChar in charToIntMap) { - return charToIntMap[aChar]; - } - throw new TypeError("Not a valid base 64 digit: " + aChar); - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/binary-search.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/binary-search.js deleted file mode 100644 index ff347c68..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/binary-search.js +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the next - // closest element that is less than that element. - // - // 3. We did not find the exact element, and there is no next-closest - // element which is less than the one we are searching for, so we - // return null. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return aHaystack[mid]; - } - else if (cmp > 0) { - // aHaystack[mid] is greater than our needle. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); - } - // We did not find an exact match, return the next closest one - // (termination case 2). - return aHaystack[mid]; - } - else { - // aHaystack[mid] is less than our needle. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); - } - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (2) or (3) and return the appropriate thing. - return aLow < 0 - ? null - : aHaystack[aLow]; - } - } - - /** - * This is an implementation of binary search which will always try and return - * the next lowest value checked if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - */ - exports.search = function search(aNeedle, aHaystack, aCompare) { - return aHaystack.length > 0 - ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) - : null; - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-consumer.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-consumer.js deleted file mode 100644 index 5214d5e7..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-consumer.js +++ /dev/null @@ -1,478 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - var binarySearch = require('./binary-search'); - var ArraySet = require('./array-set').ArraySet; - var base64VLQ = require('./base64-vlq'); - - /** - * A SourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: 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); - } - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names, true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - /** - * Create a SourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns SourceMapConsumer - */ - SourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(SourceMapConsumer.prototype); - - smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - smc.__generatedMappings = aSourceMap._mappings.slice() - .sort(util.compareByGeneratedPositions); - smc.__originalMappings = aSourceMap._mappings.slice() - .sort(util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(SourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var mappingSeparator = /^[,;]/; - var str = aStr; - var mapping; - var temp; - - while (str.length > 0) { - if (str.charAt(0) === ';') { - generatedLine++; - str = str.slice(1); - previousGeneratedColumn = 0; - } - else if (str.charAt(0) === ',') { - str = str.slice(1); - } - else { - mapping = {}; - mapping.generatedLine = generatedLine; - - // Generated column. - temp = base64VLQ.decode(str); - mapping.generatedColumn = previousGeneratedColumn + temp.value; - previousGeneratedColumn = mapping.generatedColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original source. - temp = base64VLQ.decode(str); - mapping.source = this._sources.at(previousSource + temp.value); - previousSource += temp.value; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source, but no line and column'); - } - - // Original line. - temp = base64VLQ.decode(str); - mapping.originalLine = previousOriginalLine + temp.value; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source and line, but no column'); - } - - // Original column. - temp = base64VLQ.decode(str); - mapping.originalColumn = previousOriginalColumn + temp.value; - previousOriginalColumn = mapping.originalColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original name. - temp = base64VLQ.decode(str); - mapping.name = this._names.at(previousName + temp.value); - previousName += temp.value; - str = temp.rest; - } - } - - this.__generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - this.__originalMappings.push(mapping); - } - } - } - - this.__generatedMappings.sort(util.compareByGeneratedPositions); - this.__originalMappings.sort(util.compareByOriginalPositions); - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - SourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator); - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - SourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositions); - - if (mapping && mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source && this.sourceRoot) { - source = util.join(this.sourceRoot, source); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: util.getArg(mapping, 'name', null) - }; - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * availible. - */ - SourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - throw new Error('"' + aSource + '" is not in the SourceMap.'); - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - if (this.sourceRoot) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - - var mapping = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions); - - if (mapping) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null) - }; - } - - return { - line: null, - column: null - }; - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source; - if (source && sourceRoot) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name - }; - }).forEach(aCallback, context); - }; - - exports.SourceMapConsumer = SourceMapConsumer; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-generator.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-generator.js deleted file mode 100644 index d555f08c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-map-generator.js +++ /dev/null @@ -1,397 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('./base64-vlq'); - var util = require('./util'); - var ArraySet = require('./array-set').ArraySet; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. 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._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = []; - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source) { - newMapping.source = mapping.source; - if (sourceRoot) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - this._validateMapping(generated, original, source, name); - - if (source && !this._sources.has(source)) { - this._sources.add(source); - } - - if (name && !this._names.has(name)) { - this._names.add(name); - } - - this._mappings.push({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent !== null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = {}; - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @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) { - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (!aSourceFile) { - if (!aSourceMapConsumer.file) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - aSourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "aSourceFile" relative if an absolute Url is passed. - if (sourceRoot) { - aSourceFile = util.relative(sourceRoot, aSourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "aSourceFile" - this._mappings.forEach(function (mapping) { - if (mapping.source === aSourceFile && mapping.originalLine) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source !== null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name !== null && mapping.name !== null) { - // Only use the identifier name if it's an identifier - // in both SourceMaps - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - if (sourceRoot) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var mapping; - - // The mappings must be guaranteed to be in sorted order before we start - // serializing them or else the generated line numbers (which are defined - // via the ';' separators) will be all messed up. Note: it might be more - // performant to maintain the sorting as we insert them, rather than as we - // serialize them, but the big O is the same either way. - this._mappings.sort(util.compareByGeneratedPositions); - - for (var i = 0, len = this._mappings.length; i < len; i++) { - mapping = this._mappings[i]; - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - result += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) { - continue; - } - result += ','; - } - } - - result += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source) { - result += base64VLQ.encode(this._sources.indexOf(mapping.source) - - previousSource); - previousSource = this._sources.indexOf(mapping.source); - - // lines are stored 0-based in SourceMap spec version 3 - result += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - result += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name) { - result += base64VLQ.encode(this._names.indexOf(mapping.name) - - previousName); - previousName = this._names.indexOf(mapping.name); - } - } - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, - key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - file: this._file, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._sourceRoot) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-node.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-node.js deleted file mode 100644 index 1d98123b..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/source-node.js +++ /dev/null @@ -1,387 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; - var util = require('./util'); - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine === undefined ? null : aLine; - this.column = aColumn === undefined ? null : aColumn; - this.source = aSource === undefined ? null : aSource; - this.name = aName === undefined ? null : aName; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // The generated code - // Processed fragments are removed from this array. - var remainingLines = aGeneratedCode.split('\n'); - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the 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, remainingLines.shift() + "\n"); - 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(remainingLines.shift() + "\n"); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLines.length > 0) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - var lastLine = remainingLines.shift(); - if (remainingLines.length > 0) lastLine += "\n"; - addMappingWithCode(lastMapping, lastLine); - } - // and add the remaining lines without any mapping - node.add(remainingLines.join("\n")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - mapping.source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk instanceof SourceNode) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild instanceof SourceNode) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i] instanceof SourceNode) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - chunk.split('').forEach(function (ch, idx, array) { - if (ch === '\n') { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === array.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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/util.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/util.js deleted file mode 100644 index 4316445f..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/lib/source-map/util.js +++ /dev/null @@ -1,302 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; - var dataUrlRegexp = /^data:.+\,.+$/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[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) { - 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; - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - return '$' + aStr; - } - exports.toSetString = toSetString; - - function fromSetString(aStr) { - return aStr.substr(1); - } - exports.fromSetString = fromSetString; - - function relative(aRoot, aPath) { - aRoot = aRoot.replace(/\/$/, ''); - - var url = urlParse(aRoot); - if (aPath.charAt(0) == "/" && url && url.path == "/") { - return aPath.slice(1); - } - - return aPath.indexOf(aRoot + '/') === 0 - ? aPath.substr(aRoot.length + 1) - : aPath; - } - exports.relative = relative; - - function strcmp(aStr1, aStr2) { - var s1 = aStr1 || ""; - var s2 = aStr2 || ""; - return (s1 > s2) - (s1 < s2); - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp; - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp || onlyCompareOriginal) { - return cmp; - } - - cmp = strcmp(mappingA.name, mappingB.name); - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - return mappingA.generatedColumn - mappingB.generatedColumn; - }; - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings where the generated positions are - * compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) { - var cmp; - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - }; - exports.compareByGeneratedPositions = compareByGeneratedPositions; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/LICENSE b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/LICENSE deleted file mode 100644 index f33d665d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -amdefine is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2011, 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/README.md b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/README.md deleted file mode 100644 index c6995c07..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# amdefine - -A module that can be used to implement AMD's define() in Node. This allows you -to code to the AMD API and have the module work in node programs without -requiring those other programs to use AMD. - -## Usage - -**1)** Update your package.json to indicate amdefine as a dependency: - -```javascript - "dependencies": { - "amdefine": ">=0.1.0" - } -``` - -Then run `npm install` to get amdefine into your project. - -**2)** At the top of each module that uses define(), place this code: - -```javascript -if (typeof define !== 'function') { var define = require('amdefine')(module) } -``` - -**Only use these snippets** when loading amdefine. If you preserve the basic structure, -with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer). - -You can add spaces, line breaks and even require amdefine with a local path, but -keep the rest of the structure to get the stripping behavior. - -As you may know, because `if` statements in JavaScript don't have their own scope, the var -declaration in the above snippet is made whether the `if` expression is truthy or not. If -RequireJS is loaded then the declaration is superfluous because `define` is already already -declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var` -declarations of the same variable in the same scope gracefully. - -If you want to deliver amdefine.js with your code rather than specifying it as a dependency -with npm, then just download the latest release and refer to it using a relative path: - -[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js) - -### amdefine/intercept - -Consider this very experimental. - -Instead of pasting the piece of text for the amdefine setup of a `define` -variable in each module you create or consume, you can use `amdefine/intercept` -instead. It will automatically insert the above snippet in each .js file loaded -by Node. - -**Warning**: you should only use this if you are creating an application that -is consuming AMD style defined()'d modules that are distributed via npm and want -to run that code in Node. - -For library code where you are not sure if it will be used by others in Node or -in the browser, then explicitly depending on amdefine and placing the code -snippet above is suggested path, instead of using `amdefine/intercept`. The -intercept module affects all .js files loaded in the Node app, and it is -inconsiderate to modify global state like that unless you are also controlling -the top level app. - -#### Why distribute AMD-style nodes 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js deleted file mode 100644 index 53bf5a68..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js +++ /dev/null @@ -1,299 +0,0 @@ -/** 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. - 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/intercept.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/intercept.js deleted file mode 100644 index 771a9830..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/intercept.js +++ /dev/null @@ -1,36 +0,0 @@ -/*jshint node: true */ -var inserted, - Module = require('module'), - fs = require('fs'), - existingExtFn = Module._extensions['.js'], - amdefineRegExp = /amdefine\.js/; - -inserted = "if (typeof define !== 'function') {var define = require('amdefine')(module)}"; - -//From the node/lib/module.js source: -function stripBOM(content) { - // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - // because the buffer-to-string conversion in `fs.readFileSync()` - // translates it to FEFF, the UTF-16 BOM. - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -} - -//Also adapted from the node/lib/module.js source: -function intercept(module, filename) { - var content = stripBOM(fs.readFileSync(filename, 'utf8')); - - if (!amdefineRegExp.test(module.id)) { - content = inserted + content; - } - - module._compile(content, filename); -} - -intercept._id = 'amdefine/intercept'; - -if (!existingExtFn._id || existingExtFn._id !== intercept._id) { - Module._extensions['.js'] = intercept; -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/package.json deleted file mode 100644 index 8caf15c5..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/node_modules/amdefine/package.json +++ /dev/null @@ -1,36 +0,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" - }, - "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 nodes 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", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jrburke/amdefine/issues" - }, - "_id": "amdefine@0.1.0", - "_from": "amdefine@>=0.0.4" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/package.json deleted file mode 100644 index ba884d89..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/package.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "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" - }, - "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 var 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\n var smc = new SourceMapConsumer(rawSourceMap);\n\n console.log(smc.sources);\n // [ 'http://example.com/www/js/one.js',\n // 'http://example.com/www/js/two.js' ]\n\n console.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\n console.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\n smc.eachMapping(function (m) {\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 function 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\n var ast = parse(\"40 + 2\", \"add.js\");\n console.log(compile(ast).toStringWithSourceMap({\n file: 'add.js'\n }));\n // { code: '40 + 2',\n // map: [object SourceMapGenerator] }\n\n#### With SourceMapGenerator (low level API)\n\n var map = new SourceMapGenerator({\n file: \"source-mapped.js\"\n });\n\n map.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\n console.log(map.toString());\n // '{\"version\":3,\"file\":\"source-mapped.js\",\"sources\":[\"foo.js\"],\"names\":[\"christopher\"],\"mappings\":\";;;;;;;;;mCAgCEA\"}'\n\n## API\n\nGet a reference to the module:\n\n // NodeJS\n var sourceMap = require('source-map');\n\n // Browser builds\n var sourceMap = window.sourceMap;\n\n // Inside Firefox\n let sourceMap = {};\n Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap);\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.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\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.sourceContentFor(source)\n\nReturns the original source content for the source provided. The only\nargument is the URL of the original source file.\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#### 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)\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#### 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 exports[\"test doing the foo bar\"] = function (assert, util) {\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", - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "_id": "source-map@0.1.33", - "_from": "source-map@~0.1.33" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/run-tests.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/run-tests.js deleted file mode 100755 index 64a7c3a3..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/run-tests.js +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env node -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var assert = require('assert'); -var fs = require('fs'); -var path = require('path'); -var util = require('./source-map/util'); - -function run(tests) { - var total = 0; - var passed = 0; - - for (var i = 0; i < tests.length; i++) { - for (var k in tests[i].testCase) { - if (/^test/.test(k)) { - total++; - try { - tests[i].testCase[k](assert, util); - passed++; - } - catch (e) { - console.log('FAILED ' + tests[i].name + ': ' + k + '!'); - console.log(e.stack); - } - } - } - } - - console.log(''); - console.log(passed + ' / ' + total + ' tests passed.'); - console.log(''); - - return total - passed; -} - -function isTestFile(f) { - var testToRun = process.argv[2]; - return testToRun - ? path.basename(testToRun) === f - : /^test\-.*?\.js/.test(f); -} - -function toModule(f) { - return './source-map/' + f.replace(/\.js$/, ''); -} - -var requires = fs.readdirSync(path.join(__dirname, 'source-map')) - .filter(isTestFile) - .map(toModule); - -var code = run(requires.map(require).map(function (mod, i) { - return { - name: requires[i], - testCase: mod - }; -})); - -process.exit(code); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-api.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-api.js deleted file mode 100644 index 3801233c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-api.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2012 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var sourceMap; - try { - sourceMap = require('../../lib/source-map'); - } catch (e) { - sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - } - - exports['test that the api is properly exposed in the top level'] = function (assert, util) { - assert.equal(typeof sourceMap.SourceMapGenerator, "function"); - assert.equal(typeof sourceMap.SourceMapConsumer, "function"); - assert.equal(typeof sourceMap.SourceNode, "function"); - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-array-set.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-array-set.js deleted file mode 100644 index b5797edd..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-array-set.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var ArraySet = require('../../lib/source-map/array-set').ArraySet; - - function makeTestSet() { - var set = new ArraySet(); - for (var i = 0; i < 100; i++) { - set.add(String(i)); - } - return set; - } - - exports['test .has() membership'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.ok(set.has(String(i))); - } - }; - - exports['test .indexOf() elements'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.indexOf(String(i)), i); - } - }; - - exports['test .at() indexing'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.at(i), String(i)); - } - }; - - exports['test creating from an array'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); - - assert.ok(set.has('foo')); - assert.ok(set.has('bar')); - assert.ok(set.has('baz')); - assert.ok(set.has('quux')); - assert.ok(set.has('hasOwnProperty')); - - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.indexOf('bar'), 1); - assert.strictEqual(set.indexOf('baz'), 2); - assert.strictEqual(set.indexOf('quux'), 3); - - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'bar'); - assert.strictEqual(set.at(2), 'baz'); - assert.strictEqual(set.at(3), 'quux'); - }; - - exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { - var set = new ArraySet(); - set.add('__proto__'); - assert.ok(set.has('__proto__')); - assert.strictEqual(set.at(0), '__proto__'); - assert.strictEqual(set.indexOf('__proto__'), 0); - }; - - exports['test .fromArray() with duplicates'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'foo']); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set = ArraySet.fromArray(['foo', 'foo'], true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - - exports['test .add() with duplicates'] = function (assert, util) { - var set = new ArraySet(); - set.add('foo'); - - set.add('foo'); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set.add('foo', true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64-vlq.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64-vlq.js deleted file mode 100644 index 653a874e..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64-vlq.js +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('../../lib/source-map/base64-vlq'); - - exports['test normal encoding and decoding'] = function (assert, util) { - var result; - for (var i = -255; i < 256; i++) { - result = base64VLQ.decode(base64VLQ.encode(i)); - assert.ok(result); - assert.equal(result.value, i); - assert.equal(result.rest, ""); - } - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64.js deleted file mode 100644 index ff3a2445..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-base64.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('../../lib/source-map/base64'); - - exports['test out of range encoding'] = function (assert, util) { - assert.throws(function () { - base64.encode(-1); - }); - assert.throws(function () { - base64.encode(64); - }); - }; - - exports['test out of range decoding'] = function (assert, util) { - assert.throws(function () { - base64.decode('='); - }); - }; - - exports['test normal encoding and decoding'] = function (assert, util) { - for (var i = 0; i < 64; i++) { - assert.equal(base64.decode(base64.encode(i)), i); - } - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-binary-search.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-binary-search.js deleted file mode 100644 index ee306830..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-binary-search.js +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var binarySearch = require('../../lib/source-map/binary-search'); - - function numberCompare(a, b) { - return a - b; - } - - exports['test too high'] = function (assert, util) { - var needle = 30; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 20); - }; - - exports['test too low'] = function (assert, util) { - var needle = 1; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), null); - }; - - exports['test exact search'] = function (assert, util) { - var needle = 4; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 4); - }; - - exports['test fuzzy search'] = function (assert, util) { - var needle = 19; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 18); - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-dog-fooding.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-dog-fooding.js deleted file mode 100644 index 26757b2d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-dog-fooding.js +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test eating our own dog food'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'testing.js', - sourceRoot: '/wu/tang' - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 1, column: 0 }, - generated: { line: 2, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 2, column: 0 }, - generated: { line: 3, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 3, column: 0 }, - generated: { line: 4, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 4, column: 0 }, - generated: { line: 5, column: 2 } - }); - - 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-consumer.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-consumer.js deleted file mode 100644 index acd24d5e..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-consumer.js +++ /dev/null @@ -1,475 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test that we can instantiate with a string or an 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 = new SourceMapConsumer(util.testMap); - var sources = map.sources; - - assert.equal(sources[0], '/the/root/one.js'); - assert.equal(sources[1], '/the/root/two.js'); - assert.equal(sources.length, 2); - }; - - exports['test that the source root is reflected in a mapping\'s source field'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var mapping; - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, '/the/root/two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, '/the/root/one.js'); - }; - - exports['test mapping tokens back exactly'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - util.assertMapping(1, 1, '/the/root/one.js', 1, 1, null, map, assert); - util.assertMapping(1, 5, '/the/root/one.js', 1, 5, null, map, assert); - util.assertMapping(1, 9, '/the/root/one.js', 1, 11, null, map, assert); - util.assertMapping(1, 18, '/the/root/one.js', 1, 21, 'bar', map, assert); - util.assertMapping(1, 21, '/the/root/one.js', 2, 3, null, map, assert); - util.assertMapping(1, 28, '/the/root/one.js', 2, 10, 'baz', map, assert); - util.assertMapping(1, 32, '/the/root/one.js', 2, 14, 'bar', map, assert); - - util.assertMapping(2, 1, '/the/root/two.js', 1, 1, null, map, assert); - util.assertMapping(2, 5, '/the/root/two.js', 1, 5, null, map, assert); - util.assertMapping(2, 9, '/the/root/two.js', 1, 11, null, map, assert); - util.assertMapping(2, 18, '/the/root/two.js', 1, 21, 'n', map, assert); - util.assertMapping(2, 21, '/the/root/two.js', 2, 3, null, map, assert); - util.assertMapping(2, 28, '/the/root/two.js', 2, 10, 'n', map, assert); - }; - - exports['test mapping tokens fuzzy'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - // Finding original positions - util.assertMapping(1, 20, '/the/root/one.js', 1, 21, 'bar', map, assert, true); - util.assertMapping(1, 30, '/the/root/one.js', 2, 10, 'baz', map, assert, true); - util.assertMapping(2, 12, '/the/root/two.js', 1, 11, null, map, assert, true); - - // Finding generated positions - util.assertMapping(1, 18, '/the/root/one.js', 1, 22, 'bar', map, assert, null, true); - util.assertMapping(1, 28, '/the/root/one.js', 2, 13, 'baz', map, assert, null, true); - util.assertMapping(2, 9, '/the/root/two.js', 1, 16, null, map, assert, null, true); - }; - - exports['test 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 = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - map.eachMapping(function (mapping) { - assert.ok(mapping.generatedLine >= previousLine); - - if (mapping.source) { - assert.equal(mapping.source.indexOf(util.testMap.sourceRoot), 0); - } - - if (mapping.generatedLine === previousLine) { - assert.ok(mapping.generatedColumn >= previousColumn); - previousColumn = mapping.generatedColumn; - } - else { - previousLine = mapping.generatedLine; - previousColumn = -Infinity; - } - }); - }; - - exports['test iterating over mappings in a different order'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - var previousSource = ""; - map.eachMapping(function (mapping) { - assert.ok(mapping.source >= previousSource); - - if (mapping.source === previousSource) { - assert.ok(mapping.originalLine >= previousLine); - - if (mapping.originalLine === previousLine) { - assert.ok(mapping.originalColumn >= previousColumn); - previousColumn = mapping.originalColumn; - } - else { - previousLine = mapping.originalLine; - previousColumn = -Infinity; - } - } - else { - previousSource = mapping.source; - previousLine = -Infinity; - previousColumn = -Infinity; - } - }, null, SourceMapConsumer.ORIGINAL_ORDER); - }; - - exports['test that we can set the context for `this` in eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var context = {}; - map.eachMapping(function () { - assert.equal(this, context); - }, context); - }; - - exports['test that the `sourcesContent` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sourcesContent = map.sourcesContent; - - assert.equal(sourcesContent[0], ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(sourcesContent[1], ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(sourcesContent.length, 2); - }; - - exports['test that we can get the original sources for the sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sources = map.sources; - - assert.equal(map.sourceContentFor(sources[0]), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor(sources[1]), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(map.sourceContentFor("one.js"), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor("two.js"), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.throws(function () { - map.sourceContentFor(""); - }, Error); - assert.throws(function () { - map.sourceContentFor("/the/root/three.js"); - }, Error); - assert.throws(function () { - map.sourceContentFor("three.js"); - }, Error); - }; - - exports['test sourceRoot + generatedPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map.addMapping({ - original: { line: 5, column: 5 }, - generated: { line: 6, column: 6 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - // Should handle without sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - // Should handle with sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'foo/bar/bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - }; - - exports['test sourceRoot + originalPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - var pos = map.originalPositionFor({ - line: 2, - column: 2, - }); - - // Should always have the prepended source root - assert.equal(pos.source, 'foo/bar/bang.coffee'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - }; - - exports['test github issue #56'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://', - file: 'www.example.com/foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'www.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1); - assert.equal(sources[0], 'http://www.example.com/original.js'); - }; - - exports['test github issue #43'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'http://cdn.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://cdn.example.com/original.js', - 'Should not be joined with the sourceRoot.'); - }; - - exports['test absolute path, but same host sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com/foo/bar', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: '/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://example.com/original.js', - 'Source should be relative the host of the source root.'); - }; - - exports['test github issue #64'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "http://example.com/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - assert.equal(map.sourceContentFor("a"), "foo"); - assert.equal(map.sourceContentFor("/a"), "foo"); - }; - - exports['test bug 885597'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "file:///Users/AlGore/Invented/The/Internet/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - var s = map.sources[0]; - assert.equal(map.sourceContentFor(s), "foo"); - }; - - exports['test github issue #72, duplicate sources'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source1.js", "source1.js", "source3.js"], - "names": [], - "mappings": ";EAAC;;IAEE;;MEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.source, 'http://example.com/source3.js'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test github issue #72, duplicate names'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source.js"], - "names": ["name1", "name1", "name3"], - "mappings": ";EAACA;;IAEEA;;MAEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.name, 'name3'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test SourceMapConsumer.fromSourceMap'] = function (assert, util) { - var smg = new SourceMapGenerator({ - sourceRoot: 'http://example.com/', - file: 'foo.js' - }); - smg.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bar.js' - }); - smg.addMapping({ - original: { line: 2, column: 2 }, - generated: { line: 4, column: 4 }, - source: 'baz.js', - name: 'dirtMcGirt' - }); - smg.setSourceContent('baz.js', 'baz.js content'); - - var smc = SourceMapConsumer.fromSourceMap(smg); - assert.equal(smc.file, 'foo.js'); - assert.equal(smc.sourceRoot, 'http://example.com/'); - assert.equal(smc.sources.length, 2); - assert.equal(smc.sources[0], 'http://example.com/bar.js'); - assert.equal(smc.sources[1], 'http://example.com/baz.js'); - assert.equal(smc.sourceContentFor('baz.js'), 'baz.js content'); - - var pos = smc.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - assert.equal(pos.source, 'http://example.com/bar.js'); - assert.equal(pos.name, null); - - pos = smc.generatedPositionFor({ - line: 1, - column: 1, - source: 'http://example.com/bar.js' - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - pos = smc.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - assert.equal(pos.source, 'http://example.com/baz.js'); - assert.equal(pos.name, 'dirtMcGirt'); - - pos = smc.generatedPositionFor({ - line: 2, - column: 2, - source: 'http://example.com/baz.js' - }); - assert.equal(pos.line, 4); - assert.equal(pos.column, 4); - }; -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-generator.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-generator.js deleted file mode 100644 index 16241dd3..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-map-generator.js +++ /dev/null @@ -1,540 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - var util = require('./util'); - - exports['test some simple stuff'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.ok(true); - - var map = new SourceMapGenerator(); - assert.ok(true); - }; - - exports['test JSON serialization'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.equal(map.toString(), JSON.stringify(map)); - }; - - exports['test adding mappings (case 1)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 2)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 3)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: 'someToken' - }); - }); - }; - - exports['test adding mappings (invalid)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - // Not enough info. - assert.throws(function () { - map.addMapping({}); - }); - - // Original file position, but no source. - assert.throws(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test that the correct mappings are being generated'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 5 }, - original: { line: 1, column: 5 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 9 }, - original: { line: 1, column: 11 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 18 }, - original: { line: 1, column: 21 }, - source: 'one.js', - name: 'bar' - }); - map.addMapping({ - generated: { line: 1, column: 21 }, - original: { line: 2, column: 3 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 28 }, - original: { line: 2, column: 10 }, - source: 'one.js', - name: 'baz' - }); - map.addMapping({ - generated: { line: 1, column: 32 }, - original: { line: 2, column: 14 }, - source: 'one.js', - name: 'bar' - }); - - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 5 }, - original: { line: 1, column: 5 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 9 }, - original: { line: 1, column: 11 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 18 }, - original: { line: 1, column: 21 }, - source: 'two.js', - name: 'n' - }); - map.addMapping({ - generated: { line: 2, column: 21 }, - original: { line: 2, column: 3 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 28 }, - original: { line: 2, column: 10 }, - source: 'two.js', - name: 'n' - }); - - map = JSON.parse(map.toString()); - - util.assertEqualMaps(assert, map, util.testMap); - }; - - exports['test that source content can be set'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.setSourceContent('one.js', 'one file content'); - - map = JSON.parse(map.toString()); - assert.equal(map.sources[0], 'one.js'); - assert.equal(map.sources[1], 'two.js'); - assert.equal(map.sourcesContent[0], 'one file content'); - assert.equal(map.sourcesContent[1], null); - }; - - exports['test .fromSourceMap'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(util.testMap)); - util.assertEqualMaps(assert, map.toJSON(), util.testMap); - }; - - exports['test .fromSourceMap with sourcesContent'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap( - new SourceMapConsumer(util.testMapWithSourcesContent)); - util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent); - }; - - exports['test applySourceMap'] = function (assert, util) { - var node = new SourceNode(null, null, null, [ - new SourceNode(2, 0, 'fileX', 'lineX2\n'), - 'genA1\n', - new SourceNode(2, 0, 'fileY', 'lineY2\n'), - 'genA2\n', - new SourceNode(1, 0, 'fileX', 'lineX1\n'), - 'genA3\n', - new SourceNode(1, 0, 'fileY', 'lineY1\n') - ]); - var mapStep1 = node.toStringWithSourceMap({ - file: 'fileA' - }).map; - mapStep1.setSourceContent('fileX', 'lineX1\nlineX2\n'); - mapStep1 = mapStep1.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(1, 0, 'fileA', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(3, 0, 'fileA', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var mapStep2 = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - mapStep2.setSourceContent('fileB', 'lineB1\nlineB2\n'); - mapStep2 = mapStep2.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(2, 0, 'fileX', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(2, 0, 'fileY', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var expectedMap = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - expectedMap.setSourceContent('fileX', 'lineX1\nlineX2\n'); - expectedMap.setSourceContent('fileB', 'lineB1\nlineB2\n'); - expectedMap = expectedMap.toJSON(); - - // apply source map "mapStep1" to "mapStep2" - var generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(mapStep2)); - generator.applySourceMap(new SourceMapConsumer(mapStep1)); - var actualMap = generator.toJSON(); - - util.assertEqualMaps(assert, actualMap, expectedMap); - }; - - exports['test 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.addMapping({ - generated: { line: 13, column: 13 }, - original: { line: 12, column: 12 }, - source: '/bar.coffee' - }); - bundleMap.addMapping({ - generated: { line: 23, column: 23 }, - original: { line: 22, column: 22 }, - source: 'http://www.example.com/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.addMapping({ - generated: { line: 11, column: 11 }, - original: { line: 12, column: 12 }, - source: sources[1] - }); - map.addMapping({ - generated: { line: 21, column: 21 }, - original: { line: 22, column: 22 }, - source: sources[2] - }); - 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_maps'), expectedMap([ - 'coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('/app/temp_maps'), expectedMap([ - '/app/coffee/foo.coffee', - '/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - - util.assertEqualMaps(assert, actualMap('http://foo.org/app/temp_maps'), expectedMap([ - 'http://foo.org/app/coffee/foo.coffee', - 'http://foo.org/bar.coffee', - 'http://www.example.com/baz.coffee' - ])); - }; - - exports['test sorting with duplicate generated mappings'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 3, column: 0 }, - original: { line: 2, column: 0 }, - source: 'a.js' - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 }, - source: 'a.js' - }); - - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: [], - mappings: 'AAAA;A;AACA' - }); - }; - - exports['test ignore duplicate mappings.'] = function (assert, util) { - var init = { file: 'min.js', sourceRoot: '/the/root' }; - var map1, map2; - - // null original source location - var nullMapping1 = { - generated: { line: 1, column: 0 } - }; - var nullMapping2 = { - generated: { line: 2, column: 2 } - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(nullMapping1); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(nullMapping2); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // original source location - var srcMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'srcMapping1.js' - }; - var srcMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'srcMapping2.js' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(srcMapping1); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(srcMapping2); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // full original source and name information - var fullMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'fullMapping1.js', - name: 'fullMapping1' - }; - var fullMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'fullMapping2.js', - name: 'fullMapping2' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(fullMapping1); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(fullMapping2); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - }; - - exports['test github issue #72, check for duplicate names or sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 2, column: 2 }, - source: 'a.js', - name: 'foo' - }); - map.addMapping({ - generated: { line: 3, column: 3 }, - original: { line: 4, column: 4 }, - source: 'a.js', - name: 'foo' - }); - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: ['foo'], - mappings: 'CACEA;;GAEEA' - }); - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-node.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-node.js deleted file mode 100644 index e7afc4e7..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-source-node.js +++ /dev/null @@ -1,439 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - - exports['test .add()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Adding a string works. - node.add('function noop() {}'); - - // Adding another source node works. - node.add(new SourceNode(null, null, null)); - - // Adding an array works. - node.add(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - - // Adding other stuff doesn't. - assert.throws(function () { - node.add({}); - }); - assert.throws(function () { - node.add(function () {}); - }); - }; - - exports['test .prepend()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Prepending a string works. - node.prepend('function noop() {}'); - assert.equal(node.children[0], 'function noop() {}'); - assert.equal(node.children.length, 1); - - // Prepending another source node works. - node.prepend(new SourceNode(null, null, null)); - assert.equal(node.children[0], ''); - assert.equal(node.children[1], 'function noop() {}'); - assert.equal(node.children.length, 2); - - // Prepending an array works. - node.prepend(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - assert.equal(node.children[0], 'function foo() {'); - assert.equal(node.children[1], 'return 10;'); - assert.equal(node.children[2], '}'); - assert.equal(node.children[3], ''); - assert.equal(node.children[4], 'function noop() {}'); - assert.equal(node.children.length, 5); - - // Prepending other stuff doesn't. - assert.throws(function () { - node.prepend({}); - }); - assert.throws(function () { - node.prepend(function () {}); - }); - }; - - exports['test .toString()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['function foo() {', - new SourceNode(null, null, null, 'return 10;'), - '}'])).toString(), - 'function foo() {return 10;}'); - }; - - exports['test .join()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['a', 'b', 'c', 'd'])).join(', ').toString(), - 'a, b, c, d'); - }; - - exports['test .walk()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', new SourceNode(1, 0, 'a.js', ['someCall()']), ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var expected = [ - { str: '(function () {\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'someCall()', source: 'a.js', line: 1, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'if (foo) bar()', source: 'b.js', line: 2, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: '}());', source: null, line: null, column: null }, - ]; - var i = 0; - node.walk(function (chunk, loc) { - assert.equal(expected[i].str, chunk); - assert.equal(expected[i].source, loc.source); - assert.equal(expected[i].line, loc.line); - assert.equal(expected[i].column, loc.column); - i++; - }); - }; - - exports['test .replaceRight'] = function (assert, util) { - var node; - - // Not nested - node = new SourceNode(null, null, null, 'hello world'); - node.replaceRight(/world/, 'universe'); - assert.equal(node.toString(), 'hello universe'); - - // Nested - node = new SourceNode(null, null, null, - [new SourceNode(null, null, null, 'hey sexy mama, '), - new SourceNode(null, null, null, 'want to kill all humans?')]); - node.replaceRight(/kill all humans/, 'watch Futurama'); - assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?'); - }; - - exports['test .toStringWithSourceMap()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', - new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'), - new SourceNode(1, 8, 'a.js', '()'), - ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - var mapWithoutOptions = node.toStringWithSourceMap().map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - assert.ok(mapWithoutOptions instanceof SourceMapGenerator, 'mapWithoutOptions instanceof SourceMapGenerator'); - 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()'] = function (assert, util) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode, - new SourceMapConsumer(util.testMap)); - - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.testMap.version); - assert.equal(map.file, util.testMap.file); - assert.equal(map.mappings, util.testMap.mappings); - }; - - exports['test .fromStringWithSourceMap() empty map'] = function (assert, util) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode, - new SourceMapConsumer(util.emptyMap)); - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.emptyMap.version); - assert.equal(map.file, util.emptyMap.file); - assert.equal(map.mappings.length, util.emptyMap.mappings.length); - assert.equal(map.mappings, util.emptyMap.mappings); - }; - - exports['test .fromStringWithSourceMap() complex version'] = function (assert, util) { - var input = new SourceNode(null, null, null, [ - "(function() {\n", - " var Test = {};\n", - " ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };\n"), - " ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), "\n", - "}());\n", - "/* Generated Source */"]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var node = SourceNode.fromStringWithSourceMap( - input.code, - new SourceMapConsumer(input.map.toString())); - - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, input.code); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - var inputMap = input.map.toJSON(); - util.assertEqualMaps(assert, map, inputMap); - }; - - exports['test .toStringWithSourceMap() merging duplicate mappings'] = function (assert, util) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function"), - new SourceNode(1, 0, "a.js", "() {\n"), - " ", - new SourceNode(1, 0, "a.js", "var Test = "), - new SourceNode(1, 0, "b.js", "{};\n"), - new SourceNode(2, 0, "b.js", "Test"), - new SourceNode(2, 0, "b.js", ".A", "A"), - new SourceNode(2, 20, "b.js", " = { value: ", "A"), - "1234", - new SourceNode(2, 40, "b.js", " };\n", "A"), - "}());\n", - "/* Generated Source */" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - // 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'] = function (assert, util) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function() {\nvar nextLine = 1;\nanotherLine();\n"), - new SourceNode(2, 2, "b.js", "Test.call(this, 123);\n"), - new SourceNode(2, 2, "b.js", "this['stuff'] = 'v';\n"), - new SourceNode(2, 2, "b.js", "anotherLine();\n"), - "/*\nGenerated\nSource\n*/\n", - new SourceNode(3, 4, "c.js", "anotherLine();\n"), - "/*\nGenerated\nSource\n*/" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 0 }, - 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 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/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-util.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-util.js deleted file mode 100644 index 22e9a9e3..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/test-util.js +++ /dev/null @@ -1,127 +0,0 @@ -/* -*- 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('a//b'), 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('././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('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'); - }; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/util.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/util.js deleted file mode 100644 index 288046bf..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/node_modules/source-map/test/source-map/util.js +++ /dev/null @@ -1,161 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('../../lib/source-map/util'); - - // This is a test mapping which maps functions from two different files - // (one.js and two.js) to a minified generated source. - // - // Here is one.js: - // - // ONE.foo = function (bar) { - // return baz(bar); - // }; - // - // Here is two.js: - // - // TWO.inc = function (n) { - // return n + 1; - // }; - // - // And here is the generated code (min.js): - // - // ONE.foo=function(a){return baz(a);}; - // TWO.inc=function(a){return a+1;}; - exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+ - " TWO.inc=function(a){return a+1;};"; - exports.testMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapWithSourcesContent = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourcesContent: [ - ' ONE.foo = function (bar) {\n' + - ' return baz(bar);\n' + - ' };', - ' TWO.inc = function (n) {\n' + - ' return n + 1;\n' + - ' };' - ], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.emptyMap = { - version: 3, - file: 'min.js', - names: [], - sources: [], - mappings: '' - }; - - - function assertMapping(generatedLine, generatedColumn, originalSource, - originalLine, originalColumn, name, map, assert, - dontTestGenerated, dontTestOriginal) { - if (!dontTestOriginal) { - var origMapping = map.originalPositionFor({ - line: generatedLine, - column: generatedColumn - }); - assert.equal(origMapping.name, name, - 'Incorrect name, expected ' + JSON.stringify(name) - + ', got ' + JSON.stringify(origMapping.name)); - assert.equal(origMapping.line, originalLine, - 'Incorrect line, expected ' + JSON.stringify(originalLine) - + ', got ' + JSON.stringify(origMapping.line)); - assert.equal(origMapping.column, originalColumn, - 'Incorrect column, expected ' + JSON.stringify(originalColumn) - + ', got ' + JSON.stringify(origMapping.column)); - - var expectedSource; - - if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) { - expectedSource = originalSource; - } else if (originalSource) { - expectedSource = map.sourceRoot - ? util.join(map.sourceRoot, originalSource) - : originalSource; - } else { - expectedSource = null; - } - - assert.equal(origMapping.source, expectedSource, - 'Incorrect source, expected ' + JSON.stringify(expectedSource) - + ', got ' + JSON.stringify(origMapping.source)); - } - - if (!dontTestGenerated) { - var genMapping = map.generatedPositionFor({ - source: originalSource, - line: originalLine, - column: originalColumn - }); - assert.equal(genMapping.line, generatedLine, - 'Incorrect line, expected ' + JSON.stringify(generatedLine) - + ', got ' + JSON.stringify(genMapping.line)); - assert.equal(genMapping.column, generatedColumn, - 'Incorrect column, expected ' + JSON.stringify(generatedColumn) - + ', got ' + JSON.stringify(genMapping.column)); - } - } - exports.assertMapping = assertMapping; - - function assertEqualMaps(assert, actualMap, expectedMap) { - assert.equal(actualMap.version, expectedMap.version, "version mismatch"); - assert.equal(actualMap.file, expectedMap.file, "file mismatch"); - assert.equal(actualMap.names.length, - expectedMap.names.length, - "names length mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - for (var i = 0; i < actualMap.names.length; i++) { - assert.equal(actualMap.names[i], - expectedMap.names[i], - "names[" + i + "] mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - } - assert.equal(actualMap.sources.length, - expectedMap.sources.length, - "sources length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - for (var i = 0; i < actualMap.sources.length; i++) { - assert.equal(actualMap.sources[i], - expectedMap.sources[i], - "sources[" + i + "] length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - } - assert.equal(actualMap.sourceRoot, - expectedMap.sourceRoot, - "sourceRoot mismatch: " + - actualMap.sourceRoot + " != " + expectedMap.sourceRoot); - assert.equal(actualMap.mappings, expectedMap.mappings, - "mappings mismatch:\nActual: " + actualMap.mappings + "\nExpected: " + expectedMap.mappings); - if (actualMap.sourcesContent) { - assert.equal(actualMap.sourcesContent.length, - expectedMap.sourcesContent.length, - "sourcesContent length mismatch"); - for (var i = 0; i < actualMap.sourcesContent.length; i++) { - assert.equal(actualMap.sourcesContent[i], - expectedMap.sourcesContent[i], - "sourcesContent[" + i + "] mismatch"); - } - } - } - exports.assertEqualMaps = assertEqualMaps; - -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/package.json deleted file mode 100644 index 84811302..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/node_modules/postcss/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "postcss", - "version": "0.3.4", - "description": "Framework for CSS postprocessors", - "keywords": [ - "css", - "parser", - "postproccessor" - ], - "author": { - "name": "Andrey Sitnik", - "email": "andrey@sitnik.ru" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/ai/postcss.git" - }, - "dependencies": { - "source-map": "~0.1.33", - "base64-js": "~0.0.6" - }, - "devDependencies": { - "coffee-script": "1.7.1", - "fs-extra": "0.8.1", - "gonzales": "1.0.7", - "rework": "0.20.2", - "should": "3.1.3", - "mocha": "1.17.1", - "cssom": "0.3.0" - }, - "main": "lib/postcss", - "scripts": { - "test": "mocha" - }, - "readme": "# PostCSS\n\nPostCSS is a framework for CSS postprocessors,\nto modify CSS with JavaScript.\n\nIt takes care of most common CSS tool tasks:\n\n1. parses CSS;\n2. gives you usable JS API to edit CSS node tree;\n3. dumps modified node tree into CSS string;\n4. generates (or modifies existent) source map for your changes;\n\nYou can use this framework to write you own:\n\n* CSS minifier or beautifizer.\n* CSS polyfills.\n* Grunt plugin to generate sprites, include `data-uri` images\n or any other works.\n* Text editor plugin to automate CSS routine.\n* Command-line CSS tool.\n\nSponsored by [Evil Martians](http://evilmartians.com/).\n\n## Built with PostCSS\n\n* [Autoprefixer] adds vendor prefixes by Can I Use data.\n* [grunt-pixrem], `rem` unit polyfill.\n* [CSS MQPacker] joins same media queries.\n\n[Autoprefixer]: https://github.com/ai/autoprefixer\n[grunt-pixrem]: https://github.com/robwierzbowski/grunt-pixrem\n[CSS MQPacker]: https://github.com/hail2u/node-css-mqpacker\n\n## Quick Example\n\nLet’s fix forgotten `content` property in `::before` and `::after`:\n\n```js\nvar postcss = require('postcss');\n\nvar contenter = postcss(function (css) {\n css.eachRule(function (rule) {\n if ( rule.selector.match(/::(before|after)/) ) {\n // In every ::before/::after rule\n\n // Did we forget content property?\n var good = rule.some(function (i) { return i.prop == 'content'; });\n\n if ( !good ) {\n // Add content: \"\" if we forget it\n rule.prepend({ prop: 'content', value: '\"\"' });\n }\n\n }\n });\n});\n```\n\nAnd then CSS with forgotten `content`:\n\n```css\na::before {\n width: 10px;\n height: 10px\n}\n```\n\nwill be fixed by our new `contenter`:\n\n```js\nvar fixed = contenter.process(css).css;\n```\n\nto:\n\n```css\na::before {\n content: \"\";\n width: 10px;\n height: 10px\n}\n```\n\n## Features\n\n### Source Map\n\nPostCSS generates source map for its changes:\n\n```js\nresult = processor.process(css, { map: true, from: 'from.css', to: 'to.css' });\nresult.css // String with processed CSS\nresult.map // Source map\n```\n\nAnd modifies source map from previous step (like Sass preprocessor):\n\n```js\nvar sassMap = fs.readFileSync('from.sass.css.map');\nprocessor.process(css, { map: sassMap, from: 'from.sass.css', to: 'to.css' });\n```\n\n### Preserves code formatting and indentations\n\nPostCSS will not change any byte of a rule if you don’t modify its node:\n\n```js\npostcss(function (css) { }).process(css).css == css;\n```\n\nAnd when you modify CSS nodes, PostCSS will try to copy coding style:\n\n```js\ncontenter.process(\"a::before{color:black}\")\n// a::before{content:'';color:black}\n\ncontenter.process(\"a::before {\\n color: black;\\n }\")\n// a::before {\n// content: '';\n// color: black;\n// }\n```\n\n## Why PostCSS Better Than …\n\n### Preprocessors\n\nPreprocessors (like Sass or Stylus) give us special language with variables,\nmixins, statements and compile it to CSS. Compass, nib and other mixins\nlibraries use these languages to work with prefixes, sprites and inline images.\n\nBut Sass and Stylus languages were created to be syntax-sugar for CSS.\nWriting really complicated programs using preporcessor languages\nis very difficult. [Autoprefixer] is absolutely impossible to implement\non top of Sass.\n\nPostCSS gives you comfort and power of JS or CoffeeScript to working with CSS.\nYou can do really magic things with wide range of [npm] libraries.\n\nBut postprocessors are not enemies for preprocessors. Sass and Stylus are still\nthe best way to improve readability and add some syntax sugar to CSS.\nYou can easily combine preprocessors and postprocessors\n(and PostCSS will also update source map from Sass or Stylus).\n\n[Autoprefixer]: https://github.com/ai/autoprefixer\n[npm]: https://npmjs.org/\n\n### RegExp\n\nSome Grunt plugins modify CSS with regular expressions but using a CSS parser\nand a node tree is a much safer way to edit CSS. Also, regexps will break\nsource maps generated by preprocessors.\n\n### CSS Parsers\n\nThere are a lot of good CSS parsers, like [Gonzales]. But they help you only\nwith first step.\n\nUnlike them PostCSS gives you full source map support and useful high level API\n(for example, safe iterators).\n\n[Gonzales]: https://github.com/css/gonzales\n\n### Rework\n\n[Rework] and PostCSS are very similar, but they has different targets.\n\nRework was created to build new CSS sublanguage to replace Stylus (like [Myth]).\nPostCSS was created for CSS tools, which works in chain with legacy CSS code\n(like Autoprefixer).\n\nBecause of this background difference, PostCSS:\n\n* better works with source map, because it should update map from previous step\n (like Sass compiling)\n* saves all your spaces and code style, because it can be worked in text editor\n plugins\n* has safer parser, because it can be used for legacy code\n* has high level API to clean your processor from common tasks\n\n[Myth]: http://www.myth.io/\n[Rework]: https://github.com/visionmedia/rework\n\n## Usage\n\n### Processor\n\nThe function `postcss(fn)` creates a processor from your function:\n\n```js\nvar postcss = require('postcss');\n\nvar processor = postcss(function (css) {\n // Code to modify CSS\n});\n```\n\nIf you want to combine multiple processors (and parse CSS only once),\nyou can add several functions using the `use(fn)` method:\n\n```js\nvar all = postcss().\n use(prefixer).\n use(minifing);\n```\n\nProcessor function can change the current CSS node tree:\n\n```js\npostcss(function (css) {\n css.append( /* new rule */ )\n});\n```\n\nor create a completely new CSS root node and return it instead:\n\n```js\npostcss(function (css) {\n var newCSS = postcss.root()\n // Add rules and declarations\n return newCSS;\n});\n```\n\nThis generated processor transforms some CSS using `process(css, opts)` method:\n\n```js\nvar doubler = postcss(function (css) {\n // Clone each declaration\n css.eachDecl(function (decl) {\n decl.parent.prepend( decl.clone() );\n });\n});\n\nvar css = \"a { color: black; }\";\nvar result = doubler.process(css);\n\nresult.css //=> \"a { color: black; color: black; }\"\n```\n\nYou can set the original CSS filename via `from` option and make syntax error\nmessages much more helpful:\n\n```js\nvar wrong = \"a {\";\nprocessor.process(wrong, { from: 'main.css' });\n//=> Can't parse CSS: Unclosed block at line 1:1 in main.css\n```\n\n### Multiple Inputs\n\nThe function `postcss()` generates processor only for one input.\nIf you need to process several inputs (like in files concatenation) you can use\n`postcss.parse()`.\n\nLet’s join two CSS with source map support in 5 lines of code:\n\n```js\nvar file1 = postcss.parse(css1, { from: 'a.css' });\nvar file2 = postcss.parse(css2, { from: 'b.css' });\n\nfile1.rules = file1.rules.concat( file2.rules );\n\nvar result = file1.toResult({ to: 'app.css', map: true });\n```\n\n### Source Map\n\nPostCSS will generate a source map, if you set `map` option to `true`\nin the `process(css, opts)` method.\n\nYou must set input and output CSS files paths (using `from` and `to`\noptions respectively) to generate correct source map.\n\n```js\nvar result = processor.process(css, {\n map: true,\n from: 'main.css',\n to: 'main.out.css'\n});\n\nresult.map //=> '{\"version\":3,\"file\":\"main.out.css\",\"sources\":[\"main.css\"],\"names\":[],\"mappings\":\"AAAA,KAAI\"}'\n\nfs.writeFileSync('main.out.css.map', result.map);\n```\n\nPostCSS can also modify previous source map (for example, from Sass\ncompilation). So if you compile Sass to CSS and then minify this CSS\nby postprocessor, final source map will contain mapping from Sass code\nto minified CSS.\n\nJust set `map` option with an original source map (a string or a JS object):\n\n```js\nvar result = minifier.process(css, {\n map: fs.readFileSync('main.sass.css.map'),\n from: 'main.sass.css',\n to: 'main.min.css'\n});\n\nresult.map //=> Source map from main.sass to main.min.css\n```\n\nPostCSS try to autodetect previous map file. For example, if you process `a.css`\nand `a.css.map` is placed in same dir, PostCSS will read previous map and\ngenerate new one. You can disable autodetection by `map: false`.\n\nPostCSS, by default, will add annotation comment with path to new source map\nfile:\n\n```css\na { }\n/*# sourceMappingURL=main.out.css.map */\n```\n\nIf you want to remove annotation, set `mapAnnotation` option to `false`.\n\nInline maps are also supported. If input CSS will contain annotation\nfrom previous step with map in `data:uri`, PostCSS will update source map\nwith yours changes and inine new map back to output CSS.\n\nOption `inlineMap` will force PostCSS to inline new map to CSS:\n\n```js\nvar result = minifier.process(css, {\n from: 'main.css',\n to: 'main.min.css',\n inlineMap: true\n});\n\nresult.map //=> undefined, because map is in CSS\nresult.css //=> \"a{}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5taW4uY3NzIiwic291cmNlcyI6WyJtYWluLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFLIn0= */\"\n```\n\n### Helpers\n\n#### Vendor\n\nPostCSS contains heigh optimized code to split vendor prefix:\n\n```js\nvar vendor = require('postcss/lib/vendor');\n\nvendor.prefix('-moz-tab-size') //=> '-moz-'\nvendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n```\n\n#### List\n\nTo safely split comma- or space-separated values (like in `background-image`\nor `transform` ) with brackets and quotes support you can use `list` helper:\n\n```js\nvar list = require('postcss/lib/list');\n\nlist.space(image.value) //=> ['linear-gradient(white, black)', 'blue']\nlist.comma(transform.value) //=> ['color 200ms', 'background 200ms']\n```\n\n### Nodes\n\nProcessor function receives `Root` node with CSS node tree inside.\n\n```js\nvar processor = postcss(function (cssRoot) {\n});\n```\n\nThere are 4 types of child nodes: `Comment`, `AtRule`, `Rule` and `Declaration`.\nAll nodes have `toString()` and `clone()` methods.\n\nYou can parse CSS and get a `Root` node by `postcss.parse(css, opts)` method:\n\n```js\nvar cssRoot = postcss.parse('a { }');\n```\n\nAll node‘s methods return current node, so you can build nice method chains:\n\n```js\nroot.append( rule1 ).append( rule2 ).toString();\n```\n\n### Node Source\n\nEvery node stores its origin file (if you set `from` option to `process`\nor `parse` method) and position:\n\n```js\nvar root = postcss.parse(css, { from: 'main.css' });\nvar rule = root.rules[0];\n\nrule.source.file //=> 'main.css'\nrule.source.start //=> { line: 5, position: 1 }\nrule.source.end //=> { line: 10, position: 5 }\n```\n\n### Whitespaces\n\nAll nodes (exclude `Root`) have `before` property with indentation\nand all earlier spaces.\n\nNodes with children (`Root`, `AtRule` and `Rule`) contain also `after` property\nwith spaces after last child and before `}` or end of file.\n\nEvery `Declaration` has `between` property with colon, spaces and comments\nbetween property name and value. `Rule` stores spaces and comments between\nselector and `{` in `between` property. `AtRule` uses `between` also to store\nspaces and comments before `{` or `;` for bodiless at-rule.\n\n```js\nvar root = postcss.parse(\"a {\\n color: black;\\n}\\n\");\n\nroot.rules[0].between //=> \" \" between selector and {\nroot.rules[0].decls[0].before //=> \"\\n \" before color: black\nroot.rules[0].decls[0].between //=> \": \" between property name and value\nroot.rules[0].after //=> \"\\n\" before }\nroot.after //=> \"\\n\" from end of file\n```\n\nThe simplest way to minify CSS is to set `before`, `between` and `after`\nproperties to an empty string:\n\n```js\nvar minifier = postcss(function (css) {\n css.eachDecl(function (decl) {\n decl.before = '';\n decl.between = ':';\n });\n css.eachRule(function (rule) {\n rule.before = '';\n rule.between = '';\n rule.after = '';\n });\n css.eachAtRule(function (atRule) {\n atRule.before = '';\n atRule.between = '';\n atRule.after = '';\n });\n css.eachComment(function (comment) {\n comment.removeSelf();\n });\n});\n\nvar css = \"a {\\n color:black\\n}\\n\";\nminifier.process(css).css //=> \"a{color:black}\"\n```\n\n### Raw Properties\n\nSome CSS values (selectors, comment text, at-rule params and declaration values)\ncan contain comments. PostCSS will clean them from trailing spaces for you:\n\n```js\nvar root = postcss.parse(\"a /**/ b {}\");\nvar rule = root.rules[0];\n\nrule.selector //=> 'a b' trimmed and cleaned from comments\nrule._selector.raw //=> 'a /**/ b' original raw value\n```\n\nBut PostCSS saves raw content to be able to stringify it to CSS, if you don’t\nchange origin value. As you can remember, PostCSS tries to save origin CSS\nbyte-to-byte, when it’s possible:\n\n```js\nrule.toString() //=> 'a /**/ b {}' with comment\n\nrule.selector = '.link b';\nrule.toString() //=> '.link b {}' you change value and origin comment was gone\n```\n\n### Containers\n\n`Root`, `AtRule` and `Rule` nodes can contain children in `rules` or `decls`\nproperty.\n\nThere are common method to work with children:\n\n* `append(newChild)` to add child at the end of children list.\n* `prepend(newChild)` to add child at the beginning of children list.\n* `insertBefore(existsChild, newChild)` to insert new child before some\n existent child.\n* `insertAfter(existsChild, newChild)` to insert new child after some\n existent child.\n* `remove(existsChild)` to remove child.\n* `index(existsChild)` to return child index.\n* `some(fn)` to return true if `fn` returns true on any child.\n* `every(fn)` to return true if `fn` returns true on all children.\n\nMethods `insertBefore`, `insertAfter` and `remove` can receive child node\nor child index as an `existsChild` argument. Have in mind that child index works\nmuch faster.\n\nThere are two shorcuts to get first and last child:\n\n```js\nrule.first //=> First declaration in rule\nrule.last //=> Last declaration in rule\n```\n\n### Children\n\n`Comment`, `AtRule`, `Rule` and `Declaration` nodes should be wrapped\nin other nodes.\n\nAll children contain `parent` property with parent node:\n\n```js\nrule.decls[0].parent == rule;\n```\n\nAll children has `removeSelf()` method:\n\n```js\nrule.decls[0].removeSelf();\n```\n\nBut `remove(index)` in parent with child index is much faster:\n\n```js\nrule.each(function (decl, i) {\n rule.remove(i);\n});\n```\n\n### Iterators\n\nAll parent nodes have `each` method to iterate over children nodes:\n\n```js\nroot = postcss.parse('a { color: black; display: none }');\n\nroot.each(function (rule, i) {\n if ( rule.type == 'rule' ) {\n console.log(rule.selector, i); // Will log \"a 0\"\n }\n});\n\nroot.rules[0].each(function (decl, i) {\n if ( rule.type != 'comment' ) {\n console.log(decl.prop, i); // Will log \"color 0\" and \"display 1\"\n }\n});\n```\n\nUnlike `for {}`-cycle construct or `Array#forEach()` this iterator is safe.\nYou can mutate children while iteration and it will fix current index:\n\n```js\nrule.rules.forEach(function (decl, i) {\n rule.prepend( decl.clone() );\n // Will be infinity cycle, because on prepend current declaration become\n // second and next index will go to current declaration again\n});\n\nrule.each(function (decl, i) {\n rule.prepend( decl.clone() );\n // Will work correct (once clone each declaration), because after prepend\n // iterator index will be recalculated\n});\n```\n\nBecause CSS have nested structure, PostCSS also contains recursive iterator\n`eachInside`:\n\n```js\nroot.eachInside(function (node, i) {\n console.log(node.type ' inside ' + parent.type);\n});\n```\n\nThere are also shortcuts to recursive iterate all nodes of specific type:\n\n```js\nroot.eachDecl(function (decl, i) {\n // Each declaration inside root\n});\n\nroot.eachRule(function (rule, i) {\n // Each rule inside root and any nested at-rules\n});\n\nroot.eachAtRule(function (atRule, i) {\n // Each at-rule inside root and any nested at-rules\n});\n\nroot.eachComment(function (comment, i) {\n // Each comment inside root\n})\n```\n\n### Root Node\n\n`Root` node contains entire CSS tree. Its children can be only `Comment`,\n`AtRule` or `Rule` nodes in `rules` property.\n\nYou can create a new root using shortcut:\n\n```js\nvar root = postcss.root();\n```\n\nMethod `toString()` stringifies entire node tree to CSS string:\n\n```js\nroot = postcss.parse(css);\nroot.toString() == css;\n```\n\n### Comment Node\n\n```css\n/* Block comment */\n```\n\nPostCSS creates `Comment` nodes only for comments between rules or declarations.\nComments inside selectors, at-rules params, declaration values will be stored\nin Raw property.\n\n`Comment` has only one property: `text` with trimmed text inside comment.\n\n```js\ncomment.text //=> \"Block comment\"\n```\n\nYou can create a new comment using shortcut:\n\n```js\nvar comment = postcss.comment({ text: 'New comment' });\n```\n\n### AtRule Node\n\n```css\n@charset 'utf-8';\n\n@font-face {\n font-family: 'Cool'\n}\n\n@media print {\n img { display: none }\n}\n```\n\n`AtRule` has two own properties: `name` and `params`.\n\nAs you see, some at-rules don’t contain any children (like `@charset`\nor `@import`), some of at-rules can contain only declarations\n(like `@font-face` or `@page`), but most of them can contain rules\nand nested at-rules (like `@media`, `@keyframes` and others).\n\nParser selects `AtRule` content type by its name. If you create `AtRule`\nnode manually, it will detect own content type with new child type on first\n`append` or other add method call:\n\n```js\nvar atRule = postcss.atRule({ name: '-x-animations' });\natRule.rules //=> undefined\natRule.decls //=> undefined\n\natRule.append( postcss.rule({ selector: 'from' }) );\natRule.rules.length //=> 1\natRule.decls //=> undefined\n```\n\nYou can create a new at-rule using shortcut:\n\n```js\nvar atRule = postcss.atRule({ name: 'charset', params: 'utf-8' });\n```\n\n### Rule Node\n\n```css\na {\n color: black;\n}\n```\n\n`Rule` node has `selector` property and contains `Declaration` and `Comment`\nchildren in `decls` property.\n\nThere is `selectors` shortcut, which return array:\n\n```js\nrule.selector //=> \"a, b\"\nrule.selectors //=> ['a', 'b']\n```\n\nYou can miss `Declaration` constructor in `append` and other insert methods:\n\n```js\nrule.append({ prop: 'color', value: 'black' });\n```\n\nProperty `semicolon` indicates if last declaration in rule has semicolon or not:\n\n```js\nvar root = postcss.parse('a { color: black }');\nroot.rules[0].semicolon //=> false\n\nvar root = postcss.parse('a { color: black; }');\nroot.rules[0].semicolon //=> true\n```\n\nYou can create a new rule using shortcut:\n\n```js\nvar rule = postcss.rule({ selector: 'a' });\n```\n\n### Declaration Node\n\n```css\ncolor: black\n```\n\n`Declaration` node has `prop`, `value` and `important` properties.\n\nYou can create a new declaration using this shortcut:\n\n```js\nvar decl = postcss.decl({ prop: 'color', value: 'black' });\n```\n\nOr use short form in rule’s `append()` and other add methods:\n\n```js\nrule.append({ prop: 'color', value: 'black' });\n```\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ai/postcss/issues" - }, - "homepage": "https://github.com/ai/postcss", - "_id": "postcss@0.3.4", - "dist": { - "shasum": "ad64a15965c47b27c642cbd657a733dc116ea68a" - }, - "_from": "postcss@~0.3.3", - "_resolved": "https://registry.npmjs.org/postcss/-/postcss-0.3.4.tgz" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/package.json b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/package.json deleted file mode 100644 index 3a1ab82c..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "autoprefixer", - "version": "1.1.20140302", - "description": "Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website", - "keywords": [ - "css", - "prefix", - "postprocessor", - "postcss" - ], - "author": { - "name": "Andrey Sitnik", - "email": "andrey@sitnik.ru" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/ai/autoprefixer.git" - }, - "dependencies": { - "postcss": "~0.3.3", - "fs-extra": "~0.8.1" - }, - "devDependencies": { - "coffee-script": "1.7.1", - "browserify": "3.31.2", - "should": "3.1.3", - "stylus": "0.42.2", - "mocha": "1.17.1", - "nib": "1.0.2" - }, - "bin": { - "autoprefixer": "./bin/autoprefixer" - }, - "main": "lib/autoprefixer", - "scripts": { - "test": "mocha" - }, - "readme": "# Autoprefixer\n\n<img align=\"right\" width=\"94\" src=\"http://ai.github.io/autoprefixer/logo.svg\" title=\"Autoprefixer logo by Anton Lovchikov\">\n\nParse CSS and add vendor prefixes to CSS rules using values\nfrom the [Can I Use](http://caniuse.com/).\n\nWrite your CSS rules without vendor prefixes (in fact, forget about them\nentirely):\n\n```css\n:fullscreen a {\n transition: transform 1s\n}\n```\n\nProcess your CSS by Autoprefixer:\n\n```js\nvar prefixed = autoprefixer.process(css).css;\n```\n\nIt will use the data on current browser popularity and properties support\nto apply prefixes for you:\n\n```css\n:-webkit-full-screen a {\n -webkit-transition: -webkit-transform 1s;\n transition: transform 1s\n}\n:-moz-full-screen a {\n transition: transform 1s\n}\n:-ms-fullscreen a {\n transition: transform 1s\n}\n:fullscreen a {\n -webkit-transition: -webkit-transform 1s;\n transition: transform 1s\n}\n```\n\nYou can play with your CSS in [interactive demo] of Autoprefixer.\n\nTwitter account for news and releases: [@autoprefixer].\n\nSponsored by [Evil Martians]. Based on [PostCSS] framework.\n\n[interactive demo]: http://jsfiddle.net/simevidas/udyTs/show/light/\n[@autoprefixer]: https://twitter.com/autoprefixer\n[Evil Martians]: http://evilmartians.com/\n[PostCSS]: https://github.com/ai/postcss\n\n## Features\n\n### Forget about prefixes\n\nThe best tool is a tool you can't see and one that does the work for you.\nThis is the main idea behind Autoprefixer.\n\nAutoprefixer interface is simple: just forget about vendor prefixes\nand write normal CSS according to latest W3C specs. You don’t need\na special language (like Sass) or special mixins.\n\nBecause Autoprefixer is a postprocessor for CSS,\nyou can also use it with preprocessors, such as Sass, Stylus or LESS.\n\n### Actual data from Can I Use\n\nAutoprefixer uses the most recent data from [Can I Use](http://caniuse.com/),\nunderstands which browsers are actual and popular and adds only the necessary\nvendor prefixes.\n\nIt also cleans your CSS from old prefixes (like prefixed `border-radius`,\nproduced by many CSS libraries):\n\n```css\na {\n -webkit-border-radius: 5px;\n border-radius: 5px\n}\n```\n\ncompiles to:\n\n```css\na {\n border-radius: 5px\n}\n```\n\nNote, that Autoprefixer doesn’t load Can I Use data every time. This data\nis already packed to release, so with same Autoprefixer version you always will\nhave same output result.\n\n### Flexbox, Gradients, etc.\n\nFlexbox or gradients have different syntaxes in different browsers\n(sometimes you need to recalculate angles, sometimes you need 2 old properties\ninstead of new one), but Autoprefixer hides this from you.\n\nJust code by latest W3C specs and Autoprefixer will produce the code\nfor old browsers:\n\n```css\na {\n display: flex;\n}\n```\n\ncompiles to:\n\n```css\na {\n display: -webkit-box;\n display: -webkit-flex;\n display: -moz-box;\n display: -ms-flexbox;\n display: flex\n}\n```\n\nAutoprefixer has [22 special hacks] to fix browser’s differences.\n\n[22 special hacks]: https://github.com/ai/autoprefixer/tree/master/lib/hacks\n\n### Fast\n\nAutoprefixer is about 16 times faster than Compass and 8 times faster\nthan Stylus.\n\nOn a Core i7 with 10 GB of RAM and SSD, benchmark with GitHub styles is:\n\n```\n~/Dev/autoprefixer$ ./node_modules/.bin/cake bench\nLoad GitHub styles\nAutoprefixer: 450 ms\nCompass: 3825 ms (8.5 times slower)\nStylus: 3720 ms (8.3 times slower)\n```\n\nUnlike [-prefix-free](http://leaverou.github.io/prefixfree/), Autoprefixer\ncompiles CSS once on deploy and doesn’t hit client-side performance.\n\n## Browsers\n\nYou can specify the browsers you want to target in your project:\n\n```js\nautoprefixer(\"last 1 version\", \"> 1%\", \"Explorer 7\").process(css).css;\n```\n\n* `last 2 versions` is last versions for each browser. Like “last 2 versionsâ€\n [strategy](http://support.google.com/a/bin/answer.py?answer=33864) in\n Google.\n* `last 2 Chrome versions` is last versions of specify browser.\n* `> 5%` is browser versions, selected by global usage statistics.\n* `Firefox > 20` is Firefox newer versions than 20.\n* `Firefox >= 20` is Firefox version 20 or newer.\n* `Firefox ESR` is latest [Firefox ESR] version.\n* `none` don’t set any browsers to clean CSS from any vendor prefixes.\n* You can also set browsers directly.\n\nBlackberry and stock Android browsers will not be used in `last n versions`.\nYou can add them by name:\n\n```js\nautoprefixer(\"last 1 version\", \"BlackBerry 10\", \"Android 4\").process(css).css;\n```\n\nBrowsers names (case insensitive):\n* `Android` for old Android stock browser.\n* `BlackBerry` or `bb` for Blackberry browser.\n* `Chrome` for Google Chrome.\n* `Firefox` or `ff` for Mozilla Firefox.\n* `Explorer` or `ie` for Internet Explorer.\n* `iOS` for iOS Safari.\n* `Opera` for Opera.\n* `Safari` for desktop Safari.\n\nBy default, Autoprefixer uses `> 1%, last 2 versions, Firefox ESR, Opera 12.1`:\n* Latest [Firefox ESR] is a 24 version.\n* Opera 12.1 will be in list until Opera supports non-Blink 12.x branch.\n\n[Firefox ESR]: http://www.mozilla.org/en/firefox/organizations/faq/\n\n## Source Map\n\nYou must set input and output CSS files paths (by `from` and `to` options)\nto generate a correct map.\n\nAutoprefixer can modify previous source map (for example, from Sass).\nit will autodetect previous map if it will be in annotation comment or in file\nnear input CSS. You can disable source map with `map: false` or set previous\nsource map content manually to `map` option (as string or JS object).\n\n```js\nvar result = autoprefixer.process(css, {\n map: fs.readFileSync('main.sass.css.map'),\n from: 'main.sass.css',\n to: 'main.min.css'\n});\n\nresult.css //=> CSS with source map annotation comment\nresult.map //=> Source map from main.sass to main.min.css\n\nfs.writeFileSync('main.min.css.map', result.map);\n```\n\nAutoprefixer supports inline source maps too. If input CSS contains annotation\nfrom previous step with map in `data:uri`, Autoprefixer will update source map\nwith prefixes changes and inine new map back to output CSS.\n\nYou can read more about source map options in\n[PostCSS documentation](https://github.com/ai/postcss#source-map-1).\n\n## Visual Cascade\n\nAutoprefixer can change CSS indentation to create nice visual cascade\nof prefixes. You need to send `cascade: true` option to processor constructor:\n\n```js\nautoprefixer(\"> 1 %\", \"last 2 version\", { cascade: true }).process(css).css\n```\n\nand, if CSS will be uncompressed, output would be like:\n\n```css\na {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box\n}\n```\n\n## Debug\n\nYou can check which browsers are selected and which properties will be prefixed:\n\n```js\ninfo = autoprefixer(\"last 1 version\").info();\nconsole.log(info);\n```\n\nOr by CLI command:\n\n```sh\nautoprefixer -i\n```\n\n## FAQ\n\n### Does it add polyfills for old browsers?\n\nNo. Autoprefixer only adds prefixes, not polyfills. There are two reasons:\n\n1. Prefixes and polyfills are very different and need a different API.\n Two separate libraries would be much better.\n2. Most of IE polyfills are very bad for client perfomance. They use slow hacks\n and old IEs is mostly used on old hardware. Most of CSS 3 features that is\n only used for styling should be ignored in old IEs as it is recommended in\n Graceful Degradation.\n\n### Why don’t gradients work in Firefox?\n\nCheck that you use correct [direction syntax]. For example, you should use\n`to bottom` instead of `top`:\n\n```css\na {\n background: linear-gradient(to bottom, white, black)\n}\n```\n\nUnfortunately, unprefixed gradients use different direction syntax, that most\nof old gradients examples, so be careful and use always latest W3C specs with\nAutoprefixer.\n\n[direction syntax]: https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient\n\n### Why doesn’t Autoprefixer add prefixes to `border-radius`?\n\nDevelopers are often surprised by how few prefixes are required today.\nIf Autoprefixer doesn’t add prefixes to your CSS, check if they’re still\nrequired on [Can I Use](http://caniuse.com/).\n\nIf a prefix is required, but Autoprefixer doesn’t add it or adds it\nincorrectly, please\n[report an issue](https://github.com/ai/autoprefixer/issues/new)\nand include your source CSS and expected output.\n\n### Why doesn’t Autoprefixer support `appearance`?\n\nUnlike `transition`, the `appearance` property is not a part of\nany specification. So there is no `appearance`, only `-moz-appearance`\nand `-webkit-appearance`. Quote from [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance):\n\n> Do not use this property on Web sites: not only is it non-standard, but its\n> behavior changes from one browser to another. Even the keyword `none` does not\n> have the same behavior on each form element across different browsers, and\n> some do not support it at all.\n\n### Why Autoprefixer uses CoffeeScript?\n\nJavaScript is very popular, but this is the same reason why its syntax does not\nevolve. There is an entire Internet with a lot of legacy code which should\nbe supported by browsers. If developers will add an inappropriate feature then\nit can’t be removed in next versions but must be supported for a very long time.\nThis is very bad for innovation. To create new, we need to experiment and\nto choose.\n\nAs a result JavaScript doesn’t have even basic syntax features, which are\npresent in other languages like Ruby or Python. There are no string\ninterpolation, short lambda syntax, foreach statement for arrays, string and\narrays slicing, etc. This features are really important, so they will be in\nECMAScript 6 (first update of JS syntax after 15 years). But this\nnew specification is not still released and, of cource, we must wait until\nall browsers will support it.\n\nWith JavaScript preprocessors like CoffeeScript or TypeScript we can bring\ninnovation back. We can add new operator and use it right now, without waiting\nfor support in all browsers.\n\nAutoprefixer was written in pure JavaScript before. But CoffeeScript made\nAutoprefixer code much cleaner and more readable. Often 2 lines of code\nbecome 1.\n\nDon’t be afraid of CoffeeScript. It is just a new syntax, not another language\n(like ClojureScript). You can open [examples on CoffeeScript.org] and start\nto code. After a week your eyes will adjust and you will see, that CoffeeScript\nis cleaner and more readable.\n\nSituation with CoffeeScript and JavaScript is absolutely the same as with\nCSS preprocessors and postprocessors. How we can develop CSS postprocessor\nand avoid JS preproccesor :).\n\n[examples on CoffeeScript.org]: http://coffeescript.org/\n\n## Usage\n\n### Grunt\n\nYou can use the\n[grunt-autoprefixer](https://github.com/nDmitry/grunt-autoprefixer)\nplugin for Grunt. Install the npm package and add it to Gruntfile:\n\n```js\ngrunt.loadNpmTasks('grunt-autoprefixer');\n```\n\n### Compass\n\nIf you use Compass binary to compile your styles, you can easily integrate\nAutoprefixer with it. Install `autoprefixer-rails` gem:\n\n```\ngem install autoprefixer-rails\n```\n\nand add post-compile hook to `config.rb`:\n\n```ruby\nrequire 'autoprefixer-rails'\n\non_stylesheet_saved do |file|\n css = File.read(file)\n File.open(file, 'w') do |io|\n io << AutoprefixerRails.process(css)\n end\nend\n```\n\nYou can set browsers array as second argument in `process` method:\n\n```ruby\nio << AutoprefixerRails.process(css, [\"last 1 version\", \"> 1%\", \"Explorer 7\"])\n```\n\n### Stylus\n\nIf you use Stylus CLI, you can add Autoprefixer by\n[autoprefixer-stylus](https://github.com/jenius/autoprefixer-stylus) plugin.\n\nJust install npm package and use it in `-u` option:\n\n```\nstylus -u autoprefixer-stylus file.css\n```\n\n### Ruby on Rails\n\nAdd [autoprefixer-rails](https://github.com/ai/autoprefixer-rails) gem\nto `Gemfile` and write CSS in a usual way:\n\n```ruby\ngem \"autoprefixer-rails\"\n```\n\n### Ruby\n\nYou can integrate Autoprefixer into your Sprockets environment\nby `autoprefixer-rails` gem:\n\n```ruby\nAutoprefixerRails.install(sprockets_env)\n```\n\nor process CSS from plain Ruby:\n\n```ruby\nprefixed = AutoprefixerRails.compile(css)\n```\n\n### Prepros\n\nIf you want to build your assets in GUI, try\n[Prepros](http://alphapixels.com/prepros/). Just set “Auto Prefix CSSâ€\n[checkbox](https://f.cloud.github.com/assets/3478693/930798/faa29892-0016-11e3-8901-87850de7aed2.jpg)\nin right panel.\n\n<img src=\"http://alphapixels.com/prepros/static/img/prepros.jpg\" width=\"550\" height=\"340\" />\n\n### Mincer\n\nTo use Autoprefixer in [Mincer](https://github.com/nodeca/mincer),\ninstall `autoprefixer` npm package and enable it:\n\n```js\nenvironment.enable('autoprefixer');\n```\n\n### Middleman\n\nAdd [middleman-autoprefixer](https://github.com/porada/middleman-autoprefixer)\ngem to `Gemfile`:\n\n```ruby\ngem \"middleman-autoprefixer\"\n```\n\nand activate the extension in your project’s `config.rb`:\n\n```ruby\nactivate :autoprefixer\n```\n\n### Node.js\n\nUse `autoprefixer` npm package:\n\n```js\nvar autoprefixer = require('autoprefixer');\nvar css = 'a { transition: transform 1s }';\nvar prefixed = autoprefixer.process(css).css;\n```\n\n### PHP\n\nYou can use Autoprefixer in PHP by\n[autoprefixer-php](https://github.com/vladkens/autoprefixer-php) library:\n\n\n```php\n$autoprefixer = new Autoprefixer();\n$css = 'a { transition: transform 1s }';\n$prefixed = $autoprefixer->compile($css);\n```\n\n### JavaScript\n\nYou can use Autoprefixer in the browser or a non-Node.js runtime\nwith [standalone version](https://raw.github.com/ai/autoprefixer-rails/master/vendor/autoprefixer.js).\n\n### PostCSS\n\nAutoprefixer can be also used as a [PostCSS](https://github.com/ai/postcss)\nprocessor, so you can combine it with other processors and parse CSS only once:\n\n```js\npostcss().\n use( autoprefixer(['> 1%', 'opera 12.5']).postcss ).\n use( compressor ).\n process(css);\n```\n\n### Sublime Text\n\nYou can process your styles directly in Sublime Text with the\n[sublime-autoprefixer](https://github.com/sindresorhus/sublime-autoprefixer)\nplugin.\n\n### Brackets\n\nStyles can processed automatically in Brackets using the\n[brackets-autoprefixer](https://github.com/mikaeljorhult/brackets-autoprefixer)\nextension.\n\n\n### Others\n\nYou can use the `autoprefixer` binary to process CSS files using\nany assets manager:\n\n```\nsudo npm install --global autoprefixer\nautoprefixer *.css\n```\n\nSee `autoprefixer -h` for help.\n\n## In-package Update\n\nIt’s highly recommended that you always use the latest version of Autoprefixer.\nIf by any chance you or your company are not able to update the package\n(e.g. in case of long test periods before any library updates), you can still\nupdate the very browser data that Autoprefixer fetches from Can I Use:\n\n```\nautoprefixer --update\n```\n\nNote that the in-package update doesn’t get any code fixes nor the\nimplementation of new features. It just keeps the browser popularity and\nsupport data up to date, and adds new browser versions.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ai/autoprefixer/issues" - }, - "homepage": "https://github.com/ai/autoprefixer", - "_id": "autoprefixer@1.1.20140302", - "dist": { - "shasum": "0813f123d958c00338db354313ee86a54c81571f" - }, - "_from": "autoprefixer@~1.1.20140218", - "_resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-1.1.20140302.tgz" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/browsers.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/browsers.js deleted file mode 100644 index afa4f7c1..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/browsers.js +++ /dev/null @@ -1,69 +0,0 @@ -(function() { - module.exports = function() { - var minor; - minor = ['bb', 'android']; - return this.github('Fyrd/caniuse/master/data.json', (function(_this) { - return function(data) { - var agent, browsers, caniuse, internal, intervals, normalize, _ref; - normalize = function(array) { - return array.reverse().filter(function(i) { - return i; - }); - }; - intervals = function(array) { - var i, interval, result, splited, sub, _i, _len; - result = []; - for (_i = 0, _len = array.length; _i < _len; _i++) { - interval = array[_i]; - splited = interval.split('-').map(function(i) { - return parseFloat(i); - }); - splited = splited.sort().reverse(); - sub = (function() { - var _j, _len1, _results; - _results = []; - for (_j = 0, _len1 = splited.length; _j < _len1; _j++) { - i = splited[_j]; - _results.push([i, interval, splited.length]); - } - return _results; - })(); - result = result.concat(sub); - } - return result; - }; - agent = function(name) { - var future, info, result, versions; - info = data.agents[name]; - future = normalize(info.versions.slice(-3)).map(function(i) { - return parseFloat(i); - }); - versions = intervals(normalize(info.versions.slice(0, -3))); - result = {}; - result.prefix = name === 'opera' ? '-o-' : "-" + info.prefix + "-"; - if (minor.indexOf(name) !== -1) { - result.minor = true; - } - if (future.length) { - result.future = future; - } - result.versions = versions.map(function(i) { - return i[0]; - }); - result.popularity = versions.map(function(i) { - return info.usage_global[i[1]] / i[2]; - }); - return result; - }; - browsers = {}; - _ref = _this.browsers; - for (caniuse in _ref) { - internal = _ref[caniuse]; - browsers[internal] = agent(caniuse); - } - return _this.save('browsers', browsers); - }; - })(this)); - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/prefixes.js b/node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/prefixes.js deleted file mode 100644 index 411dfaed..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/autoprefixer/updaters/prefixes.js +++ /dev/null @@ -1,265 +0,0 @@ -(function() { - var __slice = [].slice; - - module.exports = function(updater) { - var prefix, prefixes; - prefixes = {}; - prefix = function() { - var data, name, names, _i, _j, _len, _results; - names = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), data = arguments[_i++]; - _results = []; - for (_j = 0, _len = names.length; _j < _len; _j++) { - name = names[_j]; - _results.push(prefixes[name] = data); - } - return _results; - }; - this.feature('border-radius', (function(_this) { - return function(browsers) { - return prefix('border-radius', 'border-top-left-radius', 'border-top-right-radius', 'border-bottom-right-radius', 'border-bottom-left-radius', { - mistakes: ['-ms-'], - browsers: browsers, - transition: true - }); - }; - })(this)); - this.feature('css-boxshadow', (function(_this) { - return function(browsers) { - return prefix('box-shadow', { - browsers: browsers, - transition: true - }); - }; - })(this)); - this.feature('css-animation', (function(_this) { - return function(browsers) { - return prefix('animation', 'animation-name', 'animation-duration', 'animation-delay', 'animation-direction', 'animation-fill-mode', 'animation-iteration-count', 'animation-play-state', 'animation-timing-function', '@keyframes', { - browsers: browsers - }); - }; - })(this)); - this.feature('css-transitions', (function(_this) { - return function(browsers) { - return prefix('transition', 'transition-property', 'transition-duration', 'transition-delay', 'transition-timing-function', { - mistakes: ['-ms-'], - browsers: browsers - }); - }; - })(this)); - this.feature('transforms2d', (function(_this) { - return function(browsers) { - prefix('transform', 'transform-origin', 'perspective', 'perspective-origin', { - browsers: browsers, - transition: true - }); - return prefix('transform-style', 'backface-visibility', { - browsers: browsers - }); - }; - })(this)); - this.feature('css-gradients', (function(_this) { - return function(browsers) { - browsers = _this.map(browsers, function(browser, name, version) { - if (name === 'android' && version < 4 || name === 'safari' && version < 5.1 || name === 'ios' && version < 5) { - return browser + ' old'; - } else { - return browser; - } - }); - return prefix('linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient', { - props: ['background', 'background-image', 'border-image'], - mistakes: ['-ms-'], - browsers: browsers - }); - }; - })(this)); - this.feature('css3-boxsizing', (function(_this) { - return function(browsers) { - return prefix('box-sizing', { - browsers: browsers - }); - }; - })(this)); - this.feature('css-filters', (function(_this) { - return function(browsers) { - return prefix('filter', { - browsers: browsers, - transition: true - }); - }; - })(this)); - this.feature('multicolumn', (function(_this) { - return function(browsers) { - prefix('columns', 'column-width', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', { - browsers: browsers, - transition: true - }); - return prefix('column-count', 'column-rule-style', 'column-span', 'column-fill', 'break-before', 'break-after', 'break-inside', { - browsers: browsers - }); - }; - })(this)); - this.feature('user-select-none', (function(_this) { - return function(browsers) { - return prefix('user-select', { - browsers: browsers - }); - }; - })(this)); - this.feature('flexbox', (function(_this) { - return function(browsers) { - browsers = _this.map(browsers, function(browser, name, version) { - if ((name === 'safari' || name === 'ios') && version < 7) { - return browser + ' 2009'; - } else if (name === 'chrome' && version < 21) { - return browser + ' 2009'; - } else { - return browser; - } - }); - prefix('display-flex', 'inline-flex', { - props: ['display'], - browsers: browsers - }); - prefix('flex', 'flex-grow', 'flex-shrink', 'flex-basis', { - transition: true, - browsers: browsers - }); - return prefix('flex-direction', 'flex-wrap', 'flex-flow', 'justify-content', 'order', 'align-items', 'align-self', 'align-content', { - browsers: browsers - }); - }; - })(this)); - this.feature('calc', (function(_this) { - return function(browsers) { - return prefix('calc', { - props: ['*'], - browsers: browsers - }); - }; - })(this)); - this.feature('background-img-opts', (function(_this) { - return function(browsers) { - return prefix('background-clip', 'background-origin', 'background-size', { - browsers: browsers - }); - }; - })(this)); - this.feature('font-feature', (function(_this) { - return function(browsers) { - return prefix('font-feature-settings', 'font-variant-ligatures', 'font-language-override', 'font-kerning', { - browsers: browsers - }); - }; - })(this)); - this.feature('border-image', (function(_this) { - return function(browsers) { - return prefix('border-image', { - browsers: browsers - }); - }; - })(this)); - this.feature('css-selection', (function(_this) { - return function(browsers) { - return prefix('::selection', { - selector: true, - browsers: browsers - }); - }; - })(this)); - this.feature('css-placeholder', (function(_this) { - return function(browsers) { - browsers = _this.map(browsers, function(browser, name, version) { - if (name === 'ff' && version <= 18) { - return browser + ' old'; - } else { - return browser; - } - }); - return prefix('::placeholder', { - selector: true, - browsers: browsers - }); - }; - })(this)); - this.feature('css-hyphens', (function(_this) { - return function(browsers) { - return prefix('hyphens', { - browsers: browsers - }); - }; - })(this)); - this.feature('fullscreen', (function(_this) { - return function(browsers) { - return prefix(':fullscreen', { - selector: true, - browsers: browsers - }); - }; - })(this)); - this.feature('css3-tabsize', (function(_this) { - return function(browsers) { - return prefix('tab-size', { - browsers: browsers - }); - }; - })(this)); - this.feature('intrinsic-width', (function(_this) { - return function(browsers) { - return prefix('max-content', 'min-content', 'fit-content', 'fill-available', { - props: ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height'], - browsers: browsers - }); - }; - })(this)); - this.feature('css3-cursors-newer', (function(_this) { - return function(browsers) { - return prefix('zoom-in', 'zoom-out', 'grab', 'grabbing', { - props: ['cursor'], - browsers: browsers - }); - }; - })(this)); - this.feature('css-sticky', (function(_this) { - return function(browsers) { - return prefix('sticky', { - props: ['position'], - browsers: browsers - }); - }; - })(this)); - this.feature('pointer', (function(_this) { - return function(browsers) { - return prefix('touch-action', { - browsers: browsers - }); - }; - })(this)); - this.fork('ai:text-decoration', 'text-decoration', (function(_this) { - return function(browsers) { - return prefix('text-decoration-style', { - browsers: browsers - }); - }; - })(this)); - this.fork('ai:text-decoration', 'text-decoration', { - full: true - }, (function(_this) { - return function(browsers) { - prefix('text-decoration-line', 'text-decoration-color', { - browsers: browsers - }); - return prefix('wavy', { - props: ['text-decoration', 'text-decoration-style'], - browsers: browsers - }); - }; - })(this)); - return this.done((function(_this) { - return function() { - return _this.save('prefixes', prefixes); - }; - })(this)); - }; - -}).call(this); diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/index.js b/node_modules/grunt-autoprefixer/node_modules/chalk/index.js deleted file mode 100644 index a21f7022..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/index.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; -var ansi = require('ansi-styles'); -var stripAnsi = require('strip-ansi'); -var hasColor = require('has-color'); -var defineProps = Object.defineProperties; -var chalk = module.exports; - -var styles = (function () { - var ret = {}; - - ansi.grey = ansi.gray; - - Object.keys(ansi).forEach(function (key) { - ret[key] = { - get: function () { - this._styles.push(key); - return this; - } - }; - }); - - return ret; -})(); - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - var obj = defineProps(function self() { - var str = [].slice.call(arguments).join(' '); - - if (!chalk.enabled) { - return str; - } - - return self._styles.reduce(function (str, name) { - var code = ansi[name]; - return str ? code.open + str + code.close : ''; - }, str); - }, styles); - - obj._styles = []; - - return obj[name]; - } - } - }); - - return ret; -} - -defineProps(chalk, init()); - -chalk.styles = ansi; -chalk.stripColor = stripAnsi; -chalk.supportsColor = hasColor; - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/.bin/strip-ansi deleted file mode 120000 index b65c9f81..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/.bin/strip-ansi +++ /dev/null @@ -1 +0,0 @@ -../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js deleted file mode 100644 index 3da548c4..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; -var styles = module.exports; - -var codes = { - reset: [0, 0], - - bold: [1, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - strikethrough: [9, 29], - - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] -}; - -Object.keys(codes).forEach(function (key) { - var val = codes[key]; - var style = styles[key] = {}; - style.open = '\x1b[' + val[0] + 'm'; - style.close = '\x1b[' + val[1] + 'm'; -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index 2d61dabe..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "ansi-styles", - "version": "1.0.0", - "description": "ANSI escape codes for colorizing strings in the terminal", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/ansi-styles", - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "ansi-styles.js" - ], - "main": "ansi-styles", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles)\n\n> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for colorizing strings in the terminal.\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![screenshot](screenshot.png)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles`\n\n\n## Example\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green.open + 'Hello world!' + ansi.green.close);\n```\n\n## API\n\nEach style has an `open` and `close` property.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "ansi-styles@1.0.0", - "_from": "ansi-styles@~1.0.0" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 4ac8cbd0..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for colorizing strings in the terminal. - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -Install with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles` - - -## Example - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/has-color.js b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/has-color.js deleted file mode 100644 index 27316b1f..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/has-color.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (!process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - return /^screen|^xterm|color|ansi|cygwin|linux/i.test(process.env.TERM); -})(); diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/package.json b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/package.json deleted file mode 100644 index e55a6244..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "has-color", - "version": "0.1.4", - "description": "Detect whether a terminal supports color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "capability", - "detect" - ], - "homepage": "https://github.com/sindresorhus/has-color", - "bugs": { - "url": "https://github.com/sindresorhus/has-color/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "has-color.js" - ], - "main": "has-color", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-color.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color)\n\n> Detect whether a terminal supports color.\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/has-color): `npm install --save has-color`\n\n\n## Example\n\n```js\nvar hasColor = require('has-color');\n\nif (hasColor) {\n\tconsole.log('Terminal supports color.');\n}\n```\n\nIt obeys the CLI flags `--color` and `--no-color`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "has-color@0.1.4", - "_from": "has-color@~0.1.0" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/readme.md b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/readme.md deleted file mode 100644 index 0918c851..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/has-color/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color) - -> Detect whether a terminal supports color. - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install with [npm](https://npmjs.org/package/has-color): `npm install --save has-color` - - -## Example - -```js -var hasColor = require('has-color'); - -if (hasColor) { - console.log('Terminal supports color.'); -} -``` - -It obeys the CLI flags `--color` and `--no-color`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/cli.js b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/cli.js deleted file mode 100755 index f8019cda..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/cli.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var strip = require('./index'); -var input = process.argv[2]; - -if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) { - console.log('strip-ansi <input file> > <output file>'); - console.log('or'); - console.log('cat <input file> | strip-ansi > <output file>'); - return; -} - -if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) { - console.log(require('./package').version); - return; -} - -if (input) { - process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); - return; -} - -process.stdin.setEncoding('utf8'); -process.stdin.on('data', function (data) { - process.stdout.write(strip(data)); -}); diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/index.js b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/index.js deleted file mode 100644 index 62320c59..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function (str) { - return typeof str === 'string' ? str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, '') : str; -}; diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/package.json b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/package.json deleted file mode 100644 index 7ca2b5d1..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "strip-ansi", - "version": "0.1.1", - "description": "Strip ANSI escape codes (used for colorizing strings in the terminal)", - "license": "MIT", - "bin": { - "strip-ansi": "cli.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-ansi" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "strip", - "trim", - "remove", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "devDependencies": { - "mocha": "~1.x" - }, - "readme": "# strip-ansi [![Build Status](https://secure.travis-ci.org/sindresorhus/strip-ansi.png?branch=master)](http://travis-ci.org/sindresorhus/strip-ansi)\n\n> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) (used for colorizing strings in the terminal)\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall locally with [npm](https://npmjs.org/package/strip-ansi):\n\n```\nnpm install --save strip-ansi\n```\n\nOr globally if you want to use it as a CLI app:\n\n```\nnpm install --global strip-ansi\n```\n\nYou can then use it in your Terminal like:\n\n```\nstrip-ansi file-with-color-codes\n```\n\nOr pipe something to it:\n\n```\nls | strip-ansi\n```\n\n\n## Example\n\n```js\nvar stripAnsi = require('strip-ansi');\nstripAnsi('\\x1b[4mcake\\x1b[0m');\n//=> cake\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/strip-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/strip-ansi", - "_id": "strip-ansi@0.1.1", - "_from": "strip-ansi@~0.1.0" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/readme.md b/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/readme.md deleted file mode 100644 index eb661b3d..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/node_modules/strip-ansi/readme.md +++ /dev/null @@ -1,46 +0,0 @@ -# strip-ansi [![Build Status](https://secure.travis-ci.org/sindresorhus/strip-ansi.png?branch=master)](http://travis-ci.org/sindresorhus/strip-ansi) - -> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) (used for colorizing strings in the terminal) - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install locally with [npm](https://npmjs.org/package/strip-ansi): - -``` -npm install --save strip-ansi -``` - -Or globally if you want to use it as a CLI app: - -``` -npm install --global strip-ansi -``` - -You can then use it in your Terminal like: - -``` -strip-ansi file-with-color-codes -``` - -Or pipe something to it: - -``` -ls | strip-ansi -``` - - -## Example - -```js -var stripAnsi = require('strip-ansi'); -stripAnsi('\x1b[4mcake\x1b[0m'); -//=> cake -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/package.json b/node_modules/grunt-autoprefixer/node_modules/chalk/package.json deleted file mode 100644 index 853b0144..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "chalk", - "version": "0.4.0", - "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "has-color": "~0.1.0", - "ansi-styles": "~1.0.0", - "strip-ansi": "~0.1.0" - }, - "devDependencies": { - "mocha": "~1.x" - }, - "readme": "# <img width=\"250\" src=\"logo.png\" alt=\"chalk\">\n\n> Terminal string styling done right\n\n[![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk)\n\n[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](screenshot.png)\n\n\n## Why\n\n- **Doesn't extend String.prototype**\n- Expressive API\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n- [Used by 150+ modules](https://npmjs.org/browse/depended/chalk)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/chalk): `npm install --save chalk`\n\n\n## Example\n\nChalk comes with an easy to use composable API where you just chain and nest the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nconsole.log( chalk.blue('Hello world!') );\n\n// combine styled and normal strings\nconsole.log( chalk.blue('Hello'), 'World' + chalk.red('!') );\n\n// compose multiple styles using the chainable API\nconsole.log( chalk.blue.bgRed.bold('Hello world!') );\n\n// nest styles\nconsole.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') );\n\n// pass in multiple arguments\nconsole.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') );\n```\n\nYou can easily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\n\n## API\n\n### chalk.`<style>[.<style>...](string, [string...])`\n\nExample: `chalk.red.bold.underline('Hello', 'world');`\n\nChain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter.\n\nMultiple arguments will be separated by space.\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it.\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/has-color).\n\nCan be overridden by the user with the flags `--color` and `--no-color`.\n\nUsed internally and handled for you, but exposed for convenience.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\nGenerally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours.\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> {open: '\\x1b[31m', close: '\\x1b[39m'}\n\nconsole.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);\n```\n\n### chalk.stripColor(string)\n\n[Strip color](https://github.com/sindresorhus/strip-ansi) from a string.\n\nCan be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.\n\nExample:\n\n```js\nvar chalk = require('chalk');\nvar styledString = fromExternal();\n\nif (!chalk.supportsColor) {\n\tchalk.stripColor(styledString);\n}\n```\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n\n\n-\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sindresorhus/chalk/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "homepage": "https://github.com/sindresorhus/chalk", - "_id": "chalk@0.4.0", - "_from": "chalk@~0.4.0" -} diff --git a/node_modules/grunt-autoprefixer/node_modules/chalk/readme.md b/node_modules/grunt-autoprefixer/node_modules/chalk/readme.md deleted file mode 100644 index 46813acf..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/chalk/readme.md +++ /dev/null @@ -1,158 +0,0 @@ -# <img width="250" src="logo.png" alt="chalk"> - -> Terminal string styling done right - -[![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](screenshot.png) - - -## Why - -- **Doesn't extend String.prototype** -- Expressive API -- Clean and focused -- Auto-detects color support -- Actively maintained -- [Used by 150+ modules](https://npmjs.org/browse/depended/chalk) - - -## Install - -Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` - - -## Example - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log( chalk.blue('Hello world!') ); - -// combine styled and normal strings -console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); - -// compose multiple styles using the chainable API -console.log( chalk.blue.bgRed.bold('Hello world!') ); - -// nest styles -console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); - -// pass in multiple arguments -console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); -``` - -You can easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - - -## API - -### chalk.`<style>[.<style>...](string, [string...])` - -Example: `chalk.red.bold.underline('Hello', 'world');` - -Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter. - -Multiple arguments will be separated by space. - -### chalk.enabled - -Color support is automatically detected, but you can override it. - -### chalk.supportsColor - -Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). - -Can be overridden by the user with the flags `--color` and `--no-color`. - -Used internally and handled for you, but exposed for convenience. - -### chalk.styles - -Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). - -Generally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours. - -```js -var chalk = require('chalk'); - -console.log(chalk.styles.red); -//=> {open: '\x1b[31m', close: '\x1b[39m'} - -console.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close); -``` - -### chalk.stripColor(string) - -[Strip color](https://github.com/sindresorhus/strip-ansi) from a string. - -Can be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported. - -Example: - -```js -var chalk = require('chalk'); -var styledString = fromExternal(); - -if (!chalk.supportsColor) { - chalk.stripColor(styledString); -} -``` - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) - - -- - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sindresorhus/chalk/trend.png)](https://bitdeli.com/free "Bitdeli Badge") diff --git a/node_modules/grunt-autoprefixer/node_modules/diff/README.md b/node_modules/grunt-autoprefixer/node_modules/diff/README.md deleted file mode 100644 index 1bc32d5a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/diff/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# jsdiff - -[![Build Status](https://secure.travis-ci.org/kpdecker/jsdiff.png)](http://travis-ci.org/kpdecker/jsdiff) - -A javascript text differencing implementation. - -Based on the algorithm proposed in -["An O(ND) Difference Algorithm and its Variations" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927). - -## Installation - - npm install diff - -or - - git clone git://github.com/kpdecker/jsdiff.git - -## API - -* `JsDiff.diffChars(oldStr, newStr)` - diffs two blocks of text, comparing character by character. - - Returns a list of change objects (See below). - -* `JsDiff.diffWords(oldStr, newStr)` - diffs two blocks of text, comparing word by word. - - Returns a list of change objects (See below). - -* `JsDiff.diffLines(oldStr, newStr)` - diffs two blocks of text, comparing line by line. - - Returns a list of change objects (See below). - -* `JsDiff.diffCss(oldStr, newStr)` - diffs two blocks of text, comparing CSS tokens. - - Returns a list of change objects (See below). - -* `JsDiff.createPatch(fileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. - - Parameters: - * `fileName` : String to be output in the filename sections of the patch - * `oldStr` : Original string value - * `newStr` : New string value - * `oldHeader` : Additional information to include in the old file header - * `newHeader` : Additional information to include in thew new file header - -* `JsDiff.applyPatch(oldStr, diffStr)` - applies a unified diff patch. - - Return a string containing new version of provided data. - -* `convertChangesToXML(changes)` - converts a list of changes to a serialized XML format - -### Change Objects -Many of the methods above return change objects. These objects are consist of the following fields: - -* `value`: Text content -* `added`: True if the value was inserted into the new string -* `removed`: True of the value was removed from the old string - -Note that some cases may omit a particular flag field. Comparison on the flag fields should always be done in a truthy or falsy manner. - -## Examples - -Basic example in Node - -```js -require('colors') -var jsdiff = require('diff'); - -var one = 'beep boop'; -var other = 'beep boob blah'; - -var diff = jsdiff.diffChars(one, other); - -diff.forEach(function(part){ - // green for additions, red for deletions - // grey for common parts - var color = part.added ? 'green' : - part.removed ? 'red' : 'grey'; - process.stderr.write(part.value[color]); -}); - -console.log() -``` -Running the above program should yield - -<img src="images/node_example.png" alt="Node Example"> - -Basic example in a web page - -```html -<pre id="display"></pre> -<script src="diff.js"></script> -<script> -var one = 'beep boop'; -var other = 'beep boob blah'; - -var diff = JsDiff.diffChars(one, other); - -diff.forEach(function(part){ - // green for additions, red for deletions - // grey for common parts - var color = part.added ? 'green' : - part.removed ? 'red' : 'grey'; - var span = document.createElement('span'); - span.style.color = color; - span.appendChild(document - .createTextNode(part.value)); - display.appendChild(span); -}); -</script> -``` - -Open the above .html file in a browser and you should see - -<img src="images/web_example.png" alt="Node Example"> - -**[Full online demo](http://kpdecker.github.com/jsdiff)** - -## License - -Software License Agreement (BSD License) - -Copyright (c) 2009-2011, Kevin Decker kpdecker@gmail.com - -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Kevin Decker nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/kpdecker/jsdiff/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - diff --git a/node_modules/grunt-autoprefixer/node_modules/diff/diff.js b/node_modules/grunt-autoprefixer/node_modules/diff/diff.js deleted file mode 100644 index c084609a..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/diff/diff.js +++ /dev/null @@ -1,369 +0,0 @@ -/* See LICENSE file for terms of use */ - -/* - * Text diff implementation. - * - * This library supports the following APIS: - * JsDiff.diffChars: Character by character diff - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace - * JsDiff.diffLines: Line based diff - * - * JsDiff.diffCss: Diff targeted at CSS content - * - * These methods are based on the implementation proposed in - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 - */ -var JsDiff = (function() { - /*jshint maxparams: 5*/ - function clonePath(path) { - return { newPos: path.newPos, components: path.components.slice(0) }; - } - function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - } - function escapeHTML(s) { - var n = s; - n = n.replace(/&/g, '&'); - n = n.replace(/</g, '<'); - n = n.replace(/>/g, '>'); - n = n.replace(/"/g, '"'); - - return n; - } - - var Diff = function(ignoreWhitespace) { - this.ignoreWhitespace = ignoreWhitespace; - }; - Diff.prototype = { - diff: function(oldString, newString) { - // Handle the identity case (this is due to unrolling editLength == 0 - if (newString === oldString) { - return [{ value: newString }]; - } - if (!newString) { - return [{ value: oldString, removed: true }]; - } - if (!oldString) { - return [{ value: newString, added: true }]; - } - - newString = this.tokenize(newString); - oldString = this.tokenize(oldString); - - var newLen = newString.length, oldLen = oldString.length; - var maxEditLength = newLen + oldLen; - var bestPath = [{ newPos: -1, components: [] }]; - - // Seed editLength = 0 - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos+1 >= newLen && oldPos+1 >= oldLen) { - return bestPath[0].components; - } - - for (var editLength = 1; editLength <= maxEditLength; editLength++) { - for (var diagonalPath = -1*editLength; diagonalPath <= editLength; diagonalPath+=2) { - var basePath; - var addPath = bestPath[diagonalPath-1], - removePath = bestPath[diagonalPath+1]; - oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - // No one else is going to attempt to use this value, clear it - bestPath[diagonalPath-1] = undefined; - } - - var canAdd = addPath && addPath.newPos+1 < newLen; - var canRemove = removePath && 0 <= oldPos && oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = undefined; - continue; - } - - // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { - basePath = clonePath(removePath); - this.pushComponent(basePath.components, oldString[oldPos], undefined, true); - } else { - basePath = clonePath(addPath); - basePath.newPos++; - this.pushComponent(basePath.components, newString[basePath.newPos], true, undefined); - } - - var oldPos = this.extractCommon(basePath, newString, oldString, diagonalPath); - - if (basePath.newPos+1 >= newLen && oldPos+1 >= oldLen) { - return basePath.components; - } else { - bestPath[diagonalPath] = basePath; - } - } - } - }, - - pushComponent: function(components, value, added, removed) { - var last = components[components.length-1]; - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length-1] = - {value: this.join(last.value, value), added: added, removed: removed }; - } else { - components.push({value: value, added: added, removed: removed }); - } - }, - extractCommon: function(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath; - while (newPos+1 < newLen && oldPos+1 < oldLen && this.equals(newString[newPos+1], oldString[oldPos+1])) { - newPos++; - oldPos++; - - this.pushComponent(basePath.components, newString[newPos], undefined, undefined); - } - basePath.newPos = newPos; - return oldPos; - }, - - equals: function(left, right) { - var reWhitespace = /\S/; - if (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)) { - return true; - } else { - return left === right; - } - }, - join: function(left, right) { - return left + right; - }, - tokenize: function(value) { - return value; - } - }; - - var CharDiff = new Diff(); - - var WordDiff = new Diff(true); - var WordWithSpaceDiff = new Diff(); - WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\s+|\b)/)); - }; - - var CssDiff = new Diff(true); - CssDiff.tokenize = function(value) { - return removeEmpty(value.split(/([{}:;,]|\s+)/)); - }; - - var LineDiff = new Diff(); - LineDiff.tokenize = function(value) { - var retLines = [], - lines = value.split(/^/m); - - for(var i = 0; i < lines.length; i++) { - var line = lines[i], - lastLine = lines[i - 1]; - - // Merge lines that may contain windows new lines - if (line == '\n' && lastLine && lastLine[lastLine.length - 1] === '\r') { - retLines[retLines.length - 1] += '\n'; - } else if (line) { - retLines.push(line); - } - } - - return retLines; - }; - - return { - Diff: Diff, - - diffChars: function(oldStr, newStr) { return CharDiff.diff(oldStr, newStr); }, - diffWords: function(oldStr, newStr) { return WordDiff.diff(oldStr, newStr); }, - diffWordsWithSpace: function(oldStr, newStr) { return WordWithSpaceDiff.diff(oldStr, newStr); }, - diffLines: function(oldStr, newStr) { return LineDiff.diff(oldStr, newStr); }, - - diffCss: function(oldStr, newStr) { return CssDiff.diff(oldStr, newStr); }, - - createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { - var ret = []; - - ret.push('Index: ' + fileName); - ret.push('==================================================================='); - ret.push('--- ' + fileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader)); - ret.push('+++ ' + fileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader)); - - var diff = LineDiff.diff(oldStr, newStr); - if (!diff[diff.length-1].value) { - diff.pop(); // Remove trailing newline add - } - diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier - - function contextLines(lines) { - return lines.map(function(entry) { return ' ' + entry; }); - } - function eofNL(curRange, i, current) { - var last = diff[diff.length-2], - isLast = i === diff.length-2, - isLastOfType = i === diff.length-3 && (current.added !== last.added || current.removed !== last.removed); - - // Figure out if this is the last line for the given file and missing NL - if (!/\n$/.test(current.value) && (isLast || isLastOfType)) { - curRange.push('\\ No newline at end of file'); - } - } - - var oldRangeStart = 0, newRangeStart = 0, curRange = [], - oldLine = 1, newLine = 1; - for (var i = 0; i < diff.length; i++) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, '').split('\n'); - current.lines = lines; - - if (current.added || current.removed) { - if (!oldRangeStart) { - var prev = diff[i-1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange = contextLines(prev.lines.slice(-4)); - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; - } - } - curRange.push.apply(curRange, lines.map(function(entry) { return (current.added?'+':'-') + entry; })); - eofNL(curRange, i, current); - - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - if (oldRangeStart) { - // Close out any changes that have been output (or join overlapping) - if (lines.length <= 8 && i < diff.length-2) { - // Overlapping - curRange.push.apply(curRange, contextLines(lines)); - } else { - // end the range and output - var contextSize = Math.min(lines.length, 4); - ret.push( - '@@ -' + oldRangeStart + ',' + (oldLine-oldRangeStart+contextSize) - + ' +' + newRangeStart + ',' + (newLine-newRangeStart+contextSize) - + ' @@'); - ret.push.apply(ret, curRange); - ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); - if (lines.length <= 4) { - eofNL(ret, i, current); - } - - oldRangeStart = 0; newRangeStart = 0; curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - } - - return ret.join('\n') + '\n'; - }, - - applyPatch: function(oldStr, uniDiff) { - var diffstr = uniDiff.split('\n'); - var diff = []; - var remEOFNL = false, - addEOFNL = false; - - for (var i = (diffstr[0][0]==='I'?4:0); i < diffstr.length; i++) { - if(diffstr[i][0] === '@') { - var meh = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); - diff.unshift({ - start:meh[3], - oldlength:meh[2], - oldlines:[], - newlength:meh[4], - newlines:[] - }); - } else if(diffstr[i][0] === '+') { - diff[0].newlines.push(diffstr[i].substr(1)); - } else if(diffstr[i][0] === '-') { - diff[0].oldlines.push(diffstr[i].substr(1)); - } else if(diffstr[i][0] === ' ') { - diff[0].newlines.push(diffstr[i].substr(1)); - diff[0].oldlines.push(diffstr[i].substr(1)); - } else if(diffstr[i][0] === '\\') { - if (diffstr[i-1][0] === '+') { - remEOFNL = true; - } else if(diffstr[i-1][0] === '-') { - addEOFNL = true; - } - } - } - - var str = oldStr.split('\n'); - for (var i = diff.length - 1; i >= 0; i--) { - var d = diff[i]; - for (var j = 0; j < d.oldlength; j++) { - if(str[d.start-1+j] !== d.oldlines[j]) { - return false; - } - } - Array.prototype.splice.apply(str,[d.start-1,+d.oldlength].concat(d.newlines)); - } - - if (remEOFNL) { - while (!str[str.length-1]) { - str.pop(); - } - } else if (addEOFNL) { - str.push(''); - } - return str.join('\n'); - }, - - convertChangesToXML: function(changes){ - var ret = []; - for ( var i = 0; i < changes.length; i++) { - var change = changes[i]; - if (change.added) { - ret.push('<ins>'); - } else if (change.removed) { - ret.push('<del>'); - } - - ret.push(escapeHTML(change.value)); - - if (change.added) { - ret.push('</ins>'); - } else if (change.removed) { - ret.push('</del>'); - } - } - return ret.join(''); - }, - - // See: http://code.google.com/p/google-diff-match-patch/wiki/API - convertChangesToDMP: function(changes){ - var ret = [], change; - for ( var i = 0; i < changes.length; i++) { - change = changes[i]; - ret.push([(change.added ? 1 : change.removed ? -1 : 0), change.value]); - } - return ret; - } - }; -})(); - -if (typeof module !== 'undefined') { - module.exports = JsDiff; -} diff --git a/node_modules/grunt-autoprefixer/node_modules/diff/package.json b/node_modules/grunt-autoprefixer/node_modules/diff/package.json deleted file mode 100644 index 3d16e675..00000000 --- a/node_modules/grunt-autoprefixer/node_modules/diff/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "diff", - "version": "1.0.8", - "description": "A javascript text diff implementation.", - "keywords": [ - "diff", - "javascript" - ], - "maintainers": [ - { - "name": "Kevin Decker", - "email": "kpdecker@gmail.com", - "url": "http://incaseofstairs.com" - } - ], - "bugs": { - "url": "http://github.com/kpdecker/jsdiff/issues", - "email": "kpdecker@gmail.com" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/kpdecker/jsdiff/blob/master/LICENSE" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/kpdecker/jsdiff.git" - }, - "engines": { - "node": ">=0.3.1" - }, - "main": "./diff", - "scripts": { - "test": "node_modules/.bin/mocha test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "~1.6", - "should": "~1.2", - "colors": "~0.6.2" - }, - "optionalDependencies": {}, - "files": [ - "diff.js" - ], - "readme": "# jsdiff\n\n[![Build Status](https://secure.travis-ci.org/kpdecker/jsdiff.png)](http://travis-ci.org/kpdecker/jsdiff)\n\nA javascript text differencing implementation.\n\nBased on the algorithm proposed in\n[\"An O(ND) Difference Algorithm and its Variations\" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927).\n\n## Installation\n\n npm install diff\n\nor\n\n git clone git://github.com/kpdecker/jsdiff.git\n\n## API\n\n* `JsDiff.diffChars(oldStr, newStr)` - diffs two blocks of text, comparing character by character.\n\n Returns a list of change objects (See below).\n\n* `JsDiff.diffWords(oldStr, newStr)` - diffs two blocks of text, comparing word by word.\n\n Returns a list of change objects (See below).\n\n* `JsDiff.diffLines(oldStr, newStr)` - diffs two blocks of text, comparing line by line.\n\n Returns a list of change objects (See below).\n\n* `JsDiff.diffCss(oldStr, newStr)` - diffs two blocks of text, comparing CSS tokens.\n\n Returns a list of change objects (See below).\n\n* `JsDiff.createPatch(fileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch.\n\n Parameters:\n * `fileName` : String to be output in the filename sections of the patch\n * `oldStr` : Original string value\n * `newStr` : New string value\n * `oldHeader` : Additional information to include in the old file header\n * `newHeader` : Additional information to include in thew new file header\n\n* `JsDiff.applyPatch(oldStr, diffStr)` - applies a unified diff patch.\n\n Return a string containing new version of provided data.\n\n* `convertChangesToXML(changes)` - converts a list of changes to a serialized XML format\n\n### Change Objects\nMany of the methods above return change objects. These objects are consist of the following fields:\n\n* `value`: Text content\n* `added`: True if the value was inserted into the new string\n* `removed`: True of the value was removed from the old string\n\nNote that some cases may omit a particular flag field. Comparison on the flag fields should always be done in a truthy or falsy manner.\n\n## Examples\n\nBasic example in Node\n\n```js\nrequire('colors')\nvar jsdiff = require('diff');\n\nvar one = 'beep boop';\nvar other = 'beep boob blah';\n\nvar diff = jsdiff.diffChars(one, other);\n\ndiff.forEach(function(part){\n // green for additions, red for deletions\n // grey for common parts\n var color = part.added ? 'green' :\n part.removed ? 'red' : 'grey';\n process.stderr.write(part.value[color]);\n});\n\nconsole.log()\n```\nRunning the above program should yield\n\n<img src=\"images/node_example.png\" alt=\"Node Example\">\n\nBasic example in a web page\n\n```html\n<pre id=\"display\"></pre>\n<script src=\"diff.js\"></script>\n<script>\nvar one = 'beep boop';\nvar other = 'beep boob blah';\n\nvar diff = JsDiff.diffChars(one, other);\n\ndiff.forEach(function(part){\n // green for additions, red for deletions\n // grey for common parts\n var color = part.added ? 'green' :\n part.removed ? 'red' : 'grey';\n var span = document.createElement('span');\n span.style.color = color;\n span.appendChild(document\n .createTextNode(part.value));\n display.appendChild(span);\n});\n</script>\n```\n\nOpen the above .html file in a browser and you should see\n\n<img src=\"images/web_example.png\" alt=\"Node Example\">\n\n**[Full online demo](http://kpdecker.github.com/jsdiff)**\n\n## License\n\nSoftware License Agreement (BSD License)\n\nCopyright (c) 2009-2011, Kevin Decker kpdecker@gmail.com\n\nAll rights reserved.\n\nRedistribution and use of this software in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above\n copyright notice, this list of conditions and the\n following disclaimer.\n\n* Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the\n following disclaimer in the documentation and/or other\n materials provided with the distribution.\n\n* Neither the name of Kevin Decker nor the names of its\n contributors may be used to endorse or promote products\n derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/kpdecker/jsdiff/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/kpdecker/jsdiff", - "_id": "diff@1.0.8", - "_from": "diff@~1.0.8" -} diff --git a/node_modules/grunt-autoprefixer/package.json b/node_modules/grunt-autoprefixer/package.json deleted file mode 100644 index b578ca07..00000000 --- a/node_modules/grunt-autoprefixer/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "grunt-autoprefixer", - "description": "Parse CSS and add vendor-prefixed CSS properties using the Can I Use database. Based on Autoprefixer.", - "version": "0.7.2", - "bin": { - "autoprefixer": "./node_modules/autoprefixer/bin/autoprefixer" - }, - "homepage": "https://github.com/nDmitry/grunt-autoprefixer", - "author": { - "name": "Dmitry Nikitenko", - "email": "dima.nikitenko@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/nDmitry/grunt-autoprefixer.git" - }, - "bugs": { - "url": "https://github.com/nDmitry/grunt-autoprefixer/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/nDmitry/grunt-autoprefixer/blob/master/LICENSE-MIT" - } - ], - "main": "Gruntfile.js", - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "grunt test" - }, - "dependencies": { - "autoprefixer": "~1.1.20140218", - "diff": "~1.0.8", - "chalk": "~0.4.0" - }, - "devDependencies": { - "grunt": "~0.4.2", - "grunt-contrib-jshint": "~0.8.0", - "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-nodeunit": "~0.3.2", - "grunt-contrib-copy": "~0.5.0", - "load-grunt-tasks": "~0.3.0", - "time-grunt": "~0.2.7" - }, - "peerDependencies": { - "grunt": "~0.4.2" - }, - "keywords": [ - "gruntplugin", - "prefix", - "autoprefixer" - ], - "readme": "# grunt-autoprefixer\n[![Build Status](https://travis-ci.org/nDmitry/grunt-autoprefixer.png?branch=master)](https://travis-ci.org/nDmitry/grunt-autoprefixer) \n[![Dependency Status](https://david-dm.org/nDmitry/grunt-autoprefixer.png)](https://david-dm.org/nDmitry/grunt-autoprefixer)\n[![Built with Grunt](https://cdn.gruntjs.com/builtwith.png)](http://gruntjs.com/)\n\n> [Autoprefixer](https://github.com/ai/autoprefixer) parses CSS and adds vendor-prefixed CSS properties using the [Can I Use](http://caniuse.com/) database.\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-autoprefixer --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-autoprefixer');\n```\n\n## The \"autoprefixer\" task\n\n### Overview\nIn your project's Gruntfile, add a section named `autoprefixer` to the data object passed into `grunt.initConfig()`.\n\n```js\ngrunt.initConfig({\n autoprefixer: {\n options: {\n // Task-specific options go here.\n },\n your_target: {\n // Target-specific file lists and/or options go here.\n },\n },\n})\n```\n\n### Options\n\n#### options.browsers\nType: `Array`\nDefault value: `['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1']`\n\nYou can specify browsers actual for your project:\n\n```js\noptions: {\n browsers: ['last 2 version', 'ie 8', 'ie 9']\n}\n```\n\n[Read more](https://github.com/ai/autoprefixer#browsers).\n\n#### options.cascade\nType: `Boolean`\nDefault value: `false`\n\nPass `true` to enable ‘cascade’ indentation. Read more [here](https://github.com/ai/autoprefixer#visual-cascade).\n\n#### options.diff\nType: `Boolean|String`\nDefault value: `false`\n\nSet it to `true` if you want to get an output patch file:\n\n```js\noptions: {\n diff: true // or 'custom/path/to/file.css.patch'\n}\n```\nAlso you can specify a path where to save this file. More examples in [Gruntfile](https://github.com/nDmitry/grunt-autoprefixer/blob/master/Gruntfile.js).\n\n#### options.map\nType: `Boolean|String|undefined`\nDefault value: `undefined`\n\nIf the map option isn't defined, Autoprefixer will look for source map from a previous compilation step (either inline map or separate one) and update it automatically. Let's say you have `path/file.css` and `path/file.css.map` from SASS, Autoprefixer will find that map, update it and save to a specified destination.\n\nIf `true` is specified, Autoprefixer will try to find an input source map file as described above and generate a new map based on the found one (or just generate a new map, unlike the situation when the map option is undefined).\n\nIf you keep your map from a pre-processor in another directory (e.g. `path/file.css` and `another-path/file.css.map`), you can specify the path `another-path/` in the map option to point out where grunt-autoprefixer should look for an input map to update it.\n\nAlso you can specify `false`. In that case Autoprefixer will not generate or update source map even if there is one from a previous compilation step near an input file or inlined to it (Autoprefixer will delete a map annotation comment from an input file).\n\nYou cannot specify a path where to save a map file, it will be saved at the same directory as the output CSS file or inlined to it (check out the option below).\n\n#### options.mapInline\nType: `Boolean|undefined`\nDefault value: `undefined`\n\nIf the option isn't specified, Autoprefixer will inline its map if a map from a previous compilation step was inlined to an input file or save its map as a separate file respectively.\n\nYou can specify `true` or `false` to force that behaviour as you like.\n\n### Usage Examples\n\n```js\ngrunt.initConfig({\n\n autoprefixer: {\n\n options: {\n // Task-specific options go here.\n },\n\n // prefix the specified file\n single_file: {\n options: {\n // Target-specific options go here.\n },\n src: 'src/css/file.css',\n dest: 'dest/css/file.css'\n },\n\n // prefix all files\n multiple_files: {\n expand: true,\n flatten: true,\n src: 'src/css/*.css', // -> src/css/file1.css, src/css/file2.css\n dest: 'dest/css/' // -> dest/css/file1.css, dest/css/file2.css\n },\n\n // if you have specified only the `src` param, the destination will be set automatically,\n // so source files will be overwritten\n no_dest: {\n src: 'dest/css/file.css' // globbing is also possible here\n },\n\n diff: {\n options: {\n diff: true\n },\n src: 'src/css/file.css',\n dest: 'dest/css/file.css' // -> dest/css/file.css, dest/css/file.css.patch\n },\n\n sourcemap: {\n options: {\n map: true\n },\n src: 'src/css/file.css',\n dest: 'dest/css/file.css' // -> dest/css/file.css, dest/css/file.css.map\n },\n }\n\n});\n```\n\nCheck out project's [Gruntfile.js](https://github.com/nDmitry/grunt-autoprefixer/blob/master/Gruntfile.js) for more examples.\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n", - "readmeFilename": "README.md", - "_id": "grunt-autoprefixer@0.7.2", - "dist": { - "shasum": "c66ef375d7b5ae09c9f52dd94f12596a92e035b1" - }, - "_from": "grunt-autoprefixer@", - "_resolved": "https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-0.7.2.tgz" -} diff --git a/node_modules/grunt-autoprefixer/tasks/autoprefixer.js b/node_modules/grunt-autoprefixer/tasks/autoprefixer.js deleted file mode 100644 index 7367f572..00000000 --- a/node_modules/grunt-autoprefixer/tasks/autoprefixer.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -var path = require('path'); -var autoprefixer = require('autoprefixer'); -var diff = require('diff'); -var chalk = require('chalk'); - -module.exports = function(grunt) { - - var options; - var prefixer; - - /** - * Returns an input source map if a map path was specified - * or options.map value otherwise - * @param {string} from - * @returns {string|boolean|undefined} - */ - function getMapOption(from) { - if (typeof options.map === 'string') { - var mapPath = options.map + path.basename(from) + '.map'; - - if (grunt.file.exists(mapPath)) { - return grunt.file.read(mapPath); - } - } - - return options.map; - } - - /** - * @param {string} input Input CSS - * @param {string} from Input path - * @param {string} to Output path - * @returns {{css: string, map?: string}} - */ - function prefix(input, from, to) { - var output = prefixer.process(input, { - map: getMapOption(from), - inlineMap: options.mapInline, - from: from, - to: to - }); - - return output; - } - - grunt.registerMultiTask('autoprefixer', 'Prefix CSS files.', function() { - options = this.options({ - cascade: false, - diff: false, - map: undefined, - mapInline: undefined - }); - - prefixer = autoprefixer(options.browsers, {cascade: options.cascade}); - - this.files.forEach(function(f) { - f.src - .filter(function(filepath) { - - if (!grunt.file.exists(filepath)) { - grunt.log.warn('Source file "' + filepath + '" not found.'); - return false; - } else { - return true; - } - }) - .forEach(function(filepath) { - var dest = f.dest || filepath; - var input = grunt.file.read(filepath); - var output = prefix(input, filepath, dest); - - grunt.file.write(dest, output.css); - grunt.log.writeln('File ' + chalk.cyan(dest) + ' created.'); - - if (output.map) { - grunt.file.write(dest + '.map', output.map); - grunt.log.writeln('File ' + chalk.cyan(dest + '.map') + ' created (source map).'); - } - - if (options.diff) { - var diffPath = (typeof options.diff === 'string') ? options.diff : dest + '.patch'; - - grunt.file.write(diffPath, diff.createPatch(dest, input, output.css)); - grunt.log.writeln('File ' + chalk.cyan(diffPath) + ' created (diff).'); - } - }); - }); - }); -}; diff --git a/node_modules/grunt-contrib-concat/.gitattributes b/node_modules/grunt-contrib-concat/.gitattributes deleted file mode 100644 index 176a458f..00000000 --- a/node_modules/grunt-contrib-concat/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto diff --git a/node_modules/grunt-contrib-concat/.jshintrc b/node_modules/grunt-contrib-concat/.jshintrc deleted file mode 100644 index 6b4c1a9b..00000000 --- a/node_modules/grunt-contrib-concat/.jshintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "sub": true, - "undef": true, - "boss": true, - "eqnull": true, - "node": true, - "es5": true -} diff --git a/node_modules/grunt-contrib-concat/.npmignore b/node_modules/grunt-contrib-concat/.npmignore deleted file mode 100644 index b785247e..00000000 --- a/node_modules/grunt-contrib-concat/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -npm-debug.log -tmp diff --git a/node_modules/grunt-contrib-concat/.travis.yml b/node_modules/grunt-contrib-concat/.travis.yml deleted file mode 100644 index 57661910..00000000 --- a/node_modules/grunt-contrib-concat/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" -before_script: - - npm install -g grunt-cli \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/AUTHORS b/node_modules/grunt-contrib-concat/AUTHORS deleted file mode 100644 index 19a4a0df..00000000 --- a/node_modules/grunt-contrib-concat/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -"Cowboy" Ben Alman (http://benalman.com/) -Tyler Kellen (http://goingslowly.com/) -Dan Wolff (http://danwolff.se/) diff --git a/node_modules/grunt-contrib-concat/CHANGELOG b/node_modules/grunt-contrib-concat/CHANGELOG deleted file mode 100644 index 809cce0b..00000000 --- a/node_modules/grunt-contrib-concat/CHANGELOG +++ /dev/null @@ -1,34 +0,0 @@ -v0.3.0: - date: 2013-04-25 - changes: - - Add option to process files with a custom function. -v0.2.0: - date: 2013-04-08 - changes: - - Dont normalize separator to allow user to set LF even on a Windows environment. -v0.1.3: - date: 2013-02-22 - changes: - - Support footer option. -v0.1.2: - date: 2013-02-15 - changes: - - First official release for Grunt 0.4.0. -v0.1.2rc6: - date: 2013-01-18 - changes: - - Updating grunt/gruntplugin dependencies to rc6. - - Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. -v0.1.2rc5: - date: 2013-01-09 - changes: - - Updating to work with grunt v0.4.0rc5. - - Switching back to this.files api. -v0.1.1: - date: 2012-11-13 - changes: - - Switch to this.file api internally. -v0.1.0: - date: 2012-10-03 - changes: - - Work in progress, not yet officially released. diff --git a/node_modules/grunt-contrib-concat/CONTRIBUTING.md b/node_modules/grunt-contrib-concat/CONTRIBUTING.md deleted file mode 100644 index 5d08cc38..00000000 --- a/node_modules/grunt-contrib-concat/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please see the [Contributing to grunt](http://gruntjs.com/contributing) guide for information on contributing to this project. diff --git a/node_modules/grunt-contrib-concat/Gruntfile.js b/node_modules/grunt-contrib-concat/Gruntfile.js deleted file mode 100644 index 8217fdf6..00000000 --- a/node_modules/grunt-contrib-concat/Gruntfile.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - * grunt-contrib-concat - * http://gruntjs.com/ - * - * Copyright (c) 2012 "Cowboy" Ben Alman, contributors - * Licensed under the MIT license. - */ - -'use strict'; - -module.exports = function(grunt) { - - // Project configuration. - grunt.initConfig({ - jshint: { - all: [ - 'Gruntfile.js', - 'tasks/*.js', - '<%= nodeunit.tests %>' - ], - options: { - jshintrc: '.jshintrc' - } - }, - - // Before generating any new files, remove any previously-created files. - clean: { - tests: ['tmp'] - }, - - // Configuration to be run (and then tested). - banner_property: 'AWESOME', - concat: { - default_options: { - files: { - 'tmp/default_options': ['test/fixtures/file1', 'test/fixtures/file2'] - } - }, - custom_options: { - options: { - separator: '\n;\n', - banner: '/* THIS TEST IS <%= banner_property %> */\n', - footer: 'dude' - }, - files: { - 'tmp/custom_options': ['test/fixtures/file1', 'test/fixtures/file2'] - } - }, - handling_invalid_files: { - src: ['test/fixtures/file1', 'invalid_file/should_warn/but_not_fail', 'test/fixtures/file2'], - dest: 'tmp/handling_invalid_files', - nonull: true, - }, - process_function: { - options: { - process: function(src, filepath) { - return '// Source: ' + filepath + '\n' + - src.replace(/file(\d)/, 'f$1'); - } - }, - files: { - 'tmp/process_function': ['test/fixtures/file1', 'test/fixtures/file2'] - } - }, - }, - - // Unit tests. - nodeunit: { - tests: ['test/*_test.js'] - } - - }); - - // Actually load this plugin's task(s). - grunt.loadTasks('tasks'); - - // These plugins provide necessary tasks. - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-clean'); - grunt.loadNpmTasks('grunt-contrib-nodeunit'); - grunt.loadNpmTasks('grunt-contrib-internal'); - - // Whenever the "test" task is run, first clean the "tmp" dir, then run this - // plugin's task(s), then test the result. - grunt.registerTask('test', ['clean', 'concat', 'nodeunit']); - - // By default, lint and run all tests. - grunt.registerTask('default', ['jshint', 'test', 'build-contrib']); - -}; diff --git a/node_modules/grunt-contrib-concat/LICENSE-MIT b/node_modules/grunt-contrib-concat/LICENSE-MIT deleted file mode 100644 index 7f9d3466..00000000 --- a/node_modules/grunt-contrib-concat/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 "Cowboy" Ben Alman, contributors - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-concat/README.md b/node_modules/grunt-contrib-concat/README.md deleted file mode 100644 index 1ac680b4..00000000 --- a/node_modules/grunt-contrib-concat/README.md +++ /dev/null @@ -1,275 +0,0 @@ -# grunt-contrib-concat [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-concat.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-concat) - -> Concatenate files. - - - -## Getting Started -This plugin requires Grunt `~0.4.0` - -If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: - -```shell -npm install grunt-contrib-concat --save-dev -``` - -Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: - -```js -grunt.loadNpmTasks('grunt-contrib-concat'); -``` - - - - -## Concat task -_Run this task with the `grunt concat` command._ - -Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. -### Options - -#### separator -Type: `String` -Default: `grunt.util.linefeed` - -Concatenated files will be joined on this string. If you're post-processing concatenated JavaScript files with a minifier, you may need to use a semicolon `';'` as the separator. - -#### banner -Type: `String` -Default: empty string - -This string will be prepended to the beginning of the concatenated output. It is processed using [grunt.template.process][], using the default options. - -_(Default processing options are explained in the [grunt.template.process][] documentation)_ - -#### footer -Type: `String` -Default: empty string - -This string will be appended to the end of the concatenated output. It is processed using [grunt.template.process][], using the default options. - -_(Default processing options are explained in the [grunt.template.process][] documentation)_ - -#### stripBanners -Type: `Boolean` `Object` -Default: `false` - -Strip JavaScript banner comments from source files. - -* `false` - No comments are stripped. -* `true` - `/* ... */` block comments are stripped, but _NOT_ `/*! ... */` comments. -* `options` object: - * By default, behaves as if `true` were specified. - * `block` - If true, _all_ block comments are stripped. - * `line` - If true, any contiguous _leading_ `//` line comments are stripped. - -#### process -Type: `Boolean` `Object` -Default: `false` - -Process source files as [templates][] before concatenating. - -* `false` - No processing will occur. -* `true` - Process source files using [grunt.template.process][] defaults. -* `options` object - Process source files using [grunt.template.process][], using the specified options. -* `function(src, filepath)` - Process source files using the given function, called once for each file. The returned value will be used as source code. - -_(Default processing options are explained in the [grunt.template.process][] documentation)_ - - [templates]: https://github.com/gruntjs/grunt/wiki/grunt.template - [grunt.template.process]: https://github.com/gruntjs/grunt/wiki/grunt.template#wiki-grunt-template-process - -### Usage Examples - -#### Concatenating with a custom separator - -In this example, running `grunt concat:dist` (or `grunt concat` because `concat` is a [multi task][]) will concatenate the three specified source files (in order), joining files with `;` and writing the output to `dist/built.js`. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - options: { - separator: ';' - }, - dist: { - src: ['src/intro.js', 'src/project.js', 'src/outro.js'], - dest: 'dist/built.js' - } - } -}); -``` - -#### Banner comments - -In this example, running `grunt concat:dist` will first strip any preexisting banner comment from the `src/project.js` file, then concatenate the result with a newly-generated banner comment, writing the output to `dist/built.js`. - -This generated banner will be the contents of the `banner` template string interpolated with the config object. In this case, those properties are the values imported from the `package.json` file (which are available via the `pkg` config property) plus today's date. - -_Note: you don't have to use an external JSON file. It's also valid to create the `pkg` object inline in the config. That being said, if you already have a JSON file, you might as well reference it._ - -```js -// Project configuration. -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - options: { - stripBanners: true, - banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' + - '<%= grunt.template.today("yyyy-mm-dd") %> */' - }, - dist: { - src: ['src/project.js'], - dest: 'dist/built.js' - } - } -}); -``` - -#### Multiple targets - -In this example, running `grunt concat` will build two separate files. One "basic" version, with the main file essentially just copied to `dist/basic.js`, and another "with_extras" concatenated version written to `dist/with_extras.js`. - -While each concat target can be built individually by running `grunt concat:basic` or `grunt concat:extras`, running `grunt concat` will build all concat targets. This is because `concat` is a [multi task][]. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - basic: { - src: ['src/main.js'], - dest: 'dist/basic.js' - }, - extras: { - src: ['src/main.js', 'src/extras.js'], - dest: 'dist/with_extras.js' - } - } -}); -``` - -#### Multiple files per target - -Like the previous example, in this example running `grunt concat` will build two separate files. One "basic" version, with the main file essentially just copied to `dist/basic.js`, and another "with_extras" concatenated version written to `dist/with_extras.js`. - -This example differs in that both files are built under the same target. - -Using the `files` object, you can have list any number of source-destination pairs. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - basic_and_extras: { - files: { - 'dist/basic.js': ['src/main.js'], - 'dist/with_extras.js': ['src/main.js', 'src/extras.js'] - } - } - } -}); -``` - -#### Dynamic filenames - -Filenames can be generated dynamically by using `<%= %>` delimited underscore templates as filenames. - -In this example, running `grunt concat:dist` generates a destination file whose name is generated from the `name` and `version` properties of the referenced `package.json` file (via the `pkg` config property). - -```js -// Project configuration. -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - dist: { - src: ['src/main.js'], - dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.js' - } - } -}); -``` - -#### Advanced dynamic filenames - -In this more involved example, running `grunt concat` will build two separate files (because `concat` is a [multi task][]). The destination file paths will be expanded dynamically based on the specified templates, recursively if necessary. - -For example, if the `package.json` file contained `{"name": "awesome", "version": "1.0.0"}`, the files `dist/awesome/1.0.0/basic.js` and `dist/awesome/1.0.0/with_extras.js` would be generated. - -```javascript -// Project configuration. -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - dirs: { - src: 'src/files', - dest: 'dist/<%= pkg.name %>/<%= pkg.version %>' - }, - concat: { - basic: { - src: ['<%= dirs.src %>/main.js'], - dest: '<%= dirs.dest %>/basic.js' - }, - extras: { - src: ['<%= dirs.src %>/main.js', '<%= dirs.src %>/extras.js'], - dest: '<%= dirs.dest %>/with_extras.js' - } - } -}); -``` - -#### Invalid or Missing Files Warning -If you would like the `concat` task to warn if a given file is missing or invalid be sure to set `nonull` to `true`: - -```js -grunt.initConfig({ - concat: { - missing: { - src: ['src/invalid_or_missing_file'], - dest: 'compiled.js', - nonull: true, - }, - }, -}); -``` - -See [configuring files for a task](http://gruntjs.com/configuring-tasks#files) for how to configure file globbing in Grunt. - - -#### Custom process function -If you would like to do any custom processing before concatenating, use a custom process function: - -```js -runt.initConfig({ - concat: { - dist: { - options: { - // Replace all 'use strict' statements in the code with a single one at the top - banner: "'use strict';\n", - process: function(src, filepath) { - return '// Source: ' + filepath + '\n' + - src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1'); - }, - }, - files: { - 'dist/built.js': ['src/project.js'], - }, - }, - }, -}); -``` - -## Release History - - * 2013-04-25   v0.3.0   Add option to process files with a custom function. - * 2013-04-08   v0.2.0   Dont normalize separator to allow user to set LF even on a Windows environment. - * 2013-02-22   v0.1.3   Support footer option. - * 2013-02-15   v0.1.2   First official release for Grunt 0.4.0. - * 2013-01-18   v0.1.2rc6   Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. - * 2013-01-09   v0.1.2rc5   Updating to work with grunt v0.4.0rc5. Switching back to this.files api. - * 2012-11-13   v0.1.1   Switch to this.file api internally. - * 2012-10-03   v0.1.0   Work in progress, not yet officially released. - ---- - -Task submitted by ["Cowboy" Ben Alman](http://benalman.com/) - -*This file was generated on Thu Apr 25 2013 20:22:44.* diff --git a/node_modules/grunt-contrib-concat/docs/concat-examples.md b/node_modules/grunt-contrib-concat/docs/concat-examples.md deleted file mode 100644 index 9c6f42a2..00000000 --- a/node_modules/grunt-contrib-concat/docs/concat-examples.md +++ /dev/null @@ -1,177 +0,0 @@ -# Usage Examples - -## Concatenating with a custom separator - -In this example, running `grunt concat:dist` (or `grunt concat` because `concat` is a [multi task][]) will concatenate the three specified source files (in order), joining files with `;` and writing the output to `dist/built.js`. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - options: { - separator: ';' - }, - dist: { - src: ['src/intro.js', 'src/project.js', 'src/outro.js'], - dest: 'dist/built.js' - } - } -}); -``` - -## Banner comments - -In this example, running `grunt concat:dist` will first strip any preexisting banner comment from the `src/project.js` file, then concatenate the result with a newly-generated banner comment, writing the output to `dist/built.js`. - -This generated banner will be the contents of the `banner` template string interpolated with the config object. In this case, those properties are the values imported from the `package.json` file (which are available via the `pkg` config property) plus today's date. - -_Note: you don't have to use an external JSON file. It's also valid to create the `pkg` object inline in the config. That being said, if you already have a JSON file, you might as well reference it._ - -```js -// Project configuration. -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - options: { - stripBanners: true, - banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' + - '<%= grunt.template.today("yyyy-mm-dd") %> */' - }, - dist: { - src: ['src/project.js'], - dest: 'dist/built.js' - } - } -}); -``` - -## Multiple targets - -In this example, running `grunt concat` will build two separate files. One "basic" version, with the main file essentially just copied to `dist/basic.js`, and another "with_extras" concatenated version written to `dist/with_extras.js`. - -While each concat target can be built individually by running `grunt concat:basic` or `grunt concat:extras`, running `grunt concat` will build all concat targets. This is because `concat` is a [multi task][]. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - basic: { - src: ['src/main.js'], - dest: 'dist/basic.js' - }, - extras: { - src: ['src/main.js', 'src/extras.js'], - dest: 'dist/with_extras.js' - } - } -}); -``` - -## Multiple files per target - -Like the previous example, in this example running `grunt concat` will build two separate files. One "basic" version, with the main file essentially just copied to `dist/basic.js`, and another "with_extras" concatenated version written to `dist/with_extras.js`. - -This example differs in that both files are built under the same target. - -Using the `files` object, you can have list any number of source-destination pairs. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - basic_and_extras: { - files: { - 'dist/basic.js': ['src/main.js'], - 'dist/with_extras.js': ['src/main.js', 'src/extras.js'] - } - } - } -}); -``` - -## Dynamic filenames - -Filenames can be generated dynamically by using `<%= %>` delimited underscore templates as filenames. - -In this example, running `grunt concat:dist` generates a destination file whose name is generated from the `name` and `version` properties of the referenced `package.json` file (via the `pkg` config property). - -```js -// Project configuration. -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - dist: { - src: ['src/main.js'], - dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.js' - } - } -}); -``` - -## Advanced dynamic filenames - -In this more involved example, running `grunt concat` will build two separate files (because `concat` is a [multi task][]). The destination file paths will be expanded dynamically based on the specified templates, recursively if necessary. - -For example, if the `package.json` file contained `{"name": "awesome", "version": "1.0.0"}`, the files `dist/awesome/1.0.0/basic.js` and `dist/awesome/1.0.0/with_extras.js` would be generated. - -```javascript -// Project configuration. -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - dirs: { - src: 'src/files', - dest: 'dist/<%= pkg.name %>/<%= pkg.version %>' - }, - concat: { - basic: { - src: ['<%= dirs.src %>/main.js'], - dest: '<%= dirs.dest %>/basic.js' - }, - extras: { - src: ['<%= dirs.src %>/main.js', '<%= dirs.src %>/extras.js'], - dest: '<%= dirs.dest %>/with_extras.js' - } - } -}); -``` - -## Invalid or Missing Files Warning -If you would like the `concat` task to warn if a given file is missing or invalid be sure to set `nonull` to `true`: - -```js -grunt.initConfig({ - concat: { - missing: { - src: ['src/invalid_or_missing_file'], - dest: 'compiled.js', - nonull: true, - }, - }, -}); -``` - -See [configuring files for a task](http://gruntjs.com/configuring-tasks#files) for how to configure file globbing in Grunt. - - -## Custom process function -If you would like to do any custom processing before concatenating, use a custom process function: - -```js -runt.initConfig({ - concat: { - dist: { - options: { - // Replace all 'use strict' statements in the code with a single one at the top - banner: "'use strict';\n", - process: function(src, filepath) { - return '// Source: ' + filepath + '\n' + - src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1'); - }, - }, - files: { - 'dist/built.js': ['src/project.js'], - }, - }, - }, -}); -``` \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/docs/concat-options.md b/node_modules/grunt-contrib-concat/docs/concat-options.md deleted file mode 100644 index 17703787..00000000 --- a/node_modules/grunt-contrib-concat/docs/concat-options.md +++ /dev/null @@ -1,52 +0,0 @@ -# Options - -## separator -Type: `String` -Default: `grunt.util.linefeed` - -Concatenated files will be joined on this string. If you're post-processing concatenated JavaScript files with a minifier, you may need to use a semicolon `';'` as the separator. - -## banner -Type: `String` -Default: empty string - -This string will be prepended to the beginning of the concatenated output. It is processed using [grunt.template.process][], using the default options. - -_(Default processing options are explained in the [grunt.template.process][] documentation)_ - -## footer -Type: `String` -Default: empty string - -This string will be appended to the end of the concatenated output. It is processed using [grunt.template.process][], using the default options. - -_(Default processing options are explained in the [grunt.template.process][] documentation)_ - -## stripBanners -Type: `Boolean` `Object` -Default: `false` - -Strip JavaScript banner comments from source files. - -* `false` - No comments are stripped. -* `true` - `/* ... */` block comments are stripped, but _NOT_ `/*! ... */` comments. -* `options` object: - * By default, behaves as if `true` were specified. - * `block` - If true, _all_ block comments are stripped. - * `line` - If true, any contiguous _leading_ `//` line comments are stripped. - -## process -Type: `Boolean` `Object` -Default: `false` - -Process source files as [templates][] before concatenating. - -* `false` - No processing will occur. -* `true` - Process source files using [grunt.template.process][] defaults. -* `options` object - Process source files using [grunt.template.process][], using the specified options. -* `function(src, filepath)` - Process source files using the given function, called once for each file. The returned value will be used as source code. - -_(Default processing options are explained in the [grunt.template.process][] documentation)_ - - [templates]: https://github.com/gruntjs/grunt/wiki/grunt.template - [grunt.template.process]: https://github.com/gruntjs/grunt/wiki/grunt.template#wiki-grunt-template-process diff --git a/node_modules/grunt-contrib-concat/docs/concat-overview.md b/node_modules/grunt-contrib-concat/docs/concat-overview.md deleted file mode 100644 index f0c452b9..00000000 --- a/node_modules/grunt-contrib-concat/docs/concat-overview.md +++ /dev/null @@ -1 +0,0 @@ -Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/package.json b/node_modules/grunt-contrib-concat/package.json deleted file mode 100644 index 10e3b3dd..00000000 --- a/node_modules/grunt-contrib-concat/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "grunt-contrib-concat", - "description": "Concatenate files.", - "version": "0.3.0", - "homepage": "https://github.com/gruntjs/grunt-contrib-concat", - "author": { - "name": "Grunt Team", - "url": "http://gruntjs.com/" - }, - "repository": { - "type": "git", - "url": "git://github.com/gruntjs/grunt-contrib-concat.git" - }, - "bugs": { - "url": "https://github.com/gruntjs/grunt-contrib-concat/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/gruntjs/grunt-contrib-concat/blob/master/LICENSE-MIT" - } - ], - "main": "Gruntfile.js", - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "grunt test" - }, - "devDependencies": { - "grunt-contrib-jshint": "~0.2.0", - "grunt-contrib-nodeunit": "~0.1.2", - "grunt-contrib-clean": "~0.4.0", - "grunt-contrib-internal": "~0.4.2", - "grunt": "~0.4.0" - }, - "peerDependencies": { - "grunt": "~0.4.0" - }, - "keywords": [ - "gruntplugin" - ], - "contributors": [ - { - "name": "\"Cowboy\" Ben Alman", - "url": "http://benalman.com/" - }, - { - "name": "Tyler Kellen", - "url": "http://goingslowly.com/" - }, - { - "name": "Dan Wolff", - "url": "http://danwolff.se/" - } - ], - "readme": "# grunt-contrib-concat [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-concat.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-concat)\n\n> Concatenate files.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-concat --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-contrib-concat');\n```\n\n\n\n\n## Concat task\n_Run this task with the `grunt concat` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n### Options\n\n#### separator\nType: `String`\nDefault: `grunt.util.linefeed`\n\nConcatenated files will be joined on this string. If you're post-processing concatenated JavaScript files with a minifier, you may need to use a semicolon `';'` as the separator.\n\n#### banner\nType: `String`\nDefault: empty string\n\nThis string will be prepended to the beginning of the concatenated output. It is processed using [grunt.template.process][], using the default options.\n\n_(Default processing options are explained in the [grunt.template.process][] documentation)_\n\n#### footer\nType: `String`\nDefault: empty string\n\nThis string will be appended to the end of the concatenated output. It is processed using [grunt.template.process][], using the default options.\n\n_(Default processing options are explained in the [grunt.template.process][] documentation)_\n\n#### stripBanners\nType: `Boolean` `Object`\nDefault: `false`\n\nStrip JavaScript banner comments from source files.\n\n* `false` - No comments are stripped.\n* `true` - `/* ... */` block comments are stripped, but _NOT_ `/*! ... */` comments.\n* `options` object:\n * By default, behaves as if `true` were specified.\n * `block` - If true, _all_ block comments are stripped.\n * `line` - If true, any contiguous _leading_ `//` line comments are stripped.\n\n#### process\nType: `Boolean` `Object`\nDefault: `false`\n\nProcess source files as [templates][] before concatenating.\n\n* `false` - No processing will occur.\n* `true` - Process source files using [grunt.template.process][] defaults.\n* `options` object - Process source files using [grunt.template.process][], using the specified options.\n* `function(src, filepath)` - Process source files using the given function, called once for each file. The returned value will be used as source code.\n\n_(Default processing options are explained in the [grunt.template.process][] documentation)_\n\n [templates]: https://github.com/gruntjs/grunt/wiki/grunt.template\n [grunt.template.process]: https://github.com/gruntjs/grunt/wiki/grunt.template#wiki-grunt-template-process\n\n### Usage Examples\n\n#### Concatenating with a custom separator\n\nIn this example, running `grunt concat:dist` (or `grunt concat` because `concat` is a [multi task][]) will concatenate the three specified source files (in order), joining files with `;` and writing the output to `dist/built.js`.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n concat: {\n options: {\n separator: ';'\n },\n dist: {\n src: ['src/intro.js', 'src/project.js', 'src/outro.js'],\n dest: 'dist/built.js'\n }\n }\n});\n```\n\n#### Banner comments\n\nIn this example, running `grunt concat:dist` will first strip any preexisting banner comment from the `src/project.js` file, then concatenate the result with a newly-generated banner comment, writing the output to `dist/built.js`.\n\nThis generated banner will be the contents of the `banner` template string interpolated with the config object. In this case, those properties are the values imported from the `package.json` file (which are available via the `pkg` config property) plus today's date.\n\n_Note: you don't have to use an external JSON file. It's also valid to create the `pkg` object inline in the config. That being said, if you already have a JSON file, you might as well reference it._\n\n```js\n// Project configuration.\ngrunt.initConfig({\n pkg: grunt.file.readJSON('package.json'),\n concat: {\n options: {\n stripBanners: true,\n banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +\n '<%= grunt.template.today(\"yyyy-mm-dd\") %> */'\n },\n dist: {\n src: ['src/project.js'],\n dest: 'dist/built.js'\n }\n }\n});\n```\n\n#### Multiple targets\n\nIn this example, running `grunt concat` will build two separate files. One \"basic\" version, with the main file essentially just copied to `dist/basic.js`, and another \"with_extras\" concatenated version written to `dist/with_extras.js`.\n\nWhile each concat target can be built individually by running `grunt concat:basic` or `grunt concat:extras`, running `grunt concat` will build all concat targets. This is because `concat` is a [multi task][].\n\n```js\n// Project configuration.\ngrunt.initConfig({\n concat: {\n basic: {\n src: ['src/main.js'],\n dest: 'dist/basic.js'\n },\n extras: {\n src: ['src/main.js', 'src/extras.js'],\n dest: 'dist/with_extras.js'\n }\n }\n});\n```\n\n#### Multiple files per target\n\nLike the previous example, in this example running `grunt concat` will build two separate files. One \"basic\" version, with the main file essentially just copied to `dist/basic.js`, and another \"with_extras\" concatenated version written to `dist/with_extras.js`.\n\nThis example differs in that both files are built under the same target.\n\nUsing the `files` object, you can have list any number of source-destination pairs.\n\n```js\n// Project configuration.\ngrunt.initConfig({\n concat: {\n basic_and_extras: {\n files: {\n 'dist/basic.js': ['src/main.js'],\n 'dist/with_extras.js': ['src/main.js', 'src/extras.js']\n }\n }\n }\n});\n```\n\n#### Dynamic filenames\n\nFilenames can be generated dynamically by using `<%= %>` delimited underscore templates as filenames.\n\nIn this example, running `grunt concat:dist` generates a destination file whose name is generated from the `name` and `version` properties of the referenced `package.json` file (via the `pkg` config property).\n\n```js\n// Project configuration.\ngrunt.initConfig({\n pkg: grunt.file.readJSON('package.json'),\n concat: {\n dist: {\n src: ['src/main.js'],\n dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.js'\n }\n }\n});\n```\n\n#### Advanced dynamic filenames\n\nIn this more involved example, running `grunt concat` will build two separate files (because `concat` is a [multi task][]). The destination file paths will be expanded dynamically based on the specified templates, recursively if necessary.\n\nFor example, if the `package.json` file contained `{\"name\": \"awesome\", \"version\": \"1.0.0\"}`, the files `dist/awesome/1.0.0/basic.js` and `dist/awesome/1.0.0/with_extras.js` would be generated.\n\n```javascript\n// Project configuration.\ngrunt.initConfig({\n pkg: grunt.file.readJSON('package.json'),\n dirs: {\n src: 'src/files',\n dest: 'dist/<%= pkg.name %>/<%= pkg.version %>'\n },\n concat: {\n basic: {\n src: ['<%= dirs.src %>/main.js'],\n dest: '<%= dirs.dest %>/basic.js'\n },\n extras: {\n src: ['<%= dirs.src %>/main.js', '<%= dirs.src %>/extras.js'],\n dest: '<%= dirs.dest %>/with_extras.js'\n }\n }\n});\n```\n\n#### Invalid or Missing Files Warning\nIf you would like the `concat` task to warn if a given file is missing or invalid be sure to set `nonull` to `true`:\n\n```js\ngrunt.initConfig({\n concat: {\n missing: {\n src: ['src/invalid_or_missing_file'],\n dest: 'compiled.js',\n nonull: true,\n },\n },\n});\n```\n\nSee [configuring files for a task](http://gruntjs.com/configuring-tasks#files) for how to configure file globbing in Grunt.\n\n\n#### Custom process function\nIf you would like to do any custom processing before concatenating, use a custom process function:\n\n```js\nrunt.initConfig({\n concat: {\n dist: {\n options: {\n // Replace all 'use strict' statements in the code with a single one at the top\n banner: \"'use strict';\\n\",\n process: function(src, filepath) {\n return '// Source: ' + filepath + '\\n' +\n src.replace(/(^|\\n)[ \\t]*('use strict'|\"use strict\");?\\s*/g, '$1');\n },\n },\n files: {\n 'dist/built.js': ['src/project.js'],\n },\n },\n },\n});\n```\n\n## Release History\n\n * 2013-04-25   v0.3.0   Add option to process files with a custom function.\n * 2013-04-08   v0.2.0   Dont normalize separator to allow user to set LF even on a Windows environment.\n * 2013-02-22   v0.1.3   Support footer option.\n * 2013-02-15   v0.1.2   First official release for Grunt 0.4.0.\n * 2013-01-18   v0.1.2rc6   Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.\n * 2013-01-09   v0.1.2rc5   Updating to work with grunt v0.4.0rc5. Switching back to this.files api.\n * 2012-11-13   v0.1.1   Switch to this.file api internally.\n * 2012-10-03   v0.1.0   Work in progress, not yet officially released.\n\n---\n\nTask submitted by [\"Cowboy\" Ben Alman](http://benalman.com/)\n\n*This file was generated on Thu Apr 25 2013 20:22:44.*\n", - "readmeFilename": "README.md", - "_id": "grunt-contrib-concat@0.3.0", - "_from": "grunt-contrib-concat@" -} diff --git a/node_modules/grunt-contrib-concat/tasks/concat.js b/node_modules/grunt-contrib-concat/tasks/concat.js deleted file mode 100644 index 8942d78c..00000000 --- a/node_modules/grunt-contrib-concat/tasks/concat.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * grunt-contrib-concat - * http://gruntjs.com/ - * - * Copyright (c) 2012 "Cowboy" Ben Alman, contributors - * Licensed under the MIT license. - */ - -'use strict'; - -module.exports = function(grunt) { - - // Internal lib. - var comment = require('./lib/comment').init(grunt); - - grunt.registerMultiTask('concat', 'Concatenate files.', function() { - // Merge task-specific and/or target-specific options with these defaults. - var options = this.options({ - separator: grunt.util.linefeed, - banner: '', - footer: '', - stripBanners: false, - process: false - }); - - // Normalize boolean options that accept options objects. - if (options.stripBanners === true) { options.stripBanners = {}; } - if (options.process === true) { options.process = {}; } - - // Process banner and footer. - var banner = grunt.template.process(options.banner); - var footer = grunt.template.process(options.footer); - - // Iterate over all src-dest file pairs. - this.files.forEach(function(f) { - // Concat banner + specified files + footer. - var src = banner + f.src.filter(function(filepath) { - // Warn on and remove invalid source files (if nonull was set). - if (!grunt.file.exists(filepath)) { - grunt.log.warn('Source file "' + filepath + '" not found.'); - return false; - } else { - return true; - } - }).map(function(filepath) { - // Read file source. - var src = grunt.file.read(filepath); - // Process files as templates if requested. - if (typeof options.process === 'function') { - src = options.process(src, filepath); - } else if (options.process) { - src = grunt.template.process(src, options.process); - } - // Strip banners if requested. - if (options.stripBanners) { - src = comment.stripBanner(src, options.stripBanners); - } - return src; - }).join(options.separator) + footer; - - // Write the destination file. - grunt.file.write(f.dest, src); - - // Print a success message. - grunt.log.writeln('File "' + f.dest + '" created.'); - }); - }); - -}; diff --git a/node_modules/grunt-contrib-concat/tasks/lib/comment.js b/node_modules/grunt-contrib-concat/tasks/lib/comment.js deleted file mode 100644 index 4a2a6d1c..00000000 --- a/node_modules/grunt-contrib-concat/tasks/lib/comment.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * grunt-contrib-concat - * http://gruntjs.com/ - * - * Copyright (c) 2012 "Cowboy" Ben Alman, contributors - * Licensed under the MIT license. - */ - -'use strict'; - -exports.init = function(/*grunt*/) { - var exports = {}; - - // Return the given source code with any leading banner comment stripped. - exports.stripBanner = function(src, options) { - if (!options) { options = {}; } - var m = []; - if (options.line) { - // Strip // ... leading banners. - m.push('(?:.*\\/\\/.*\\r?\\n)*\\s*'); - } - if (options.block) { - // Strips all /* ... */ block comment banners. - m.push('\\/\\*[\\s\\S]*?\\*\\/'); - } else { - // Strips only /* ... */ block comment banners, excluding /*! ... */. - m.push('\\/\\*[^!][\\s\\S]*?\\*\\/'); - } - var re = new RegExp('^\\s*(?:' + m.join('|') + ')\\s*', ''); - return src.replace(re, ''); - }; - - return exports; -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/concat_test.js b/node_modules/grunt-contrib-concat/test/concat_test.js deleted file mode 100644 index 95a731b4..00000000 --- a/node_modules/grunt-contrib-concat/test/concat_test.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -var grunt = require('grunt'); -var comment = require('../tasks/lib/comment').init(grunt); - -function getNormalizedFile(filepath) { - return grunt.util.normalizelf(grunt.file.read(filepath)); -} - -exports.concat = { - default_options: function(test) { - test.expect(1); - - var actual = getNormalizedFile('tmp/default_options'); - var expected = getNormalizedFile('test/expected/default_options'); - test.equal(actual, expected, 'should describe what the default behavior is.'); - - test.done(); - }, - custom_options: function(test) { - test.expect(1); - - var actual = getNormalizedFile('tmp/custom_options'); - var expected = getNormalizedFile('test/expected/custom_options'); - test.equal(actual, expected, 'should utilize custom banner, footer and separator.'); - - test.done(); - }, - handling_invalid_files: function(test) { - test.expect(1); - - var actual = getNormalizedFile('tmp/handling_invalid_files'); - var expected = getNormalizedFile('test/expected/handling_invalid_files'); - test.equal(actual, expected, 'will have warned, but should not fail.'); - - test.done(); - }, - strip_banner: function(test) { - test.expect(7); - - var src = getNormalizedFile('test/fixtures/banner.js'); - test.equal(comment.stripBanner(src), grunt.util.normalizelf('// Comment\n\n/* Comment */\n'), 'It should strip the top banner.'); - test.equal(comment.stripBanner(src, {block: true}), grunt.util.normalizelf('// Comment\n\n/* Comment */\n'), 'It should strip the top banner.'); - - src = getNormalizedFile('test/fixtures/banner2.js'); - test.equal(comment.stripBanner(src), grunt.util.normalizelf('\n/*! SAMPLE\n * BANNER */\n\n// Comment\n\n/* Comment */\n'), 'It should not strip the top banner.'); - test.equal(comment.stripBanner(src, {block: true}), grunt.util.normalizelf('// Comment\n\n/* Comment */\n'), 'It should strip the top banner.'); - - src = getNormalizedFile('test/fixtures/banner3.js'); - test.equal(comment.stripBanner(src), grunt.util.normalizelf('\n// This is\n// A sample\n// Banner\n\n// But this is not\n\n/* And neither\n * is this\n */\n'), 'It should not strip the top banner.'); - test.equal(comment.stripBanner(src, {block: true}), grunt.util.normalizelf('\n// This is\n// A sample\n// Banner\n\n// But this is not\n\n/* And neither\n * is this\n */\n'), 'It should not strip the top banner.'); - test.equal(comment.stripBanner(src, {line: true}), grunt.util.normalizelf('// But this is not\n\n/* And neither\n * is this\n */\n'), 'It should strip the top banner.'); - test.done(); - }, - process_function: function(test) { - test.expect(1); - - var actual = getNormalizedFile('tmp/process_function'); - var expected = getNormalizedFile('test/expected/process_function'); - test.equal(actual, expected, 'should have processed file content.'); - - test.done(); - } -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/expected/custom_options b/node_modules/grunt-contrib-concat/test/expected/custom_options deleted file mode 100644 index d0ac5ede..00000000 --- a/node_modules/grunt-contrib-concat/test/expected/custom_options +++ /dev/null @@ -1,4 +0,0 @@ -/* THIS TEST IS AWESOME */ -file1 -; -file2dude \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/expected/default_options b/node_modules/grunt-contrib-concat/test/expected/default_options deleted file mode 100644 index 66728afd..00000000 --- a/node_modules/grunt-contrib-concat/test/expected/default_options +++ /dev/null @@ -1,2 +0,0 @@ -file1 -file2 \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/expected/handling_invalid_files b/node_modules/grunt-contrib-concat/test/expected/handling_invalid_files deleted file mode 100644 index 66728afd..00000000 --- a/node_modules/grunt-contrib-concat/test/expected/handling_invalid_files +++ /dev/null @@ -1,2 +0,0 @@ -file1 -file2 \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/expected/process_function b/node_modules/grunt-contrib-concat/test/expected/process_function deleted file mode 100644 index b62a364b..00000000 --- a/node_modules/grunt-contrib-concat/test/expected/process_function +++ /dev/null @@ -1,4 +0,0 @@ -// Source: test/fixtures/file1 -f1 -// Source: test/fixtures/file2 -f2 \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/fixtures/banner.js b/node_modules/grunt-contrib-concat/test/fixtures/banner.js deleted file mode 100644 index 61cf35dd..00000000 --- a/node_modules/grunt-contrib-concat/test/fixtures/banner.js +++ /dev/null @@ -1,11 +0,0 @@ - -/* THIS - * IS - * A - * SAMPLE - * BANNER! - */ - -// Comment - -/* Comment */ diff --git a/node_modules/grunt-contrib-concat/test/fixtures/banner2.js b/node_modules/grunt-contrib-concat/test/fixtures/banner2.js deleted file mode 100644 index f8ff08c9..00000000 --- a/node_modules/grunt-contrib-concat/test/fixtures/banner2.js +++ /dev/null @@ -1,7 +0,0 @@ - -/*! SAMPLE - * BANNER */ - -// Comment - -/* Comment */ diff --git a/node_modules/grunt-contrib-concat/test/fixtures/banner3.js b/node_modules/grunt-contrib-concat/test/fixtures/banner3.js deleted file mode 100644 index ef55520e..00000000 --- a/node_modules/grunt-contrib-concat/test/fixtures/banner3.js +++ /dev/null @@ -1,10 +0,0 @@ - -// This is -// A sample -// Banner - -// But this is not - -/* And neither - * is this - */ diff --git a/node_modules/grunt-contrib-concat/test/fixtures/file1 b/node_modules/grunt-contrib-concat/test/fixtures/file1 deleted file mode 100644 index 08219db9..00000000 --- a/node_modules/grunt-contrib-concat/test/fixtures/file1 +++ /dev/null @@ -1 +0,0 @@ -file1 \ No newline at end of file diff --git a/node_modules/grunt-contrib-concat/test/fixtures/file2 b/node_modules/grunt-contrib-concat/test/fixtures/file2 deleted file mode 100644 index 30d67d46..00000000 --- a/node_modules/grunt-contrib-concat/test/fixtures/file2 +++ /dev/null @@ -1 +0,0 @@ -file2 \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/LICENSE-MIT b/node_modules/grunt-contrib-cssmin/LICENSE-MIT deleted file mode 100644 index 1ef842e4..00000000 --- a/node_modules/grunt-contrib-cssmin/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2014 Tim Branyen, contributors - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/README.md b/node_modules/grunt-contrib-cssmin/README.md deleted file mode 100644 index 9f6fc5aa..00000000 --- a/node_modules/grunt-contrib-cssmin/README.md +++ /dev/null @@ -1,119 +0,0 @@ -# grunt-contrib-cssmin v0.8.0 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-cssmin.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-cssmin) - -> Compress CSS files. - - - -## Getting Started -This plugin requires Grunt `~0.4.1` - -If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: - -```shell -npm install grunt-contrib-cssmin --save-dev -``` - -Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: - -```js -grunt.loadNpmTasks('grunt-contrib-cssmin'); -``` - -*This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can't please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-cssmin/tree/grunt-0.3-stable).* - - - -## Cssmin task -_Run this task with the `grunt cssmin` command._ - -Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. - -Files are compressed with [clean-css](https://github.com/GoalSmashers/clean-css). -### Options - -#### banner - -Type: `String` -Default: `null` - -Prefix the compressed source with the given banner, with a linebreak inbetween. - -#### keepSpecialComments - -Type: `String` `Number` -Default: `'*'` - -To keep or remove special comments, exposing the underlying option from [clean-css](https://github.com/GoalSmashers/clean-css). `'*'` for keeping all (default), `1` for keeping first one, `0` for removing all. - -#### report -Choices: `'min'`, `'gzip'` -Default: `'min'` - -Either report only minification result or report minification and gzip results. -This is useful to see exactly how well clean-css is performing but using `'gzip'` will make the task take 5-10x longer to complete. [Example output](https://github.com/sindresorhus/maxmin#readme). - -### Usage Examples - -#### Combine two files into one output file - -```js -cssmin: { - combine: { - files: { - 'path/to/output.css': ['path/to/input_one.css', 'path/to/input_two.css'] - } - } -} -``` - -#### Add a banner -```js -cssmin: { - add_banner: { - options: { - banner: '/* My minified css file */' - }, - files: { - 'path/to/output.css': ['path/to/**/*.css'] - } - } -} -``` - -#### Minify all contents of a release directory and add a `.min.css` extension -```js -cssmin: { - minify: { - expand: true, - cwd: 'release/css/', - src: ['*.css', '!*.min.css'], - dest: 'release/css/', - ext: '.min.css' - } -} -``` - - -## Release History - - * 2014-02-14   v0.8.0   update clean-css v2.1.0 - * 2013-11-23   v0.7.0   update clean-css v2.0.0 - * 2013-09-14   v0.6.2   Support relative URLs via clean-css ~1.1.1. - * 2013-05-25   v0.6.1   Support import in-lining vis clean-css ~1.0.4. - * 2013-04-05   v0.6.0   Update clean-css dependency to ~1.0.0 - * 2013-03-14   v0.5.0   Support for 'report' option (false by default) - * 2013-03-10   v0.4.2   Add banner option Support clean-css keepSpecialComments - * 2013-02-17   v0.4.1   Update clean-css dependency to ~0.10.0 - * 2013-02-15   v0.4.0   First official release for Grunt 0.4.0. - * 2013-01-23   v0.4.0rc7   Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. - * 2013-01-09   v0.4.0rc5   Updating to work with grunt v0.4.0rc5. Switching to this.files api. - * 2012-11-01   v0.3.2   Update clean-css dep. - * 2012-10-12   v0.3.1   Rename grunt-contrib-lib dep to grunt-lib-contrib. - * 2012-09-23   v0.3.0   Options no longer accepted from global config key. - * 2012-09-10   v0.2.0   Refactored from grunt-contrib into individual repo. - ---- - -Task submitted by [Tim Branyen](http://tbranyen.com/) - -*This file was generated on Sat Mar 01 2014 19:58:58.* diff --git a/node_modules/grunt-contrib-cssmin/node_modules/.bin/cleancss b/node_modules/grunt-contrib-cssmin/node_modules/.bin/cleancss deleted file mode 120000 index 2a3439eb..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/.bin/cleancss +++ /dev/null @@ -1 +0,0 @@ -../clean-css/bin/cleancss \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/index.js b/node_modules/grunt-contrib-cssmin/node_modules/chalk/index.js deleted file mode 100644 index a21f7022..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/index.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; -var ansi = require('ansi-styles'); -var stripAnsi = require('strip-ansi'); -var hasColor = require('has-color'); -var defineProps = Object.defineProperties; -var chalk = module.exports; - -var styles = (function () { - var ret = {}; - - ansi.grey = ansi.gray; - - Object.keys(ansi).forEach(function (key) { - ret[key] = { - get: function () { - this._styles.push(key); - return this; - } - }; - }); - - return ret; -})(); - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - var obj = defineProps(function self() { - var str = [].slice.call(arguments).join(' '); - - if (!chalk.enabled) { - return str; - } - - return self._styles.reduce(function (str, name) { - var code = ansi[name]; - return str ? code.open + str + code.close : ''; - }, str); - }, styles); - - obj._styles = []; - - return obj[name]; - } - } - }); - - return ret; -} - -defineProps(chalk, init()); - -chalk.styles = ansi; -chalk.stripColor = stripAnsi; -chalk.supportsColor = hasColor; - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/.bin/strip-ansi deleted file mode 120000 index b65c9f81..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/.bin/strip-ansi +++ /dev/null @@ -1 +0,0 @@ -../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js deleted file mode 100644 index 3da548c4..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; -var styles = module.exports; - -var codes = { - reset: [0, 0], - - bold: [1, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - strikethrough: [9, 29], - - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] -}; - -Object.keys(codes).forEach(function (key) { - var val = codes[key]; - var style = styles[key] = {}; - style.open = '\x1b[' + val[0] + 'm'; - style.close = '\x1b[' + val[1] + 'm'; -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index 2d61dabe..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "ansi-styles", - "version": "1.0.0", - "description": "ANSI escape codes for colorizing strings in the terminal", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/ansi-styles", - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "ansi-styles.js" - ], - "main": "ansi-styles", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles)\n\n> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for colorizing strings in the terminal.\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![screenshot](screenshot.png)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles`\n\n\n## Example\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green.open + 'Hello world!' + ansi.green.close);\n```\n\n## API\n\nEach style has an `open` and `close` property.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "ansi-styles@1.0.0", - "_from": "ansi-styles@~1.0.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 4ac8cbd0..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for colorizing strings in the terminal. - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -Install with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles` - - -## Example - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/has-color.js b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/has-color.js deleted file mode 100644 index 27316b1f..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/has-color.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (!process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - return /^screen|^xterm|color|ansi|cygwin|linux/i.test(process.env.TERM); -})(); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/package.json b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/package.json deleted file mode 100644 index e55a6244..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "has-color", - "version": "0.1.4", - "description": "Detect whether a terminal supports color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "capability", - "detect" - ], - "homepage": "https://github.com/sindresorhus/has-color", - "bugs": { - "url": "https://github.com/sindresorhus/has-color/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "has-color.js" - ], - "main": "has-color", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-color.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color)\n\n> Detect whether a terminal supports color.\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/has-color): `npm install --save has-color`\n\n\n## Example\n\n```js\nvar hasColor = require('has-color');\n\nif (hasColor) {\n\tconsole.log('Terminal supports color.');\n}\n```\n\nIt obeys the CLI flags `--color` and `--no-color`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "has-color@0.1.4", - "_from": "has-color@~0.1.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/readme.md deleted file mode 100644 index 0918c851..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/has-color/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color) - -> Detect whether a terminal supports color. - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install with [npm](https://npmjs.org/package/has-color): `npm install --save has-color` - - -## Example - -```js -var hasColor = require('has-color'); - -if (hasColor) { - console.log('Terminal supports color.'); -} -``` - -It obeys the CLI flags `--color` and `--no-color`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/cli.js b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/cli.js deleted file mode 100755 index f8019cda..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/cli.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var strip = require('./index'); -var input = process.argv[2]; - -if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) { - console.log('strip-ansi <input file> > <output file>'); - console.log('or'); - console.log('cat <input file> | strip-ansi > <output file>'); - return; -} - -if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) { - console.log(require('./package').version); - return; -} - -if (input) { - process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); - return; -} - -process.stdin.setEncoding('utf8'); -process.stdin.on('data', function (data) { - process.stdout.write(strip(data)); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/index.js b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/index.js deleted file mode 100644 index 62320c59..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function (str) { - return typeof str === 'string' ? str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, '') : str; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/package.json b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/package.json deleted file mode 100644 index 7ca2b5d1..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "strip-ansi", - "version": "0.1.1", - "description": "Strip ANSI escape codes (used for colorizing strings in the terminal)", - "license": "MIT", - "bin": { - "strip-ansi": "cli.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-ansi" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "strip", - "trim", - "remove", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "devDependencies": { - "mocha": "~1.x" - }, - "readme": "# strip-ansi [![Build Status](https://secure.travis-ci.org/sindresorhus/strip-ansi.png?branch=master)](http://travis-ci.org/sindresorhus/strip-ansi)\n\n> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) (used for colorizing strings in the terminal)\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall locally with [npm](https://npmjs.org/package/strip-ansi):\n\n```\nnpm install --save strip-ansi\n```\n\nOr globally if you want to use it as a CLI app:\n\n```\nnpm install --global strip-ansi\n```\n\nYou can then use it in your Terminal like:\n\n```\nstrip-ansi file-with-color-codes\n```\n\nOr pipe something to it:\n\n```\nls | strip-ansi\n```\n\n\n## Example\n\n```js\nvar stripAnsi = require('strip-ansi');\nstripAnsi('\\x1b[4mcake\\x1b[0m');\n//=> cake\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/strip-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/strip-ansi", - "_id": "strip-ansi@0.1.1", - "_from": "strip-ansi@~0.1.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/readme.md deleted file mode 100644 index eb661b3d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/node_modules/strip-ansi/readme.md +++ /dev/null @@ -1,46 +0,0 @@ -# strip-ansi [![Build Status](https://secure.travis-ci.org/sindresorhus/strip-ansi.png?branch=master)](http://travis-ci.org/sindresorhus/strip-ansi) - -> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) (used for colorizing strings in the terminal) - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install locally with [npm](https://npmjs.org/package/strip-ansi): - -``` -npm install --save strip-ansi -``` - -Or globally if you want to use it as a CLI app: - -``` -npm install --global strip-ansi -``` - -You can then use it in your Terminal like: - -``` -strip-ansi file-with-color-codes -``` - -Or pipe something to it: - -``` -ls | strip-ansi -``` - - -## Example - -```js -var stripAnsi = require('strip-ansi'); -stripAnsi('\x1b[4mcake\x1b[0m'); -//=> cake -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/package.json b/node_modules/grunt-contrib-cssmin/node_modules/chalk/package.json deleted file mode 100644 index 853b0144..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "chalk", - "version": "0.4.0", - "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "has-color": "~0.1.0", - "ansi-styles": "~1.0.0", - "strip-ansi": "~0.1.0" - }, - "devDependencies": { - "mocha": "~1.x" - }, - "readme": "# <img width=\"250\" src=\"logo.png\" alt=\"chalk\">\n\n> Terminal string styling done right\n\n[![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk)\n\n[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](screenshot.png)\n\n\n## Why\n\n- **Doesn't extend String.prototype**\n- Expressive API\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n- [Used by 150+ modules](https://npmjs.org/browse/depended/chalk)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/chalk): `npm install --save chalk`\n\n\n## Example\n\nChalk comes with an easy to use composable API where you just chain and nest the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nconsole.log( chalk.blue('Hello world!') );\n\n// combine styled and normal strings\nconsole.log( chalk.blue('Hello'), 'World' + chalk.red('!') );\n\n// compose multiple styles using the chainable API\nconsole.log( chalk.blue.bgRed.bold('Hello world!') );\n\n// nest styles\nconsole.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') );\n\n// pass in multiple arguments\nconsole.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') );\n```\n\nYou can easily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\n\n## API\n\n### chalk.`<style>[.<style>...](string, [string...])`\n\nExample: `chalk.red.bold.underline('Hello', 'world');`\n\nChain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter.\n\nMultiple arguments will be separated by space.\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it.\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/has-color).\n\nCan be overridden by the user with the flags `--color` and `--no-color`.\n\nUsed internally and handled for you, but exposed for convenience.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\nGenerally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours.\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> {open: '\\x1b[31m', close: '\\x1b[39m'}\n\nconsole.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);\n```\n\n### chalk.stripColor(string)\n\n[Strip color](https://github.com/sindresorhus/strip-ansi) from a string.\n\nCan be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.\n\nExample:\n\n```js\nvar chalk = require('chalk');\nvar styledString = fromExternal();\n\nif (!chalk.supportsColor) {\n\tchalk.stripColor(styledString);\n}\n```\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n\n\n-\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sindresorhus/chalk/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "homepage": "https://github.com/sindresorhus/chalk", - "_id": "chalk@0.4.0", - "_from": "chalk@~0.4.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/chalk/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/chalk/readme.md deleted file mode 100644 index 46813acf..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/chalk/readme.md +++ /dev/null @@ -1,158 +0,0 @@ -# <img width="250" src="logo.png" alt="chalk"> - -> Terminal string styling done right - -[![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](screenshot.png) - - -## Why - -- **Doesn't extend String.prototype** -- Expressive API -- Clean and focused -- Auto-detects color support -- Actively maintained -- [Used by 150+ modules](https://npmjs.org/browse/depended/chalk) - - -## Install - -Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` - - -## Example - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log( chalk.blue('Hello world!') ); - -// combine styled and normal strings -console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); - -// compose multiple styles using the chainable API -console.log( chalk.blue.bgRed.bold('Hello world!') ); - -// nest styles -console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); - -// pass in multiple arguments -console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); -``` - -You can easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - - -## API - -### chalk.`<style>[.<style>...](string, [string...])` - -Example: `chalk.red.bold.underline('Hello', 'world');` - -Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter. - -Multiple arguments will be separated by space. - -### chalk.enabled - -Color support is automatically detected, but you can override it. - -### chalk.supportsColor - -Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). - -Can be overridden by the user with the flags `--color` and `--no-color`. - -Used internally and handled for you, but exposed for convenience. - -### chalk.styles - -Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). - -Generally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours. - -```js -var chalk = require('chalk'); - -console.log(chalk.styles.red); -//=> {open: '\x1b[31m', close: '\x1b[39m'} - -console.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close); -``` - -### chalk.stripColor(string) - -[Strip color](https://github.com/sindresorhus/strip-ansi) from a string. - -Can be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported. - -Example: - -```js -var chalk = require('chalk'); -var styledString = fromExternal(); - -if (!chalk.supportsColor) { - chalk.stripColor(styledString); -} -``` - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) - - -- - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sindresorhus/chalk/trend.png)](https://bitdeli.com/free "Bitdeli Badge") diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/History.md b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/History.md deleted file mode 100644 index b50c9db2..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/History.md +++ /dev/null @@ -1,426 +0,0 @@ -[2.1.4 / 2014-03-01](https://github.com/GoalSmashers/clean-css/compare/v2.1.3...v2.1.4) -================== - -* Fixed issue [#250](https://github.com/GoalSmashers/clean-css/issues/250) - correctly handle JSON data in quotations. - -[2.1.3 / 2014-02-26](https://github.com/GoalSmashers/clean-css/compare/v2.1.2...v2.1.3) -================== - -* Fixed issue [#248](https://github.com/GoalSmashers/clean-css/issues/248) - incorrect merging for vendor selectors. - -[2.1.2 / 2014-02-25](https://github.com/GoalSmashers/clean-css/compare/v2.1.1...v2.1.2) -================== - -* Fixed issue [#245](https://github.com/GoalSmashers/clean-css/issues/245) - incorrect handling of backslash IE hack. - -[2.1.1 / 2014-02-18](https://github.com/GoalSmashers/clean-css/compare/v2.1.0...v2.1.1) -================== - -* Adds faster selectors processing in advanced optimizer. -* Fixed issue [#241](https://github.com/GoalSmashers/clean-css/issues/241) - incorrect handling of :not() selectors. - -[2.1.0 / 2014-02-13](https://github.com/GoalSmashers/clean-css/compare/v2.0.8...v2.1.0) -================== - -* Adds an optional callback to minify method. -* Deprecates --selectors-merge-mode / selectorsMergeMode in favor to --compatibility / compatibility. -* Fixes debug mode stats for stylesheets using `@import` statements. -* Skips empty removal if advanced processing is enabled. -* Fixed issue [#85](https://github.com/GoalSmashers/clean-css/issues/85) - resolving protocol `@import`s. -* Fixed issue [#160](https://github.com/GoalSmashers/clean-css/issues/160) - re-runs optimizer until a clean pass. -* Fixed issue [#161](https://github.com/GoalSmashers/clean-css/issues/161) - improves tokenizer performance. -* Fixed issue [#163](https://github.com/GoalSmashers/clean-css/issues/163) - round pixels to 2nd decimal place. -* Fixed issue [#165](https://github.com/GoalSmashers/clean-css/issues/165) - extra space after trailing parenthesis. -* Fixed issue [#186](https://github.com/GoalSmashers/clean-css/issues/186) - strip unit from 0rem. -* Fixed issue [#207](https://github.com/GoalSmashers/clean-css/issues/207) - bug in parsing protocol `@import`s. -* Fixed issue [#213](https://github.com/GoalSmashers/clean-css/issues/213) - faster rgb to hex transforms. -* Fixed issue [#215](https://github.com/GoalSmashers/clean-css/issues/215) - leading zeros in numerical values. -* Fixed issue [#217](https://github.com/GoalSmashers/clean-css/issues/217) - whitespace inside attribute selectors and urls. -* Fixed issue [#218](https://github.com/GoalSmashers/clean-css/issues/218) - `@import` statements cleanup. -* Fixed issue [#220](https://github.com/GoalSmashers/clean-css/issues/220) - selector between comments. -* Fixed issue [#223](https://github.com/GoalSmashers/clean-css/issues/223) - two-pass adjacent selectors merging. -* Fixed issue [#226](https://github.com/GoalSmashers/clean-css/issues/226) - don't minify border:none to border:0. -* Fixed issue [#229](https://github.com/GoalSmashers/clean-css/issues/229) - improved processing of fraction numbers. -* Fixed issue [#230](https://github.com/GoalSmashers/clean-css/issues/230) - better handling of zero values. -* Fixed issue [#235](https://github.com/GoalSmashers/clean-css/issues/235) - IE7 compatibility mode. -* Fixed issue [#236](https://github.com/GoalSmashers/clean-css/issues/236) - incorrect rebasing with nested `import`s. - -[2.0.8 / 2014-02-07](https://github.com/GoalSmashers/clean-css/compare/v2.0.7...v2.0.8) -================== - -* Fixed issue [#232](https://github.com/GoalSmashers/clean-css/issues/232) - edge case in non-adjacent selectors merging. - -[2.0.7 / 2014-01-16](https://github.com/GoalSmashers/clean-css/compare/v2.0.6...v2.0.7) -================== - -* Fixed issue [#208](https://github.com/GoalSmashers/clean-css/issues/208) - don't swallow @page and @viewport. - -[2.0.6 / 2014-01-04](https://github.com/GoalSmashers/clean-css/compare/v2.0.5...v2.0.6) -================== - -* Fixed issue [#198](https://github.com/GoalSmashers/clean-css/issues/198) - process comments and `@import`s correctly. -* Fixed issue [#205](https://github.com/GoalSmashers/clean-css/issues/205) - freeze on broken @import declaration. - -[2.0.5 / 2014-01-03](https://github.com/GoalSmashers/clean-css/compare/v2.0.4...v2.0.5) -================== - -* Fixed issue [#199](https://github.com/GoalSmashers/clean-css/issues/199) - keep line breaks with no advanced optimizations. -* Fixed issue [#203](https://github.com/GoalSmashers/clean-css/issues/203) - Buffer as a first argument to minify method. - -[2.0.4 / 2013-12-19](https://github.com/GoalSmashers/clean-css/compare/v2.0.3...v2.0.4) -================== - -* Fixed issue [#193](https://github.com/GoalSmashers/clean-css/issues/193) - HSL color space normalization. - -[2.0.3 / 2013-12-18](https://github.com/GoalSmashers/clean-css/compare/v2.0.2...v2.0.3) -================== - -* Fixed issue [#191](https://github.com/GoalSmashers/clean-css/issues/191) - leading numbers in font/animation names. -* Fixed issue [#192](https://github.com/GoalSmashers/clean-css/issues/192) - many `@import`s inside a comment. - -[2.0.2 / 2013-11-18](https://github.com/GoalSmashers/clean-css/compare/v2.0.1...v2.0.2) -================== - -* Fixed issue [#177](https://github.com/GoalSmashers/clean-css/issues/177) - process broken content correctly. - -[2.0.1 / 2013-11-14](https://github.com/GoalSmashers/clean-css/compare/v2.0.0...v2.0.1) -================== - -* Fixed issue [#176](https://github.com/GoalSmashers/clean-css/issues/176) - hangs on `undefined` keyword. - -[2.0.0 / 2013-11-04](https://github.com/GoalSmashers/clean-css/compare/v1.1.7...v2.0.0) -================== - -* Adds simplified and more advanced text escaping / restoring via `EscapeStore` class. -* Adds simplified and much faster empty elements removal. -* Adds missing `@import` processing to our benchmark (run via `npm run bench`). -* Adds CSS tokenizer which will make it possible to optimize content by reordering and/or merging selectors. -* Adds basic optimizer removing duplicate selectors from a list. -* Adds merging duplicate properties within a single selector's body. -* Adds merging adjacent selectors within a scope (single and multiple ones). -* Changes behavior of `--keep-line-breaks`/`keepBreaks` option to keep breaks after trailing braces only. -* Makes all multiple selectors ordered alphabetically (aids merging). -* Adds property overriding so more coarse properties override more granular ones. -* Adds reducing non-adjacent selectors. -* Adds `--skip-advanced`/`noAdvanced` switch to disable advanced optimizations. -* Adds reducing non-adjacent selectors when overridden by more complex selectors. -* Fixed issue [#138](https://github.com/GoalSmashers/clean-css/issues/138) - makes CleanCSS interface OO. -* Fixed issue [#139](https://github.com/GoalSmashers/clean-css/issues/138) - consistent error & warning handling. -* Fixed issue [#145](https://github.com/GoalSmashers/clean-css/issues/145) - debug mode in library too. -* Fixed issue [#157](https://github.com/GoalSmashers/clean-css/issues/157) - gets rid of `removeEmpty` option. -* Fixed issue [#159](https://github.com/GoalSmashers/clean-css/issues/159) - escaped quotes inside content. -* Fixed issue [#162](https://github.com/GoalSmashers/clean-css/issues/162) - strip quotes from Base64 encoded URLs. -* Fixed issue [#166](https://github.com/GoalSmashers/clean-css/issues/166) - `debug` formatting in CLI -* Fixed issue [#167](https://github.com/GoalSmashers/clean-css/issues/167) - `background:transparent` minification. - -[1.1.7 / 2013-10-28](https://github.com/GoalSmashers/clean-css/compare/v1.1.6...v1.1.7) -================== - -* Fixed issue [#156](https://github.com/GoalSmashers/clean-css/issues/156) - `@import`s inside comments. - -[1.1.6 / 2013-10-26](https://github.com/GoalSmashers/clean-css/compare/v1.1.5...v1.1.6) -================== - -* Fixed issue [#155](https://github.com/GoalSmashers/clean-css/issues/155) - broken irregular CSS content. - -[1.1.5 / 2013-10-24](https://github.com/GoalSmashers/clean-css/compare/v1.1.4...v1.1.5) -================== - -* Fixed issue [#153](https://github.com/GoalSmashers/clean-css/issues/153) - keepSpecialComments 0/1 as a string. - -[1.1.4 / 2013-10-23](https://github.com/GoalSmashers/clean-css/compare/v1.1.3...v1.1.4) -================== - -* Fixed issue [#152](https://github.com/GoalSmashers/clean-css/issues/152) - adds an option to disable rebasing. - -[1.1.3 / 2013-10-04](https://github.com/GoalSmashers/clean-css/compare/v1.1.2...v1.1.3) -================== - -* Fixed issue [#150](https://github.com/GoalSmashers/clean-css/issues/150) - minifying `background:none`. - -[1.1.2 / 2013-09-29](https://github.com/GoalSmashers/clean-css/compare/v1.1.1...v1.1.2) -================== - -* Fixed issue [#149](https://github.com/GoalSmashers/clean-css/issues/149) - shorthand font property. - -[1.1.1 / 2013-09-07](https://github.com/GoalSmashers/clean-css/compare/v1.1.0...v1.1.1) -================== - -* Fixed issue [#144](https://github.com/GoalSmashers/clean-css/issues/144) - skip URLs rebasing by default. - -[1.1.0 / 2013-09-06](https://github.com/GoalSmashers/clean-css/compare/v1.0.12...v1.1.0) -================== - -* Renamed lib's `debug` option to `benchmark` when doing per-minification benchmarking. -* Added simplified comments processing & imports. -* Fixed issue [#43](https://github.com/GoalSmashers/clean-css/issues/43) - `--debug` switch for minification stats. -* Fixed issue [#65](https://github.com/GoalSmashers/clean-css/issues/65) - full color name / hex shortening. -* Fixed issue [#84](https://github.com/GoalSmashers/clean-css/issues/84) - support for `@import` with media queries. -* Fixed issue [#124](https://github.com/GoalSmashers/clean-css/issues/124) - raise error on broken imports. -* Fixed issue [#126](https://github.com/GoalSmashers/clean-css/issues/126) - proper CSS expressions handling. -* Fixed issue [#129](https://github.com/GoalSmashers/clean-css/issues/129) - rebasing imported URLs. -* Fixed issue [#130](https://github.com/GoalSmashers/clean-css/issues/130) - better code modularity. -* Fixed issue [#135](https://github.com/GoalSmashers/clean-css/issues/135) - require node.js 0.8+. - -[1.0.12 / 2013-07-19](https://github.com/GoalSmashers/clean-css/compare/v1.0.11...v1.0.12) -=================== - -* Fixed issue [#121](https://github.com/GoalSmashers/clean-css/issues/121) - ability to skip `@import` processing. - -[1.0.11 / 2013-07-08](https://github.com/GoalSmashers/clean-css/compare/v1.0.10...v1.0.11) -=================== - -* Fixed issue [#117](https://github.com/GoalSmashers/clean-css/issues/117) - line break escaping in comments. - -[1.0.10 / 2013-06-13](https://github.com/GoalSmashers/clean-css/compare/v1.0.9...v1.0.10) -=================== - -* Fixed issue [#114](https://github.com/GoalSmashers/clean-css/issues/114) - comments in imported stylesheets. - -[1.0.9 / 2013-06-11](https://github.com/GoalSmashers/clean-css/compare/v1.0.8...v1.0.9) -================== - -* Fixed issue [#113](https://github.com/GoalSmashers/clean-css/issues/113) - `@import` in comments. - -[1.0.8 / 2013-06-10](https://github.com/GoalSmashers/clean-css/compare/v1.0.7...v1.0.8) -================== - -* Fixed issue [#112](https://github.com/GoalSmashers/clean-css/issues/112) - reducing `box-shadow` zeros. - -[1.0.7 / 2013-06-05](https://github.com/GoalSmashers/clean-css/compare/v1.0.6...v1.0.7) -================== - -* Support for `@import` URLs starting with `//`. - By [@petetak](https://github.com/petetak). - -[1.0.6 / 2013-06-04](https://github.com/GoalSmashers/clean-css/compare/v1.0.5...v1.0.6) -================== - -* Fixed issue [#110](https://github.com/GoalSmashers/clean-css/issues/110) - data URIs in URLs. - -[1.0.5 / 2013-05-26](https://github.com/GoalSmashers/clean-css/compare/v1.0.4...v1.0.5) -================== - -* Fixed issue [#107](https://github.com/GoalSmashers/clean-css/issues/107) - data URIs in imported stylesheets. - -1.0.4 / 2013-05-23 -================== - -* Rewrite relative URLs in imported stylesheets. - By [@bluej100](https://github.com/bluej100). - -1.0.3 / 2013-05-20 -================== - -* Support alternative `@import` syntax with file name not wrapped inside `url()` statement. - By [@bluej100](https://github.com/bluej100). - -1.0.2 / 2013-04-29 -================== - -* Fixed issue [#97](https://github.com/GoalSmashers/clean-css/issues/97) - `--remove-empty` & FontAwesome. - -1.0.1 / 2013-04-08 -================== - -* Do not pick up `bench` and `test` while building `npm` package. - By [@sindresorhus](https://https://github.com/sindresorhus). - -1.0.0 / 2013-03-30 -================== - -* Fixed issue [#2](https://github.com/GoalSmashers/clean-css/issues/2) - resolving `@import` rules. -* Fixed issue [#44](https://github.com/GoalSmashers/clean-css/issues/44) - examples in `--help`. -* Fixed issue [#46](https://github.com/GoalSmashers/clean-css/issues/46) - preserving special characters in URLs and attributes. -* Fixed issue [#80](https://github.com/GoalSmashers/clean-css/issues/80) - quotation in multi line strings. -* Fixed issue [#83](https://github.com/GoalSmashers/clean-css/issues/83) - HSL to hex color conversions. -* Fixed issue [#86](https://github.com/GoalSmashers/clean-css/issues/86) - broken `@charset` replacing. -* Fixed issue [#88](https://github.com/GoalSmashers/clean-css/issues/88) - removes space in `! important`. -* Fixed issue [#92](https://github.com/GoalSmashers/clean-css/issues/92) - uppercase hex to short versions. - -0.10.2 / 2013-03-19 -=================== - -* Fixed issue [#79](https://github.com/GoalSmashers/clean-css/issues/79) - node.js 0.10.x compatibility. - -0.10.1 / 2013-02-14 -=================== - -* Fixed issue [#66](https://github.com/GoalSmashers/clean-css/issues/66) - line breaks without extra spaces should - be handled correctly. - -0.10.0 / 2013-02-09 -=================== - -* Switched from [optimist](https://github.com/substack/node-optimist) to - [commander](https://github.com/visionmedia/commander.js) for CLI processing. -* Changed long options from `--removeempty` to `--remove-empty` and from `--keeplinebreaks` to `--keep-line-breaks`. -* Fixed performance issue with replacing multiple `@charset` declarations and issue - with line break after `@charset` when using `keepLineBreaks` option. By [@rrjaime](https://github.com/rrjamie). -* Removed Makefile in favor to `npm run` commands (e.g. `make check` -> `npm run check`). -* Fixed issue [#47](https://github.com/GoalSmashers/clean-css/issues/47) - commandline issues on Windows. -* Fixed issue [#49](https://github.com/GoalSmashers/clean-css/issues/49) - remove empty selectors from media query. -* Fixed issue [#52](https://github.com/GoalSmashers/clean-css/issues/52) - strip fraction zeros if not needed. -* Fixed issue [#58](https://github.com/GoalSmashers/clean-css/issues/58) - remove colon where possible. -* Fixed issue [#59](https://github.com/GoalSmashers/clean-css/issues/59) - content property handling. - -0.9.1 / 2012-12-19 -================== - -* Fixed issue [#37](https://github.com/GoalSmashers/clean-css/issues/37) - converting - `white` and other colors in class names (reported by [@malgorithms](https://github.com/malgorithms)). - -0.9.0 / 2012-12-15 -================== - -* Added stripping quotation from font names (if possible). -* Added stripping quotation from `@keyframes` declaration, `animation` and - `animation-name` property. -* Added stripping quotations from attributes' value (e.g. `[data-target='x']`). -* Added better hex->name and name->hex color shortening. -* Added `font: normal` and `font: bold` shortening the same way as `font-weight` is. -* Refactored shorthand selectors and added `border-radius`, `border-style` - and `border-color` shortening. -* Added `margin`, `padding` and `border-width` shortening. -* Added removing line break after commas. -* Fixed removing whitespace inside media query definition. -* Added removing line breaks after a comma, so all declarations are one-liners now. -* Speed optimizations (~10% despite many new features). -* Added [JSHint](https://github.com/jshint/jshint/) validation rules via `make check`. - -0.8.3 / 2012-11-29 -================== - -* Fixed HSL/HSLA colors processing. - -0.8.2 / 2012-10-31 -================== - -* Fixed shortening hex colors and their relation to hashes in URLs. -* Cleanup by [@XhmikosR](https://github.com/XhmikosR). - -0.8.1 / 2012-10-28 -================== - -* Added better zeros processing for `rect(...)` syntax (clip property). - -0.8.0 / 2012-10-21 -================== - -* Added removing URLs quotation if possible. -* Rewrote breaks processing. -* Added `keepBreaks`/`-b` option to keep line breaks in the minimized file. -* Reformatted [lib/clean.js](/lib/clean.js) so it's easier to follow the rules. -* Minimized test data is now minimized with line breaks so it's easier to - compare the changes line by line. - -0.7.0 / 2012-10-14 -================== - -* Added stripping special comments to CLI (`--s0` and `--s1` options). -* Added stripping special comments to programmatic interface - (`keepSpecialComments` option). - -0.6.0 / 2012-08-05 -================== - -* Full Windows support with tests (./test.bat). - -0.5.0 / 2012-08-02 -================== - -* Made path to vows local. -* Explicit node.js 0.6 requirement. - -0.4.2 / 2012-06-28 -================== - -* Updated binary `-v` option (version). -* Updated binary to output help when no options given (but not in piped mode). -* Added binary tests. - -0.4.1 / 2012-06-10 -================== - -* Fixed stateless mode where calling `CleanCSS#process` directly was giving - errors (reported by [@facelessuser](https://github.com/facelessuser)). - -0.4.0 / 2012-06-04 -================== - -* Speed improvements up to 4x thanks to the rewrite of comments and CSS' content - processing. -* Stripping empty CSS tags is now optional (see [bin/cleancss](/bin/cleancss) for details). -* Improved debugging mode (see [test/bench.js](/test/bench.js)) -* Added `make bench` for a one-pass benchmark. - -0.3.3 / 2012-05-27 -================== - -* Fixed tests, [package.json](/package.json) for development, and regex - for removing empty declarations (thanks to [@vvo](https://github.com/vvo)). - -0.3.2 / 2012-01-17 -================== - -* Fixed output method under node.js 0.6 which incorrectly tried to close - `process.stdout`. - -0.3.1 / 2011-12-16 -================== - -* Fixed cleaning up `0 0 0 0` expressions. - -0.3.0 / 2011-11-29 -================== - -* Clean-css requires node.js 0.4.0+ to run. -* Removed node.js's 0.2.x 'sys' package dependency - (thanks to [@jmalonzo](https://github.com/jmalonzo) for a patch). - -0.2.6 / 2011-11-27 -================== - -* Fixed expanding `+` signs in `calc()` when mixed up with adjacent `+` selector. - -0.2.5 / 2011-11-27 -================== - -* Fixed issue with cleaning up spaces inside `calc`/`-moz-calc` declarations - (thanks to [@cvan](https://github.com/cvan) for reporting it). -* Fixed converting `#f00` to `red` in borders and gradients. - -0.2.4 / 2011-05-25 -================== - -* Fixed problem with expanding `none` to `0` in partial/full background - declarations. -* Fixed including clean-css library from binary (global to local). - -0.2.3 / 2011-04-18 -================== - -* Fixed problem with optimizing IE filters. - -0.2.2 / 2011-04-17 -================== - -* Fixed problem with space before color in `border` property. - -0.2.1 / 2011-03-19 -================== - -* Added stripping space before `!important` keyword. -* Updated repository location and author information in [package.json](/package.json). - -0.2.0 / 2011-03-02 -================== - -* Added options parsing via optimist. -* Changed code inclusion (thus the version bump). - -0.1.0 / 2011-02-27 -================== - -* First version of clean-css library. -* Implemented all basic CSS transformations. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/LICENSE deleted file mode 100644 index 422ed657..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2011-2014 GoalSmashers.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/node_modules/grunt-contrib-cssmin/node_modules/clean-css/README.md b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/README.md deleted file mode 100644 index 59312b51..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/README.md +++ /dev/null @@ -1,210 +0,0 @@ -[![NPM version](https://badge.fury.io/js/clean-css.png)](https://badge.fury.io/js/clean-css) -[![Build Status](https://secure.travis-ci.org/GoalSmashers/clean-css.png)](https://travis-ci.org/GoalSmashers/clean-css) -[![Dependency Status](https://david-dm.org/GoalSmashers/clean-css.png?theme=shields.io)](https://david-dm.org/GoalSmashers/clean-css) -[![devDependency Status](https://david-dm.org/GoalSmashers/clean-css/dev-status.png?theme=shields.io)](https://david-dm.org/GoalSmashers/clean-css#info=devDependencies) - -## What is clean-css? - -Clean-css is a fast and efficient [Node.js](http://nodejs.org/) library for minifying CSS files. - -According to [tests](http://goalsmashers.github.io/css-minification-benchmark/) it is one of the best available. - - -## Usage - -### What are the requirements? - -``` -Node.js 0.8.0+ (tested on CentOS, Ubuntu, OS X 10.6+, and Windows 7+) -``` - -### How to install clean-css? - -``` -npm install clean-css -``` - -### How to upgrade clean-css from 1.x to 2.x? - -#### Command-line interface (CLI) - -``` -npm update clean-css -``` - -or point `package.json` to version 2.x. That's it! - -#### Node.js module - -Update `clean-css` as for CLI above. -Then change your JavaScript code from: - -```js -var minimized = CleanCSS.process(source, options); -``` - -into - -```js -var minimized = new CleanCSS(options).minify(source); -``` - -And you are done. - -### How to use clean-css CLI? - -Clean-css accepts the following command line arguments (please make sure -you use `<source-file>` as the very last argument to avoid potential issues): - -``` -cleancss [options] <source-file> - --h, --help Output usage information --v, --version Output the version number --b, --keep-line-breaks Keep line breaks ---s0 Remove all special comments, i.e. /*! comment */ ---s1 Remove all special comments but the first one --r, --root [root-path] A root path to which resolve absolute @import rules - and rebase relative URLs --o, --output [output-file] Use [output-file] as output instead of STDOUT --s, --skip-import Disable @import processing ---skip-rebase Disable URLs rebasing ---skip-advanced Disable advanced optimizations - selector & property merging, - reduction, etc. ---selectors-merge-mode [ie8|*] DEPRECATED: Use --compatibility switch --c, --compatibility [ie7|ie8] Force compatibility mode --d, --debug Shows debug information (minification time & compression efficiency) -``` - -#### Examples: - -To minify a **public.css** file into **public-min.css** do: - -``` -cleancss -o public-min.css public.css -``` - -To minify the same **public.css** into the standard output skip the `-o` parameter: - -``` -cleancss public.css -``` - -More likely you would like to concatenate a couple of files. -If you are on a Unix-like system: - -```bash -cat one.css two.css three.css | cleancss -o merged-and-minified.css -``` - -On Windows: - -```bat -type one.css two.css three.css | cleancss -o merged-and-minified.css -``` - -Or even gzip the result at once: - -```bash -cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz -``` - -### How to use clean-css programmatically? - -```js -var CleanCSS = require('clean-css'); -var source = 'a{font-weight:bold;}'; -var minimized = new CleanCSS().minify(source); -``` - -CleanCSS constructor accepts a hash as a parameter, i.e., -`new CleanCSS(options).minify(source)` with the following options available: - -* `keepSpecialComments` - `*` for keeping all (default), `1` for keeping first one only, `0` for removing all -* `keepBreaks` - whether to keep line breaks (default is false) -* `benchmark` - turns on benchmarking mode measuring time spent on cleaning up - (run `npm run bench` to see example) -* `root` - path to resolve absolute `@import` rules and rebase relative URLs -* `relativeTo` - path with which to resolve relative `@import` rules and URLs -* `processImport` - whether to process `@import` rules -* `noRebase` - whether to skip URLs rebasing -* `noAdvanced` - set to true to disable advanced optimizations - selector & property merging, reduction, etc. -* `selectorsMergeMode` - DEPRECATED: Use compatibility option -* `compatibility` - Force compatibility mode to `ie7` or `ie8`. Defaults to not set. -* `debug` - set to true to get minification statistics under `stats` property (see `test/custom-test.js` for examples) - -### How to use clean-css with [Grunt](http://gruntjs.com)? - -See [grunt-contrib-cssmin](https://github.com/gruntjs/grunt-contrib-cssmin) plugin. - -### What are the clean-css' dev commands? - -First clone the source, then run: - -* `npm run bench` for clean-css benchmarks (see [test/bench.js](https://github.com/GoalSmashers/clean-css/blob/master/test/bench.js) for details) -* `npm run check` to check JS sources with [JSHint](https://github.com/jshint/jshint/) -* `npm test` for the test suite - -## How to contribute to clean-css? - -1. Fork it. -2. Add test(s) veryfying the problem. -3. Fix the problem. -4. Make sure all tests still pass (`npm test`). -5. Make sure your code doesn't break style rules (`npm run check`). -6. Send a PR. - -If you wonder where to add tests, go for: - -* `test/unit-test.js` if it's a simple scenario -* `test/data/...` if it's a complex scenario (just add two files, input and expected output) -* `test/binary-test.js` if it's related to `bin/cleancss` binary -* `test/module-test.js` if it's related to importing `clean-css` as a module -* `test/protocol-imports-test.js` if it fixes anything related to protocol `@import`s - -## Tips & Tricks - -### How to preserve a comment block? - -Use the `/*!` notation instead of the standard one `/*`: - -```css -/*! - Important comments included in minified output. -*/ -``` - -### How to rebase relative image URLs - -Clean-css will handle it automatically for you (since version 1.1) in the following cases: - -* When using the CLI: - 1. Use an output path via `-o`/`--output` to rebase URLs as relative to the output file. - 2. Use a root path via `-r`/`--root` to rebase URLs as absolute from the given root path. - 3. If you specify both then `-r`/`--root` takes precendence. -* When using clean-css as a library: - 1. Use a combination of `relativeTo` and `target` options for relative rebase (same as 1 in CLI). - 2. Use a combination of `relativeTo` and `root` options for absolute rebase (same as 2 in CLI). - 3. `root` takes precendence over `target` as in CLI. - -## Acknowledgments - -* Vincent Voyer ([@vvo](https://github.com/vvo)) for a patch with better - empty element regex and for inspiring us to do many performance improvements - in 0.4 release. -* Isaac ([@facelessuser](https://github.com/facelessuser)) for pointing out - a flaw in clean-css' stateless mode. -* Jan Michael Alonzo ([@jmalonzo](https://github.com/jmalonzo)) for a patch - removing node.js' old `sys` package. -* [@XhmikosR](https://github.com/XhmikosR) for suggesting new features - (option to remove special comments and strip out URLs quotation) and - pointing out numerous improvements (JSHint, media queries). -* Anthony Barre ([@abarre](https://github.com/abarre)) for improvements to - `@import` processing, namely introducing the `--skip-import` / - `processImport` options. -* Simon Altschuler ([@altschuler](https://github.com/altschuler)) for fixing - `@import` processing inside comments. - -## License - -Clean-css is released under the [MIT License](https://github.com/GoalSmashers/clean-css/blob/master/LICENSE). diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/bin/cleancss b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/bin/cleancss deleted file mode 100755 index a093926e..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/bin/cleancss +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env node - -/* jshint latedef: false */ - -var util = require('util'); -var fs = require('fs'); -var path = require('path'); -var CleanCSS = require('../index'); - -var commands = require('commander'); - -var packageConfig = fs.readFileSync(path.join(path.dirname(fs.realpathSync(process.argv[1])), '../package.json')); -var buildVersion = JSON.parse(packageConfig).version; - -var isWindows = process.platform == 'win32'; - -// Specify commander options to parse command line params correctly -commands - .version(buildVersion, '-v, --version') - .usage('[options] <source-file>') - .option('-b, --keep-line-breaks', 'Keep line breaks') - .option('--s0', 'Remove all special comments, i.e. /*! comment */') - .option('--s1', 'Remove all special comments but the first one') - .option('-r, --root [root-path]', 'Set a root path to which resolve absolute @import rules') - .option('-o, --output [output-file]', 'Use [output-file] as output instead of STDOUT') - .option('-s, --skip-import', 'Disable @import processing') - .option('--skip-rebase', 'Disable URLs rebasing') - .option('--skip-advanced', 'Disable advanced optimizations - selector & property merging, reduction, etc.') - .option('--selectors-merge-mode [ie8|*]', 'DEPRECATED: Use --compatibility switch') - .option('-c, --compatibility [ie7|ie8]', 'Force compatibility mode') - .option('-t, --timeout [seconds]', 'Per connection timeout when fetching remote @imports (defaults to 5 seconds)') - .option('-d, --debug', 'Shows debug information (minification time & compression efficiency)'); - -commands.on('--help', function() { - util.puts(' Examples:\n'); - util.puts(' %> cleancss one.css'); - util.puts(' %> cleancss -o one-min.css one.css'); - if (isWindows) { - util.puts(' %> type one.css two.css three.css | cleancss -o merged-and-minified.css'); - } else { - util.puts(' %> cat one.css two.css three.css | cleancss -o merged-and-minified.css'); - util.puts(' %> cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz'); - } - util.puts(''); - process.exit(); -}); - -commands.parse(process.argv); - -var options = { - source: null, - target: null -}; -var cleanOptions = {}; -var fromStdin = !process.env.__DIRECT__ && !process.stdin.isTTY; - -// If no sensible data passed in just print help and exit -if (!fromStdin && commands.args.length === 0) { - commands.outputHelp(); - return 0; -} - -// Now coerce commands into CleanCSS configuration... -if (commands.output) - cleanOptions.target = options.target = commands.output; -if (commands.keepLineBreaks) - cleanOptions.keepBreaks = true; -if (commands.s1) - cleanOptions.keepSpecialComments = 1; -if (commands.s0) - cleanOptions.keepSpecialComments = 0; -if (commands.root) - cleanOptions.root = commands.root; -if (commands.skipImport) - cleanOptions.processImport = false; -if (commands.skipRebase) - cleanOptions.noRebase = true; -if (commands.skipAdvanced) - cleanOptions.noAdvanced = true; -if (commands.compatibility) - cleanOptions.compatibility = commands.compatibility; -if (commands.selectorsMergeMode) { - console.warn('--selectors-merge-mode is deprecated and will be removed in clean-css 2.2. Please use --compatibility %s switch instead.', commands.selectorsMergeMode); - cleanOptions.compatibility = commands.selectorsMergeMode; -} -if (commands.debug) - cleanOptions.debug = true; -if (commands.timeout) - cleanOptions.inliner = { timeout: parseFloat(commands.timeout) * 1000 }; -if (commands.args.length > 0) { - var source = commands.args[0]; - options.source = source; - cleanOptions.relativeTo = path.dirname(path.resolve(source)); -} - -// ... and do the magic! -if (options.source) { - fs.readFile(options.source, 'utf8', function(error, data) { - if (error) - throw error; - minify(data); - }); -} else { - var stdin = process.openStdin(); - stdin.setEncoding('utf-8'); - var data = ''; - stdin.on('data', function(chunk) { - data += chunk; - }); - stdin.on('end', function() { - minify(data); - }); -} - -function minify(data) { - new CleanCSS(cleanOptions).minify(data, function(errors, minified) { - if (cleanOptions.debug) { - console.error('Original: %d bytes', this.stats.originalSize); - console.error('Minified: %d bytes', this.stats.minifiedSize); - console.error('Efficiency: %d%', ~~(this.stats.efficiency * 10000) / 100.0); - console.error('Time spent: %dms', this.stats.timeSpent); - } - - outputFeedback(this.errors, true); - outputFeedback(this.warnings); - - if (this.errors.length > 0) - process.exit(1); - - output(minified); - }); -} - -function output(minified) { - if (options.target) - fs.writeFileSync(options.target, minified, 'utf8'); - else - process.stdout.write(minified); -} - -function outputFeedback(messages, isError) { - var prefix = isError ? '\x1B[31mERROR\x1B[39m:' : 'WARNING:'; - - messages.forEach(function(message) { - console.error('%s %s', prefix, message); - }); -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/index.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/index.js deleted file mode 100644 index d7b05030..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/clean'); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/clean.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/clean.js deleted file mode 100644 index 3a1b73fd..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/clean.js +++ /dev/null @@ -1,403 +0,0 @@ -/** - * Clean-css - https://github.com/GoalSmashers/clean-css - * Released under the terms of MIT license - * - * Copyright (C) 2011-2014 GoalSmashers.com - */ - -/* jshint latedef: false */ - -var ColorShortener = require('./colors/shortener'); -var ColorHSLToHex = require('./colors/hsl-to-hex'); -var ColorRGBToHex = require('./colors/rgb-to-hex'); -var ColorLongToShortHex = require('./colors/long-to-short-hex'); - -var ShorthandNotations = require('./properties/shorthand-notations'); -var ImportInliner = require('./imports/inliner'); -var UrlRebase = require('./images/url-rebase'); -var EmptyRemoval = require('./selectors/empty-removal'); - -var CommentsProcessor = require('./text/comments'); -var ExpressionsProcessor = require('./text/expressions'); -var FreeTextProcessor = require('./text/free'); -var UrlsProcessor = require('./text/urls'); - -var SelectorsOptimizer = require('./selectors/optimizer'); - -var CleanCSS = module.exports = function CleanCSS(options) { - options = options || {}; - - // back compat - if (!(this instanceof CleanCSS)) - return new CleanCSS(options); - - options.keepBreaks = options.keepBreaks || false; - - //active by default - if (undefined === options.processImport) - options.processImport = true; - - if (options.selectorsMergeMode) { - console.warn('selectorsMergeMode is deprecated and will be removed in clean-css 2.2. Please use compatibility: \'%s\' option instead.', options.selectorsMergeMode); - options.compatibility = options.selectorsMergeMode; - } - - this.options = options; - this.stats = {}; - this.context = { - errors: [], - warnings: [], - debug: options.debug - }; - this.errors = this.context.errors; - this.warnings = this.context.warnings; - this.lineBreak = process.platform == 'win32' ? '\r\n' : '\n'; -}; - -CleanCSS.prototype.minify = function(data, callback) { - var options = this.options; - - if (Buffer.isBuffer(data)) - data = data.toString(); - - if (options.processImport) { - // inline all imports - var self = this; - var runner = callback ? - process.nextTick : - function(callback) { return callback(); }; - - return runner(function() { - return new ImportInliner(self.context, options.inliner).process(data, { - localOnly: !callback, - root: options.root || process.cwd(), - relativeTo: options.relativeTo, - whenDone: function(data) { - return minify.call(self, data, callback); - } - }); - }); - } else { - return minify.call(this, data, callback); - } -}; - -var minify = function(data, callback) { - var startedAt; - var stats = this.stats; - var options = this.options; - var context = this.context; - var lineBreak = this.lineBreak; - - var commentsProcessor = new CommentsProcessor( - 'keepSpecialComments' in options ? options.keepSpecialComments : '*', - options.keepBreaks, - lineBreak - ); - var expressionsProcessor = new ExpressionsProcessor(); - var freeTextProcessor = new FreeTextProcessor(); - var urlsProcessor = new UrlsProcessor(); - - if (options.debug) { - this.startedAt = process.hrtime(); - this.stats.originalSize = data.length; - } - - var replace = function() { - if (typeof arguments[0] == 'function') - arguments[0](); - else - data = data.replace.apply(data, arguments); - }; - - // replace function - if (options.benchmark) { - var originalReplace = replace; - replace = function(pattern, replacement) { - var name = typeof pattern == 'function' ? - /function (\w+)\(/.exec(pattern.toString())[1] : - pattern; - - var start = process.hrtime(); - originalReplace(pattern, replacement); - - var itTook = process.hrtime(start); - console.log('%d ms: ' + name, 1000 * itTook[0] + itTook[1] / 1000000); - }; - } - - if (options.debug) { - startedAt = process.hrtime(); - stats.originalSize = data.length; - } - - replace(function escapeComments() { - data = commentsProcessor.escape(data); - }); - - // replace all escaped line breaks - replace(/\\(\r\n|\n)/gm, ''); - - // strip parentheses in urls if possible (no spaces inside) - replace(/url\((['"])([^\)]+)['"]\)/g, function(match, quote, url) { - var unsafeDataURI = url.indexOf('data:') === 0 && url.match(/data:\w+\/[^;]+;base64,/) === null; - if (url.match(/[ \t]/g) !== null || unsafeDataURI) - return 'url(' + quote + url + quote + ')'; - else - return 'url(' + url + ')'; - }); - - // strip parentheses in animation & font names - replace(/(animation|animation\-name|font|font\-family):([^;}]+)/g, function(match, propertyName, def) { - if (def.indexOf('\'{') === 0) - return match; - - return propertyName + ':' + def.replace(/['"]([a-zA-Z][a-zA-Z\d\-_]+)['"]/g, '$1'); - }); - - // strip parentheses in @keyframes - replace(/@(\-moz\-|\-o\-|\-webkit\-)?keyframes ([^{]+)/g, function(match, prefix, name) { - prefix = prefix || ''; - return '@' + prefix + 'keyframes ' + (name.indexOf(' ') > -1 ? name : name.replace(/['"]/g, '')); - }); - - // IE shorter filters, but only if single (IE 7 issue) - replace(/progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\([^\)]+\))([;}'"])/g, function(match, filter, args, suffix) { - return filter.toLowerCase() + args + suffix; - }); - - replace(function escapeExpressions() { - data = expressionsProcessor.escape(data); - }); - - // strip parentheses in attribute values - replace(/\[([^\]]+)\]/g, function(match, content) { - var eqIndex = content.indexOf('='); - var singleQuoteIndex = content.indexOf('\''); - var doubleQuoteIndex = content.indexOf('"'); - if (eqIndex < 0 && singleQuoteIndex < 0 && doubleQuoteIndex < 0) - return match; - if (singleQuoteIndex === 0 || doubleQuoteIndex === 0) - return match; - - var key = content.substring(0, eqIndex); - var value = content.substring(eqIndex + 1, content.length); - - if (/^['"](?:[a-zA-Z][a-zA-Z\d\-_]+)['"]$/.test(value)) - return '[' + key + '=' + value.substring(1, value.length - 1) + ']'; - else - return match; - }); - - replace(function escapeFreeText() { - data = freeTextProcessor.escape(data); - }); - - replace(function escapeUrls() { - data = urlsProcessor.escape(data); - }); - - // whitespace inside attribute selectors brackets - replace(/\[([^\]]+)\]/g, function(match) { - return match.replace(/\s/g, ''); - }); - - // line breaks - replace(/[\r]?\n/g, ' '); - - // multiple whitespace - replace(/[\t ]+/g, ' '); - - // multiple semicolons (with optional whitespace) - replace(/;[ ]?;+/g, ';'); - - // multiple line breaks to one - replace(/ (?:\r\n|\n)/g, lineBreak); - replace(/(?:\r\n|\n)+/g, lineBreak); - - // remove spaces around selectors - replace(/ ([+~>]) /g, '$1'); - - // remove extra spaces inside content - replace(/([!\(\{\}:;=,\n]) /g, '$1'); - replace(/ ([!\)\{\};=,\n])/g, '$1'); - replace(/(?:\r\n|\n)\}/g, '}'); - replace(/([\{;,])(?:\r\n|\n)/g, '$1'); - replace(/ :([^\{\};]+)([;}])/g, ':$1$2'); - - // restore spaces inside IE filters (IE 7 issue) - replace(/progid:[^(]+\(([^\)]+)/g, function(match) { - return match.replace(/,/g, ', '); - }); - - // trailing semicolons - replace(/;\}/g, '}'); - - replace(function hsl2Hex() { - data = new ColorHSLToHex(data).process(); - }); - - replace(function rgb2Hex() { - data = new ColorRGBToHex(data).process(); - }); - - replace(function longToShortHex() { - data = new ColorLongToShortHex(data).process(); - }); - - replace(function shortenColors() { - data = new ColorShortener(data).process(); - }); - - // replace font weight with numerical value - replace(/(font\-weight|font):(normal|bold)([ ;\}!])(\w*)/g, function(match, property, weight, suffix, next) { - if (suffix == ' ' && next.length > 0 && !/[.\d]/.test(next)) - return match; - - if (weight == 'normal') - return property + ':400' + suffix + next; - else if (weight == 'bold') - return property + ':700' + suffix + next; - else - return match; - }); - - // minus zero to zero - replace(/(\s|:|,|\()\-0([^\.])/g, '$10$2'); - replace(/-0([,\)])/g, '0$1'); - - // zero(s) + value to value - replace(/(\s|:|,)0+([1-9])/g, '$1$2'); - - // round pixels to 2nd decimal place - replace(/\.(\d{3,})px/g, function(match, decimalPlaces) { - return '.' + Math.round(parseFloat('.' + decimalPlaces) * 100) + 'px'; - }); - - // .0 to 0 - replace(/(\D)\.0+(,|\}|\))/g, '$10$2'); - - // fraction zeros removal - replace(/\.([1-9]*)0+(\D)/g, function(match, nonZeroPart, suffix) { - return (nonZeroPart.length > 0 ? '.' : '') + nonZeroPart + suffix; - }); - - // zero + unit to zero - var units = ['px', 'em', 'ex', 'cm', 'mm', 'in', 'pt', 'pc', '%']; - if (['ie7', 'ie8'].indexOf(options.compatibility) == -1) - units.push('rem'); - - replace(new RegExp('(\\s|:|,)\\-?0(?:' + units.join('|') + ')', 'g'), '$1' + '0'); - replace(new RegExp('(\\s|:|,)\\-?(\\d)\\.(\\D)', 'g'), '$1$2$3'); - replace(new RegExp('rect\\(0(?:' + units.join('|') + ')', 'g'), 'rect(0'); - - // restore % in rgb/rgba and hsl/hsla - replace(/(rgb|rgba|hsl|hsla)\(([^\)]+)\)/g, function(match, colorFunction, colorDef) { - var tokens = colorDef.split(','); - var applies = colorFunction == 'hsl' || colorFunction == 'hsla' || tokens[0].indexOf('%') > -1; - if (!applies) - return match; - - if (tokens[1].indexOf('%') == -1) - tokens[1] += '%'; - if (tokens[2].indexOf('%') == -1) - tokens[2] += '%'; - return colorFunction + '(' + tokens.join(',') + ')'; - }); - - // none to 0 - replace(/outline:none/g, 'outline:0'); - - // background:none to background:0 0 - replace(/background:(?:none|transparent)([;}])/g, 'background:0 0$1'); - - // multiple zeros into one - replace(/box-shadow:0 0 0 0([^\.])/g, 'box-shadow:0 0$1'); - replace(/:0 0 0 0([^\.])/g, ':0$1'); - replace(/([: ,=\-])0\.(\d)/g, '$1.$2'); - - replace(function shorthandNotations() { - data = new ShorthandNotations(data).process(); - }); - - // restore rect(...) zeros syntax for 4 zeros - replace(/rect\(\s?0(\s|,)0[ ,]0[ ,]0\s?\)/g, 'rect(0$10$10$10)'); - - // remove universal selector when not needed (*#id, *.class etc) - replace(/\*([\.#:\[])/g, '$1'); - - // Restore spaces inside calc back - replace(/calc\([^\}]+\}/g, function(match) { - return match.replace(/\+/g, ' + '); - }); - - // remove space after (rgba|hsla) declaration - see #165 - replace(/(rgba|hsla)\(([^\)]+)\) /g, '$1($2)'); - - if (options.noAdvanced) { - if (options.keepBreaks) - replace(/\}/g, '}' + lineBreak); - } else { - replace(function optimizeSelectors() { - var mergeMode = ['ie7', 'ie8'].indexOf(options.compatibility) > -1 ? - options.compatibility : - '*'; - data = new SelectorsOptimizer(data, context, { - keepBreaks: options.keepBreaks, - lineBreak: lineBreak, - selectorsMergeMode: mergeMode, - compatibility: options.compatibility - }).process(); - }); - } - - replace(function restoreUrls() { - data = urlsProcessor.restore(data); - }); - replace(function rebaseUrls() { - data = options.noRebase ? data : new UrlRebase(options, context).process(data); - }); - replace(function restoreFreeText() { - data = freeTextProcessor.restore(data); - }); - replace(function restoreComments() { - data = commentsProcessor.restore(data); - }); - replace(function restoreExpressions() { - data = expressionsProcessor.restore(data); - }); - - // move first charset to the beginning - replace(function moveCharset() { - // get first charset in stylesheet - var match = data.match(/@charset [^;]+;/); - var firstCharset = match ? match[0] : null; - if (!firstCharset) - return; - - // reattach first charset and remove all subsequent - data = firstCharset + - (options.keepBreaks ? lineBreak : '') + - data.replace(new RegExp('@charset [^;]+;(' + lineBreak + ')?', 'g'), '').trim(); - }); - - if (options.noAdvanced) { - replace(function removeEmptySelectors() { - data = new EmptyRemoval(data).process(); - }); - } - - // trim spaces at beginning and end - data = data.trim(); - - if (options.debug) { - var elapsed = process.hrtime(startedAt); - stats.timeSpent = ~~(elapsed[0] * 1e3 + elapsed[1] / 1e6); - stats.efficiency = 1 - data.length / stats.originalSize; - stats.minifiedSize = data.length; - } - - return callback ? - callback.call(this, this.context.errors.length > 0 ? this.context.errors : null, data) : - data; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/hsl-to-hex.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/hsl-to-hex.js deleted file mode 100644 index 6bb50312..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/hsl-to-hex.js +++ /dev/null @@ -1,64 +0,0 @@ -module.exports = function HSLToHex(data) { - // HSL to RGB converter. Both methods adapted from: - // http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - var hslToRgb = function(h, s, l) { - var r, g, b; - - // normalize hue orientation b/w 0 and 360 degrees - h = h % 360; - if (h < 0) - h += 360; - h = ~~h / 360; - - if (s < 0) - s = 0; - else if (s > 100) - s = 100; - s = ~~s / 100; - - if (l < 0) - l = 0; - else if (l > 100) - l = 100; - l = ~~l / 100; - - if (s === 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 ? - l * (1 + s) : - l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1/3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1/3); - } - - return [~~(r * 255), ~~(g * 255), ~~(b * 255)]; - }; - - var hueToRgb = function(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1/6) return p + (q - p) * 6 * t; - if (t < 1/2) return q; - if (t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - }; - - return { - process: function() { - return data.replace(/hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/g, function(match, hue, saturation, lightness) { - var asRgb = hslToRgb(hue, saturation, lightness); - var redAsHex = asRgb[0].toString(16); - var greenAsHex = asRgb[1].toString(16); - var blueAsHex = asRgb[2].toString(16); - - return '#' + - ((redAsHex.length == 1 ? '0' : '') + redAsHex) + - ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) + - ((blueAsHex.length == 1 ? '0' : '') + blueAsHex); - }); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/long-to-short-hex.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/long-to-short-hex.js deleted file mode 100644 index 87fa31b2..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/long-to-short-hex.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = function LongToShortHex(data) { - return { - process: function() { - return data.replace(/([,: \(])#([0-9a-f]{6})/gi, function(match, prefix, color) { - if (color[0] == color[1] && color[2] == color[3] && color[4] == color[5]) - return prefix + '#' + color[0] + color[2] + color[4]; - else - return prefix + '#' + color; - }); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/rgb-to-hex.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/rgb-to-hex.js deleted file mode 100644 index acfbf011..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/rgb-to-hex.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = function RGBToHex(data) { - return { - process: function() { - return data.replace(/rgb\((\-?\d+),(\-?\d+),(\-?\d+)\)/g, function(match, red, green, blue) { - red = Math.max(0, Math.min(~~red, 255)); - green = Math.max(0, Math.min(~~green, 255)); - blue = Math.max(0, Math.min(~~blue, 255)); - - // Credit: Asen http://jsbin.com/UPUmaGOc/2/edit?js,console - return '#' + ('00000' + (red << 16 | green << 8 | blue).toString(16)).slice(-6); - }); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/shortener.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/shortener.js deleted file mode 100644 index 7476f09b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/colors/shortener.js +++ /dev/null @@ -1,174 +0,0 @@ -module.exports = function Shortener(data) { - var COLORS = { - aliceblue: '#f0f8ff', - antiquewhite: '#faebd7', - aqua: '#0ff', - aquamarine: '#7fffd4', - azure: '#f0ffff', - beige: '#f5f5dc', - bisque: '#ffe4c4', - black: '#000', - blanchedalmond: '#ffebcd', - blue: '#00f', - blueviolet: '#8a2be2', - brown: '#a52a2a', - burlywood: '#deb887', - cadetblue: '#5f9ea0', - chartreuse: '#7fff00', - chocolate: '#d2691e', - coral: '#ff7f50', - cornflowerblue: '#6495ed', - cornsilk: '#fff8dc', - crimson: '#dc143c', - cyan: '#0ff', - darkblue: '#00008b', - darkcyan: '#008b8b', - darkgoldenrod: '#b8860b', - darkgray: '#a9a9a9', - darkgreen: '#006400', - darkkhaki: '#bdb76b', - darkmagenta: '#8b008b', - darkolivegreen: '#556b2f', - darkorange: '#ff8c00', - darkorchid: '#9932cc', - darkred: '#8b0000', - darksalmon: '#e9967a', - darkseagreen: '#8fbc8f', - darkslateblue: '#483d8b', - darkslategray: '#2f4f4f', - darkturquoise: '#00ced1', - darkviolet: '#9400d3', - deeppink: '#ff1493', - deepskyblue: '#00bfff', - dimgray: '#696969', - dodgerblue: '#1e90ff', - firebrick: '#b22222', - floralwhite: '#fffaf0', - forestgreen: '#228b22', - fuchsia: '#f0f', - gainsboro: '#dcdcdc', - ghostwhite: '#f8f8ff', - gold: '#ffd700', - goldenrod: '#daa520', - gray: '#808080', - green: '#008000', - greenyellow: '#adff2f', - honeydew: '#f0fff0', - hotpink: '#ff69b4', - indianred: '#cd5c5c', - indigo: '#4b0082', - ivory: '#fffff0', - khaki: '#f0e68c', - lavender: '#e6e6fa', - lavenderblush: '#fff0f5', - lawngreen: '#7cfc00', - lemonchiffon: '#fffacd', - lightblue: '#add8e6', - lightcoral: '#f08080', - lightcyan: '#e0ffff', - lightgoldenrodyellow: '#fafad2', - lightgray: '#d3d3d3', - lightgreen: '#90ee90', - lightpink: '#ffb6c1', - lightsalmon: '#ffa07a', - lightseagreen: '#20b2aa', - lightskyblue: '#87cefa', - lightslategray: '#778899', - lightsteelblue: '#b0c4de', - lightyellow: '#ffffe0', - lime: '#0f0', - limegreen: '#32cd32', - linen: '#faf0e6', - magenta: '#ff00ff', - maroon: '#800000', - mediumaquamarine: '#66cdaa', - mediumblue: '#0000cd', - mediumorchid: '#ba55d3', - mediumpurple: '#9370db', - mediumseagreen: '#3cb371', - mediumslateblue: '#7b68ee', - mediumspringgreen: '#00fa9a', - mediumturquoise: '#48d1cc', - mediumvioletred: '#c71585', - midnightblue: '#191970', - mintcream: '#f5fffa', - mistyrose: '#ffe4e1', - moccasin: '#ffe4b5', - navajowhite: '#ffdead', - navy: '#000080', - oldlace: '#fdf5e6', - olive: '#808000', - olivedrab: '#6b8e23', - orange: '#ffa500', - orangered: '#ff4500', - orchid: '#da70d6', - palegoldenrod: '#eee8aa', - palegreen: '#98fb98', - paleturquoise: '#afeeee', - palevioletred: '#db7093', - papayawhip: '#ffefd5', - peachpuff: '#ffdab9', - peru: '#cd853f', - pink: '#ffc0cb', - plum: '#dda0dd', - powderblue: '#b0e0e6', - purple: '#800080', - red: '#f00', - rosybrown: '#bc8f8f', - royalblue: '#4169e1', - saddlebrown: '#8b4513', - salmon: '#fa8072', - sandybrown: '#f4a460', - seagreen: '#2e8b57', - seashell: '#fff5ee', - sienna: '#a0522d', - silver: '#c0c0c0', - skyblue: '#87ceeb', - slateblue: '#6a5acd', - slategray: '#708090', - snow: '#fffafa', - springgreen: '#00ff7f', - steelblue: '#4682b4', - tan: '#d2b48c', - teal: '#008080', - thistle: '#d8bfd8', - tomato: '#ff6347', - turquoise: '#40e0d0', - violet: '#ee82ee', - wheat: '#f5deb3', - white: '#fff', - whitesmoke: '#f5f5f5', - yellow: '#ff0', - yellowgreen: '#9acd32' - }; - - var toHex = {}; - var toName = {}; - - for (var name in COLORS) { - var color = COLORS[name]; - if (name.length < color.length) - toName[color] = name; - else - toHex[name] = color; - } - - return { - toHex: toHex, - toName: toName, - - // replace color name with hex values if shorter (or the other way around) - process: function() { - [toHex, toName].forEach(function(conversion) { - var pattern = '(' + Object.keys(conversion).join('|') + ')'; - var colorSwitcher = function(match, prefix, colorValue, suffix) { - return prefix + conversion[colorValue.toLowerCase()] + suffix; - }; - data = data.replace(new RegExp('([ :,\\(])' + pattern + '([;\\}!\\) ])', 'ig'), colorSwitcher); - data = data.replace(new RegExp('(,)' + pattern + '(,)', 'ig'), colorSwitcher); - }); - - return data; - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rebase.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rebase.js deleted file mode 100644 index 8d5c59b6..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rebase.js +++ /dev/null @@ -1,32 +0,0 @@ -var path = require('path'); - -var UrlRewriter = require('./url-rewriter'); - -module.exports = function UrlRebase(options, context) { - var process = function(data) { - var rebaseOpts = { - absolute: !!options.root, - relative: !options.root && !!options.target, - fromBase: options.relativeTo - }; - - if (!rebaseOpts.absolute && !rebaseOpts.relative) - return data; - - if (rebaseOpts.absolute && !!options.target) - context.warnings.push('Both \'root\' and output file given so rebasing URLs as absolute paths'); - - if (rebaseOpts.absolute) - rebaseOpts.toBase = path.resolve(options.root); - - if (rebaseOpts.relative) - rebaseOpts.toBase = path.resolve(path.dirname(options.target)); - - if (!rebaseOpts.fromBase || !rebaseOpts.toBase) - return data; - - return UrlRewriter.process(data, rebaseOpts); - }; - - return { process: process }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rewriter.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rewriter.js deleted file mode 100644 index af17d5ba..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/images/url-rewriter.js +++ /dev/null @@ -1,57 +0,0 @@ -var path = require('path'); -var url = require('url'); - -module.exports = { - process: function(data, options) { - var tempData = []; - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - - for (; nextEnd < data.length;) { - nextStart = data.indexOf('url(', nextEnd); - if (nextStart == -1) - break; - - nextEnd = data.indexOf(')', nextStart + 4); - if (nextEnd == -1) - break; - - tempData.push(data.substring(cursor, nextStart)); - var url = data.substring(nextStart + 4, nextEnd).replace(/['"]/g, ''); - tempData.push('url(' + this._rebased(url, options) + ')'); - cursor = nextEnd + 1; - } - - return tempData.length > 0 ? - tempData.join('') + data.substring(cursor, data.length) : - data; - }, - - _rebased: function(resource, options) { - var specialUrl = resource[0] == '/' || - resource.substring(resource.length - 4) == '.css' || - resource.indexOf('data:') === 0 || - /^https?:\/\//.exec(resource) !== null || - /__\w+__/.exec(resource) !== null; - var rebased; - - if (specialUrl) - return resource; - - if (/https?:\/\//.test(options.toBase)) - return url.resolve(options.toBase, resource); - - if (options.absolute) { - rebased = path - .resolve(path.join(options.fromBase, resource)) - .replace(options.toBase, ''); - } else { - rebased = path.relative(options.toBase, path.join(options.fromBase, resource)); - } - - return process.platform == 'win32' ? - rebased.replace(/\\/g, '/') : - rebased; - } -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/imports/inliner.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/imports/inliner.js deleted file mode 100644 index 7f2c1219..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/imports/inliner.js +++ /dev/null @@ -1,308 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var url = require('url'); - -var UrlRewriter = require('../images/url-rewriter'); - -var merge = function(source1, source2) { - var target = {}; - for (var key1 in source1) - target[key1] = source1[key1]; - for (var key2 in source2) - target[key2] = source2[key2]; - - return target; -}; - -module.exports = function Inliner(context, options) { - var defaultOptions = { - timeout: 5000, - request: {} - }; - var inlinerOptions = merge(defaultOptions, options || {}); - - var process = function(data, options) { - options._shared = options._shared || { - done: [], - left: [] - }; - var shared = options._shared; - - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - var isComment = commentScanner(data); - var afterContent = contentScanner(data); - - options.relativeTo = options.relativeTo || options.root; - options._baseRelativeTo = options._baseRelativeTo || options.relativeTo; - options.visited = options.visited || []; - - for (; nextEnd < data.length;) { - nextStart = data.indexOf('@import', cursor); - if (nextStart == -1) - break; - - if (isComment(nextStart)) { - cursor = nextStart + 1; - continue; - } - - nextEnd = data.indexOf(';', nextStart); - if (nextEnd == -1) { - cursor = data.length; - data = ''; - break; - } - - shared.done.push(data.substring(cursor, nextStart)); - shared.left.unshift([data.substring(nextEnd + 1), options]); - - return afterContent(nextStart) ? - processNext(options) : - inline(data, nextStart, nextEnd, options); - } - - // no @import matched in current data - shared.done.push(data); - return processNext(options); - }; - - var processNext = function(options) { - if (options._shared.left.length > 0) - return process.apply(null, options._shared.left.shift()); - else - return options.whenDone(options._shared.done.join('')); - }; - - var commentScanner = function(data) { - var commentRegex = /(\/\*(?!\*\/)[\s\S]*?\*\/)/; - var lastStartIndex = 0; - var lastEndIndex = 0; - var noComments = false; - - // test whether an index is located within a comment - var scanner = function(idx) { - var comment; - var localStartIndex = 0; - var localEndIndex = 0; - var globalStartIndex = 0; - var globalEndIndex = 0; - - // return if we know there are no more comments - if (noComments) - return false; - - // idx can be still within last matched comment (many @import statements inside one comment) - if (idx > lastStartIndex && idx < lastEndIndex) - return true; - - comment = data.match(commentRegex); - - if (!comment) { - noComments = true; - return false; - } - - // get the indexes relative to the current data chunk - lastStartIndex = localStartIndex = comment.index; - localEndIndex = localStartIndex + comment[0].length; - - // calculate the indexes relative to the full original data - globalEndIndex = localEndIndex + lastEndIndex; - globalStartIndex = globalEndIndex - comment[0].length; - - // chop off data up to and including current comment block - data = data.substring(localEndIndex); - lastEndIndex = globalEndIndex; - - // re-run scan if comment ended before the idx - if (globalEndIndex < idx) - return scanner(idx); - - return globalEndIndex > idx && idx > globalStartIndex; - }; - - return scanner; - }; - - var contentScanner = function(data) { - var isComment = commentScanner(data); - var firstContentIdx = -1; - while (true) { - firstContentIdx = data.indexOf('{', firstContentIdx + 1); - if (firstContentIdx == -1 || !isComment(firstContentIdx)) - break; - } - - return function(idx) { - return firstContentIdx > -1 ? - idx > firstContentIdx : - false; - }; - }; - - var inline = function(data, nextStart, nextEnd, options) { - var importDeclaration = data - .substring(data.indexOf(' ', nextStart) + 1, nextEnd) - .trim(); - - var viaUrl = importDeclaration.indexOf('url(') === 0; - var urlStartsAt = viaUrl ? 4 : 0; - var isQuoted = /^['"]/.exec(importDeclaration.substring(urlStartsAt, urlStartsAt + 2)); - var urlEndsAt = isQuoted ? - importDeclaration.indexOf(isQuoted[0], urlStartsAt + 1) : - importDeclaration.split(' ')[0].length; - - var importedFile = importDeclaration - .substring(urlStartsAt, urlEndsAt) - .replace(/['"]/g, '') - .replace(/\)$/, '') - .trim(); - - var mediaQuery = importDeclaration - .substring(urlEndsAt + 1) - .replace(/^\)/, '') - .trim(); - - var isRemote = options.isRemote || - /^(http|https):\/\//.test(importedFile) || - /^\/\//.test(importedFile); - - if (options.localOnly && isRemote) { - context.warnings.push('Ignoring remote @import declaration of "' + importedFile + '" as no callback given.'); - restoreImport(importedFile, mediaQuery, options); - - return processNext(options); - } - - var method = isRemote ? inlineRemoteResource : inlineLocalResource; - return method(importedFile, mediaQuery, options); - }; - - var inlineRemoteResource = function(importedFile, mediaQuery, options) { - var importedUrl = /^https?:\/\//.test(importedFile) ? - importedFile : - url.resolve(options.relativeTo, importedFile); - - if (importedUrl.indexOf('//') === 0) - importedUrl = 'http:' + importedUrl; - - if (options.visited.indexOf(importedUrl) > -1) - return processNext(options); - - - if (context.debug) - console.error('Inlining remote stylesheet: ' + importedUrl); - - options.visited.push(importedUrl); - - var get = importedUrl.indexOf('http://') === 0 ? - http.get : - https.get; - - var timedOut = false; - var handleError = function(message) { - context.errors.push('Broken @import declaration of "' + importedUrl + '" - ' + message); - restoreImport(importedUrl, mediaQuery, options); - - processNext(options); - }; - var requestOptions = merge(url.parse(importedUrl), inlinerOptions.request); - - get(requestOptions, function(res) { - if (res.statusCode < 200 || res.statusCode > 399) { - return handleError('error ' + res.statusCode); - } else if (res.statusCode > 299) { - var movedUrl = url.resolve(importedUrl, res.headers.location); - return inlineRemoteResource(movedUrl, mediaQuery, options); - } - - var chunks = []; - var parsedUrl = url.parse(importedUrl); - res.on('data', function(chunk) { - chunks.push(chunk.toString()); - }); - res.on('end', function() { - var importedData = chunks.join(''); - importedData = UrlRewriter.process(importedData, { toBase: importedUrl }); - - if (mediaQuery.length > 0) - importedData = '@media ' + mediaQuery + '{' + importedData + '}'; - - process(importedData, { - isRemote: true, - relativeTo: parsedUrl.protocol + '//' + parsedUrl.host, - _shared: options._shared, - whenDone: options.whenDone, - visited: options.visited - }); - }); - }) - .on('error', function(res) { - handleError(res.message); - }) - .on('timeout', function() { - // FIX: node 0.8 fires this event twice - if (timedOut) - return; - - handleError('timeout'); - timedOut = true; - }) - .setTimeout(inlinerOptions.timeout); - }; - - var inlineLocalResource = function(importedFile, mediaQuery, options) { - var relativeTo = importedFile[0] == '/' ? - options.root : - options.relativeTo; - - var fullPath = path.resolve(path.join(relativeTo, importedFile)); - - if (!fs.existsSync(fullPath) || !fs.statSync(fullPath).isFile()) { - context.errors.push('Broken @import declaration of "' + importedFile + '"'); - return processNext(options); - } - - if (options.visited.indexOf(fullPath) > -1) - return processNext(options); - - - if (context.debug) - console.error('Inlining local stylesheet: ' + fullPath); - - options.visited.push(fullPath); - - var importedData = fs.readFileSync(fullPath, 'utf8'); - var importRelativeTo = path.dirname(fullPath); - importedData = UrlRewriter.process(importedData, { - relative: true, - fromBase: importRelativeTo, - toBase: options._baseRelativeTo - }); - - if (mediaQuery.length > 0) - importedData = '@media ' + mediaQuery + '{' + importedData + '}'; - - return process(importedData, { - root: options.root, - relativeTo: importRelativeTo, - _baseRelativeTo: options._baseRelativeTo, - _shared: options._shared, - visited: options.visited, - whenDone: options.whenDone, - localOnly: options.localOnly - }); - }; - - var restoreImport = function(importedUrl, mediaQuery, options) { - var restoredImport = '@import url(' + importedUrl + ')' + (mediaQuery.length > 0 ? ' ' + mediaQuery : '') + ';'; - options._shared.done.push(restoredImport); - }; - - // Inlines all imports taking care of repetitions, unknown files, and circular dependencies - return { process: process }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/optimizer.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/optimizer.js deleted file mode 100644 index 2b5698d5..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/optimizer.js +++ /dev/null @@ -1,244 +0,0 @@ -module.exports = function Optimizer(compatibility) { - var overridable = { - 'animation-delay': ['animation'], - 'animation-direction': ['animation'], - 'animation-duration': ['animation'], - 'animation-fill-mode': ['animation'], - 'animation-iteration-count': ['animation'], - 'animation-name': ['animation'], - 'animation-play-state': ['animation'], - 'animation-timing-function': ['animation'], - '-moz-animation-delay': ['-moz-animation'], - '-moz-animation-direction': ['-moz-animation'], - '-moz-animation-duration': ['-moz-animation'], - '-moz-animation-fill-mode': ['-moz-animation'], - '-moz-animation-iteration-count': ['-moz-animation'], - '-moz-animation-name': ['-moz-animation'], - '-moz-animation-play-state': ['-moz-animation'], - '-moz-animation-timing-function': ['-moz-animation'], - '-o-animation-delay': ['-o-animation'], - '-o-animation-direction': ['-o-animation'], - '-o-animation-duration': ['-o-animation'], - '-o-animation-fill-mode': ['-o-animation'], - '-o-animation-iteration-count': ['-o-animation'], - '-o-animation-name': ['-o-animation'], - '-o-animation-play-state': ['-o-animation'], - '-o-animation-timing-function': ['-o-animation'], - '-webkit-animation-delay': ['-webkit-animation'], - '-webkit-animation-direction': ['-webkit-animation'], - '-webkit-animation-duration': ['-webkit-animation'], - '-webkit-animation-fill-mode': ['-webkit-animation'], - '-webkit-animation-iteration-count': ['-webkit-animation'], - '-webkit-animation-name': ['-webkit-animation'], - '-webkit-animation-play-state': ['-webkit-animation'], - '-webkit-animation-timing-function': ['-webkit-animation'], - 'background-attachment': ['background'], - 'background-clip': ['background'], - 'background-color': ['background'], - 'background-image': ['background'], - 'background-origin': ['background'], - 'background-position': ['background'], - 'background-repeat': ['background'], - 'background-size': ['background'], - 'border-color': ['border'], - 'border-style': ['border'], - 'border-width': ['border'], - 'border-bottom': ['border'], - 'border-bottom-color': ['border-bottom', 'border-color', 'border'], - 'border-bottom-style': ['border-bottom', 'border-style', 'border'], - 'border-bottom-width': ['border-bottom', 'border-width', 'border'], - 'border-left': ['border'], - 'border-left-color': ['border-left', 'border-color', 'border'], - 'border-left-style': ['border-left', 'border-style', 'border'], - 'border-left-width': ['border-left', 'border-width', 'border'], - 'border-right': ['border'], - 'border-right-color': ['border-right', 'border-color', 'border'], - 'border-right-style': ['border-right', 'border-style', 'border'], - 'border-right-width': ['border-right', 'border-width', 'border'], - 'border-top': ['border'], - 'border-top-color': ['border-top', 'border-color', 'border'], - 'border-top-style': ['border-top', 'border-style', 'border'], - 'border-top-width': ['border-top', 'border-width', 'border'], - 'font-family': ['font'], - 'font-size': ['font'], - 'font-style': ['font'], - 'font-variant': ['font'], - 'font-weight': ['font'], - 'list-style-image': ['list'], - 'list-style-position': ['list'], - 'list-style-type': ['list'], - 'margin-bottom': ['margin'], - 'margin-left': ['margin'], - 'margin-right': ['margin'], - 'margin-top': ['margin'], - 'outline-color': ['outline'], - 'outline-style': ['outline'], - 'outline-width': ['outline'], - 'padding-bottom': ['padding'], - 'padding-left': ['padding'], - 'padding-right': ['padding'], - 'padding-top': ['padding'], - 'transition-delay': ['transition'], - 'transition-duration': ['transition'], - 'transition-property': ['transition'], - 'transition-timing-function': ['transition'], - '-moz-transition-delay': ['-moz-transition'], - '-moz-transition-duration': ['-moz-transition'], - '-moz-transition-property': ['-moz-transition'], - '-moz-transition-timing-function': ['-moz-transition'], - '-o-transition-delay': ['-o-transition'], - '-o-transition-duration': ['-o-transition'], - '-o-transition-property': ['-o-transition'], - '-o-transition-timing-function': ['-o-transition'], - '-webkit-transition-delay': ['-webkit-transition'], - '-webkit-transition-duration': ['-webkit-transition'], - '-webkit-transition-property': ['-webkit-transition'], - '-webkit-transition-timing-function': ['-webkit-transition'] - }; - - var IE_BACKSLASH_HACK = '\\9'; - - var overrides = {}; - for (var granular in overridable) { - for (var i = 0; i < overridable[granular].length; i++) { - var coarse = overridable[granular][i]; - var list = overrides[coarse]; - - if (list) - list.push(granular); - else - overrides[coarse] = [granular]; - } - } - - var tokenize = function(body) { - var tokens = body.split(';'); - var keyValues = []; - - if (tokens.length === 0 || (tokens.length == 1 && tokens[0].indexOf(IE_BACKSLASH_HACK) == -1)) - return; - - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - if (token === '') - continue; - - var firstColon = token.indexOf(':'); - keyValues.push([ - token.substring(0, firstColon), - token.substring(firstColon + 1), - token.indexOf('!important') > -1, - token.indexOf(IE_BACKSLASH_HACK, firstColon + 1) > 0 - ]); - } - - return keyValues; - }; - - var optimize = function(tokens, allowAdjacent) { - var merged = []; - var properties = []; - var lastProperty = null; - var rescanTrigger = {}; - - var removeOverridenBy = function(property, isImportant) { - var overrided = overrides[property]; - for (var i = 0, l = overrided.length; i < l; i++) { - for (var j = 0; j < properties.length; j++) { - if (properties[j] != overrided[i] || (merged[j][2] && !isImportant)) - continue; - - merged.splice(j, 1); - properties.splice(j, 1); - j -= 1; - } - } - }; - - var mergeablePosition = function(position) { - if (allowAdjacent === false || allowAdjacent === true) - return allowAdjacent; - - return allowAdjacent.indexOf(position) > -1; - }; - - tokensLoop: - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - var property = token[0]; - var isImportant = token[2]; - var isIEHack = token[3]; - var _property = (property == '-ms-filter' || property == 'filter') ? - (lastProperty == 'background' || lastProperty == 'background-image' ? lastProperty : property) : - property; - var toOverridePosition = 0; - - if (!compatibility && isIEHack) - continue; - - // comment is necessary - we assume that if two properties are one after another - // then it is intentional way of redefining property which may not be widely supported - // e.g. a{display:inline-block;display:-moz-inline-box} - // however if `mergeablePosition` yields true then the rule does not apply - // (e.g merging two adjacent selectors: `a{display:block}a{display:block}`) - if (_property != lastProperty || mergeablePosition(i)) { - while (true) { - toOverridePosition = properties.indexOf(_property, toOverridePosition); - if (toOverridePosition == -1) - break; - - var lastToken = merged[toOverridePosition]; - var wasIEHack = lastToken[3]; - - if (merged[toOverridePosition][2] && !isImportant) - continue tokensLoop; - - if (compatibility && !wasIEHack && isIEHack) - break; - - merged.splice(toOverridePosition, 1); - properties.splice(toOverridePosition, 1); - } - } - - merged.push(token); - properties.push(_property); - - // certain properties (see values of `overridable`) should trigger removal of - // more granular properties (see keys of `overridable`) - if (rescanTrigger[_property]) - removeOverridenBy(_property, isImportant); - - // add rescan triggers - if certain property appears later in the list a rescan needs - // to be triggered, e.g 'border-top' triggers a rescan after 'border-top-width' and - // 'border-top-color' as they can be removed - for (var j = 0, list = overridable[_property] || [], m = list.length; j < m; j++) - rescanTrigger[list[j]] = true; - - lastProperty = _property; - } - - return merged; - }; - - var rebuild = function(tokens) { - var flat = []; - - for (var i = 0, l = tokens.length; i < l; i++) { - flat.push(tokens[i][0] + ':' + tokens[i][1]); - } - - return flat.join(';'); - }; - - return { - process: function(body, allowAdjacent) { - var tokens = tokenize(body); - if (!tokens) - return body; - - var optimized = optimize(tokens, allowAdjacent); - return rebuild(optimized); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/shorthand-notations.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/shorthand-notations.js deleted file mode 100644 index f29b2d36..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/properties/shorthand-notations.js +++ /dev/null @@ -1,50 +0,0 @@ -module.exports = function ShorthandNotations(data) { - // shorthand notations - var shorthandRegex = function(repeats, hasSuffix) { - var pattern = '(padding|margin|border\\-width|border\\-color|border\\-style|border\\-radius):'; - for (var i = 0; i < repeats; i++) - pattern += '([\\d\\w\\.%#\\(\\),]+)' + (i < repeats - 1 ? ' ' : ''); - return new RegExp(pattern + (hasSuffix ? '([;}])' : ''), 'g'); - }; - - var from4Values = function() { - return data.replace(shorthandRegex(4), function(match, property, size1, size2, size3, size4) { - if (size1 === size2 && size1 === size3 && size1 === size4) - return property + ':' + size1; - else if (size1 === size3 && size2 === size4) - return property + ':' + size1 + ' ' + size2; - else if (size2 === size4) - return property + ':' + size1 + ' ' + size2 + ' ' + size3; - else - return match; - }); - }; - - var from3Values = function() { - return data.replace(shorthandRegex(3, true), function(match, property, size1, size2, size3, suffix) { - if (size1 === size2 && size1 === size3) - return property + ':' + size1 + suffix; - else if (size1 === size3) - return property + ':' + size1 + ' ' + size2 + suffix; - else - return match; - }); - }; - - var from2Values = function() { - return data.replace(shorthandRegex(2, true), function(match, property, size1, size2, suffix) { - if (size1 === size2) - return property + ':' + size1 + suffix; - else - return match; - }); - }; - - return { - process: function() { - data = from4Values(); - data = from3Values(); - return from2Values(); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/empty-removal.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/empty-removal.js deleted file mode 100644 index 7af188d4..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/empty-removal.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = function EmptyRemoval(data) { - var stripEmpty = function(cssData) { - var tempData = []; - var nextEmpty = 0; - var cursor = 0; - - for (; nextEmpty < cssData.length;) { - nextEmpty = cssData.indexOf('{}', cursor); - if (nextEmpty == -1) - break; - - var startsAt = nextEmpty - 1; - while (cssData[startsAt] && cssData[startsAt] != '}' && cssData[startsAt] != '{') - startsAt--; - - tempData.push(cssData.substring(cursor, startsAt + 1)); - cursor = nextEmpty + 2; - } - - return tempData.length > 0 ? - stripEmpty(tempData.join('') + cssData.substring(cursor, cssData.length)) : - cssData; - }; - - return { - process: function() { - return stripEmpty(data); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/optimizer.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/optimizer.js deleted file mode 100644 index 2db5a9e1..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/optimizer.js +++ /dev/null @@ -1,295 +0,0 @@ -var Tokenizer = require('./tokenizer'); -var PropertyOptimizer = require('../properties/optimizer'); - -module.exports = function Optimizer(data, context, options) { - var specialSelectors = { - '*': /\-(moz|ms|o|webkit)\-/, - 'ie8': /(\-moz\-|\-ms\-|\-o\-|\-webkit\-|:root|:nth|:first\-of|:last|:only|:empty|:target|:checked|::selection|:enabled|:disabled|:not)/, - 'ie7': /(\-moz\-|\-ms\-|\-o\-|\-webkit\-|:focus|:before|:after|:root|:nth|:first\-of|:last|:only|:empty|:target|:checked|::selection|:enabled|:disabled|:not)/ - }; - - var minificationsMade = []; - - var propertyOptimizer = new PropertyOptimizer(options.compatibility); - - var cleanUpSelector = function(selectors) { - if (selectors.indexOf(',') == -1) - return selectors; - - var plain = []; - var cursor = 0; - var lastComma = 0; - var noBrackets = selectors.indexOf('(') == -1; - var withinBrackets = function(idx) { - if (noBrackets) - return false; - - var previousOpening = selectors.lastIndexOf('(', idx); - var previousClosing = selectors.lastIndexOf(')', idx); - - if (previousOpening == -1) - return false; - if (previousClosing > 0 && previousClosing < idx) - return false; - - return true; - }; - - while (true) { - var nextComma = selectors.indexOf(',', cursor + 1); - var selector; - - if (nextComma === -1) { - nextComma = selectors.length; - } else if (withinBrackets(nextComma)) { - cursor = nextComma + 1; - continue; - } - selector = selectors.substring(lastComma, nextComma); - lastComma = cursor = nextComma + 1; - - if (plain.indexOf(selector) == -1) - plain.push(selector); - - if (nextComma === selectors.length) - break; - } - - return plain.sort().join(','); - }; - - var isSpecial = function(selector) { - return specialSelectors[options.selectorsMergeMode || '*'].test(selector); - }; - - var removeDuplicates = function(tokens) { - var matched = {}; - var forRemoval = []; - - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - if (typeof token == 'string' || token.block) - continue; - - var id = token.body + '@' + token.selector; - var alreadyMatched = matched[id]; - - if (alreadyMatched) { - forRemoval.push(alreadyMatched[0]); - alreadyMatched.unshift(i); - } else { - matched[id] = [i]; - } - } - - forRemoval = forRemoval.sort(function(a, b) { - return a > b ? 1 : -1; - }); - - for (var j = 0, n = forRemoval.length; j < n; j++) { - tokens.splice(forRemoval[j] - j, 1); - } - - minificationsMade.unshift(forRemoval.length > 0); - }; - - var mergeAdjacent = function(tokens) { - var forRemoval = []; - var lastToken = { selector: null, body: null }; - - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - if (typeof token == 'string' || token.block) - continue; - - if (token.selector == lastToken.selector) { - var joinAt = [lastToken.body.split(';').length]; - lastToken.body = propertyOptimizer.process(lastToken.body + ';' + token.body, joinAt); - forRemoval.push(i); - } else if (token.body == lastToken.body && !isSpecial(token.selector) && !isSpecial(lastToken.selector)) { - lastToken.selector = cleanUpSelector(lastToken.selector + ',' + token.selector); - forRemoval.push(i); - } else { - lastToken = token; - } - } - - for (var j = 0, m = forRemoval.length; j < m; j++) { - tokens.splice(forRemoval[j] - j, 1); - } - - minificationsMade.unshift(forRemoval.length > 0); - }; - - var reduceNonAdjacent = function(tokens) { - var matched = {}; - var matchedMoreThanOnce = []; - var partiallyReduced = []; - var reduced = false; - var token, selector, selectors; - - for (var i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - selector = token.selector; - - if (typeof token == 'string' || token.block) - continue; - - selectors = selector.indexOf(',') > 0 && !isSpecial(selector) ? - selector.split(',').concat(selector) : - [selector]; - - for (var j = 0, m = selectors.length; j < m; j++) { - var sel = selectors[j]; - var alreadyMatched = matched[sel]; - if (alreadyMatched) { - if (alreadyMatched.length == 1) - matchedMoreThanOnce.push(sel); - alreadyMatched.push(i); - } else { - matched[sel] = [i]; - } - } - } - - matchedMoreThanOnce.forEach(function(selector) { - var matchPositions = matched[selector]; - var bodies = []; - var joinsAt = []; - var j; - - for (j = 0, m = matchPositions.length; j < m; j++) { - var body = tokens[matchPositions[j]].body; - bodies.push(body); - joinsAt.push((joinsAt[j - 1] || 0) + body.split(';').length); - } - - var optimizedBody = propertyOptimizer.process(bodies.join(';'), joinsAt); - var optimizedTokens = optimizedBody.split(';'); - - j = optimizedTokens.length - 1; - var currentMatch = matchPositions.length - 1; - - while (currentMatch >= 0) { - if (bodies[currentMatch].indexOf(optimizedTokens[j]) > -1 && j > -1) { - j -= 1; - continue; - } - - var tokenIndex = matchPositions[currentMatch]; - var token = tokens[tokenIndex]; - var newBody = optimizedTokens.splice(j + 1); - var reducedBody = []; - for (var k = 0, n = newBody.length; k < n; k++) { - if (newBody[k].length > 0) - reducedBody.push(newBody[k]); - } - - if (token.selector == selector) { - var joinedBody = reducedBody.join(';'); - reduced = reduced || (token.body != joinedBody); - token.body = joinedBody; - } else { - token._partials = token._partials || []; - token._partials.push(reducedBody.join(';')); - - if (partiallyReduced.indexOf(tokenIndex) == -1) - partiallyReduced.push(tokenIndex); - } - - currentMatch -= 1; - } - }); - - // process those tokens which were partially reduced - // i.e. at least one of token's selectors saw reduction - // if all selectors were reduced to same value we can override it - for (i = 0, l = partiallyReduced.length; i < l; i++) { - token = tokens[partiallyReduced[i]]; - - if (token.body != token._partials[0] && token._partials.length == token.selector.split(',').length) { - var newBody = token._partials[0]; - for (var k = 1, n = token._partials.length; k < n; k++) { - if (token._partials[k] != newBody) - break; - } - - if (k == n) { - token.body = newBody; - reduced = reduced || true; - } - } - - delete token._partials; - } - - minificationsMade.unshift(reduced); - }; - - var optimize = function(tokens) { - var noChanges = function() { - return minificationsMade.length > 4 && - minificationsMade[0] === false && - minificationsMade[1] === false; - }; - - tokens = Array.isArray(tokens) ? tokens : [tokens]; - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - if (token.selector) { - token.selector = cleanUpSelector(token.selector); - token.body = propertyOptimizer.process(token.body, false); - } else if (token.block) { - optimize(token.body); - } - } - - // Run until 2 last operations do not yield any changes - minificationsMade = []; - while (true) { - if (noChanges()) - break; - removeDuplicates(tokens); - - if (noChanges()) - break; - mergeAdjacent(tokens); - - if (noChanges()) - break; - reduceNonAdjacent(tokens); - } - }; - - var rebuild = function(tokens) { - var rebuilt = []; - - tokens = Array.isArray(tokens) ? tokens : [tokens]; - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - if (typeof token == 'string') { - rebuilt.push(token); - continue; - } - - var name = token.block || token.selector; - var body = token.block ? rebuild(token.body) : token.body; - - if (body.length > 0) - rebuilt.push(name + '{' + body + '}'); - } - - return rebuilt.join(options.keepBreaks ? options.lineBreak : ''); - }; - - return { - process: function() { - var tokenized = new Tokenizer(data, context).process(); - optimize(tokenized); - return rebuild(tokenized); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/tokenizer.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/tokenizer.js deleted file mode 100644 index ec671b7b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/selectors/tokenizer.js +++ /dev/null @@ -1,169 +0,0 @@ -/* jshint latedef: false */ - -module.exports = function Tokenizer(data, minifyContext) { - var chunker = new Chunker(data, 128); - var chunk = chunker.next(); - var flatBlock = /^@(font\-face|page|\-ms\-viewport|\-o\-viewport|viewport)/; - - var whatsNext = function(context) { - var cursor = context.cursor; - var mode = context.mode; - var closest; - - if (chunk.length == context.cursor) { - if (chunker.isEmpty()) - return null; - - chunk = chunker.next(); - context.cursor = 0; - } - - if (mode == 'body') { - closest = chunk.indexOf('}', cursor); - return closest > -1 ? - [closest, 'bodyEnd'] : - null; - } - - var nextSpecial = chunk.indexOf('@', context.cursor); - var nextEscape = mode == 'top' ? chunk.indexOf('__ESCAPED_COMMENT_CLEAN_CSS', context.cursor) : -1; - var nextBodyStart = chunk.indexOf('{', context.cursor); - var nextBodyEnd = chunk.indexOf('}', context.cursor); - - closest = nextSpecial; - if (closest == -1 || (nextEscape > -1 && nextEscape < closest)) - closest = nextEscape; - if (closest == -1 || (nextBodyStart > -1 && nextBodyStart < closest)) - closest = nextBodyStart; - if (closest == -1 || (nextBodyEnd > -1 && nextBodyEnd < closest)) - closest = nextBodyEnd; - - if (closest == -1) - return; - if (nextEscape === closest) - return [closest, 'escape']; - if (nextBodyStart === closest) - return [closest, 'bodyStart']; - if (nextBodyEnd === closest) - return [closest, 'bodyEnd']; - if (nextSpecial === closest) - return [closest, 'special']; - }; - - var tokenize = function(context) { - var tokenized = []; - - context = context || { cursor: 0, mode: 'top' }; - - while (true) { - var next = whatsNext(context); - if (!next) { - var whatsLeft = chunk.substring(context.cursor); - if (whatsLeft.length > 0) { - tokenized.push(whatsLeft); - context.cursor += whatsLeft.length; - } - break; - } - - var nextSpecial = next[0]; - var what = next[1]; - var nextEnd; - var oldMode; - - if (what == 'special') { - var fragment = chunk.substring(nextSpecial, context.cursor + '@font-face'.length + 1); - var isSingle = fragment.indexOf('@import') === 0 || fragment.indexOf('@charset') === 0; - if (isSingle) { - nextEnd = chunk.indexOf(';', nextSpecial + 1); - tokenized.push(chunk.substring(context.cursor, nextEnd + 1)); - - context.cursor = nextEnd + 1; - } else { - nextEnd = chunk.indexOf('{', nextSpecial + 1); - var block = chunk.substring(context.cursor, nextEnd).trim(); - - var isFlat = flatBlock.test(block); - oldMode = context.mode; - context.cursor = nextEnd + 1; - context.mode = isFlat ? 'body' : 'block'; - var specialBody = tokenize(context); - context.mode = oldMode; - - tokenized.push({ block: block, body: specialBody }); - } - } else if (what == 'escape') { - nextEnd = chunk.indexOf('__', nextSpecial + 1); - var escaped = chunk.substring(context.cursor, nextEnd + 2); - tokenized.push(escaped); - - context.cursor = nextEnd + 2; - } else if (what == 'bodyStart') { - var selector = chunk.substring(context.cursor, nextSpecial).trim(); - - oldMode = context.mode; - context.cursor = nextSpecial + 1; - context.mode = 'body'; - var body = tokenize(context); - context.mode = oldMode; - - tokenized.push({ selector: selector, body: body }); - } else if (what == 'bodyEnd') { - // extra closing brace at the top level can be safely ignored - if (context.mode == 'top') { - var at = context.cursor; - var warning = chunk[context.cursor] == '}' ? - 'Unexpected \'}\' in \'' + chunk.substring(at - 20, at + 20) + '\'. Ignoring.' : - 'Unexpected content: \'' + chunk.substring(at, nextSpecial + 1) + '\'. Ignoring.'; - - minifyContext.warnings.push(warning); - context.cursor = nextSpecial + 1; - continue; - } - - if (context.mode != 'block') - tokenized = chunk.substring(context.cursor, nextSpecial); - - context.cursor = nextSpecial + 1; - - break; - } - } - - return tokenized; - }; - - return { - process: function() { - return tokenize(); - } - }; -}; - -// Divides `data` into chunks of `chunkSize` for faster processing -var Chunker = function(data, chunkSize) { - var chunks = []; - for (var cursor = 0, dataSize = data.length; cursor < dataSize;) { - var nextCursor = cursor + chunkSize > dataSize ? - dataSize - 1 : - cursor + chunkSize; - - if (data[nextCursor] != '}') - nextCursor = data.indexOf('}', nextCursor); - if (nextCursor == -1) - nextCursor = data.length - 1; - - chunks.push(data.substring(cursor, nextCursor + 1)); - cursor = nextCursor + 1; - } - - return { - isEmpty: function() { - return chunks.length === 0; - }, - - next: function() { - return chunks.shift() || ''; - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/comments.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/comments.js deleted file mode 100644 index f6913c80..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/comments.js +++ /dev/null @@ -1,59 +0,0 @@ -var EscapeStore = require('./escape-store'); - -module.exports = function Comments(keepSpecialComments, keepBreaks, lineBreak) { - var comments = new EscapeStore('COMMENT'); - - return { - // Strip special comments (/*! ... */) by replacing them by a special marker - // for further restoring. Plain comments are removed. It's done by scanning data using - // String#indexOf scanning instead of regexps to speed up the process. - escape: function(data) { - var tempData = []; - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - - for (; nextEnd < data.length;) { - nextStart = data.indexOf('/*', cursor); - nextEnd = data.indexOf('*/', nextStart + 2); - if (nextStart == -1 || nextEnd == -1) - break; - - tempData.push(data.substring(cursor, nextStart)); - if (data[nextStart + 2] == '!') { - // in case of special comments, replace them with a placeholder - var comment = data.substring(nextStart, nextEnd + 2); - var placeholder = comments.store(comment); - tempData.push(placeholder); - } - cursor = nextEnd + 2; - } - - return tempData.length > 0 ? - tempData.join('') + data.substring(cursor, data.length) : - data; - }, - - restore: function(data) { - var restored = 0; - var breakSuffix = keepBreaks ? lineBreak : ''; - - return data.replace(new RegExp(comments.placeholderPattern + '(' + lineBreak + '| )?', 'g'), function(match, placeholder) { - restored++; - - switch (keepSpecialComments) { - case '*': - return comments.restore(placeholder) + breakSuffix; - case 1: - case '1': - return restored == 1 ? - comments.restore(placeholder) + breakSuffix : - ''; - case 0: - case '0': - return ''; - } - }); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/escape-store.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/escape-store.js deleted file mode 100644 index 8c2f07f9..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/escape-store.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = function EscapeStore(placeholderRoot) { - placeholderRoot = 'ESCAPED_' + placeholderRoot + '_CLEAN_CSS'; - - var placeholderToData = {}; - var dataToPlaceholder = {}; - var count = 0; - var nextPlaceholder = function() { - return '__' + placeholderRoot + (count++) + '__'; - }; - var pattern = '(__' + placeholderRoot + '\\d{1,}__)'; - - return { - placeholderPattern: pattern, - - placeholderRegExp: new RegExp(pattern, 'g'), - - store: function(data) { - var placeholder = dataToPlaceholder[data]; - if (!placeholder) { - placeholder = nextPlaceholder(); - placeholderToData[placeholder] = data; - dataToPlaceholder[data] = placeholder; - } - - return placeholder; - }, - - restore: function(placeholder) { - return placeholderToData[placeholder]; - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/expressions.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/expressions.js deleted file mode 100644 index da1f52e3..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/expressions.js +++ /dev/null @@ -1,69 +0,0 @@ -var EscapeStore = require('./escape-store'); - -module.exports = function Expressions() { - var expressions = new EscapeStore('EXPRESSION'); - - var findEnd = function(data, start) { - var end = start + 'expression'.length; - var level = 0; - var quoted = false; - - while (true) { - var next = data[end++]; - - if (quoted) { - quoted = next != '\'' && next != '"'; - } else { - quoted = next == '\'' || next == '"'; - - if (next == '(') - level++; - if (next == ')') - level--; - if (next == '}' && level == 1) { - end--; - level--; - } - } - - if (level === 0 || !next) - break; - } - - return end; - }; - - return { - // Escapes expressions by replacing them by a special - // marker for further restoring. It's done via string scanning - // instead of regexps to speed up the process. - escape: function(data) { - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - var tempData = []; - - for (; nextEnd < data.length;) { - nextStart = data.indexOf('expression(', nextEnd); - if (nextStart == -1) - break; - - nextEnd = findEnd(data, nextStart); - - var expression = data.substring(nextStart, nextEnd); - var placeholder = expressions.store(expression); - tempData.push(data.substring(cursor, nextStart)); - tempData.push(placeholder); - cursor = nextEnd; - } - - return tempData.length > 0 ? - tempData.join('') + data.substring(cursor, data.length) : - data; - }, - - restore: function(data) { - return data.replace(expressions.placeholderRegExp, expressions.restore); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/free.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/free.js deleted file mode 100644 index ea303686..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/free.js +++ /dev/null @@ -1,76 +0,0 @@ -var EscapeStore = require('./escape-store'); - -module.exports = function Free() { - var texts = new EscapeStore('FREE_TEXT'); - - var findNonEscapedEnd = function(data, matched, start) { - var end = start; - while (true) { - end = data.indexOf(matched, end); - - if (end > -1 && data[end - 1] == '\\') { - end += 1; - continue; - } else { - break; - } - } - - return end; - }; - - return { - // Strip content tags by replacing them by the a special - // marker for further restoring. It's done via string scanning - // instead of regexps to speed up the process. - escape: function(data) { - var tempData = []; - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - var matchedParenthesis = null; - var singleParenthesis = '\''; - var doubleParenthesis = '"'; - var dataLength = data.length; - - for (; nextEnd < data.length;) { - var nextStartSingle = data.indexOf(singleParenthesis, nextEnd + 1); - var nextStartDouble = data.indexOf(doubleParenthesis, nextEnd + 1); - - if (nextStartSingle == -1) - nextStartSingle = dataLength; - if (nextStartDouble == -1) - nextStartDouble = dataLength; - - if (nextStartSingle < nextStartDouble) { - nextStart = nextStartSingle; - matchedParenthesis = singleParenthesis; - } else { - nextStart = nextStartDouble; - matchedParenthesis = doubleParenthesis; - } - - if (nextStart == -1) - break; - - nextEnd = findNonEscapedEnd(data, matchedParenthesis, nextStart + 1); - if (nextEnd == -1) - break; - - var text = data.substring(nextStart, nextEnd + 1); - var placeholder = texts.store(text); - tempData.push(data.substring(cursor, nextStart)); - tempData.push(placeholder); - cursor = nextEnd + 1; - } - - return tempData.length > 0 ? - tempData.join('') + data.substring(cursor, data.length) : - data; - }, - - restore: function(data) { - return data.replace(texts.placeholderRegExp, texts.restore); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/urls.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/urls.js deleted file mode 100644 index 3e04c4b0..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/lib/text/urls.js +++ /dev/null @@ -1,41 +0,0 @@ -var EscapeStore = require('./escape-store'); - -module.exports = function Urls() { - var urls = new EscapeStore('URL'); - - return { - // Strip urls by replacing them by a special - // marker for further restoring. It's done via string scanning - // instead of regexps to speed up the process. - escape: function(data) { - var nextStart = 0; - var nextEnd = 0; - var cursor = 0; - var tempData = []; - - for (; nextEnd < data.length;) { - nextStart = data.indexOf('url(', nextEnd); - if (nextStart == -1) - break; - - nextEnd = data.indexOf(')', nextStart); - - var url = data.substring(nextStart, nextEnd + 1); - var placeholder = urls.store(url); - tempData.push(data.substring(cursor, nextStart)); - tempData.push(placeholder); - cursor = nextEnd + 1; - } - - return tempData.length > 0 ? - tempData.join('') + data.substring(cursor, data.length) : - data; - }, - - restore: function(data) { - return data.replace(urls.placeholderRegExp, function(placeholder) { - return urls.restore(placeholder).replace(/\s/g, ''); - }); - } - }; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/Readme.md b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/Readme.md deleted file mode 100644 index d1644012..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/Readme.md +++ /dev/null @@ -1,195 +0,0 @@ -# Commander.js - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). - - [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineapple'); -if (program.bbq) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - Options: - - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineapple - -b, --bbq Add bbq sauce - -c, --cheese <type> Add the specified type of cheese [marble] - -h, --help output usage information - -``` - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -program - .version('0.0.1') - .usage('[options] <file ...>') - .option('-i, --integer <n>', 'An integer argument', parseInt) - .option('-f, --float <n>', 'A float argument', parseFloat) - .option('-r, --range <a>..<b>', 'A range', range) - .option('-l, --list <items>', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' args: %j', program.args); -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('../'); - -function list(val) { - return val.split(',').map(Number); -} - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -yielding the following help output: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .outputHelp() - - Output help information without exiting. - -## .help() - - Output help information and exit immediately. - -## Links - - - [API documentation](http://visionmedia.github.com/commander.js/) - - [ascii tables](https://github.com/LearnBoost/cli-table) - - [progress bars](https://github.com/visionmedia/node-progress) - - [more progress bars](https://github.com/substack/node-multimeter) - - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/index.js b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/index.js deleted file mode 100644 index 790a7519..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/index.js +++ /dev/null @@ -1,851 +0,0 @@ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var spawn = require('child_process').spawn; -var fs = require('fs'); -var exists = fs.existsSync; -var path = require('path'); -var dirname = path.dirname; -var basename = path.basename; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command; - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description || ''; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function(){ - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg){ - return arg == this.short - || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this._execs = []; - this._args = []; - this._name = name; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir <path>', 'change the working directory') - * .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function(){ - * console.log('setup'); - * }); - * - * program - * .command('exec <cmd>') - * .description('run the given remote command') - * .action(function(cmd){ - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env){ - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @param {String} [desc] - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name, desc){ - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - if (desc) cmd.description(desc); - if (desc) this.executables = true; - if (desc) this._execs[cmd._name] = true; - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - if (desc) return this; - return cmd; -}; - -/** - * Add an implicit `help [cmd]` subcommand - * which invokes `--help` for the given command. - * - * @api private - */ - -Command.prototype.addImplicitHelpCommand = function() { - this.command('help [cmd]', 'display help for [cmd]'); -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args){ - if (!args.length) return; - var self = this; - args.forEach(function(arg){ - switch (arg[0]) { - case '<': - self._args.push({ required: true, name: arg.slice(1, -1) }); - break; - case '[': - self._args.push({ required: false, name: arg.slice(1, -1) }); - break; - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function(){ - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn){ - var self = this; - this.parent.on(this._name, function(args, unknown){ - // Parse any so-far unknown options - unknown = unknown || []; - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - // Leftover arguments need to be pushed back. Fixes issue #56 - if (parsed.args.length) args = parsed.args.concat(args); - - self._args.forEach(function(arg, i){ - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self._args.length) { - args[self._args.length] = self; - } else { - args.push(self); - } - - fn.apply(this, args); - }); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to false - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => true - * - * // required argument - * program.option('-C, --chdir <path>', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue){ - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if ('function' != typeof fn) defaultValue = fn, fn = null; - - // preassign default value only for --no-*, [optional], or <required> - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val){ - // coercion - if (null != val && fn) val = fn(val); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv){ - // implicit help - if (this.executables) this.addImplicitHelpCommand(); - - // store raw args - this.rawArgs = argv; - - // guess name - this._name = this._name || basename(argv[1]); - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - var args = this.args = parsed.args; - - var result = this.parseArgs(this.args, parsed.unknown); - - // executable sub-commands - var name = result.args[0]; - if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown); - - return result; -}; - -/** - * Execute a sub-command executable. - * - * @param {Array} argv - * @param {Array} args - * @param {Array} unknown - * @api private - */ - -Command.prototype.executeSubCommand = function(argv, args, unknown) { - args = args.concat(unknown); - - if (!args.length) this.help(); - if ('help' == args[0] && 1 == args.length) this.help(); - - // <cmd> --help - if ('help' == args[0]) { - args[0] = args[1]; - args[1] = '--help'; - } - - // executable - var dir = dirname(argv[1]); - var bin = basename(argv[1]) + '-' + args[0]; - - // check for ./<bin> first - var local = path.join(dir, bin); - - // run it - args = args.slice(1); - var proc = spawn(local, args, { stdio: 'inherit', customFds: [0, 1, 2] }); - proc.on('error', function(err){ - if (err.code == "ENOENT") { - console.error('\n %s(1) does not exist, try --help\n', bin); - } else if (err.code == "EACCES") { - console.error('\n %s(1) not executable. try chmod or run with root\n', bin); - } - }); - - this.runningCommand = proc; -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * This also normalizes equal sign and splits "--abc=def" into "--abc def". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args){ - var ret = [] - , arg - , lastOpt - , index; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - i > 0 && (lastOpt = this.optionFor(args[i-1])); - - if (lastOpt && lastOpt.required) { - ret.push(arg); - } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c){ - ret.push('-' + c); - }); - } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { - ret.push(arg.slice(0, index), arg.slice(index + 1)); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown){ - var cmds = this.commands - , len = cmds.length - , name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg){ - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv){ - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || ('-' == arg[0] && '-' != arg)) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name){ - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag){ - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag){ - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags){ - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function(){ - console.log(str); - process.exit(0); - }); - return this; -}; - -/** - * Set the description `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str){ - if (0 == arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str){ - var args = this._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }); - - var usage = '[options' - + (this.commands.length ? '] [command' : '') - + ']' - + (this._args.length ? ' ' + args : ''); - - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function(){ - return this.options.reduce(function(max, option){ - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function(){ - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option){ - return pad(option.flags, width) - + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function(){ - if (!this.commands.length) return ''; - return [ - '' - , ' Commands:' - , '' - , this.commands.map(function(cmd){ - var args = cmd._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }).join(' '); - - return pad(cmd._name - + (cmd.options.length - ? ' [options]' - : '') + ' ' + args, 22) - + (cmd.description() - ? ' ' + cmd.description() - : ''); - }).join('\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function(){ - return [ - '' - , ' Usage: ' + this._name + ' ' + this.usage() - , '' + this.commandHelp() - , ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ].join('\n'); -}; - -/** - * Output help information for this command - * - * @api public - */ - -Command.prototype.outputHelp = function(){ - process.stdout.write(this.helpInformation()); - this.emit('--help'); -}; - -/** - * Output help information and exit. - * - * @api public - */ - -Command.prototype.help = function(){ - this.outputHelp(); - process.exit(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word){ - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - cmd.outputHelp(); - process.exit(0); - } - } -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/package.json b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/package.json deleted file mode 100644 index 7e5d1c47..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/node_modules/commander/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "commander", - "version": "2.1.0", - "description": "the complete solution for node.js command-line programs", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/commander.js.git" - }, - "devDependencies": { - "should": ">= 0.0.1" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "engines": { - "node": ">= 0.6.x" - }, - "files": [ - "index.js" - ], - "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineapple');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineapple\n -b, --bbq Add bbq sauce\n -c, --cheese <type> Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] <file ...>')\n .option('-i, --integer <n>', 'An integer argument', parseInt)\n .option('-f, --float <n>', 'A float argument', parseFloat)\n .option('-r, --range <a>..<b>', 'A range', range)\n .option('-l, --list <items>', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "homepage": "https://github.com/visionmedia/commander.js", - "_id": "commander@2.1.0", - "_from": "commander@2.1.x" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/package.json b/node_modules/grunt-contrib-cssmin/node_modules/clean-css/package.json deleted file mode 100644 index 70bcc018..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/clean-css/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "clean-css", - "version": "2.1.4", - "author": { - "name": "Jakub Pawlowicz", - "email": "jakub@goalsmashers.com", - "url": "http://twitter.com/GoalSmashers" - }, - "description": "A well-tested CSS minifier", - "license": "MIT", - "keywords": [ - "css", - "minifier" - ], - "homepage": "https://github.com/GoalSmashers/clean-css", - "repository": { - "type": "git", - "url": "https://github.com/GoalSmashers/clean-css.git" - }, - "bugs": { - "url": "https://github.com/GoalSmashers/clean-css/issues" - }, - "bin": { - "cleancss": "./bin/cleancss" - }, - "main": "index.js", - "files": [ - "bin", - "lib", - "History.md", - "index.js", - "LICENSE" - ], - "scripts": { - "bench": "node ./test/bench.js", - "check": "jshint ./bin/cleancss .", - "prepublish": "jshint .", - "test": "vows" - }, - "dependencies": { - "commander": "2.1.x" - }, - "devDependencies": { - "jshint": "2.4.x", - "nock": "0.27.x", - "vows": "0.7.x" - }, - "jshintConfig": { - "browser": false, - "camelcase": true, - "curly": false, - "eqeqeq": false, - "eqnull": true, - "immed": true, - "indent": 2, - "latedef": true, - "multistr": false, - "noarg": true, - "node": true, - "plusplus": false, - "quotmark": "single", - "strict": false, - "trailing": true, - "undef": true, - "unused": true - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "[![NPM version](https://badge.fury.io/js/clean-css.png)](https://badge.fury.io/js/clean-css)\n[![Build Status](https://secure.travis-ci.org/GoalSmashers/clean-css.png)](https://travis-ci.org/GoalSmashers/clean-css)\n[![Dependency Status](https://david-dm.org/GoalSmashers/clean-css.png?theme=shields.io)](https://david-dm.org/GoalSmashers/clean-css)\n[![devDependency Status](https://david-dm.org/GoalSmashers/clean-css/dev-status.png?theme=shields.io)](https://david-dm.org/GoalSmashers/clean-css#info=devDependencies)\n\n## What is clean-css?\n\nClean-css is a fast and efficient [Node.js](http://nodejs.org/) library for minifying CSS files.\n\nAccording to [tests](http://goalsmashers.github.io/css-minification-benchmark/) it is one of the best available.\n\n\n## Usage\n\n### What are the requirements?\n\n```\nNode.js 0.8.0+ (tested on CentOS, Ubuntu, OS X 10.6+, and Windows 7+)\n```\n\n### How to install clean-css?\n\n```\nnpm install clean-css\n```\n\n### How to upgrade clean-css from 1.x to 2.x?\n\n#### Command-line interface (CLI)\n\n```\nnpm update clean-css\n```\n\nor point `package.json` to version 2.x. That's it!\n\n#### Node.js module\n\nUpdate `clean-css` as for CLI above.\nThen change your JavaScript code from:\n\n```js\nvar minimized = CleanCSS.process(source, options);\n```\n\ninto\n\n```js\nvar minimized = new CleanCSS(options).minify(source);\n```\n\nAnd you are done.\n\n### How to use clean-css CLI?\n\nClean-css accepts the following command line arguments (please make sure\nyou use `<source-file>` as the very last argument to avoid potential issues):\n\n```\ncleancss [options] <source-file>\n\n-h, --help Output usage information\n-v, --version Output the version number\n-b, --keep-line-breaks Keep line breaks\n--s0 Remove all special comments, i.e. /*! comment */\n--s1 Remove all special comments but the first one\n-r, --root [root-path] A root path to which resolve absolute @import rules\n and rebase relative URLs\n-o, --output [output-file] Use [output-file] as output instead of STDOUT\n-s, --skip-import Disable @import processing\n--skip-rebase Disable URLs rebasing\n--skip-advanced Disable advanced optimizations - selector & property merging,\n reduction, etc.\n--selectors-merge-mode [ie8|*] DEPRECATED: Use --compatibility switch\n-c, --compatibility [ie7|ie8] Force compatibility mode\n-d, --debug Shows debug information (minification time & compression efficiency)\n```\n\n#### Examples:\n\nTo minify a **public.css** file into **public-min.css** do:\n\n```\ncleancss -o public-min.css public.css\n```\n\nTo minify the same **public.css** into the standard output skip the `-o` parameter:\n\n```\ncleancss public.css\n```\n\nMore likely you would like to concatenate a couple of files.\nIf you are on a Unix-like system:\n\n```bash\ncat one.css two.css three.css | cleancss -o merged-and-minified.css\n```\n\nOn Windows:\n\n```bat\ntype one.css two.css three.css | cleancss -o merged-and-minified.css\n```\n\nOr even gzip the result at once:\n\n```bash\ncat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz\n```\n\n### How to use clean-css programmatically?\n\n```js\nvar CleanCSS = require('clean-css');\nvar source = 'a{font-weight:bold;}';\nvar minimized = new CleanCSS().minify(source);\n```\n\nCleanCSS constructor accepts a hash as a parameter, i.e.,\n`new CleanCSS(options).minify(source)` with the following options available:\n\n* `keepSpecialComments` - `*` for keeping all (default), `1` for keeping first one only, `0` for removing all\n* `keepBreaks` - whether to keep line breaks (default is false)\n* `benchmark` - turns on benchmarking mode measuring time spent on cleaning up\n (run `npm run bench` to see example)\n* `root` - path to resolve absolute `@import` rules and rebase relative URLs\n* `relativeTo` - path with which to resolve relative `@import` rules and URLs\n* `processImport` - whether to process `@import` rules\n* `noRebase` - whether to skip URLs rebasing\n* `noAdvanced` - set to true to disable advanced optimizations - selector & property merging, reduction, etc.\n* `selectorsMergeMode` - DEPRECATED: Use compatibility option\n* `compatibility` - Force compatibility mode to `ie7` or `ie8`. Defaults to not set.\n* `debug` - set to true to get minification statistics under `stats` property (see `test/custom-test.js` for examples)\n\n### How to use clean-css with [Grunt](http://gruntjs.com)?\n\nSee [grunt-contrib-cssmin](https://github.com/gruntjs/grunt-contrib-cssmin) plugin.\n\n### What are the clean-css' dev commands?\n\nFirst clone the source, then run:\n\n* `npm run bench` for clean-css benchmarks (see [test/bench.js](https://github.com/GoalSmashers/clean-css/blob/master/test/bench.js) for details)\n* `npm run check` to check JS sources with [JSHint](https://github.com/jshint/jshint/)\n* `npm test` for the test suite\n\n## How to contribute to clean-css?\n\n1. Fork it.\n2. Add test(s) veryfying the problem.\n3. Fix the problem.\n4. Make sure all tests still pass (`npm test`).\n5. Make sure your code doesn't break style rules (`npm run check`).\n6. Send a PR.\n\nIf you wonder where to add tests, go for:\n\n* `test/unit-test.js` if it's a simple scenario\n* `test/data/...` if it's a complex scenario (just add two files, input and expected output)\n* `test/binary-test.js` if it's related to `bin/cleancss` binary\n* `test/module-test.js` if it's related to importing `clean-css` as a module\n* `test/protocol-imports-test.js` if it fixes anything related to protocol `@import`s\n\n## Tips & Tricks\n\n### How to preserve a comment block?\n\nUse the `/*!` notation instead of the standard one `/*`:\n\n```css\n/*!\n Important comments included in minified output.\n*/\n```\n\n### How to rebase relative image URLs\n\nClean-css will handle it automatically for you (since version 1.1) in the following cases:\n\n* When using the CLI:\n 1. Use an output path via `-o`/`--output` to rebase URLs as relative to the output file.\n 2. Use a root path via `-r`/`--root` to rebase URLs as absolute from the given root path.\n 3. If you specify both then `-r`/`--root` takes precendence.\n* When using clean-css as a library:\n 1. Use a combination of `relativeTo` and `target` options for relative rebase (same as 1 in CLI).\n 2. Use a combination of `relativeTo` and `root` options for absolute rebase (same as 2 in CLI).\n 3. `root` takes precendence over `target` as in CLI.\n\n## Acknowledgments\n\n* Vincent Voyer ([@vvo](https://github.com/vvo)) for a patch with better\n empty element regex and for inspiring us to do many performance improvements\n in 0.4 release.\n* Isaac ([@facelessuser](https://github.com/facelessuser)) for pointing out\n a flaw in clean-css' stateless mode.\n* Jan Michael Alonzo ([@jmalonzo](https://github.com/jmalonzo)) for a patch\n removing node.js' old `sys` package.\n* [@XhmikosR](https://github.com/XhmikosR) for suggesting new features\n (option to remove special comments and strip out URLs quotation) and\n pointing out numerous improvements (JSHint, media queries).\n* Anthony Barre ([@abarre](https://github.com/abarre)) for improvements to\n `@import` processing, namely introducing the `--skip-import` /\n `processImport` options.\n* Simon Altschuler ([@altschuler](https://github.com/altschuler)) for fixing\n `@import` processing inside comments.\n\n## License\n\nClean-css is released under the [MIT License](https://github.com/GoalSmashers/clean-css/blob/master/LICENSE).\n", - "readmeFilename": "README.md", - "_id": "clean-css@2.1.4", - "dist": { - "shasum": "4e6e781299dbe18d619a4322f1788d7808b9e92c" - }, - "_from": "clean-css@~2.1.0", - "_resolved": "https://registry.npmjs.org/clean-css/-/clean-css-2.1.4.tgz" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/index.js deleted file mode 100644 index b764ac92..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/index.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; -var gzipSize = require('gzip-size'); -var prettyBytes = require('pretty-bytes'); -var chalk = require('chalk'); - -function format(size) { - return chalk.green(prettyBytes(size)); -} - -module.exports = function (max, min, useGzip) { - if (max == null || min == null) { - throw new Error('`max` and `min` required'); - } - - var ret = format(max.length) + ' → ' + format(min.length); - - if (useGzip === true) { - ret += ' → ' + format(gzipSize.sync(min)) + chalk.gray(' (gzip)'); - } - - return ret; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/gzip-size b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/gzip-size deleted file mode 120000 index 9f7f8145..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/gzip-size +++ /dev/null @@ -1 +0,0 @@ -../gzip-size/cli.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/pretty-bytes b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/pretty-bytes deleted file mode 120000 index d1d4ed68..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/.bin/pretty-bytes +++ /dev/null @@ -1 +0,0 @@ -../pretty-bytes/cli.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/cli.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/cli.js deleted file mode 100755 index d87c2176..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/cli.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var zlib = require('zlib'); -var concat = require('concat-stream'); -var input = process.argv[2]; - -function help() { - console.log('gzip-size <input-file>'); - console.log('or'); - console.log('cat <input-file> | gzip-size'); - console.log(''); - console.log('Get the gzipped size of a file'); -} - -function report(data) { - console.log(data.length); -} - -if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) { - console.log(require('./package').version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - return help(); - } - - fs.createReadStream(input).pipe(zlib.createGzip()).pipe(concat(report)); -} else { - process.stdin.pipe(zlib.createGzip()).pipe(concat(report)); -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/index.js deleted file mode 100644 index 364faacf..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/index.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; -var gzip = require('zlib').gzip; -var gzipSync = require('zlib-browserify').gzipSync; - -module.exports = function (str, cb) { - if (!str) { - return cb(0); - } - - gzip(str, function (err, data) { - cb(err, data.length); - }); -}; - -module.exports.sync = function (str) { - return gzipSync(str).length; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/.npmignore b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/LICENSE deleted file mode 100644 index 99c130e1..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2013 Max Ogden - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/index.js deleted file mode 100644 index da0c9b7a..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/index.js +++ /dev/null @@ -1,125 +0,0 @@ -var Writable = require('readable-stream').Writable -var inherits = require('inherits') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -function ConcatStream(opts, cb) { - if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb) - - if (typeof opts === 'function') { - cb = opts - opts = {} - } - if (!opts) opts = {} - - var encoding = opts.encoding - var shouldInferEncoding = false - - if (!encoding) { - shouldInferEncoding = true - } else { - encoding = String(encoding).toLowerCase() - if (encoding === 'u8' || encoding === 'uint8') { - encoding = 'uint8array' - } - } - - Writable.call(this, { objectMode: true }) - - this.encoding = encoding - this.shouldInferEncoding = shouldInferEncoding - - if (cb) this.on('finish', function () { cb(this.getBody()) }) - this.body = [] -} - -module.exports = ConcatStream -inherits(ConcatStream, Writable) - -ConcatStream.prototype._write = function(chunk, enc, next) { - this.body.push(chunk) - next() -} - -ConcatStream.prototype.inferEncoding = function (buff) { - var firstBuffer = buff || this.body[0] - if (!firstBuffer) return 'buffer' - if (Buffer.isBuffer(firstBuffer)) return 'buffer' - if (firstBuffer instanceof Uint8Array) return 'uint8array' - if (Array.isArray(firstBuffer)) return 'array' - if (typeof firstBuffer === 'string') return 'string' - if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' - return 'buffer' -} - -ConcatStream.prototype.getBody = function () { - if (this.shouldInferEncoding) this.encoding = this.inferEncoding() - if (this.encoding === 'array') return arrayConcat(this.body) - if (this.encoding === 'string') return stringConcat(this.body) - if (this.encoding === 'buffer') return bufferConcat(this.body) - if (this.encoding === 'uint8array') return u8Concat(this.body) - return this.body -} - -var isArray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]' -} - -function isArrayish (arr) { - return /Array\]$/.test(Object.prototype.toString.call(arr)) -} - -function stringConcat (parts) { - var strings = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (typeof p === 'string') { - strings.push(p) - } else if (Buffer.isBuffer(p)) { - strings.push(p.toString('utf8')) - } else { - strings.push(Buffer(p).toString('utf8')) - } - } - return strings.join('') -} - -function bufferConcat (parts) { - var bufs = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (Buffer.isBuffer(p)) { - bufs.push(p) - } else if (typeof p === 'string' || isArrayish(p) - || (p && typeof p.subarray === 'function')) { - bufs.push(Buffer(p)) - } else bufs.push(Buffer(String(p))) - } - return Buffer.concat(bufs) -} - -function arrayConcat (parts) { - var res = [] - for (var i = 0; i < parts.length; i++) { - res.push.apply(res, parts[i]) - } - return res -} - -function u8Concat (parts) { - var len = 0 - for (var i = 0; i < parts.length; i++) { - if (typeof parts[i] === 'string') { - parts[i] = Buffer(parts[i]) - } - len += parts[i].length - } - var u8 = new U8(len) - for (var i = 0, offset = 0; i < parts.length; i++) { - var part = parts[i] - for (var j = 0; j < part.length; j++) { - u8[offset++] = part[j] - } - } - return u8 -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/README.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits_browser.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/package.json deleted file mode 100644 index c532ca6d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@~2.0.1" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/test.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/.npmignore b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/README.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/README.md deleted file mode 100644 index 34c11897..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/duplex.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/float.patch b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/float.patch deleted file mode 100644 index b984607a..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/float.patch +++ /dev/null @@ -1,923 +0,0 @@ -diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js -index c5a741c..a2e0d8e 100644 ---- a/lib/_stream_duplex.js -+++ b/lib/_stream_duplex.js -@@ -26,8 +26,8 @@ - - module.exports = Duplex; - var util = require('util'); --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('./_stream_readable'); -+var Writable = require('./_stream_writable'); - - util.inherits(Duplex, Readable); - -diff --git a/lib/_stream_passthrough.js b/lib/_stream_passthrough.js -index a5e9864..330c247 100644 ---- a/lib/_stream_passthrough.js -+++ b/lib/_stream_passthrough.js -@@ -25,7 +25,7 @@ - - module.exports = PassThrough; - --var Transform = require('_stream_transform'); -+var Transform = require('./_stream_transform'); - var util = require('util'); - util.inherits(PassThrough, Transform); - -diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js -index 0c3fe3e..90a8298 100644 ---- a/lib/_stream_readable.js -+++ b/lib/_stream_readable.js -@@ -23,10 +23,34 @@ module.exports = Readable; - Readable.ReadableState = ReadableState; - - var EE = require('events').EventEmitter; -+if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { -+ return emitter.listeners(type).length; -+}; -+ -+if (!global.setImmediate) global.setImmediate = function setImmediate(fn) { -+ return setTimeout(fn, 0); -+}; -+if (!global.clearImmediate) global.clearImmediate = function clearImmediate(i) { -+ return clearTimeout(i); -+}; -+ - var Stream = require('stream'); - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - var StringDecoder; --var debug = util.debuglog('stream'); -+var debug; -+if (util.debuglog) -+ debug = util.debuglog('stream'); -+else try { -+ debug = require('debuglog')('stream'); -+} catch (er) { -+ debug = function() {}; -+} - - util.inherits(Readable, Stream); - -@@ -380,7 +404,7 @@ function chunkInvalid(state, chunk) { - - - function onEofChunk(stream, state) { -- if (state.decoder && !state.ended) { -+ if (state.decoder && !state.ended && state.decoder.end) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); -diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js -index b1f9fcc..b0caf57 100644 ---- a/lib/_stream_transform.js -+++ b/lib/_stream_transform.js -@@ -64,8 +64,14 @@ - - module.exports = Transform; - --var Duplex = require('_stream_duplex'); -+var Duplex = require('./_stream_duplex'); - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - util.inherits(Transform, Duplex); - - -diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js -index ba2e920..f49288b 100644 ---- a/lib/_stream_writable.js -+++ b/lib/_stream_writable.js -@@ -27,6 +27,12 @@ module.exports = Writable; - Writable.WritableState = WritableState; - - var util = require('util'); -+if (!util.isUndefined) { -+ var utilIs = require('core-util-is'); -+ for (var f in utilIs) { -+ util[f] = utilIs[f]; -+ } -+} - var Stream = require('stream'); - - util.inherits(Writable, Stream); -@@ -119,7 +125,7 @@ function WritableState(options, stream) { - function Writable(options) { - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. -- if (!(this instanceof Writable) && !(this instanceof Stream.Duplex)) -+ if (!(this instanceof Writable) && !(this instanceof require('./_stream_duplex'))) - return new Writable(options); - - this._writableState = new WritableState(options, this); -diff --git a/test/simple/test-stream-big-push.js b/test/simple/test-stream-big-push.js -index e3787e4..8cd2127 100644 ---- a/test/simple/test-stream-big-push.js -+++ b/test/simple/test-stream-big-push.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - var str = 'asdfasdfasdfasdfasdf'; - - var r = new stream.Readable({ -diff --git a/test/simple/test-stream-end-paused.js b/test/simple/test-stream-end-paused.js -index bb73777..d40efc7 100644 ---- a/test/simple/test-stream-end-paused.js -+++ b/test/simple/test-stream-end-paused.js -@@ -25,7 +25,7 @@ var gotEnd = false; - - // Make sure we don't miss the end event for paused 0-length streams - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var stream = new Readable(); - var calledRead = false; - stream._read = function() { -diff --git a/test/simple/test-stream-pipe-after-end.js b/test/simple/test-stream-pipe-after-end.js -index b46ee90..0be8366 100644 ---- a/test/simple/test-stream-pipe-after-end.js -+++ b/test/simple/test-stream-pipe-after-end.js -@@ -22,8 +22,8 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var util = require('util'); - - util.inherits(TestReadable, Readable); -diff --git a/test/simple/test-stream-pipe-cleanup.js b/test/simple/test-stream-pipe-cleanup.js -deleted file mode 100644 -index f689358..0000000 ---- a/test/simple/test-stream-pipe-cleanup.js -+++ /dev/null -@@ -1,122 +0,0 @@ --// Copyright Joyent, Inc. and other Node contributors. --// --// Permission is hereby granted, free of charge, to any person obtaining a --// copy of this software and associated documentation files (the --// "Software"), to deal in the Software without restriction, including --// without limitation the rights to use, copy, modify, merge, publish, --// distribute, sublicense, and/or sell copies of the Software, and to permit --// persons to whom the Software is furnished to do so, subject to the --// following conditions: --// --// The above copyright notice and this permission notice shall be included --// in all copies or substantial portions of the Software. --// --// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --// USE OR OTHER DEALINGS IN THE SOFTWARE. -- --// This test asserts that Stream.prototype.pipe does not leave listeners --// hanging on the source or dest. -- --var common = require('../common'); --var stream = require('stream'); --var assert = require('assert'); --var util = require('util'); -- --function Writable() { -- this.writable = true; -- this.endCalls = 0; -- stream.Stream.call(this); --} --util.inherits(Writable, stream.Stream); --Writable.prototype.end = function() { -- this.endCalls++; --}; -- --Writable.prototype.destroy = function() { -- this.endCalls++; --}; -- --function Readable() { -- this.readable = true; -- stream.Stream.call(this); --} --util.inherits(Readable, stream.Stream); -- --function Duplex() { -- this.readable = true; -- Writable.call(this); --} --util.inherits(Duplex, Writable); -- --var i = 0; --var limit = 100; -- --var w = new Writable(); -- --var r; -- --for (i = 0; i < limit; i++) { -- r = new Readable(); -- r.pipe(w); -- r.emit('end'); --} --assert.equal(0, r.listeners('end').length); --assert.equal(limit, w.endCalls); -- --w.endCalls = 0; -- --for (i = 0; i < limit; i++) { -- r = new Readable(); -- r.pipe(w); -- r.emit('close'); --} --assert.equal(0, r.listeners('close').length); --assert.equal(limit, w.endCalls); -- --w.endCalls = 0; -- --r = new Readable(); -- --for (i = 0; i < limit; i++) { -- w = new Writable(); -- r.pipe(w); -- w.emit('close'); --} --assert.equal(0, w.listeners('close').length); -- --r = new Readable(); --w = new Writable(); --var d = new Duplex(); --r.pipe(d); // pipeline A --d.pipe(w); // pipeline B --assert.equal(r.listeners('end').length, 2); // A.onend, A.cleanup --assert.equal(r.listeners('close').length, 2); // A.onclose, A.cleanup --assert.equal(d.listeners('end').length, 2); // B.onend, B.cleanup --assert.equal(d.listeners('close').length, 3); // A.cleanup, B.onclose, B.cleanup --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 1); // B.cleanup -- --r.emit('end'); --assert.equal(d.endCalls, 1); --assert.equal(w.endCalls, 0); --assert.equal(r.listeners('end').length, 0); --assert.equal(r.listeners('close').length, 0); --assert.equal(d.listeners('end').length, 2); // B.onend, B.cleanup --assert.equal(d.listeners('close').length, 2); // B.onclose, B.cleanup --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 1); // B.cleanup -- --d.emit('end'); --assert.equal(d.endCalls, 1); --assert.equal(w.endCalls, 1); --assert.equal(r.listeners('end').length, 0); --assert.equal(r.listeners('close').length, 0); --assert.equal(d.listeners('end').length, 0); --assert.equal(d.listeners('close').length, 0); --assert.equal(w.listeners('end').length, 0); --assert.equal(w.listeners('close').length, 0); -diff --git a/test/simple/test-stream-pipe-error-handling.js b/test/simple/test-stream-pipe-error-handling.js -index c5d724b..c7d6b7d 100644 ---- a/test/simple/test-stream-pipe-error-handling.js -+++ b/test/simple/test-stream-pipe-error-handling.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var Stream = require('stream').Stream; -+var Stream = require('../../').Stream; - - (function testErrorListenerCatches() { - var source = new Stream(); -diff --git a/test/simple/test-stream-pipe-event.js b/test/simple/test-stream-pipe-event.js -index cb9d5fe..56f8d61 100644 ---- a/test/simple/test-stream-pipe-event.js -+++ b/test/simple/test-stream-pipe-event.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common'); --var stream = require('stream'); -+var stream = require('../../'); - var assert = require('assert'); - var util = require('util'); - -diff --git a/test/simple/test-stream-push-order.js b/test/simple/test-stream-push-order.js -index f2e6ec2..a5c9bf9 100644 ---- a/test/simple/test-stream-push-order.js -+++ b/test/simple/test-stream-push-order.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var assert = require('assert'); - - var s = new Readable({ -diff --git a/test/simple/test-stream-push-strings.js b/test/simple/test-stream-push-strings.js -index 06f43dc..1701a9a 100644 ---- a/test/simple/test-stream-push-strings.js -+++ b/test/simple/test-stream-push-strings.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var util = require('util'); - - util.inherits(MyStream, Readable); -diff --git a/test/simple/test-stream-readable-event.js b/test/simple/test-stream-readable-event.js -index ba6a577..a8e6f7b 100644 ---- a/test/simple/test-stream-readable-event.js -+++ b/test/simple/test-stream-readable-event.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - (function first() { - // First test, not reading when the readable is added. -diff --git a/test/simple/test-stream-readable-flow-recursion.js b/test/simple/test-stream-readable-flow-recursion.js -index 2891ad6..11689ba 100644 ---- a/test/simple/test-stream-readable-flow-recursion.js -+++ b/test/simple/test-stream-readable-flow-recursion.js -@@ -27,7 +27,7 @@ var assert = require('assert'); - // more data continuously, but without triggering a nextTick - // warning or RangeError. - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - // throw an error if we trigger a nextTick warning. - process.throwDeprecation = true; -diff --git a/test/simple/test-stream-unshift-empty-chunk.js b/test/simple/test-stream-unshift-empty-chunk.js -index 0c96476..7827538 100644 ---- a/test/simple/test-stream-unshift-empty-chunk.js -+++ b/test/simple/test-stream-unshift-empty-chunk.js -@@ -24,7 +24,7 @@ var assert = require('assert'); - - // This test verifies that stream.unshift(Buffer(0)) or - // stream.unshift('') does not set state.reading=false. --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - var r = new Readable(); - var nChunks = 10; -diff --git a/test/simple/test-stream-unshift-read-race.js b/test/simple/test-stream-unshift-read-race.js -index 83fd9fa..17c18aa 100644 ---- a/test/simple/test-stream-unshift-read-race.js -+++ b/test/simple/test-stream-unshift-read-race.js -@@ -29,7 +29,7 @@ var assert = require('assert'); - // 3. push() after the EOF signaling null is an error. - // 4. _read() is not called after pushing the EOF null chunk. - --var stream = require('stream'); -+var stream = require('../../'); - var hwm = 10; - var r = stream.Readable({ highWaterMark: hwm }); - var chunks = 10; -@@ -51,7 +51,14 @@ r._read = function(n) { - - function push(fast) { - assert(!pushedNull, 'push() after null push'); -- var c = pos >= data.length ? null : data.slice(pos, pos + n); -+ var c; -+ if (pos >= data.length) -+ c = null; -+ else { -+ if (n + pos > data.length) -+ n = data.length - pos; -+ c = data.slice(pos, pos + n); -+ } - pushedNull = c === null; - if (fast) { - pos += n; -diff --git a/test/simple/test-stream-writev.js b/test/simple/test-stream-writev.js -index 5b49e6e..b5321f3 100644 ---- a/test/simple/test-stream-writev.js -+++ b/test/simple/test-stream-writev.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var stream = require('stream'); -+var stream = require('../../'); - - var queue = []; - for (var decode = 0; decode < 2; decode++) { -diff --git a/test/simple/test-stream2-basic.js b/test/simple/test-stream2-basic.js -index 3814bf0..248c1be 100644 ---- a/test/simple/test-stream2-basic.js -+++ b/test/simple/test-stream2-basic.js -@@ -21,7 +21,7 @@ - - - var common = require('../common.js'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-compatibility.js b/test/simple/test-stream2-compatibility.js -index 6cdd4e9..f0fa84b 100644 ---- a/test/simple/test-stream2-compatibility.js -+++ b/test/simple/test-stream2-compatibility.js -@@ -21,7 +21,7 @@ - - - var common = require('../common.js'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-finish-pipe.js b/test/simple/test-stream2-finish-pipe.js -index 39b274f..006a19b 100644 ---- a/test/simple/test-stream2-finish-pipe.js -+++ b/test/simple/test-stream2-finish-pipe.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var stream = require('stream'); -+var stream = require('../../'); - var Buffer = require('buffer').Buffer; - - var r = new stream.Readable(); -diff --git a/test/simple/test-stream2-fs.js b/test/simple/test-stream2-fs.js -deleted file mode 100644 -index e162406..0000000 ---- a/test/simple/test-stream2-fs.js -+++ /dev/null -@@ -1,72 +0,0 @@ --// Copyright Joyent, Inc. and other Node contributors. --// --// Permission is hereby granted, free of charge, to any person obtaining a --// copy of this software and associated documentation files (the --// "Software"), to deal in the Software without restriction, including --// without limitation the rights to use, copy, modify, merge, publish, --// distribute, sublicense, and/or sell copies of the Software, and to permit --// persons to whom the Software is furnished to do so, subject to the --// following conditions: --// --// The above copyright notice and this permission notice shall be included --// in all copies or substantial portions of the Software. --// --// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --// USE OR OTHER DEALINGS IN THE SOFTWARE. -- -- --var common = require('../common.js'); --var R = require('_stream_readable'); --var assert = require('assert'); -- --var fs = require('fs'); --var FSReadable = fs.ReadStream; -- --var path = require('path'); --var file = path.resolve(common.fixturesDir, 'x1024.txt'); -- --var size = fs.statSync(file).size; -- --var expectLengths = [1024]; -- --var util = require('util'); --var Stream = require('stream'); -- --util.inherits(TestWriter, Stream); -- --function TestWriter() { -- Stream.apply(this); -- this.buffer = []; -- this.length = 0; --} -- --TestWriter.prototype.write = function(c) { -- this.buffer.push(c.toString()); -- this.length += c.length; -- return true; --}; -- --TestWriter.prototype.end = function(c) { -- if (c) this.buffer.push(c.toString()); -- this.emit('results', this.buffer); --} -- --var r = new FSReadable(file); --var w = new TestWriter(); -- --w.on('results', function(res) { -- console.error(res, w.length); -- assert.equal(w.length, size); -- var l = 0; -- assert.deepEqual(res.map(function (c) { -- return c.length; -- }), expectLengths); -- console.log('ok'); --}); -- --r.pipe(w); -diff --git a/test/simple/test-stream2-httpclient-response-end.js b/test/simple/test-stream2-httpclient-response-end.js -deleted file mode 100644 -index 15cffc2..0000000 ---- a/test/simple/test-stream2-httpclient-response-end.js -+++ /dev/null -@@ -1,52 +0,0 @@ --// Copyright Joyent, Inc. and other Node contributors. --// --// Permission is hereby granted, free of charge, to any person obtaining a --// copy of this software and associated documentation files (the --// "Software"), to deal in the Software without restriction, including --// without limitation the rights to use, copy, modify, merge, publish, --// distribute, sublicense, and/or sell copies of the Software, and to permit --// persons to whom the Software is furnished to do so, subject to the --// following conditions: --// --// The above copyright notice and this permission notice shall be included --// in all copies or substantial portions of the Software. --// --// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN --// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE --// USE OR OTHER DEALINGS IN THE SOFTWARE. -- --var common = require('../common.js'); --var assert = require('assert'); --var http = require('http'); --var msg = 'Hello'; --var readable_event = false; --var end_event = false; --var server = http.createServer(function(req, res) { -- res.writeHead(200, {'Content-Type': 'text/plain'}); -- res.end(msg); --}).listen(common.PORT, function() { -- http.get({port: common.PORT}, function(res) { -- var data = ''; -- res.on('readable', function() { -- console.log('readable event'); -- readable_event = true; -- data += res.read(); -- }); -- res.on('end', function() { -- console.log('end event'); -- end_event = true; -- assert.strictEqual(msg, data); -- server.close(); -- }); -- }); --}); -- --process.on('exit', function() { -- assert(readable_event); -- assert(end_event); --}); -- -diff --git a/test/simple/test-stream2-large-read-stall.js b/test/simple/test-stream2-large-read-stall.js -index 2fbfbca..667985b 100644 ---- a/test/simple/test-stream2-large-read-stall.js -+++ b/test/simple/test-stream2-large-read-stall.js -@@ -30,7 +30,7 @@ var PUSHSIZE = 20; - var PUSHCOUNT = 1000; - var HWM = 50; - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var r = new Readable({ - highWaterMark: HWM - }); -@@ -39,23 +39,23 @@ var rs = r._readableState; - r._read = push; - - r.on('readable', function() { -- console.error('>> readable'); -+ //console.error('>> readable'); - do { -- console.error(' > read(%d)', READSIZE); -+ //console.error(' > read(%d)', READSIZE); - var ret = r.read(READSIZE); -- console.error(' < %j (%d remain)', ret && ret.length, rs.length); -+ //console.error(' < %j (%d remain)', ret && ret.length, rs.length); - } while (ret && ret.length === READSIZE); - -- console.error('<< after read()', -- ret && ret.length, -- rs.needReadable, -- rs.length); -+ //console.error('<< after read()', -+ // ret && ret.length, -+ // rs.needReadable, -+ // rs.length); - }); - - var endEmitted = false; - r.on('end', function() { - endEmitted = true; -- console.error('end'); -+ //console.error('end'); - }); - - var pushes = 0; -@@ -64,11 +64,11 @@ function push() { - return; - - if (pushes++ === PUSHCOUNT) { -- console.error(' push(EOF)'); -+ //console.error(' push(EOF)'); - return r.push(null); - } - -- console.error(' push #%d', pushes); -+ //console.error(' push #%d', pushes); - if (r.push(new Buffer(PUSHSIZE))) - setTimeout(push); - } -diff --git a/test/simple/test-stream2-objects.js b/test/simple/test-stream2-objects.js -index 3e6931d..ff47d89 100644 ---- a/test/simple/test-stream2-objects.js -+++ b/test/simple/test-stream2-objects.js -@@ -21,8 +21,8 @@ - - - var common = require('../common.js'); --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var assert = require('assert'); - - // tiny node-tap lookalike. -diff --git a/test/simple/test-stream2-pipe-error-handling.js b/test/simple/test-stream2-pipe-error-handling.js -index cf7531c..e3f3e4e 100644 ---- a/test/simple/test-stream2-pipe-error-handling.js -+++ b/test/simple/test-stream2-pipe-error-handling.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - - (function testErrorListenerCatches() { - var count = 1000; -diff --git a/test/simple/test-stream2-pipe-error-once-listener.js b/test/simple/test-stream2-pipe-error-once-listener.js -index 5e8e3cb..53b2616 100755 ---- a/test/simple/test-stream2-pipe-error-once-listener.js -+++ b/test/simple/test-stream2-pipe-error-once-listener.js -@@ -24,7 +24,7 @@ var common = require('../common.js'); - var assert = require('assert'); - - var util = require('util'); --var stream = require('stream'); -+var stream = require('../../'); - - - var Read = function() { -diff --git a/test/simple/test-stream2-push.js b/test/simple/test-stream2-push.js -index b63edc3..eb2b0e9 100644 ---- a/test/simple/test-stream2-push.js -+++ b/test/simple/test-stream2-push.js -@@ -20,7 +20,7 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var stream = require('stream'); -+var stream = require('../../'); - var Readable = stream.Readable; - var Writable = stream.Writable; - var assert = require('assert'); -diff --git a/test/simple/test-stream2-read-sync-stack.js b/test/simple/test-stream2-read-sync-stack.js -index e8a7305..9740a47 100644 ---- a/test/simple/test-stream2-read-sync-stack.js -+++ b/test/simple/test-stream2-read-sync-stack.js -@@ -21,7 +21,7 @@ - - var common = require('../common'); - var assert = require('assert'); --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - var r = new Readable(); - var N = 256 * 1024; - -diff --git a/test/simple/test-stream2-readable-empty-buffer-no-eof.js b/test/simple/test-stream2-readable-empty-buffer-no-eof.js -index cd30178..4b1659d 100644 ---- a/test/simple/test-stream2-readable-empty-buffer-no-eof.js -+++ b/test/simple/test-stream2-readable-empty-buffer-no-eof.js -@@ -22,10 +22,9 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('stream').Readable; -+var Readable = require('../../').Readable; - - test1(); --test2(); - - function test1() { - var r = new Readable(); -@@ -88,31 +87,3 @@ function test1() { - console.log('ok'); - }); - } -- --function test2() { -- var r = new Readable({ encoding: 'base64' }); -- var reads = 5; -- r._read = function(n) { -- if (!reads--) -- return r.push(null); // EOF -- else -- return r.push(new Buffer('x')); -- }; -- -- var results = []; -- function flow() { -- var chunk; -- while (null !== (chunk = r.read())) -- results.push(chunk + ''); -- } -- r.on('readable', flow); -- r.on('end', function() { -- results.push('EOF'); -- }); -- flow(); -- -- process.on('exit', function() { -- assert.deepEqual(results, [ 'eHh4', 'eHg=', 'EOF' ]); -- console.log('ok'); -- }); --} -diff --git a/test/simple/test-stream2-readable-from-list.js b/test/simple/test-stream2-readable-from-list.js -index 7c96ffe..04a96f5 100644 ---- a/test/simple/test-stream2-readable-from-list.js -+++ b/test/simple/test-stream2-readable-from-list.js -@@ -21,7 +21,7 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var fromList = require('_stream_readable')._fromList; -+var fromList = require('../../lib/_stream_readable')._fromList; - - // tiny node-tap lookalike. - var tests = []; -diff --git a/test/simple/test-stream2-readable-legacy-drain.js b/test/simple/test-stream2-readable-legacy-drain.js -index 675da8e..51fd3d5 100644 ---- a/test/simple/test-stream2-readable-legacy-drain.js -+++ b/test/simple/test-stream2-readable-legacy-drain.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Stream = require('stream'); -+var Stream = require('../../'); - var Readable = Stream.Readable; - - var r = new Readable(); -diff --git a/test/simple/test-stream2-readable-non-empty-end.js b/test/simple/test-stream2-readable-non-empty-end.js -index 7314ae7..c971898 100644 ---- a/test/simple/test-stream2-readable-non-empty-end.js -+++ b/test/simple/test-stream2-readable-non-empty-end.js -@@ -21,7 +21,7 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var Readable = require('_stream_readable'); -+var Readable = require('../../lib/_stream_readable'); - - var len = 0; - var chunks = new Array(10); -diff --git a/test/simple/test-stream2-readable-wrap-empty.js b/test/simple/test-stream2-readable-wrap-empty.js -index 2e5cf25..fd8a3dc 100644 ---- a/test/simple/test-stream2-readable-wrap-empty.js -+++ b/test/simple/test-stream2-readable-wrap-empty.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); -+var Readable = require('../../lib/_stream_readable'); - var EE = require('events').EventEmitter; - - var oldStream = new EE(); -diff --git a/test/simple/test-stream2-readable-wrap.js b/test/simple/test-stream2-readable-wrap.js -index 90eea01..6b177f7 100644 ---- a/test/simple/test-stream2-readable-wrap.js -+++ b/test/simple/test-stream2-readable-wrap.js -@@ -22,8 +22,8 @@ - var common = require('../common'); - var assert = require('assert'); - --var Readable = require('_stream_readable'); --var Writable = require('_stream_writable'); -+var Readable = require('../../lib/_stream_readable'); -+var Writable = require('../../lib/_stream_writable'); - var EE = require('events').EventEmitter; - - var testRuns = 0, completedRuns = 0; -diff --git a/test/simple/test-stream2-set-encoding.js b/test/simple/test-stream2-set-encoding.js -index 5d2c32a..685531b 100644 ---- a/test/simple/test-stream2-set-encoding.js -+++ b/test/simple/test-stream2-set-encoding.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var R = require('_stream_readable'); -+var R = require('../../lib/_stream_readable'); - var util = require('util'); - - // tiny node-tap lookalike. -diff --git a/test/simple/test-stream2-transform.js b/test/simple/test-stream2-transform.js -index 9c9ddd8..a0cacc6 100644 ---- a/test/simple/test-stream2-transform.js -+++ b/test/simple/test-stream2-transform.js -@@ -21,8 +21,8 @@ - - var assert = require('assert'); - var common = require('../common.js'); --var PassThrough = require('_stream_passthrough'); --var Transform = require('_stream_transform'); -+var PassThrough = require('../../').PassThrough; -+var Transform = require('../../').Transform; - - // tiny node-tap lookalike. - var tests = []; -diff --git a/test/simple/test-stream2-unpipe-drain.js b/test/simple/test-stream2-unpipe-drain.js -index d66dc3c..365b327 100644 ---- a/test/simple/test-stream2-unpipe-drain.js -+++ b/test/simple/test-stream2-unpipe-drain.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - var crypto = require('crypto'); - - var util = require('util'); -diff --git a/test/simple/test-stream2-unpipe-leak.js b/test/simple/test-stream2-unpipe-leak.js -index 99f8746..17c92ae 100644 ---- a/test/simple/test-stream2-unpipe-leak.js -+++ b/test/simple/test-stream2-unpipe-leak.js -@@ -22,7 +22,7 @@ - - var common = require('../common.js'); - var assert = require('assert'); --var stream = require('stream'); -+var stream = require('../../'); - - var chunk = new Buffer('hallo'); - -diff --git a/test/simple/test-stream2-writable.js b/test/simple/test-stream2-writable.js -index 704100c..209c3a6 100644 ---- a/test/simple/test-stream2-writable.js -+++ b/test/simple/test-stream2-writable.js -@@ -20,8 +20,8 @@ - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var common = require('../common.js'); --var W = require('_stream_writable'); --var D = require('_stream_duplex'); -+var W = require('../../').Writable; -+var D = require('../../').Duplex; - var assert = require('assert'); - - var util = require('util'); -diff --git a/test/simple/test-stream3-pause-then-read.js b/test/simple/test-stream3-pause-then-read.js -index b91bde3..2f72c15 100644 ---- a/test/simple/test-stream3-pause-then-read.js -+++ b/test/simple/test-stream3-pause-then-read.js -@@ -22,7 +22,7 @@ - var common = require('../common'); - var assert = require('assert'); - --var stream = require('stream'); -+var stream = require('../../'); - var Readable = stream.Readable; - var Writable = stream.Writable; - diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index 97deb6d2..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; -var util = require('util'); -if (!util.isUndefined) { - var utilIs = require('core-util-is'); - for (var f in utilIs) { - util[f] = utilIs[f]; - } -} -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -Object.keys(Writable.prototype).forEach(function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index bb4cafe2..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); -var util = require('util'); -if (!util.isUndefined) { - var utilIs = require('core-util-is'); - for (var f in utilIs) { - util[f] = utilIs[f]; - } -} -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 0aa193fa..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,925 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -module.exports = Readable; -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; - -if (!global.setImmediate) global.setImmediate = function setImmediate(fn) { - return setTimeout(fn, 0); -}; -if (!global.clearImmediate) global.clearImmediate = function clearImmediate(i) { - return clearTimeout(i); -}; - -var Stream = require('stream'); -var util = require('util'); -var Buffer = require('buffer').Buffer; -if (!util.isUndefined) { - var utilIs = require('core-util-is'); - for (var f in utilIs) { - util[f] = utilIs[f]; - } -} -var StringDecoder; -var debug; -if (util.debuglog) - debug = util.debuglog('stream'); -else try { - debug = require('debuglog')('stream'); -} catch (er) { - debug = function() {}; -} - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = options.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (util.isString(chunk) && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (util.isNullOrUndefined(chunk)) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - if (!addToFront) - state.reading = false; - - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) - state.buffer.unshift(chunk); - else - state.buffer.push(chunk); - - if (state.needReadable) - emitReadable(stream); - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || util.isNull(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; - - if (!util.isNumber(n) || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) - endReadable(this); - else - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } - - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (util.isNull(ret)) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) - endReadable(this); - - if (!util.isNull(ret)) - this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode && - !er) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && - (!dest._writableState || dest._writableState.needDrain)) - ondrain(); - } - - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - debug('false write response, pause', - src._readableState.awaitDrain); - src._readableState.awaitDrain++; - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (Array.isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) - state.awaitDrain--; - if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = state.pipes.indexOf(dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - var self = this; - process.nextTick(function() { - debug('readable nexttick read 0'); - self.read(0); - }); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - if (!state.reading) { - debug('resume read 0'); - this.read(0); - } - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(function() { - resume_(stream, state); - }); - } -} - -function resume_(stream, state) { - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) - stream.read(0); -} - -Readable.prototype.pause = function() { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - debug('wrapped data'); - if (state.decoder) - chunk = state.decoder.write(chunk); - if (!chunk || !state.objectMode && !chunk.length) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (util.isFunction(stream[i]) && util.isUndefined(this[i])) { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - events.forEach(function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index b0caf57d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); -var util = require('util'); -if (!util.isUndefined) { - var utilIs = require('core-util-is'); - for (var f in utilIs) { - util[f] = utilIs[f]; - } -} -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (!util.isNullOrUndefined(data)) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('prefinish', function() { - if (util.isFunction(this._flush)) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 12076c5d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,467 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; -Writable.WritableState = WritableState; - -var util = require('util'); -var Buffer = require('buffer').Buffer; -if (!util.isUndefined) { - var utilIs = require('core-util-is'); - for (var f in utilIs) { - util[f] = utilIs[f]; - } -} -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = options.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // Internal, used in net.js and _tls_wrap.js - this._errorEmitted = false; -} - -function Writable(options) { - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof require('./_stream_duplex'))) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (util.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (!util.isFunction(cb)) - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function() { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function() { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && - !state.corked && - !state.finished && - !state.bufferProcessing && - state.buffer.length) - clearBuffer(this, state); - } -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - util.isString(chunk)) { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (util.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing || state.corked) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, false, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) - stream._writev(chunk, state.onwrite); - else - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - state.pendingcb--; - cb(er); - }); - else { - state.pendingcb--; - cb(er); - } - - stream.emit('error', er); - stream._errorEmitted = true; -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && - !state.corked && - !state.bufferProcessing && - state.buffer.length) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - if (stream._writev && state.buffer.length > 1) { - // Fast case, write everything using _writev() - var cbs = []; - for (var c = 0; c < state.buffer.length; c++) - cbs.push(state.buffer[c].callback); - - // count the one we are adding, as well. - // TODO(isaacs) clean this up - state.pendingcb++; - doWrite(stream, state, true, state.length, state.buffer, '', function(err) { - for (var i = 0; i < cbs.length; i++) { - state.pendingcb--; - cbs[i](err); - } - }); - - // Clear buffer - state.buffer = []; - } else { - // Slow case, write chunks one-by-one - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; - } - - state.bufferProcessing = false; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); - -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (util.isFunction(chunk)) { - cb = chunk; - chunk = null; - encoding = null; - } else if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (!util.isNullOrUndefined(chunk)) - this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else - prefinish(stream, state); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b414..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# core-util-is - -The `util.is*` functions introduced in Node v0.12. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c05..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/float.patch +++ /dev/null @@ -1,604 +0,0 @@ -diff --git a/lib/util.js b/lib/util.js -index a03e874..9074e8e 100644 ---- a/lib/util.js -+++ b/lib/util.js -@@ -19,430 +19,6 @@ - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - --var formatRegExp = /%[sdj%]/g; --exports.format = function(f) { -- if (!isString(f)) { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -- -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function(x) { -- if (x === '%%') return '%'; -- if (i >= len) return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': -- try { -- return JSON.stringify(args[i++]); -- } catch (_) { -- return '[Circular]'; -- } -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (isNull(x) || !isObject(x)) { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; --}; -- -- --// Mark that a method should not be used. --// Returns a modified function which warns once by default. --// If --no-deprecation is set, then it is a no-op. --exports.deprecate = function(fn, msg) { -- // Allow for deprecating things in the process of starting up. -- if (isUndefined(global.process)) { -- return function() { -- return exports.deprecate(fn, msg).apply(this, arguments); -- }; -- } -- -- if (process.noDeprecation === true) { -- return fn; -- } -- -- var warned = false; -- function deprecated() { -- if (!warned) { -- if (process.throwDeprecation) { -- throw new Error(msg); -- } else if (process.traceDeprecation) { -- console.trace(msg); -- } else { -- console.error(msg); -- } -- warned = true; -- } -- return fn.apply(this, arguments); -- } -- -- return deprecated; --}; -- -- --var debugs = {}; --var debugEnviron; --exports.debuglog = function(set) { -- if (isUndefined(debugEnviron)) -- debugEnviron = process.env.NODE_DEBUG || ''; -- set = set.toUpperCase(); -- if (!debugs[set]) { -- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { -- var pid = process.pid; -- debugs[set] = function() { -- var msg = exports.format.apply(exports, arguments); -- console.error('%s %d: %s', set, pid, msg); -- }; -- } else { -- debugs[set] = function() {}; -- } -- } -- return debugs[set]; --}; -- -- --/** -- * Echos the value of a value. Trys to print the value out -- * in the best way possible given the different types. -- * -- * @param {Object} obj The object to print out. -- * @param {Object} opts Optional options object that alters the output. -- */ --/* legacy: obj, showHidden, depth, colors*/ --function inspect(obj, opts) { -- // default options -- var ctx = { -- seen: [], -- stylize: stylizeNoColor -- }; -- // legacy... -- if (arguments.length >= 3) ctx.depth = arguments[2]; -- if (arguments.length >= 4) ctx.colors = arguments[3]; -- if (isBoolean(opts)) { -- // legacy... -- ctx.showHidden = opts; -- } else if (opts) { -- // got an "options" object -- exports._extend(ctx, opts); -- } -- // set default options -- if (isUndefined(ctx.showHidden)) ctx.showHidden = false; -- if (isUndefined(ctx.depth)) ctx.depth = 2; -- if (isUndefined(ctx.colors)) ctx.colors = false; -- if (isUndefined(ctx.customInspect)) ctx.customInspect = true; -- if (ctx.colors) ctx.stylize = stylizeWithColor; -- return formatValue(ctx, obj, ctx.depth); --} --exports.inspect = inspect; -- -- --// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics --inspect.colors = { -- 'bold' : [1, 22], -- 'italic' : [3, 23], -- 'underline' : [4, 24], -- 'inverse' : [7, 27], -- 'white' : [37, 39], -- 'grey' : [90, 39], -- 'black' : [30, 39], -- 'blue' : [34, 39], -- 'cyan' : [36, 39], -- 'green' : [32, 39], -- 'magenta' : [35, 39], -- 'red' : [31, 39], -- 'yellow' : [33, 39] --}; -- --// Don't use 'blue' not visible on cmd.exe --inspect.styles = { -- 'special': 'cyan', -- 'number': 'yellow', -- 'boolean': 'yellow', -- 'undefined': 'grey', -- 'null': 'bold', -- 'string': 'green', -- 'date': 'magenta', -- // "name": intentionally not styling -- 'regexp': 'red' --}; -- -- --function stylizeWithColor(str, styleType) { -- var style = inspect.styles[styleType]; -- -- if (style) { -- return '\u001b[' + inspect.colors[style][0] + 'm' + str + -- '\u001b[' + inspect.colors[style][1] + 'm'; -- } else { -- return str; -- } --} -- -- --function stylizeNoColor(str, styleType) { -- return str; --} -- -- --function arrayToHash(array) { -- var hash = {}; -- -- array.forEach(function(val, idx) { -- hash[val] = true; -- }); -- -- return hash; --} -- -- --function formatValue(ctx, value, recurseTimes) { -- // Provide a hook for user-specified inspect functions. -- // Check that value is an object with an inspect function on it -- if (ctx.customInspect && -- value && -- isFunction(value.inspect) && -- // Filter out the util module, it's inspect function is special -- value.inspect !== exports.inspect && -- // Also filter out any prototype objects using the circular check. -- !(value.constructor && value.constructor.prototype === value)) { -- var ret = value.inspect(recurseTimes, ctx); -- if (!isString(ret)) { -- ret = formatValue(ctx, ret, recurseTimes); -- } -- return ret; -- } -- -- // Primitive types cannot have properties -- var primitive = formatPrimitive(ctx, value); -- if (primitive) { -- return primitive; -- } -- -- // Look up the keys of the object. -- var keys = Object.keys(value); -- var visibleKeys = arrayToHash(keys); -- -- if (ctx.showHidden) { -- keys = Object.getOwnPropertyNames(value); -- } -- -- // Some type of object without properties can be shortcutted. -- if (keys.length === 0) { -- if (isFunction(value)) { -- var name = value.name ? ': ' + value.name : ''; -- return ctx.stylize('[Function' + name + ']', 'special'); -- } -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } -- if (isDate(value)) { -- return ctx.stylize(Date.prototype.toString.call(value), 'date'); -- } -- if (isError(value)) { -- return formatError(value); -- } -- } -- -- var base = '', array = false, braces = ['{', '}']; -- -- // Make Array say that they are Array -- if (isArray(value)) { -- array = true; -- braces = ['[', ']']; -- } -- -- // Make functions say that they are functions -- if (isFunction(value)) { -- var n = value.name ? ': ' + value.name : ''; -- base = ' [Function' + n + ']'; -- } -- -- // Make RegExps say that they are RegExps -- if (isRegExp(value)) { -- base = ' ' + RegExp.prototype.toString.call(value); -- } -- -- // Make dates with properties first say the date -- if (isDate(value)) { -- base = ' ' + Date.prototype.toUTCString.call(value); -- } -- -- // Make error with message first say the error -- if (isError(value)) { -- base = ' ' + formatError(value); -- } -- -- if (keys.length === 0 && (!array || value.length == 0)) { -- return braces[0] + base + braces[1]; -- } -- -- if (recurseTimes < 0) { -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } else { -- return ctx.stylize('[Object]', 'special'); -- } -- } -- -- ctx.seen.push(value); -- -- var output; -- if (array) { -- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); -- } else { -- output = keys.map(function(key) { -- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); -- }); -- } -- -- ctx.seen.pop(); -- -- return reduceToSingleString(output, base, braces); --} -- -- --function formatPrimitive(ctx, value) { -- if (isUndefined(value)) -- return ctx.stylize('undefined', 'undefined'); -- if (isString(value)) { -- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') -- .replace(/'/g, "\\'") -- .replace(/\\"/g, '"') + '\''; -- return ctx.stylize(simple, 'string'); -- } -- if (isNumber(value)) { -- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0, -- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 . -- if (value === 0 && 1 / value < 0) -- return ctx.stylize('-0', 'number'); -- return ctx.stylize('' + value, 'number'); -- } -- if (isBoolean(value)) -- return ctx.stylize('' + value, 'boolean'); -- // For some reason typeof null is "object", so special case here. -- if (isNull(value)) -- return ctx.stylize('null', 'null'); --} -- -- --function formatError(value) { -- return '[' + Error.prototype.toString.call(value) + ']'; --} -- -- --function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { -- var output = []; -- for (var i = 0, l = value.length; i < l; ++i) { -- if (hasOwnProperty(value, String(i))) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- String(i), true)); -- } else { -- output.push(''); -- } -- } -- keys.forEach(function(key) { -- if (!key.match(/^\d+$/)) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- key, true)); -- } -- }); -- return output; --} -- -- --function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { -- var name, str, desc; -- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; -- if (desc.get) { -- if (desc.set) { -- str = ctx.stylize('[Getter/Setter]', 'special'); -- } else { -- str = ctx.stylize('[Getter]', 'special'); -- } -- } else { -- if (desc.set) { -- str = ctx.stylize('[Setter]', 'special'); -- } -- } -- if (!hasOwnProperty(visibleKeys, key)) { -- name = '[' + key + ']'; -- } -- if (!str) { -- if (ctx.seen.indexOf(desc.value) < 0) { -- if (isNull(recurseTimes)) { -- str = formatValue(ctx, desc.value, null); -- } else { -- str = formatValue(ctx, desc.value, recurseTimes - 1); -- } -- if (str.indexOf('\n') > -1) { -- if (array) { -- str = str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n').substr(2); -- } else { -- str = '\n' + str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n'); -- } -- } -- } else { -- str = ctx.stylize('[Circular]', 'special'); -- } -- } -- if (isUndefined(name)) { -- if (array && key.match(/^\d+$/)) { -- return str; -- } -- name = JSON.stringify('' + key); -- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { -- name = name.substr(1, name.length - 2); -- name = ctx.stylize(name, 'name'); -- } else { -- name = name.replace(/'/g, "\\'") -- .replace(/\\"/g, '"') -- .replace(/(^"|"$)/g, "'"); -- name = ctx.stylize(name, 'string'); -- } -- } -- -- return name + ': ' + str; --} -- -- --function reduceToSingleString(output, base, braces) { -- var numLinesEst = 0; -- var length = output.reduce(function(prev, cur) { -- numLinesEst++; -- if (cur.indexOf('\n') >= 0) numLinesEst++; -- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; -- }, 0); -- -- if (length > 60) { -- return braces[0] + -- (base === '' ? '' : base + '\n ') + -- ' ' + -- output.join(',\n ') + -- ' ' + -- braces[1]; -- } -- -- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; --} -- -- - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray(ar) { -@@ -522,166 +98,10 @@ function isPrimitive(arg) { - exports.isPrimitive = isPrimitive; - - function isBuffer(arg) { -- return arg instanceof Buffer; -+ return Buffer.isBuffer(arg); - } - exports.isBuffer = isBuffer; - - function objectToString(o) { - return Object.prototype.toString.call(o); --} -- -- --function pad(n) { -- return n < 10 ? '0' + n.toString(10) : n.toString(10); --} -- -- --var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', -- 'Oct', 'Nov', 'Dec']; -- --// 26 Feb 16:19:34 --function timestamp() { -- var d = new Date(); -- var time = [pad(d.getHours()), -- pad(d.getMinutes()), -- pad(d.getSeconds())].join(':'); -- return [d.getDate(), months[d.getMonth()], time].join(' '); --} -- -- --// log is just a thin wrapper to console.log that prepends a timestamp --exports.log = function() { -- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); --}; -- -- --/** -- * Inherit the prototype methods from one constructor into another. -- * -- * The Function.prototype.inherits from lang.js rewritten as a standalone -- * function (not on Function.prototype). NOTE: If this file is to be loaded -- * during bootstrapping this function needs to be rewritten using some native -- * functions as prototype setup using normal JavaScript does not work as -- * expected during bootstrapping (see mirror.js in r114903). -- * -- * @param {function} ctor Constructor function which needs to inherit the -- * prototype. -- * @param {function} superCtor Constructor function to inherit prototype from. -- */ --exports.inherits = function(ctor, superCtor) { -- ctor.super_ = superCtor; -- ctor.prototype = Object.create(superCtor.prototype, { -- constructor: { -- value: ctor, -- enumerable: false, -- writable: true, -- configurable: true -- } -- }); --}; -- --exports._extend = function(origin, add) { -- // Don't do anything if add isn't an object -- if (!add || !isObject(add)) return origin; -- -- var keys = Object.keys(add); -- var i = keys.length; -- while (i--) { -- origin[keys[i]] = add[keys[i]]; -- } -- return origin; --}; -- --function hasOwnProperty(obj, prop) { -- return Object.prototype.hasOwnProperty.call(obj, prop); --} -- -- --// Deprecated old stuff. -- --exports.p = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- console.error(exports.inspect(arguments[i])); -- } --}, 'util.p: Use console.error() instead'); -- -- --exports.exec = exports.deprecate(function() { -- return require('child_process').exec.apply(this, arguments); --}, 'util.exec is now called `child_process.exec`.'); -- -- --exports.print = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(String(arguments[i])); -- } --}, 'util.print: Use console.log instead'); -- -- --exports.puts = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(arguments[i] + '\n'); -- } --}, 'util.puts: Use console.log instead'); -- -- --exports.debug = exports.deprecate(function(x) { -- process.stderr.write('DEBUG: ' + x + '\n'); --}, 'util.debug: Use console.error instead'); -- -- --exports.error = exports.deprecate(function(x) { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stderr.write(arguments[i] + '\n'); -- } --}, 'util.error: Use console.error instead'); -- -- --exports.pump = exports.deprecate(function(readStream, writeStream, callback) { -- var callbackCalled = false; -- -- function call(a, b, c) { -- if (callback && !callbackCalled) { -- callback(a, b, c); -- callbackCalled = true; -- } -- } -- -- readStream.addListener('data', function(chunk) { -- if (writeStream.write(chunk) === false) readStream.pause(); -- }); -- -- writeStream.addListener('drain', function() { -- readStream.resume(); -- }); -- -- readStream.addListener('end', function() { -- writeStream.end(); -- }); -- -- readStream.addListener('close', function() { -- call(); -- }); -- -- readStream.addListener('error', function(err) { -- writeStream.end(); -- call(err); -- }); -- -- writeStream.addListener('error', function(err) { -- readStream.destroy(); -- call(err); -- }); --}, 'util.pump(): Use readableStream.pipe() instead'); -- -- --var uv; --exports._errnoException = function(err, syscall) { -- if (isUndefined(uv)) uv = process.binding('uv'); -- var errname = uv.errname(err); -- var e = new Error(syscall + ' ' + errname); -- e.code = errname; -- e.errno = errname; -- e.syscall = syscall; -- return e; --}; -+} \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index 9074e8eb..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index cb9aa927..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.1", - "description": "The `util.is*` functions introduced in Node v0.12.", - "main": "lib/util.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is" - }, - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", - "_id": "core-util-is@1.0.1", - "_from": "core-util-is@~1.0.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js deleted file mode 100644 index 007fa105..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/util.js +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && objectToString(e) === '[object Error]'; -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return arg instanceof Buffer; -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/LICENSE deleted file mode 100644 index a3187cc1..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/README.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/README.md deleted file mode 100644 index dc6fccec..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# debuglog - backport of util.debuglog() from node v0.11 - -To facilitate using the `util.debuglog()` function that will be available when -node v0.12 is released now, this is a copy extracted from the source. - -## require('debuglog') - -Return `util.debuglog`, if it exists, otherwise it will return an internal copy -of the implementation from node v0.11. - -## debuglog(section) - -* `section` {String} The section of the program to be debugged -* Returns: {Function} The logging function - -This is used to create a function which conditionally writes to stderr -based on the existence of a `NODE_DEBUG` environment variable. If the -`section` name appears in that environment variable, then the returned -function will be similar to `console.error()`. If not, then the -returned function is a no-op. - -For example: - -```javascript -var debuglog = util.debuglog('foo'); - -var bar = 123; -debuglog('hello from foo [%d]', bar); -``` - -If this program is run with `NODE_DEBUG=foo` in the environment, then -it will output something like: - - FOO 3245: hello from foo [123] - -where `3245` is the process id. If it is not run with that -environment variable set, then it will not print anything. - -You may separate multiple `NODE_DEBUG` environment variables with a -comma. For example, `NODE_DEBUG=fs,net,tls`. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/debuglog.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/debuglog.js deleted file mode 100644 index da465c29..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/debuglog.js +++ /dev/null @@ -1,22 +0,0 @@ -var util = require('util'); - -module.exports = util.debuglog || debuglog; - -var debugs = {}; -var debugEnviron = process.env.NODE_DEBUG || ''; - -function debuglog(set) { - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = util.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/package.json deleted file mode 100644 index 5ca511cf..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/debuglog/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "debuglog", - "version": "0.0.2", - "description": "backport of util.debuglog from node v0.11", - "license": "MIT", - "main": "debuglog.js", - "repository": { - "type": "git", - "url": "https://github.com/sam-github/node-debuglog.git" - }, - "author": { - "name": "Sam Roberts", - "email": "sam@strongloop.com" - }, - "engines": { - "node": "*" - }, - "readme": "# debuglog - backport of util.debuglog() from node v0.11\n\nTo facilitate using the `util.debuglog()` function that will be available when\nnode v0.12 is released now, this is a copy extracted from the source.\n\n## require('debuglog')\n\nReturn `util.debuglog`, if it exists, otherwise it will return an internal copy\nof the implementation from node v0.11.\n\n## debuglog(section)\n\n* `section` {String} The section of the program to be debugged\n* Returns: {Function} The logging function\n\nThis is used to create a function which conditionally writes to stderr\nbased on the existence of a `NODE_DEBUG` environment variable. If the\n`section` name appears in that environment variable, then the returned\nfunction will be similar to `console.error()`. If not, then the\nreturned function is a no-op.\n\nFor example:\n\n```javascript\nvar debuglog = util.debuglog('foo');\n\nvar bar = 123;\ndebuglog('hello from foo [%d]', bar);\n```\n\nIf this program is run with `NODE_DEBUG=foo` in the environment, then\nit will output something like:\n\n FOO 3245: hello from foo [123]\n\nwhere `3245` is the process id. If it is not run with that\nenvironment variable set, then it will not print anything.\n\nYou may separate multiple `NODE_DEBUG` environment variables with a\ncomma. For example, `NODE_DEBUG=fs,net,tls`.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/sam-github/node-debuglog/issues" - }, - "homepage": "https://github.com/sam-github/node-debuglog", - "_id": "debuglog@0.0.2", - "_from": "debuglog@0.0.2" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320cc..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a4..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa001..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index 2e44a03e..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; -}; - - -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; - - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; - - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; - } - - var lenIncomplete = this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - - return i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} - -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 7f5d0011..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.25-1", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.25-1", - "_from": "string_decoder@~0.10.x" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/package.json deleted file mode 100644 index eef37c6a..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.1.11", - "description": "An exploration of a new kind of readable streams for Node.js", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "string_decoder": "~0.10.x", - "debuglog": "0.0.2" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "optionalDependencies": { - "debuglog": "0.0.2" - }, - "readme": "# readable-stream\n\n***Node-core streams for userland***\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/)\n\nThis package is a mirror of the Streams2 and Streams3 implementations in Node-core.\n\nIf you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core.\n\n**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.\n\n**readable-stream** uses proper patch-level versioning so if you pin to `\"~1.0.0\"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `\"~1.1.0\"`\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.1.11", - "_from": "readable-stream@~1.1.9" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/passthrough.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/readable.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/readable.js deleted file mode 100644 index 09b8bf50..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,7 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = require('stream'); -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/transform.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/writable.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/.travis.yml b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/.travis.yml deleted file mode 100644 index cc4dba29..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/LICENSE deleted file mode 100644 index 11adfaec..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/LICENSE +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (c) 2010, Linden Research, Inc. - Copyright (c) 2012, Joshua Bell - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - $/LicenseInfo$ - */ - -// Original can be found at: -// https://bitbucket.org/lindenlab/llsd -// Modifications by Joshua Bell inexorabletash@gmail.com -// https://github.com/inexorabletash/polyfill - -// ES3/ES5 implementation of the Krhonos Typed Array Specification -// Ref: http://www.khronos.org/registry/typedarray/specs/latest/ -// Date: 2011-02-01 -// -// Variations: -// * Allows typed_array.get/set() as alias for subscripts (typed_array[]) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/example/tarray.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/example/tarray.js deleted file mode 100644 index 8423d7c9..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/example/tarray.js +++ /dev/null @@ -1,4 +0,0 @@ -var Uint8Array = require('../').Uint8Array; -var ua = new Uint8Array(5); -ua[1] = 256 + 55; -console.log(ua[1]); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/index.js deleted file mode 100644 index 5e540841..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/index.js +++ /dev/null @@ -1,630 +0,0 @@ -var undefined = (void 0); // Paranoia - -// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to -// create, and consume so much memory, that the browser appears frozen. -var MAX_ARRAY_LENGTH = 1e5; - -// Approximations of internal ECMAScript conversion functions -var ECMAScript = (function() { - // Stash a copy in case other scripts modify these - var opts = Object.prototype.toString, - ophop = Object.prototype.hasOwnProperty; - - return { - // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: - Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, - HasProperty: function(o, p) { return p in o; }, - HasOwnProperty: function(o, p) { return ophop.call(o, p); }, - IsCallable: function(o) { return typeof o === 'function'; }, - ToInt32: function(v) { return v >> 0; }, - ToUint32: function(v) { return v >>> 0; } - }; -}()); - -// Snapshot intrinsics -var LN2 = Math.LN2, - abs = Math.abs, - floor = Math.floor, - log = Math.log, - min = Math.min, - pow = Math.pow, - round = Math.round; - -// ES5: lock down object properties -function configureProperties(obj) { - if (getOwnPropNames && defineProp) { - var props = getOwnPropNames(obj), i; - for (i = 0; i < props.length; i += 1) { - defineProp(obj, props[i], { - value: obj[props[i]], - writable: false, - enumerable: false, - configurable: false - }); - } - } -} - -// emulate ES5 getter/setter API using legacy APIs -// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx -// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but -// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) -var defineProp -if (Object.defineProperty && (function() { - try { - Object.defineProperty({}, 'x', {}); - return true; - } catch (e) { - return false; - } - })()) { - defineProp = Object.defineProperty; -} else { - defineProp = function(o, p, desc) { - if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); - if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } - if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } - if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } - return o; - }; -} - -var getOwnPropNames = Object.getOwnPropertyNames || function (o) { - if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); - var props = [], p; - for (p in o) { - if (ECMAScript.HasOwnProperty(o, p)) { - props.push(p); - } - } - return props; -}; - -// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) -// for index in 0 ... obj.length -function makeArrayAccessors(obj) { - if (!defineProp) { return; } - - if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); - - function makeArrayAccessor(index) { - defineProp(obj, index, { - 'get': function() { return obj._getter(index); }, - 'set': function(v) { obj._setter(index, v); }, - enumerable: true, - configurable: false - }); - } - - var i; - for (i = 0; i < obj.length; i += 1) { - makeArrayAccessor(i); - } -} - -// Internal conversion functions: -// pack<Type>() - take a number (interpreted as Type), output a byte array -// unpack<Type>() - take a byte array, output a Type-like number - -function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } -function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } - -function packI8(n) { return [n & 0xff]; } -function unpackI8(bytes) { return as_signed(bytes[0], 8); } - -function packU8(n) { return [n & 0xff]; } -function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } - -function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } - -function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } - -function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } -function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } - -function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } -function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } - -function packIEEE754(v, ebits, fbits) { - - var bias = (1 << (ebits - 1)) - 1, - s, e, f, ln, - i, bits, str, bytes; - - function roundToEven(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; - } - - // Compute sign, exponent, fraction - if (v !== 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 { - // Normalized - e = e + bias; - f = f - pow(2, fbits); - } - } else { - // Denormalized - 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; -} - -function unpackIEEE754(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; - } else if (e > 0) { - // Normalized - return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); - } else if (f !== 0) { - // Denormalized - return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); - } else { - return s < 0 ? -0 : 0; - } -} - -function unpackF64(b) { return unpackIEEE754(b, 11, 52); } -function packF64(v) { return packIEEE754(v, 11, 52); } -function unpackF32(b) { return unpackIEEE754(b, 8, 23); } -function packF32(v) { return packIEEE754(v, 8, 23); } - - -// -// 3 The ArrayBuffer Type -// - -(function() { - - /** @constructor */ - var ArrayBuffer = function ArrayBuffer(length) { - length = ECMAScript.ToInt32(length); - if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); - - this.byteLength = length; - this._bytes = []; - this._bytes.length = length; - - var i; - for (i = 0; i < this.byteLength; i += 1) { - this._bytes[i] = 0; - } - - configureProperties(this); - }; - - exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; - - // - // 4 The ArrayBufferView Type - // - - // NOTE: this constructor is not exported - /** @constructor */ - var ArrayBufferView = function ArrayBufferView() { - //this.buffer = null; - //this.byteOffset = 0; - //this.byteLength = 0; - }; - - // - // 5 The Typed Array View Types - // - - function makeConstructor(bytesPerElement, pack, unpack) { - // Each TypedArray type requires a distinct constructor instance with - // identical logic, which this produces. - - var ctor; - ctor = function(buffer, byteOffset, length) { - var array, sequence, i, s; - - if (!arguments.length || typeof arguments[0] === 'number') { - // Constructor(unsigned long length) - this.length = ECMAScript.ToInt32(arguments[0]); - if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); - - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { - // Constructor(TypedArray array) - array = arguments[0]; - - this.length = array.length; - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - this._setter(i, array._getter(i)); - } - } else if (typeof arguments[0] === 'object' && - !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(sequence<type> array) - sequence = arguments[0]; - - this.length = ECMAScript.ToUint32(sequence.length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - this.buffer = new ArrayBuffer(this.byteLength); - this.byteOffset = 0; - - for (i = 0; i < this.length; i += 1) { - s = sequence[i]; - this._setter(i, Number(s)); - } - } else if (typeof arguments[0] === 'object' && - (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, optional unsigned long length) - this.buffer = buffer; - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (this.byteOffset % this.BYTES_PER_ELEMENT) { - // The given byteOffset must be a multiple of the element - // size of the specific type, otherwise an exception is raised. - throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - - if (this.byteLength % this.BYTES_PER_ELEMENT) { - throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); - } - this.length = this.byteLength / this.BYTES_PER_ELEMENT; - } else { - this.length = ECMAScript.ToUint32(length); - this.byteLength = this.length * this.BYTES_PER_ELEMENT; - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - - this.constructor = ctor; - - configureProperties(this); - makeArrayAccessors(this); - }; - - ctor.prototype = new ArrayBufferView(); - ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; - ctor.prototype._pack = pack; - ctor.prototype._unpack = unpack; - ctor.BYTES_PER_ELEMENT = bytesPerElement; - - // getter type (unsigned long index); - ctor.prototype._getter = function(index) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = [], i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - bytes.push(this.buffer._bytes[o]); - } - return this._unpack(bytes); - }; - - // NONSTANDARD: convenience alias for getter: type get(unsigned long index); - ctor.prototype.get = ctor.prototype._getter; - - // setter void (unsigned long index, type value); - ctor.prototype._setter = function(index, value) { - if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); - - index = ECMAScript.ToUint32(index); - if (index >= this.length) { - return undefined; - } - - var bytes = this._pack(value), i, o; - for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; - i < this.BYTES_PER_ELEMENT; - i += 1, o += 1) { - this.buffer._bytes[o] = bytes[i]; - } - }; - - // void set(TypedArray array, optional unsigned long offset); - // void set(sequence<type> array, optional unsigned long offset); - ctor.prototype.set = function(index, value) { - if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); - var array, sequence, offset, len, - i, s, d, - byteOffset, byteLength, tmp; - - if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { - // void set(TypedArray array, optional unsigned long offset); - array = arguments[0]; - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + array.length > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; - byteLength = array.length * this.BYTES_PER_ELEMENT; - - if (array.buffer === this.buffer) { - tmp = []; - for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { - tmp[i] = array.buffer._bytes[s]; - } - for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { - this.buffer._bytes[d] = tmp[i]; - } - } else { - for (i = 0, s = array.byteOffset, d = byteOffset; - i < byteLength; i += 1, s += 1, d += 1) { - this.buffer._bytes[d] = array.buffer._bytes[s]; - } - } - } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { - // void set(sequence<type> array, optional unsigned long offset); - sequence = arguments[0]; - len = ECMAScript.ToUint32(sequence.length); - offset = ECMAScript.ToUint32(arguments[1]); - - if (offset + len > this.length) { - throw new RangeError("Offset plus length of array is out of range"); - } - - for (i = 0; i < len; i += 1) { - s = sequence[i]; - this._setter(offset + i, Number(s)); - } - } else { - throw new TypeError("Unexpected argument type(s)"); - } - }; - - // TypedArray subarray(long begin, optional long end); - ctor.prototype.subarray = function(start, end) { - function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } - - start = ECMAScript.ToInt32(start); - end = ECMAScript.ToInt32(end); - - if (arguments.length < 1) { start = 0; } - if (arguments.length < 2) { end = this.length; } - - if (start < 0) { start = this.length + start; } - if (end < 0) { end = this.length + end; } - - start = clamp(start, 0, this.length); - end = clamp(end, 0, this.length); - - var len = end - start; - if (len < 0) { - len = 0; - } - - return new this.constructor( - this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); - }; - - return ctor; - } - - var Int8Array = makeConstructor(1, packI8, unpackI8); - var Uint8Array = makeConstructor(1, packU8, unpackU8); - var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); - var Int16Array = makeConstructor(2, packI16, unpackI16); - var Uint16Array = makeConstructor(2, packU16, unpackU16); - var Int32Array = makeConstructor(4, packI32, unpackI32); - var Uint32Array = makeConstructor(4, packU32, unpackU32); - var Float32Array = makeConstructor(4, packF32, unpackF32); - var Float64Array = makeConstructor(8, packF64, unpackF64); - - exports.Int8Array = exports.Int8Array || Int8Array; - exports.Uint8Array = exports.Uint8Array || Uint8Array; - exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; - exports.Int16Array = exports.Int16Array || Int16Array; - exports.Uint16Array = exports.Uint16Array || Uint16Array; - exports.Int32Array = exports.Int32Array || Int32Array; - exports.Uint32Array = exports.Uint32Array || Uint32Array; - exports.Float32Array = exports.Float32Array || Float32Array; - exports.Float64Array = exports.Float64Array || Float64Array; -}()); - -// -// 6 The DataView View Type -// - -(function() { - function r(array, index) { - return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; - } - - var IS_BIG_ENDIAN = (function() { - var u16array = new(exports.Uint16Array)([0x1234]), - u8array = new(exports.Uint8Array)(u16array.buffer); - return r(u8array, 0) === 0x12; - }()); - - // Constructor(ArrayBuffer buffer, - // optional unsigned long byteOffset, - // optional unsigned long byteLength) - /** @constructor */ - var DataView = function DataView(buffer, byteOffset, byteLength) { - if (arguments.length === 0) { - buffer = new exports.ArrayBuffer(0); - } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { - throw new TypeError("TypeError"); - } - - this.buffer = buffer || new exports.ArrayBuffer(0); - - this.byteOffset = ECMAScript.ToUint32(byteOffset); - if (this.byteOffset > this.buffer.byteLength) { - throw new RangeError("byteOffset out of range"); - } - - if (arguments.length < 3) { - this.byteLength = this.buffer.byteLength - this.byteOffset; - } else { - this.byteLength = ECMAScript.ToUint32(byteLength); - } - - if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { - throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); - } - - configureProperties(this); - }; - - function makeGetter(arrayType) { - return function(byteOffset, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - byteOffset += this.byteOffset; - - var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), - bytes = [], i; - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(uint8Array, i)); - } - - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); - }; - } - - DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); - DataView.prototype.getInt8 = makeGetter(exports.Int8Array); - DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); - DataView.prototype.getInt16 = makeGetter(exports.Int16Array); - DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); - DataView.prototype.getInt32 = makeGetter(exports.Int32Array); - DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); - DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); - - function makeSetter(arrayType) { - return function(byteOffset, value, littleEndian) { - - byteOffset = ECMAScript.ToUint32(byteOffset); - if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { - throw new RangeError("Array index out of range"); - } - - // Get bytes - var typeArray = new arrayType([value]), - byteArray = new exports.Uint8Array(typeArray.buffer), - bytes = [], i, byteView; - - for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { - bytes.push(r(byteArray, i)); - } - - // Flip if necessary - if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { - bytes.reverse(); - } - - // Write them - byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); - byteView.set(bytes); - }; - } - - DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); - DataView.prototype.setInt8 = makeSetter(exports.Int8Array); - DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); - DataView.prototype.setInt16 = makeSetter(exports.Int16Array); - DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); - DataView.prototype.setInt32 = makeSetter(exports.Int32Array); - DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); - DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); - - exports.DataView = exports.DataView || DataView; - -}()); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/package.json deleted file mode 100644 index 1428e4d4..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "typedarray", - "version": "0.0.5", - "description": "TypedArray polyfill for old browsers", - "main": "index.js", - "devDependencies": { - "tape": "~1.0.4" - }, - "scripts": { - "test": "tape test/*.js test/server/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/typedarray.git" - }, - "homepage": "https://github.com/substack/typedarray", - "keywords": [ - "ArrayBuffer", - "DataView", - "Float32Array", - "Float64Array", - "Int8Array", - "Int16Array", - "Int32Array", - "Uint8Array", - "Uint8ClampedArray", - "Uint16Array", - "Uint32Array", - "typed", - "array", - "polyfill" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "readme": "# typedarray\n\nTypedArray polyfill ripped from [this\nmodule](https://raw.github.com/inexorabletash/polyfill).\n\n[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray)\n\n[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray)\n\n# example\n\n``` js\nvar Uint8Array = require('typedarray').Uint8Array;\nvar ua = new Uint8Array(5);\nua[1] = 256 + 55;\nconsole.log(ua[1]);\n```\n\noutput:\n\n```\n55\n```\n\n# methods\n\n``` js\nvar TA = require('typedarray')\n```\n\nThe `TA` object has the following constructors:\n\n* TA.ArrayBuffer\n* TA.DataView\n* TA.Float32Array\n* TA.Float64Array\n* TA.Int8Array\n* TA.Int16Array\n* TA.Int32Array\n* TA.Uint8Array\n* TA.Uint8ClampedArray\n* TA.Uint16Array\n* TA.Uint32Array\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install typedarray\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/typedarray/issues" - }, - "_id": "typedarray@0.0.5", - "_from": "typedarray@~0.0.5" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/readme.markdown b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/readme.markdown deleted file mode 100644 index 847038a9..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/readme.markdown +++ /dev/null @@ -1,55 +0,0 @@ -# typedarray - -TypedArray polyfill ripped from [this -module](https://raw.github.com/inexorabletash/polyfill). - -[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray) - -[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray) - -# example - -``` js -var Uint8Array = require('typedarray').Uint8Array; -var ua = new Uint8Array(5); -ua[1] = 256 + 55; -console.log(ua[1]); -``` - -output: - -``` -55 -``` - -# methods - -``` js -var TA = require('typedarray') -``` - -The `TA` object has the following constructors: - -* TA.ArrayBuffer -* TA.DataView -* TA.Float32Array -* TA.Float64Array -* TA.Int8Array -* TA.Int16Array -* TA.Int32Array -* TA.Uint8Array -* TA.Uint8ClampedArray -* TA.Uint16Array -* TA.Uint32Array - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install typedarray -``` - -# license - -MIT diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js deleted file mode 100644 index 425950f9..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/server/undef_globals.js +++ /dev/null @@ -1,19 +0,0 @@ -var test = require('tape'); -var vm = require('vm'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/../../index.js', 'utf8'); - -test('u8a without globals', function (t) { - var c = { - module: { exports: {} }, - }; - c.exports = c.module.exports; - vm.runInNewContext(src, c); - var TA = c.module.exports; - var ua = new(TA.Uint8Array)(5); - - t.equal(ua.length, 5); - ua[1] = 256 + 55; - t.equal(ua[1], 55); - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/tarray.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/tarray.js deleted file mode 100644 index df596a34..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/node_modules/typedarray/test/tarray.js +++ /dev/null @@ -1,10 +0,0 @@ -var TA = require('../'); -var test = require('tape'); - -test('tiny u8a test', function (t) { - var ua = new(TA.Uint8Array)(5); - t.equal(ua.length, 5); - ua[1] = 256 + 55; - t.equal(ua[1], 55); - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/package.json deleted file mode 100644 index 9c154350..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "concat-stream", - "description": "writable stream that concatenates strings or binary data and calls a callback with the result", - "tags": [ - "stream", - "simple", - "util", - "utility" - ], - "version": "1.4.1", - "author": { - "name": "Max Ogden", - "email": "max@maxogden.com" - }, - "repository": { - "type": "git", - "url": "http://github.com/maxogden/node-concat-stream.git" - }, - "bugs": { - "url": "http://github.com/maxogden/node-concat-stream/issues" - }, - "engines": [ - "node >= 0.8" - ], - "main": "index.js", - "scripts": { - "test": "tape test/*.js test/server/*.js" - }, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.1", - "typedarray": "~0.0.5", - "readable-stream": "~1.1.9" - }, - "devDependencies": { - "tape": "~2.3.2" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "firefox/17..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "readme": "# concat-stream\n\nWritable stream that concatenates strings or binary data and calls a callback with the result. Not a transform stream -- more of a stream sink.\n\n[![NPM](https://nodei.co/npm/concat-stream.png)](https://nodei.co/npm/concat-stream/)\n\n[![browser support](https://ci.testling.com/maxogden/concat-stream.png)](https://ci.testling.com/maxogden/concat-stream)\n\n### examples\n\n#### Buffers\n\n```js\nvar concat = require('concat-stream')\nvar fs = require('fs')\n \nvar read = fs.createReadStream('readme.md')\nvar write = concat(function(data) {\n // data is all of readme.md as a Buffer\n})\n \nread.pipe(write)\n```\n\n#### Arrays\n\n```js\nvar write = concat(function(data) {})\nwrite.write([1,2,3])\nwrite.write([4,5,6])\nwrite.end()\n// data will be [1,2,3,4,5,6] in the above callback\n```\n\n#### Uint8Arrays\n\n```js\nvar write = concat(function(data) {})\nvar a = new Uint8Array(3)\na[0] = 97; a[1] = 98; a[2] = 99\nwrite.write(a)\nwrite.write('!')\nwrite.end(Buffer('!!1'))\n```\n\nSee `test/` for more examples\n\n# methods\n\n```js\nvar concat = require('concat-stream')\n```\n\n## var writable = concat(opts={}, cb)\n\nReturn a `writable` stream that will fire `cb(data)` with all of the data that\nwas written to the stream. Data can be written to `writable` as strings,\nBuffers, arrays of byte integers, and Uint8Arrays. \n\nBy default `concat-stream` will give you back the same data type as the type of the first buffer written to the stream. Use `opts.encoding` to set what format `data` should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason.\n\n* `string` - get a string\n* `buffer` - get back a Buffer\n* `array` - get an array of byte integers\n* `uint8array`, `u8`, `uint8` - get back a Uint8Array\n* `object`, get back an array of Objects\n\nIf you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't int he list above), it will try to convert concat them into a `Buffer`.\n\n# license\n\nMIT LICENSE\n", - "readmeFilename": "readme.md", - "homepage": "https://github.com/maxogden/node-concat-stream", - "_id": "concat-stream@1.4.1", - "_from": "concat-stream@^1.4.1" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/readme.md deleted file mode 100644 index dfd441b5..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/readme.md +++ /dev/null @@ -1,72 +0,0 @@ -# concat-stream - -Writable stream that concatenates strings or binary data and calls a callback with the result. Not a transform stream -- more of a stream sink. - -[![NPM](https://nodei.co/npm/concat-stream.png)](https://nodei.co/npm/concat-stream/) - -[![browser support](https://ci.testling.com/maxogden/concat-stream.png)](https://ci.testling.com/maxogden/concat-stream) - -### examples - -#### Buffers - -```js -var concat = require('concat-stream') -var fs = require('fs') - -var read = fs.createReadStream('readme.md') -var write = concat(function(data) { - // data is all of readme.md as a Buffer -}) - -read.pipe(write) -``` - -#### Arrays - -```js -var write = concat(function(data) {}) -write.write([1,2,3]) -write.write([4,5,6]) -write.end() -// data will be [1,2,3,4,5,6] in the above callback -``` - -#### Uint8Arrays - -```js -var write = concat(function(data) {}) -var a = new Uint8Array(3) -a[0] = 97; a[1] = 98; a[2] = 99 -write.write(a) -write.write('!') -write.end(Buffer('!!1')) -``` - -See `test/` for more examples - -# methods - -```js -var concat = require('concat-stream') -``` - -## var writable = concat(opts={}, cb) - -Return a `writable` stream that will fire `cb(data)` with all of the data that -was written to the stream. Data can be written to `writable` as strings, -Buffers, arrays of byte integers, and Uint8Arrays. - -By default `concat-stream` will give you back the same data type as the type of the first buffer written to the stream. Use `opts.encoding` to set what format `data` should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason. - -* `string` - get a string -* `buffer` - get back a Buffer -* `array` - get an array of byte integers -* `uint8array`, `u8`, `uint8` - get back a Uint8Array -* `object`, get back an array of Objects - -If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't int he list above), it will try to convert concat them into a `Buffer`. - -# license - -MIT LICENSE diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/array.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/array.js deleted file mode 100644 index 86e7dd43..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/array.js +++ /dev/null @@ -1,12 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('array stream', function (t) { - t.plan(1) - var arrays = concat({ encoding: 'array' }, function(out) { - t.deepEqual(out, [1,2,3,4,5,6]) - }) - arrays.write([1,2,3]) - arrays.write([4,5,6]) - arrays.end() -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/buffer.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/buffer.js deleted file mode 100644 index d28f5f9c..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/buffer.js +++ /dev/null @@ -1,31 +0,0 @@ -var concat = require('../') -var test = require('tape') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -test('buffer stream', function (t) { - t.plan(2) - var buffers = concat(function(out) { - t.ok(Buffer.isBuffer(out)) - t.equal(out.toString('utf8'), 'pizza Array is not a stringy cat') - }) - buffers.write(new Buffer('pizza Array is not a ', 'utf8')) - buffers.write(new Buffer('stringy cat')) - buffers.end() -}) - -test('buffer mixed writes', function (t) { - t.plan(2) - var buffers = concat(function(out) { - t.ok(Buffer.isBuffer(out)) - t.equal(out.toString('utf8'), 'pizza Array is not a stringy cat555') - }) - buffers.write(new Buffer('pizza')) - buffers.write(' Array is not a ') - buffers.write([ 115, 116, 114, 105, 110, 103, 121 ]) - var u8 = new U8(4) - u8[0] = 32; u8[1] = 99; u8[2] = 97; u8[3] = 116 - buffers.write(u8) - buffers.write(555) - buffers.end() -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/infer.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/infer.js deleted file mode 100644 index e1a9db13..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/infer.js +++ /dev/null @@ -1,14 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('type inference works as expected', function(t) { - var stream = concat() - t.equal(stream.inferEncoding(['hello']), 'array', 'array') - t.equal(stream.inferEncoding(new Buffer('hello')), 'buffer', 'buffer') - t.equal(stream.inferEncoding(undefined), 'buffer', 'buffer') - t.equal(stream.inferEncoding(new Uint8Array(1)), 'uint8array', 'uint8array') - t.equal(stream.inferEncoding('hello'), 'string', 'string') - t.equal(stream.inferEncoding({hello: "world"}), 'object', 'object') - t.equal(stream.inferEncoding(1), 'buffer', 'buffer') - t.end() -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/nothing.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/nothing.js deleted file mode 100644 index 0b5152f3..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/nothing.js +++ /dev/null @@ -1,9 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('no callback stream', function (t) { - var stream = concat() - stream.write('space') - stream.end(' cats') - t.end() -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/objects.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/objects.js deleted file mode 100644 index ad921ed2..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/objects.js +++ /dev/null @@ -1,29 +0,0 @@ -var concat = require('../') -var test = require('tape') - -test('writing objects', function (t) { - var stream = concat({encoding: "objects"}, concatted) - function concatted(objs) { - t.equal(objs.length, 2) - t.deepEqual(objs[0], {"foo": "bar"}) - t.deepEqual(objs[1], {"baz": "taco"}) - } - stream.write({"foo": "bar"}) - stream.write({"baz": "taco"}) - stream.end() - t.end() -}) - - -test('switch to objects encoding if no encoding specified and objects are written', function (t) { - var stream = concat(concatted) - function concatted(objs) { - t.equal(objs.length, 2) - t.deepEqual(objs[0], {"foo": "bar"}) - t.deepEqual(objs[1], {"baz": "taco"}) - } - stream.write({"foo": "bar"}) - stream.write({"baz": "taco"}) - stream.end() - t.end() -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/server/ls.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/server/ls.js deleted file mode 100644 index 3258d8dd..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/server/ls.js +++ /dev/null @@ -1,16 +0,0 @@ -var concat = require('../../') -var spawn = require('child_process').spawn -var exec = require('child_process').exec -var test = require('tape') - -test('ls command', function (t) { - t.plan(1) - var cmd = spawn('ls', [ __dirname ]) - cmd.stdout.pipe( - concat(function(out) { - exec('ls ' + __dirname, function (err, body) { - t.equal(out.toString('utf8'), body.toString('utf8')) - }) - }) - ) -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/string.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/string.js deleted file mode 100644 index 3e295d58..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/string.js +++ /dev/null @@ -1,50 +0,0 @@ -var concat = require('../') -var test = require('tape') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -test('string -> buffer stream', function (t) { - t.plan(2) - var strings = concat({ encoding: 'buffer'}, function(out) { - t.ok(Buffer.isBuffer(out)) - t.equal(out.toString('utf8'), 'nacho dogs') - }) - strings.write("nacho ") - strings.write("dogs") - strings.end() -}) - -test('string stream', function (t) { - t.plan(2) - var strings = concat({ encoding: 'string' }, function(out) { - t.equal(typeof out, 'string') - t.equal(out, 'nacho dogs') - }) - strings.write("nacho ") - strings.write("dogs") - strings.end() -}) - -test('end chunk', function (t) { - t.plan(1) - var endchunk = concat({ encoding: 'string' }, function(out) { - t.equal(out, 'this is the end') - }) - endchunk.write("this ") - endchunk.write("is the ") - endchunk.end("end") -}) - -test('string from mixed write encodings', function (t) { - t.plan(2) - var strings = concat({ encoding: 'string' }, function(out) { - t.equal(typeof out, 'string') - t.equal(out, 'nacho dogs') - }) - strings.write('na') - strings.write(Buffer('cho')) - strings.write([ 32, 100 ]) - var u8 = new U8(3) - u8[0] = 111; u8[1] = 103; u8[2] = 115; - strings.end(u8) -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/typedarray.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/typedarray.js deleted file mode 100644 index ee071108..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/concat-stream/test/typedarray.js +++ /dev/null @@ -1,33 +0,0 @@ -var concat = require('../') -var test = require('tape') -var TA = require('typedarray') -var U8 = typeof Uint8Array !== 'undefined' ? Uint8Array : TA.Uint8Array - -test('typed array stream', function (t) { - t.plan(2) - var a = new U8(5) - a[0] = 97; a[1] = 98; a[2] = 99; a[3] = 100; a[4] = 101; - var b = new U8(3) - b[0] = 32; b[1] = 102; b[2] = 103; - var c = new U8(4) - c[0] = 32; c[1] = 120; c[2] = 121; c[3] = 122; - - var arrays = concat({ encoding: 'Uint8Array' }, function(out) { - t.equal(typeof out.subarray, 'function') - t.deepEqual(Buffer(out).toString('utf8'), 'abcde fg xyz') - }) - arrays.write(a) - arrays.write(b) - arrays.end(c) -}) - -test('typed array from strings, buffers, and arrays', function (t) { - t.plan(2) - var arrays = concat({ encoding: 'Uint8Array' }, function(out) { - t.equal(typeof out.subarray, 'function') - t.deepEqual(Buffer(out).toString('utf8'), 'abcde fg xyz') - }) - arrays.write('abcde') - arrays.write(Buffer(' fg ')) - arrays.end([ 120, 121, 122 ]) -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.npmignore b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.travis.yml b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.travis.yml deleted file mode 100644 index be547627..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - 0.8 -notifications: - email: - recipients: - - brianloveswords@gmail.com \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/LICENSE deleted file mode 100644 index cca3871d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (C) 2013 Brian J Brennan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/index.js deleted file mode 100644 index ddd1afe6..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/index.js +++ /dev/null @@ -1,43 +0,0 @@ -var Zlib = module.exports = require('./zlib'); - -// the least I can do is make error messages for the rest of the node.js/zlib api. -// (thanks, dominictarr) -function error () { - var m = [].slice.call(arguments).join(' ') - throw new Error([ - m, - 'we accept pull requests', - 'http://github.com/brianloveswords/zlib-browserify' - ].join('\n')) -} - -;['createGzip' -, 'createGunzip' -, 'createDeflate' -, 'createDeflateRaw' -, 'createInflate' -, 'createInflateRaw' -, 'createUnzip' -, 'Gzip' -, 'Gunzip' -, 'Inflate' -, 'InflateRaw' -, 'Deflate' -, 'DeflateRaw' -, 'Unzip' -, 'inflateRaw' -, 'deflateRaw'].forEach(function (name) { - Zlib[name] = function () { - error('sorry,', name, 'is not implemented yet') - } -}); - -var _deflate = Zlib.deflate; -var _gzip = Zlib.gzip; - -Zlib.deflate = function deflate(stringOrBuffer, callback) { - return _deflate(Buffer(stringOrBuffer), callback); -}; -Zlib.gzip = function gzip(stringOrBuffer, callback) { - return _gzip(Buffer(stringOrBuffer), callback); -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.npmignore b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.npmignore deleted file mode 100644 index 5b7c3cd6..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.npmignore +++ /dev/null @@ -1 +0,0 @@ -**/bundle.js diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.travis.yml b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/array.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/array.js deleted file mode 100644 index d36857d4..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/array.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('falafel'); -var test = require('../'); - -test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/fail.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/fail.js deleted file mode 100644 index a7bf4444..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/fail.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('falafel'); -var test = require('../'); - -test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4444 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested.js deleted file mode 100644 index c00f144a..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested.js +++ /dev/null @@ -1,51 +0,0 @@ -var falafel = require('falafel'); -var test = require('../'); - -test('nested array test', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - t.test('inside test', function (q) { - q.plan(2); - q.ok(true); - - setTimeout(function () { - q.ok(true); - }, 3000); - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); - -test('another', function (t) { - t.plan(1); - setTimeout(function () { - t.ok(true); - }, 100); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested_fail.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested_fail.js deleted file mode 100644 index 3ab5cb3a..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/nested_fail.js +++ /dev/null @@ -1,51 +0,0 @@ -var falafel = require('falafel'); -var test = require('../'); - -test('nested array test', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - t.test('inside test', function (q) { - q.plan(2); - q.ok(true); - - setTimeout(function () { - q.equal(3, 4); - }, 3000); - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); - -test('another', function (t) { - t.plan(1); - setTimeout(function () { - t.ok(true); - }, 100); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/not_enough.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/not_enough.js deleted file mode 100644 index 13b682be..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/not_enough.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('falafel'); -var test = require('../'); - -test('array', function (t) { - t.plan(8); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/build.sh b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/build.sh deleted file mode 100755 index c5836404..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/build.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -browserify ../timing.js -o bundle.js diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/index.html b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/index.html deleted file mode 100644 index 45ccf070..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/index.html +++ /dev/null @@ -1,21 +0,0 @@ -<!doctype html> -<html> -<head> -<style> -body { - font-family: monospace; - white-space: pre; -} -</style> -</head> -<body> -<script> -if (typeof console === 'undefined') console = {}; -console.log = function (msg) { - var txt = document.createTextNode(msg); - document.body.appendChild(txt); -}; -</script> -<script src="bundle.js"></script> -</body> -</html> diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/server.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/server.js deleted file mode 100644 index 80cea43d..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/static/server.js +++ /dev/null @@ -1,4 +0,0 @@ -var http = require('http'); -var ecstatic = require('ecstatic')(__dirname); -var server = http.createServer(ecstatic); -server.listen(8000); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/timing.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/timing.js deleted file mode 100644 index 0268dc78..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/timing.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('../'); - -test('timing test', function (t) { - t.plan(2); - - t.equal(typeof Date.now, 'function'); - var start = new Date; - - setTimeout(function () { - t.equal(new Date - start, 100); - }, 100); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/too_many.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/too_many.js deleted file mode 100644 index ee285fba..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/example/too_many.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('falafel'); -var test = require('../'); - -test('array', function (t) { - t.plan(3); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/index.js deleted file mode 100644 index 792f5cfd..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/index.js +++ /dev/null @@ -1,124 +0,0 @@ -var createDefaultStream = require('./lib/default_stream'); -var Render = require('./lib/render'); -var Test = require('./lib/test'); - -exports = module.exports = createHarness(); -exports.createHarness = createHarness; -exports.Test = Test; - -var canEmitExit = typeof process !== 'undefined' && process - && typeof process.on === 'function' -; -var canExit = typeof process !== 'undefined' && process - && typeof process.exit === 'function' -; -var onexit = (function () { - var stack = []; - if (canEmitExit) process.on('exit', function (code) { - for (var i = 0; i < stack.length; i++) stack[i](code); - }); - return function (cb) { stack.push(cb) }; -})(); - -function createHarness (conf_) { - var pending = []; - var running = false; - var count = 0; - - var began = false; - var only = false; - var closed = false; - var out = new Render(); - - var test = function (name, conf, cb) { - count++; - var t = new Test(name, conf, cb); - if (!conf || typeof conf !== 'object') conf = conf_ || {}; - - if (conf.exit !== false) { - onexit(function (code) { - t._exit(); - if (!closed) { - closed = true - out.close(); - } - if (!code && !t._ok && (!only || name === only)) { - process.exit(1); - } - }); - } - - process.nextTick(function () { - if (!out.piped) out.pipe(createDefaultStream()); - if (!began) out.begin(); - began = true; - - var run = function () { - running = true; - out.push(t); - t.run(); - }; - - if (only && name !== only) { - count--; - return; - } - - if (running || pending.length) { - pending.push(run); - } - else run(); - }); - - t.on('test', function sub (st) { - count++; - st.on('test', sub); - st.on('end', onend); - }); - - t.on('end', onend); - - return t; - - function onend () { - count--; - if (this._progeny.length) { - var unshifts = this._progeny.map(function (st) { - return function () { - running = true; - out.push(st); - st.run(); - }; - }); - pending.unshift.apply(pending, unshifts); - } - - process.nextTick(function () { - running = false; - if (pending.length) return pending.shift()(); - if (count === 0 && !closed) { - closed = true - out.close(); - } - if (conf.exit !== false && canExit && !t._ok) { - process.exit(1); - } - }); - } - }; - - test.only = function (name) { - if (only) { - throw new Error("there can only be one only test"); - } - - only = name; - - return test.apply(null, arguments); - }; - - test.stream = out; - return test; -} - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/default_stream.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/default_stream.js deleted file mode 100644 index 0e3861fb..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/default_stream.js +++ /dev/null @@ -1,30 +0,0 @@ -var Stream = require('stream'); - -module.exports = function () { - var out = new Stream; - out.writable = true; - var buffered = ''; - - out.write = function (buf) { - var s = buffered + String(buf); - var lines = s.split('\n'); - for (var i = 0; i < lines.length - 1; i++) { - console.log(lines[i]); - } - buffered = lines[i]; - }; - - out.destroy = function () { - out.writable = false; - out.emit('close'); - }; - - out.end = function (msg) { - if (msg !== undefined) out.write(msg); - if (buffered) console.log(buffered); - out.writable = false; - out.emit('close'); - }; - - return out; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/render.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/render.js deleted file mode 100644 index ec486aaf..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/render.js +++ /dev/null @@ -1,100 +0,0 @@ -var Stream = require('stream'); -var json = typeof JSON === 'object' ? JSON : require('jsonify'); - -module.exports = Render; - -function Render () { - Stream.call(this); - this.readable = true; - this.count = 0; - this.fail = 0; - this.pass = 0; -} - -Render.prototype = new Stream; - -Render.prototype.pipe = function () { - this.piped = true; - return Stream.prototype.pipe.apply(this, arguments); -}; - -Render.prototype.begin = function () { - this.emit('data', 'TAP version 13\n'); -}; - -Render.prototype.push = function (t) { - var self = this; - this.emit('data', '# ' + t.name + '\n'); - - t.on('result', function (res) { - if (typeof res === 'string') { - self.emit('data', '# ' + res + '\n'); - return; - } - - self.emit('data', encodeResult(res, self.count + 1)); - self.count ++; - - if (res.ok) self.pass ++ - else self.fail ++ - }); -}; - -Render.prototype.close = function () { - this.emit('data', '\n1..' + this.count + '\n'); - this.emit('data', '# tests ' + this.count + '\n'); - this.emit('data', '# pass ' + this.pass + '\n'); - if (this.fail) { - this.emit('data', '# fail ' + this.fail + '\n'); - } - else { - this.emit('data', '\n# ok\n'); - } - - this.emit('end'); -}; - -function encodeResult (res, count) { - var output = ''; - output += (res.ok ? 'ok ' : 'not ok ') + count; - output += res.name ? ' ' + res.name.replace(/\s+/g, ' ') : ''; - - if (res.skip) output += ' # SKIP'; - else if (res.todo) output += ' # TODO'; - - output += '\n'; - - if (!res.ok) { - var outer = ' '; - var inner = outer + ' '; - output += outer + '---\n'; - output += inner + 'operator: ' + res.operator + '\n'; - - var ex = json.stringify(res.expected) || ''; - var ac = json.stringify(res.actual) || ''; - - if (Math.max(ex.length, ac.length) > 65) { - output += inner + 'expected:\n' + inner + ' ' + ex + '\n'; - output += inner + 'actual:\n' + inner + ' ' + ac + '\n'; - } - else { - output += inner + 'expected: ' + ex + '\n'; - output += inner + 'actual: ' + ac + '\n'; - } - if (res.at) { - output += inner + 'at: ' + res.at + '\n'; - } - if (res.operator === 'error' && res.actual && res.actual.stack) { - var lines = String(res.actual.stack).split('\n'); - output += inner + 'stack:\n'; - output += inner + ' ' + lines[0] + '\n'; - for (var i = 1; i < lines.length; i++) { - output += inner + lines[i] + '\n'; - } - } - - output += outer + '...\n'; - } - - return output; -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/test.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/test.js deleted file mode 100644 index 89b32606..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/lib/test.js +++ /dev/null @@ -1,342 +0,0 @@ -var EventEmitter = require('events').EventEmitter; -var deepEqual = require('deep-equal'); -var defined = require('defined'); -var path = require('path'); - -module.exports = Test; - -Test.prototype = new EventEmitter; - -function Test (name_, opts_, cb_) { - var name = '(anonymous)'; - var opts = {}; - var cb; - - for (var i = 0; i < arguments.length; i++) { - switch (typeof arguments[i]) { - case 'string': - name = arguments[i]; - break; - case 'object': - opts = arguments[i] || opts; - break; - case 'function': - cb = arguments[i]; - } - } - - EventEmitter.call(this); - - this.name = name || '(anonymous)'; - this.assertCount = 0; - this._skip = opts.skip || false; - this._plan = undefined; - this._cb = cb; - this._progeny = []; - this._ok = true; -} - -Test.prototype.run = function () { - if (this._skip) { - return this.end(); - } - try { - this._cb(this); - } - catch (err) { - this.error(err); - this.end(); - } -}; - -Test.prototype.test = function (name, opts, cb) { - var t = new Test(name, opts, cb); - this._progeny.push(t); - this.emit('test', t); -}; - -Test.prototype.comment = function (msg) { - this.emit('result', msg.trim().replace(/^#\s*/, '')); -}; - -Test.prototype.plan = function (n) { - this._plan = n; - this.emit('plan', n); -}; - -Test.prototype.end = function () { - if (!this.ended) this.emit('end'); - if (this._plan !== undefined && - !this._planError && this.assertCount !== this._plan) { - this._planError = true; - this.fail('plan != count', { - expected : this._plan, - actual : this.assertCount - }); - } - this.ended = true; -}; - -Test.prototype._exit = function () { - if (this._plan !== undefined && - !this._planError && this.assertCount !== this._plan) { - this._planError = true; - this.fail('plan != count', { - expected : this._plan, - actual : this.assertCount - }); - } - else if (!this.ended) { - this.fail('test exited without ending'); - } - -}; - -Test.prototype._assert = function assert (ok, opts) { - var self = this; - var extra = opts.extra || {}; - - var res = { - id : self.assertCount ++, - ok : Boolean(ok), - skip : defined(extra.skip, opts.skip), - name : defined(extra.message, opts.message, '(unnamed assert)'), - operator : defined(extra.operator, opts.operator), - actual : defined(extra.actual, opts.actual), - expected : defined(extra.expected, opts.expected) - }; - this._ok = Boolean(this._ok && ok); - - if (!ok) { - res.error = defined(extra.error, opts.error, new Error(res.name)); - } - - var e = new Error('exception'); - var err = (e.stack || '').split('\n'); - var dir = path.dirname(__dirname) + '/'; - - for (var i = 0; i < err.length; i++) { - var m = /^\s*\bat\s+(.+)/.exec(err[i]); - if (!m) continue; - - var s = m[1].split(/\s+/); - var filem = /(\/[^:\s]+:(\d+)(?::(\d+))?)/.exec(s[1]); - if (!filem) continue; - - if (filem[1].slice(0, dir.length) === dir) continue; - - res.functionName = s[0]; - res.file = filem[1]; - res.line = Number(filem[2]); - if (filem[3]) res.column = filem[3]; - - res.at = m[1]; - break; - } - - self.emit('result', res); - - if (self._plan === self.assertCount) { - process.nextTick(function () { - if (!self.ended) self.end(); - }); - } - - if (!self._planError && self.assertCount > self._plan) { - self._planError = true; - self.fail('plan != count', { - expected : self._plan, - actual : self.assertCount - }); - } -}; - -Test.prototype.fail = function (msg, extra) { - this._assert(false, { - message : msg, - operator : 'fail', - extra : extra - }); -}; - -Test.prototype.pass = function (msg, extra) { - this._assert(true, { - message : msg, - operator : 'pass', - extra : extra - }); -}; - -Test.prototype.skip = function (msg, extra) { - this._assert(true, { - message : msg, - operator : 'skip', - skip : true, - extra : extra - }); -}; - -Test.prototype.ok -= Test.prototype['true'] -= Test.prototype.assert -= function (value, msg, extra) { - this._assert(value, { - message : msg, - operator : 'ok', - expected : true, - actual : value, - extra : extra - }); -}; - -Test.prototype.notOk -= Test.prototype['false'] -= Test.prototype.notok -= function (value, msg, extra) { - this._assert(!value, { - message : msg, - operator : 'notOk', - expected : false, - actual : value, - extra : extra - }); -}; - -Test.prototype.error -= Test.prototype.ifError -= Test.prototype.ifErr -= Test.prototype.iferror -= function (err, msg, extra) { - this._assert(!err, { - message : defined(msg, String(err)), - operator : 'error', - actual : err, - extra : extra - }); -}; - -Test.prototype.equal -= Test.prototype.equals -= Test.prototype.isEqual -= Test.prototype.is -= Test.prototype.strictEqual -= Test.prototype.strictEquals -= function (a, b, msg, extra) { - this._assert(a === b, { - message : defined(msg, 'should be equal'), - operator : 'equal', - actual : a, - expected : b, - extra : extra - }); -}; - -Test.prototype.notEqual -= Test.prototype.notEquals -= Test.prototype.notStrictEqual -= Test.prototype.notStrictEquals -= Test.prototype.isNotEqual -= Test.prototype.isNot -= Test.prototype.not -= Test.prototype.doesNotEqual -= Test.prototype.isInequal -= function (a, b, msg, extra) { - this._assert(a !== b, { - message : defined(msg, 'should not be equal'), - operator : 'notEqual', - actual : a, - notExpected : b, - extra : extra - }); -}; - -Test.prototype.deepEqual -= Test.prototype.deepEquals -= Test.prototype.isEquivalent -= Test.prototype.looseEqual -= Test.prototype.looseEquals -= Test.prototype.same -= function (a, b, msg, extra) { - this._assert(deepEqual(a, b), { - message : defined(msg, 'should be equivalent'), - operator : 'deepEqual', - actual : a, - expected : b, - extra : extra - }); -}; - -Test.prototype.notDeepEqual -= Test.prototype.notEquivalent -= Test.prototype.notDeeply -= Test.prototype.notSame -= Test.prototype.isNotDeepEqual -= Test.prototype.isNotDeeply -= Test.prototype.isNotEquivalent -= Test.prototype.isInequivalent -= function (a, b, msg, extra) { - this._assert(!deepEqual(a, b), { - message : defined(msg, 'should not be equivalent'), - operator : 'notDeepEqual', - actual : a, - notExpected : b, - extra : extra - }); -}; - -Test.prototype['throws'] = function (fn, expected, msg, extra) { - if (typeof expected === 'string') { - msg = expected; - expected = undefined; - } - var caught = undefined; - try { - fn(); - } - catch (err) { - caught = { error : err }; - var message = err.message; - delete err.message; - err.message = message; - } - - var passed = caught; - - if (expected instanceof RegExp) { - passed = expected.test(caught && caught.error); - expected = String(expected); - } - - this._assert(passed, { - message : defined(msg, 'should throw'), - operator : 'throws', - actual : caught && caught.error, - expected : expected, - error: !passed && caught && caught.error, - extra : extra - }); -}; - -Test.prototype.doesNotThrow = function (fn, expected, msg, extra) { - if (typeof expected === 'string') { - msg = expected; - expected = undefined; - } - var caught = undefined; - try { - fn(); - } - catch (err) { - caught = { error : err }; - } - this._assert(!caught, { - message : defined(msg, 'should throw'), - operator : 'throws', - actual : caught && caught.error, - expected : expected, - error : caught && caught.error, - extra : extra - }); -}; - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/README.markdown b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/README.markdown deleted file mode 100644 index c3293d36..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/README.markdown +++ /dev/null @@ -1,55 +0,0 @@ -deep-equal -========== - -Node's `assert.deepEqual() algorithm` as a standalone module. - -example -======= - -``` js -var equal = require('deep-equal'); -console.dir([ - equal( - { a : [ 2, 3 ], b : [ 4 ] }, - { a : [ 2, 3 ], b : [ 4 ] } - ), - equal( - { x : 5, y : [6] }, - { x : 5, y : 6 } - ) -]); -``` - -methods -======= - -var deepEqual = require('deep-equal') - -deepEqual(a, b) ---------------- - -Compare objects `a` and `b`, returning whether they are equal according to a -recursive equality algorithm. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install deep-equal -``` - -test -==== - -With [npm](http://npmjs.org) do: - -``` -npm test -``` - -license -======= - -MIT. Derived largely from node's assert module. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/example/cmp.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/example/cmp.js deleted file mode 100644 index 67014b88..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/example/cmp.js +++ /dev/null @@ -1,11 +0,0 @@ -var equal = require('../'); -console.dir([ - equal( - { a : [ 2, 3 ], b : [ 4 ] }, - { a : [ 2, 3 ], b : [ 4 ] } - ), - equal( - { x : 5, y : [6] }, - { x : 5, y : 6 } - ) -]); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/index.js deleted file mode 100644 index e4e37beb..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/index.js +++ /dev/null @@ -1,84 +0,0 @@ -var pSlice = Array.prototype.slice; -var Object_keys = typeof Object.keys === 'function' - ? Object.keys - : function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; - } -; - -var deepEqual = module.exports = function (actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} - -function isUndefinedOrNull(value) { - return value === null || value === undefined; -} - -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv(a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return deepEqual(a, b); - } - try { - var ka = Object_keys(a), - kb = Object_keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key])) return false; - } - return true; -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/package.json deleted file mode 100644 index b32ba2bb..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "deep-equal", - "version": "0.0.0", - "description": "node's assert.deepEqual algorithm", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "0.0.x" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-deep-equal.git" - }, - "keywords": [ - "equality", - "equal", - "compare" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "deep-equal\n==========\n\nNode's `assert.deepEqual() algorithm` as a standalone module.\n\nexample\n=======\n\n``` js\nvar equal = require('deep-equal');\nconsole.dir([\n equal(\n { a : [ 2, 3 ], b : [ 4 ] },\n { a : [ 2, 3 ], b : [ 4 ] }\n ),\n equal(\n { x : 5, y : [6] },\n { x : 5, y : 6 }\n )\n]);\n```\n\nmethods\n=======\n\nvar deepEqual = require('deep-equal')\n\ndeepEqual(a, b)\n---------------\n\nCompare objects `a` and `b`, returning whether they are equal according to a\nrecursive equality algorithm.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install deep-equal\n```\n\ntest\n====\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm test\n```\n\nlicense\n=======\n\nMIT. Derived largely from node's assert module.\n", - "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/node-deep-equal/issues" - }, - "homepage": "https://github.com/substack/node-deep-equal", - "_id": "deep-equal@0.0.0", - "_from": "deep-equal@~0.0.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/test/cmp.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/test/cmp.js deleted file mode 100644 index 8418f0f8..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/deep-equal/test/cmp.js +++ /dev/null @@ -1,18 +0,0 @@ -var test = require('tap').test; -var equal = require('../'); - -test('equal', function (t) { - t.ok(equal( - { a : [ 2, 3 ], b : [ 4 ] }, - { a : [ 2, 3 ], b : [ 4 ] } - )); - t.end(); -}); - -test('not equal', function (t) { - t.notOk(equal( - { x : 5, y : [6] }, - { x : 5, y : 6 } - )); - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/.travis.yml b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/LICENSE b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/example/defined.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/example/defined.js deleted file mode 100644 index 7b5d982f..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/example/defined.js +++ /dev/null @@ -1,4 +0,0 @@ -var defined = require('../'); -var opts = { y : false, w : 4 }; -var x = defined(opts.x, opts.y, opts.w, 8); -console.log(x); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/index.js deleted file mode 100644 index f8a22198..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function () { - for (var i = 0; i < arguments.length; i++) { - if (arguments[i] !== undefined) return arguments[i]; - } -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/package.json deleted file mode 100644 index 796d9eb5..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "defined", - "version": "0.0.0", - "description": "return the first argument that is `!== undefined`", - "main": "index.js", - "directories": { - "example": "example", - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0", - "tape": "~0.0.2" - }, - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/defined.git" - }, - "homepage": "https://github.com/substack/defined", - "keywords": [ - "undefined", - "short-circuit", - "||", - "or", - "//", - "defined-or" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# defined\n\nreturn the first argument that is `!== undefined`\n\n[![build status](https://secure.travis-ci.org/substack/defined.png)](http://travis-ci.org/substack/defined)\n\nMost of the time when I chain together `||`s, I actually just want the first\nitem that is not `undefined`, not the first non-falsy item.\n\nThis module is like the defined-or (`//`) operator in perl 5.10+.\n\n# example\n\n``` js\nvar defined = require('defined');\nvar opts = { y : false, w : 4 };\nvar x = defined(opts.x, opts.y, opts.w, 100);\nconsole.log(x);\n```\n\n```\n$ node example/defined.js\nfalse\n```\n\nThe return value is `false` because `false` is the first item that is\n`!== undefined`.\n\n# methods\n\n``` js\nvar defined = require('defined')\n```\n\n## var x = defined(a, b, c...)\n\nReturn the first item in the argument list `a, b, c...` that is `!== undefined`.\n\nIf all the items are `=== undefined`, return undefined.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install defined\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/defined/issues" - }, - "_id": "defined@0.0.0", - "_from": "defined@~0.0.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/readme.markdown b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/readme.markdown deleted file mode 100644 index 2280351f..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/readme.markdown +++ /dev/null @@ -1,51 +0,0 @@ -# defined - -return the first argument that is `!== undefined` - -[![build status](https://secure.travis-ci.org/substack/defined.png)](http://travis-ci.org/substack/defined) - -Most of the time when I chain together `||`s, I actually just want the first -item that is not `undefined`, not the first non-falsy item. - -This module is like the defined-or (`//`) operator in perl 5.10+. - -# example - -``` js -var defined = require('defined'); -var opts = { y : false, w : 4 }; -var x = defined(opts.x, opts.y, opts.w, 100); -console.log(x); -``` - -``` -$ node example/defined.js -false -``` - -The return value is `false` because `false` is the first item that is -`!== undefined`. - -# methods - -``` js -var defined = require('defined') -``` - -## var x = defined(a, b, c...) - -Return the first item in the argument list `a, b, c...` that is `!== undefined`. - -If all the items are `=== undefined`, return undefined. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install defined -``` - -# license - -MIT diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/test/def.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/test/def.js deleted file mode 100644 index 48da5171..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/defined/test/def.js +++ /dev/null @@ -1,22 +0,0 @@ -var defined = require('../'); -var test = require('tape'); - -test('defined-or', function (t) { - var u = undefined; - - t.equal(defined(), u, 'empty arguments'); - t.equal(defined(u), u, '1 undefined'); - t.equal(defined(u, u), u, '2 undefined'); - t.equal(defined(u, u, u, u), u, '4 undefineds'); - - t.equal(defined(undefined, false, true), false, 'false[0]'); - t.equal(defined(false, true), false, 'false[1]'); - t.equal(defined(undefined, 0, true), 0, 'zero[0]'); - t.equal(defined(0, true), 0, 'zero[1]'); - - t.equal(defined(3, undefined, 4), 3, 'first arg'); - t.equal(defined(undefined, 3, 4), 3, 'second arg'); - t.equal(defined(undefined, undefined, 3), 3, 'third arg'); - - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/README.markdown b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/README.markdown deleted file mode 100644 index 71d9a93b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/README.markdown +++ /dev/null @@ -1,34 +0,0 @@ -jsonify -======= - -This module provides Douglas Crockford's JSON implementation without modifying -any globals. - -`stringify` and `parse` are merely exported without respect to whether or not a -global `JSON` object exists. - -methods -======= - -var json = require('jsonify'); - -json.parse(source, reviver) ---------------------------- - -Return a new javascript object from a parse of the `source` string. - -If a `reviver` function is specified, walk the structure passing each name/value -pair to `reviver.call(parent, key, value)` to transform the `value` before -parsing it. - -json.stringify(value, replacer, space) --------------------------------------- - -Return a string representation for `value`. - -If `replacer` is specified, walk the structure passing each name/value pair to -`replacer.call(parent, key, value)` to transform the `value` before stringifying -it. - -If `space` is a number, indent the result by that many spaces. -If `space` is a string, use `space` as the indentation. diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/index.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/index.js deleted file mode 100644 index f728a160..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.parse = require('./lib/parse'); -exports.stringify = require('./lib/stringify'); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/parse.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/parse.js deleted file mode 100644 index 30e2f014..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/parse.js +++ /dev/null @@ -1,273 +0,0 @@ -var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - // Call error when something is wrong. - throw { - name: 'SyntaxError', - message: m, - at: at, - text: text - }; - }, - - next = function (c) { - // If a c parameter is provided, verify that it matches the current character. - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - - // Get the next character. When there are no more characters, - // return the empty string. - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - // Parse a number value. - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - // Parse a string value. - var hex, - i, - string = '', - uffff; - - // When parsing for string values, we must look for " and \ characters. - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - -// Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - -// true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - -// Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - -// Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - -value = function () { - -// Parse a JSON value. It could be an object, an array, a string, a number, -// or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } -}; - -// Return the json_parse function. It will have access to all of the above -// functions and variables. - -module.exports = function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - // If there is a reviver function, we recursively walk the new structure, - // passing each name/value pair to the reviver function for possible - // transformation, starting with a temporary root object that holds the result - // in an empty key. If there is not a reviver function, we simply return the - // result. - - return typeof reviver === 'function' ? (function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '')) : result; -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/stringify.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/stringify.js deleted file mode 100644 index 13458708..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/lib/stringify.js +++ /dev/null @@ -1,154 +0,0 @@ -var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - -function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; -} - -function str(key, holder) { - // Produce a string from holder[key]. - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - return String(value); - - case 'object': - if (!value) return 'null'; - gap += indent; - partial = []; - - // Array.isArray - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and - // wrap them in brackets. - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be - // stringified. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - else { - // Otherwise, iterate through all of the keys in the object. - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } -} - -module.exports = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } - // If the space parameter is a string, it will be used as the indent string. - else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' - && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - return str('', {'': value}); -}; diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/package.json deleted file mode 100644 index 542521f4..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "jsonify", - "version": "0.0.0", - "description": "JSON without touching any globals", - "main": "index.js", - "directories": { - "lib": ".", - "test": "test" - }, - "devDependencies": { - "tap": "0.0.x", - "garbage": "0.0.x" - }, - "scripts": { - "test": "tap test" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/jsonify.git" - }, - "keywords": [ - "json", - "browser" - ], - "author": { - "name": "Douglas Crockford", - "url": "http://crockford.com/" - }, - "license": "Public Domain", - "readme": "jsonify\n=======\n\nThis module provides Douglas Crockford's JSON implementation without modifying\nany globals.\n\n`stringify` and `parse` are merely exported without respect to whether or not a\nglobal `JSON` object exists.\n\nmethods\n=======\n\nvar json = require('jsonify');\n\njson.parse(source, reviver)\n---------------------------\n\nReturn a new javascript object from a parse of the `source` string.\n\nIf a `reviver` function is specified, walk the structure passing each name/value\npair to `reviver.call(parent, key, value)` to transform the `value` before\nparsing it.\n\njson.stringify(value, replacer, space)\n--------------------------------------\n\nReturn a string representation for `value`.\n\nIf `replacer` is specified, walk the structure passing each name/value pair to\n`replacer.call(parent, key, value)` to transform the `value` before stringifying\nit.\n\nIf `space` is a number, indent the result by that many spaces.\nIf `space` is a string, use `space` as the indentation.\n", - "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/jsonify/issues" - }, - "homepage": "https://github.com/substack/jsonify", - "_id": "jsonify@0.0.0", - "_from": "jsonify@~0.0.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/parse.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/parse.js deleted file mode 100644 index e2313f55..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/parse.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tap').test; -var json = require('../'); -var garbage = require('garbage'); - -test('parse', function (t) { - for (var i = 0; i < 50; i++) { - var s = JSON.stringify(garbage(50)); - - t.deepEqual( - json.parse(s), - JSON.parse(s) - ); - } - - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/stringify.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/stringify.js deleted file mode 100644 index 89b0b670..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/node_modules/jsonify/test/stringify.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tap').test; -var json = require('../'); -var garbage = require('garbage'); - -test('stringify', function (t) { - for (var i = 0; i < 50; i++) { - var obj = garbage(50); - t.equal( - json.stringify(obj), - JSON.stringify(obj) - ); - } - - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/package.json deleted file mode 100644 index c1a2ccfa..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "tape", - "version": "0.2.2", - "description": "tap-producing test harness for node and browsers", - "main": "index.js", - "bin": {}, - "directories": { - "example": "example", - "test": "test" - }, - "dependencies": { - "jsonify": "~0.0.0", - "deep-equal": "~0.0.0", - "defined": "~0.0.0" - }, - "devDependencies": { - "tap": "~0.3.0", - "falafel": "~0.1.4" - }, - "scripts": { - "test": "tap test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/tape.git" - }, - "homepage": "https://github.com/substack/tape", - "keywords": [ - "tap", - "test", - "harness", - "assert", - "browser" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# tape\n\ntap-producing test harness for node and browsers\n\n[![build status](https://secure.travis-ci.org/substack/tape.png)](http://travis-ci.org/substack/tape)\n\n![tape](http://substack.net/images/tape_drive.png)\n\n# browser compatibility\n\nchrome, firefox, opera, safari, IE6, IE7, IE8, IE9\n\nusing browserify@1.16.5\n\n# example\n\n``` js\nvar test = require('tape');\n\ntest('timing test', function (t) {\n t.plan(2);\n \n t.equal(typeof Date.now, 'function');\n var start = Date.now();\n \n setTimeout(function () {\n t.equal(Date.now() - start, 100);\n }, 100);\n});\n```\n\n```\n$ node example/timing.js\nTAP version 13\n# timing test\nok 1 should be equal\nnot ok 2 should be equal\n ---\n operator: equal\n expected: 100\n actual: 107\n ...\n\n1..2\n# tests 2\n# pass 1\n# fail 1\n```\n\n# methods\n\nThe assertion methods in tape are heavily influenced or copied from the methods\nin [node-tap](https://github.com/isaacs/node-tap).\n\n```\nvar test = require('tape')\n```\n\n## test(name, cb)\n\nCreate a new test with an optional `name` string. `cb(t)` fires with the new\ntest object `t` once all preceeding tests have finished. Tests execute serially.\n\nIf you forget to `t.plan()` out how many assertions you are going to run and you\ndon't call `t.end()` explicitly, your test will hang.\n\n## t.plan(n)\n\nDeclare that `n` assertions should be run. `t.end()` will be called\nautomatically after the `n`th assertion. If there are any more assertions after\nthe `n`th, or after `t.end()` is called, they will generate errors.\n\n## t.end()\n\nDeclare the end of a test explicitly.\n\n## t.fail(msg)\n\nGenerate a failing assertion with a message `msg`.\n\n## t.pass(msg)\n\nGenerate a passing assertion with a message `msg`.\n\n## t.skip(msg)\n \nGenerate an assertion that will be skipped over.\n\n## t.ok(value, msg)\n\nAssert that `value` is truthy with an optional description message `msg`.\n\nAliases: `t.true()`, `t.assert()`\n\n## t.notOk(value, msg)\n\nAssert that `value` is falsy with an optional description message `msg`.\n\nAliases: `t.false()`, `t.notok()`\n\n## t.error(err, msg)\n\nAssert that `err` is falsy. If `err` is non-falsy, use its `err.message` as the\ndescription message.\n\nAliases: `t.ifError()`, `t.ifErr()`, `t.iferror()`\n\n## t.equal(a, b, msg)\n\nAssert that `a === b` with an optional description `msg`.\n\nAliases: `t.equals()`, `t.isEqual()`, `t.is()`, `t.strictEqual()`,\n`t.strictEquals()`\n\n## t.notEqual(a, b, msg)\n\nAssert that `a !== b` with an optional description `msg`.\n\nAliases: `t.notEquals()`, `t.notStrictEqual()`, `t.notStrictEquals()`,\n`t.isNotEqual()`, `t.isNot()`, `t.not()`, `t.doesNotEqual()`, `t.isInequal()`\n\n## t.deepEqual(a, b, msg)\n\nAssert that `a` and `b` have the same structure and nested values using\n[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)\nwith an optional description `msg`.\n\nAliases: `t.deepEquals()`, `t.isEquivalent()`, `t.looseEqual()`,\n`t.looseEquals()`, `t.same()`\n\n## t.notDeepEqual(a, b, msg)\n\nAssert that `a` and `b` do not have the same structure and nested values using\n[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)\nwith an optional description `msg`.\n\nAliases: `t.notEquivalent()`, `t.notDeeply()`, `t.notSame()`,\n`t.isNotDeepEqual()`, `t.isNotDeeply()`, `t.isNotEquivalent()`,\n`t.isInequivalent()`\n\n## t.throws(fn, expected, msg)\n\nAssert that the function call `fn()` throws an exception.\n\n## t.doesNotThrow(fn, expected, msg)\n\nAssert that the function call `fn()` does not throw an exception.\n\n## t.test(name, cb)\n\nCreate a subtest with a new test handle `st` from `cb(st)` inside the current\ntest `t`. `cb(st)` will only fire when `t` finishes. Additional tests queued up\nafter `t` will not be run until all subtests finish.\n\n## var htest = test.createHarness()\n\nCreate a new test harness instance, which is a function like `test()`, but with\na new pending stack and test state.\n\nBy default the TAP output goes to `process.stdout` or `console.log()` if the\nenvironment doesn't have `process.stdout`. You can pipe the output to someplace\nelse if you `test.stream.pipe()` to a destination stream on the first tick.\n\n## test.only(name, cb)\n\nLike `test(name, cb)` except if you use `.only` this is the only test case\nthat will run for the entire process, all other test cases using tape will\nbe ignored\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install tape\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/tape/issues" - }, - "_id": "tape@0.2.2", - "_from": "tape@~0.2.2" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/readme.markdown b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/readme.markdown deleted file mode 100644 index 7898359b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/readme.markdown +++ /dev/null @@ -1,180 +0,0 @@ -# tape - -tap-producing test harness for node and browsers - -[![build status](https://secure.travis-ci.org/substack/tape.png)](http://travis-ci.org/substack/tape) - -![tape](http://substack.net/images/tape_drive.png) - -# browser compatibility - -chrome, firefox, opera, safari, IE6, IE7, IE8, IE9 - -using browserify@1.16.5 - -# example - -``` js -var test = require('tape'); - -test('timing test', function (t) { - t.plan(2); - - t.equal(typeof Date.now, 'function'); - var start = Date.now(); - - setTimeout(function () { - t.equal(Date.now() - start, 100); - }, 100); -}); -``` - -``` -$ node example/timing.js -TAP version 13 -# timing test -ok 1 should be equal -not ok 2 should be equal - --- - operator: equal - expected: 100 - actual: 107 - ... - -1..2 -# tests 2 -# pass 1 -# fail 1 -``` - -# methods - -The assertion methods in tape are heavily influenced or copied from the methods -in [node-tap](https://github.com/isaacs/node-tap). - -``` -var test = require('tape') -``` - -## test(name, cb) - -Create a new test with an optional `name` string. `cb(t)` fires with the new -test object `t` once all preceeding tests have finished. Tests execute serially. - -If you forget to `t.plan()` out how many assertions you are going to run and you -don't call `t.end()` explicitly, your test will hang. - -## t.plan(n) - -Declare that `n` assertions should be run. `t.end()` will be called -automatically after the `n`th assertion. If there are any more assertions after -the `n`th, or after `t.end()` is called, they will generate errors. - -## t.end() - -Declare the end of a test explicitly. - -## t.fail(msg) - -Generate a failing assertion with a message `msg`. - -## t.pass(msg) - -Generate a passing assertion with a message `msg`. - -## t.skip(msg) - -Generate an assertion that will be skipped over. - -## t.ok(value, msg) - -Assert that `value` is truthy with an optional description message `msg`. - -Aliases: `t.true()`, `t.assert()` - -## t.notOk(value, msg) - -Assert that `value` is falsy with an optional description message `msg`. - -Aliases: `t.false()`, `t.notok()` - -## t.error(err, msg) - -Assert that `err` is falsy. If `err` is non-falsy, use its `err.message` as the -description message. - -Aliases: `t.ifError()`, `t.ifErr()`, `t.iferror()` - -## t.equal(a, b, msg) - -Assert that `a === b` with an optional description `msg`. - -Aliases: `t.equals()`, `t.isEqual()`, `t.is()`, `t.strictEqual()`, -`t.strictEquals()` - -## t.notEqual(a, b, msg) - -Assert that `a !== b` with an optional description `msg`. - -Aliases: `t.notEquals()`, `t.notStrictEqual()`, `t.notStrictEquals()`, -`t.isNotEqual()`, `t.isNot()`, `t.not()`, `t.doesNotEqual()`, `t.isInequal()` - -## t.deepEqual(a, b, msg) - -Assert that `a` and `b` have the same structure and nested values using -[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal) -with an optional description `msg`. - -Aliases: `t.deepEquals()`, `t.isEquivalent()`, `t.looseEqual()`, -`t.looseEquals()`, `t.same()` - -## t.notDeepEqual(a, b, msg) - -Assert that `a` and `b` do not have the same structure and nested values using -[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal) -with an optional description `msg`. - -Aliases: `t.notEquivalent()`, `t.notDeeply()`, `t.notSame()`, -`t.isNotDeepEqual()`, `t.isNotDeeply()`, `t.isNotEquivalent()`, -`t.isInequivalent()` - -## t.throws(fn, expected, msg) - -Assert that the function call `fn()` throws an exception. - -## t.doesNotThrow(fn, expected, msg) - -Assert that the function call `fn()` does not throw an exception. - -## t.test(name, cb) - -Create a subtest with a new test handle `st` from `cb(st)` inside the current -test `t`. `cb(st)` will only fire when `t` finishes. Additional tests queued up -after `t` will not be run until all subtests finish. - -## var htest = test.createHarness() - -Create a new test harness instance, which is a function like `test()`, but with -a new pending stack and test state. - -By default the TAP output goes to `process.stdout` or `console.log()` if the -environment doesn't have `process.stdout`. You can pipe the output to someplace -else if you `test.stream.pipe()` to a destination stream on the first tick. - -## test.only(name, cb) - -Like `test(name, cb)` except if you use `.only` this is the only test case -that will run for the entire process, all other test cases using tape will -be ignored - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install tape -``` - -# license - -MIT diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/array.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/array.js deleted file mode 100644 index a4b47c29..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/array.js +++ /dev/null @@ -1,68 +0,0 @@ -var falafel = require('falafel'); -var tape = require('../'); -var tap = require('tap'); - -tap.test('array test', function (tt) { - tt.plan(1); - - var test = tape.createHarness(); - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - tt.same(rs, [ - 'TAP version 13', - 'array', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: true, name: 'should be equivalent' }, - 'tests 5', - 'pass 5', - 'ok' - ]); - }); - - test.stream.pipe(tc); - - test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/child_ordering.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/child_ordering.js deleted file mode 100644 index 03b88e20..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/child_ordering.js +++ /dev/null @@ -1,51 +0,0 @@ -var test = require('../'); - -var childRan = false; - -test('parent', function(t) { - t.test('child', function(t) { - childRan = true; - t.pass('child ran'); - t.end(); - }); - t.end(); -}); - -test('uncle', function(t) { - t.ok(childRan, 'Child should run before next top-level test'); - t.end(); -}); - -var grandParentRan = false; -var parentRan = false; -var grandChildRan = false; -test('grandparent', function(t) { - grandParentRan = true; - t.test('parent', function(t) { - parentRan = true; - t.test('grandchild', function(t) { - grandChildRan = true; - t.pass('grand child ran'); - t.end(); - }); - t.pass('parent ran'); - t.end(); - }); - t.test('other parent', function(t) { - t.ok(parentRan, 'first parent runs before second parent'); - t.ok(grandChildRan, 'grandchild runs before second parent'); - t.end(); - }); - t.pass('grandparent ran'); - t.end(); -}); - -test('second grandparent', function(t) { - t.ok(grandParentRan, 'grandparent ran'); - t.ok(parentRan, 'parent ran'); - t.ok(grandChildRan, 'grandchild ran'); - t.pass('other grandparent ran'); - t.end(); -}); - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit.js deleted file mode 100644 index 275f3efe..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit.js +++ /dev/null @@ -1,108 +0,0 @@ -var tap = require('tap'); -var spawn = require('child_process').spawn; - -tap.test('exit ok', function (t) { - t.plan(2); - - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - t.same(rs, [ - 'TAP version 13', - 'array', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: true, name: 'should be equivalent' }, - 'tests 5', - 'pass 5', - 'ok' - ]); - }); - - var ps = spawn(process.execPath, [ __dirname + '/exit/ok.js' ]); - ps.stdout.pipe(tc); - ps.on('exit', function (code) { - t.equal(code, 0); - }); -}); - -tap.test('exit fail', function (t) { - t.plan(2); - - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - t.same(rs, [ - 'TAP version 13', - 'array', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: false, name: 'should be equivalent' }, - 'tests 5', - 'pass 4', - 'fail 1' - ]); - }); - - var ps = spawn(process.execPath, [ __dirname + '/exit/fail.js' ]); - ps.stdout.pipe(tc); - ps.on('exit', function (code) { - t.notEqual(code, 0); - }); -}); - -tap.test('too few exit', function (t) { - t.plan(2); - - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - t.same(rs, [ - 'TAP version 13', - 'array', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: true, name: 'should be equivalent' }, - { id: 6, ok: false, name: 'plan != count' }, - 'tests 6', - 'pass 5', - 'fail 1' - ]); - }); - - var ps = spawn(process.execPath, [ __dirname + '/exit/too_few.js' ]); - ps.stdout.pipe(tc); - ps.on('exit', function (code) { - t.notEqual(code, 0); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/fail.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/fail.js deleted file mode 100644 index d7fd3ce7..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/fail.js +++ /dev/null @@ -1,35 +0,0 @@ -var test = require('../../'); -var falafel = require('falafel'); - -test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4444 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/ok.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/ok.js deleted file mode 100644 index a02c7b69..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/ok.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('falafel'); -var test = require('../../'); - -test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/too_few.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/too_few.js deleted file mode 100644 index 8e60ce5b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/exit/too_few.js +++ /dev/null @@ -1,35 +0,0 @@ -var falafel = require('falafel'); -var test = require('../../'); - -test('array', function (t) { - t.plan(6); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/fail.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/fail.js deleted file mode 100644 index 878394f0..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/fail.js +++ /dev/null @@ -1,68 +0,0 @@ -var falafel = require('falafel'); -var tape = require('../'); -var tap = require('tap'); - -tap.test('array test', function (tt) { - tt.plan(1); - - var test = tape.createHarness({ exit : false }); - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - tt.same(rs, [ - 'TAP version 13', - 'array', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: false, name: 'should be equivalent' }, - 'tests 5', - 'pass 4', - 'fail 1' - ]); - }); - - test.stream.pipe(tc); - - test('array', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4444 ] ], [ 5, 6 ] ]); - } - ); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/harness.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/harness.js deleted file mode 100644 index 4f47f362..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/harness.js +++ /dev/null @@ -1,88 +0,0 @@ -var test = require('../'); -var harness = test.createHarness({ exit : false }); - -// minimal write stream mockery -var collector = { - written: [], - ended: false, - writable: true, - write: function (c) { - console.log('#> %s', c.replace(/\n$/, '').split(/\n/).join('\n#> ')); - if (this.ended) - throw new Error('write after end'); - this.written.push(c); - return true; - }, - end: function (c) { - console.error('collector end'); - if (this.ended) - throw new Error('end after end'); - if (c) - this.write(c); - this.ended = true; - }, - on: function () {}, - emit: function () {}, - removeListener: function () {} -}; - -var wanted = - [ 'TAP version 13', - '# harness test', - '# hello', - 'ok 1 this is ok', - 'not ok 2 this is not ok', - ' ---', - ' operator: fail', - ' expected:', - ' actual:', - ' ...', - '# sub harness test', - 'ok 3 math still works', - 'ok 4 except when it doesn\'t', - '# sub harness internal test', - 'ok 5 gas', - 'ok 6 lulz i am immature', - '', - '1..6', - '# tests 6', - '# pass 5', - '# fail 1', - '' ]; - -harness.stream.pipe(collector); - -test('correct output', function (t) { - harness.stream.on('end', function () { - // accept trailing whitespace, or multiple lines on the same write(), - var found = collector.written.join('').split(/\n/).map(function (s) { - return s.replace(/\s+$/, ''); - }); - t.same(found, wanted, 'got expected output'); - t.end(); - }); - - harness('harness test', function (ht) { - // console.error('harness stream', harness.stream); - ht.comment('hello'); - ht.pass('this is ok'); - ht.fail('this is not ok'); - ht.test('sub harness test', function (sht) { - sht.equal(4, 4, 'math still works'); - sht.notEqual(0.1 + 0.1 + 0.1, 0.3, 'except when it doesn\'t'); - sht.test('sub harness internal test', function (shit) { - console.error('sub harness internal test'); - // shit.plan(2); - shit.pass('gas'); - shit.pass('lulz i am immature'); - shit.end(); - }); - sht.end(); - }); - ht.end(); - console.error('called ht.end'); - }); -}); - - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners.js deleted file mode 100644 index 5edfb153..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners.js +++ /dev/null @@ -1,7 +0,0 @@ -var spawn = require('child_process').spawn; -var ps = spawn(process.execPath, [ __dirname + '/max_listeners/source.js' ]); -ps.stdout.pipe(process.stdout, { end : false }); - -ps.stderr.on('data', function (buf) { - console.log('not ok ' + buf); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners/source.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners/source.js deleted file mode 100644 index 839a3275..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/max_listeners/source.js +++ /dev/null @@ -1,5 +0,0 @@ -var test = require('../../'); - -for (var i = 0; i < 11; i ++) { - test(function (t) { t.end() }); -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/nested.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/nested.js deleted file mode 100644 index 418a65d1..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/nested.js +++ /dev/null @@ -1,89 +0,0 @@ -var falafel = require('falafel'); -var tape = require('../'); -var tap = require('tap'); - -tap.test('array test', function (tt) { - tt.plan(1); - - var test = tape.createHarness(); - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - tt.same(rs, [ - 'TAP version 13', - 'nested array test', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: true, name: 'should be equivalent' }, - 'inside test', - { id: 6, ok: true, name: '(unnamed assert)' }, - { id: 7, ok: true, name: '(unnamed assert)' }, - 'another', - { id: 8, ok: true, name: '(unnamed assert)' }, - 'tests 8', - 'pass 8', - 'ok' - ]); - }); - - test.stream.pipe(tc); - - test('nested array test', function (t) { - t.plan(5); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - t.test('inside test', function (q) { - q.plan(2); - q.ok(true); - - setTimeout(function () { - q.ok(true); - }, 100); - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); - }); - - test('another', function (t) { - t.plan(1); - setTimeout(function () { - t.ok(true); - }, 50); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/only.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/only.js deleted file mode 100644 index ffb77179..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/only.js +++ /dev/null @@ -1,48 +0,0 @@ -var tap = require('tap'); -var tape = require('../'); - -tap.test('tape only test', function (tt) { - var test = tape.createHarness({ exit: false }); - var tc = tap.createConsumer(); - - var rows = [] - tc.on('data', function (r) { rows.push(r) }) - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id: r.id, ok: r.ok, name: r.name.trim() }; - } - else { - return r; - } - }) - - tt.deepEqual(rs, [ - 'TAP version 13', - 'run success', - { id: 1, ok: true, name: 'assert name'}, - 'tests 1', - 'pass 1', - 'ok' - ]) - - tt.end() - }) - - test.stream.pipe(tc) - - test("never run fail", function (t) { - t.equal(true, false) - t.end() - }) - - test("never run success", function (t) { - t.equal(true, true) - t.end() - }) - - test.only("run success", function (t) { - t.ok(true, "assert name") - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/order.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/order.js deleted file mode 100644 index 02aaa055..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/order.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('../'); -var current = 0; - -test(function (t) { - t.equal(current++, 0); - t.end(); -}); -test(function (t) { - t.plan(1); - setTimeout(function () { - t.equal(current++, 1); - }, 100); -}); -test(function (t) { - t.equal(current++, 2); - t.end(); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/plan_optional.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/plan_optional.js deleted file mode 100644 index a092eab2..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/plan_optional.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('../'); - -test('plan should be optional', function (t) { - t.pass('no plan here'); - t.end(); -}); - -test('no plan async', function (t) { - setTimeout(function() { - t.pass('ok'); - t.end(); - }, 100); -}); - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/skip.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/skip.js deleted file mode 100644 index 13dd9cfc..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/skip.js +++ /dev/null @@ -1,34 +0,0 @@ -var test = require('../'); -var ran = 0; - -test('do not skip this', { skip: false }, function(t) { - t.pass('this should run'); - ran ++; - t.end(); -}); - -test('skip this', { skip: true }, function(t) { - t.fail('this should not even run'); - t.end(); -}); - -test('skip subtest', function(t) { - ran ++; - t.test('do not skip this', { skip: false }, function(t) { - ran ++; - t.pass('this should run'); - t.end(); - }); - t.test('skip this', { skip: true }, function(t) { - t.fail('this should not even run'); - t.end(); - }); - t.end(); -}); - -test('right number of tests ran', function(t) { - t.equal(ran, 3, 'ran the right number of tests'); - t.end(); -}); - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/throw.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/throw.js deleted file mode 100644 index 653f95dc..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/throw.js +++ /dev/null @@ -1,38 +0,0 @@ -var falafel = require('falafel'); -var tape = require('../'); -var tap = require('tap'); - -tap.test('throw test', function (tt) { - tt.plan(1); - - var test = tape.createHarness({ exit : false }); - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - tt.same(rs, [ - 'TAP version 13', - 'thrower', - { id: 1, ok: true, name: 'should be equal' }, - { id: 2, ok: false, name: 'Error: rawr' }, - 'tests 2', - 'pass 1', - 'fail 1', - ]); - }); - - test.stream.pipe(tc); - - test('thrower', function (t) { - t.equal(1 + 1, 2); - - throw new Error('rawr'); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/too_many.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/too_many.js deleted file mode 100644 index d949a03f..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/node_modules/tape/test/too_many.js +++ /dev/null @@ -1,69 +0,0 @@ -var falafel = require('falafel'); -var tape = require('../'); -var tap = require('tap'); - -tap.test('array test', function (tt) { - tt.plan(1); - - var test = tape.createHarness({ exit : false }); - var tc = tap.createConsumer(); - - var rows = []; - tc.on('data', function (r) { rows.push(r) }); - tc.on('end', function () { - var rs = rows.map(function (r) { - if (r && typeof r === 'object') { - return { id : r.id, ok : r.ok, name : r.name.trim() }; - } - else return r; - }); - tt.same(rs, [ - 'TAP version 13', - 'array', - { id: 1, ok: true, name: 'should be equivalent' }, - { id: 2, ok: true, name: 'should be equivalent' }, - { id: 3, ok: true, name: 'should be equivalent' }, - { id: 4, ok: true, name: 'should be equivalent' }, - { id: 5, ok: false, name: 'plan != count' }, - { id: 6, ok: true, name: 'should be equivalent' }, - 'tests 6', - 'pass 5', - 'fail 1' - ]); - }); - - test.stream.pipe(tc); - - test('array', function (t) { - t.plan(3); - - var src = '(' + function () { - var xs = [ 1, 2, [ 3, 4 ] ]; - var ys = [ 5, 6 ]; - g([ xs, ys ]); - } + ')()'; - - var output = falafel(src, function (node) { - if (node.type === 'ArrayExpression') { - node.update('fn(' + node.source() + ')'); - } - }); - - var arrays = [ - [ 3, 4 ], - [ 1, 2, [ 3, 4 ] ], - [ 5, 6 ], - [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ], - ]; - - Function(['fn','g'], output)( - function (xs) { - t.same(arrays.shift(), xs); - return xs; - }, - function (xs) { - t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]); - } - ); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/package.json deleted file mode 100644 index 4f09fb4b..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "zlib-browserify", - "version": "0.0.3", - "description": "Wrapper for zlib.js to allow for browserifyication", - "main": "index.js", - "directories": { - "test": "test" - }, - "dependencies": { - "tape": "~0.2.2" - }, - "devDependencies": { - "tap": "~0.3.3" - }, - "scripts": { - "test": "./node_modules/.bin/tap test/*.test.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/zlib-browserify.git" - }, - "keywords": [ - "zlib", - "browserify" - ], - "author": { - "name": "Brian J. Brennan" - }, - "license": "MIT", - "gitHead": "4be9419f0e8e9dec9629c8a538b33a4efd7df17b", - "readmeFilename": "readme.md", - "readme": "# zlib-browserify [![Build Status](https://travis-ci.org/brianloveswords/zlib-browserify.png?branch=master)](https://travis-ci.org/brianloveswords/zlib-browserify)\n\nZlib in yo' browser.\n\n# What is this?\n\nThis is a very small wrapper for https://github.com/imaya/zlib.js. Fixes\nsome very minor API inconsistencies. Only implements `inflate`,\n`deflate`, `gzip` and `gunzip` so if you're doing anything extra fancy\nyou're out of luck for now.\n\n# Run tests\n\n```bash\n$ npm test\n```\n\n# Test methodology (a.k.a, \"why doesn't the output match node's zlib?\")\n\n(zlibA = native, zlibB = browserified)\n\nPretending these are sync, I do the following to test:\n\n```js\nassert(zlibB.inflate(zlibA.deflate('test')) === \"test\");\nassert(zlibA.inflate(zlibB.deflate('test')) === \"test\");\n...\n```\n\nand so on for each of the methods supported. Note, I do **not** do \n\n```js\nassert(zlibA.deflate('test') === zlibB.deflate('test'));\n```\n\nBecause node's deflate and the imaya's version do not seem to use the\nsame defaults for compression level. I haven't figured out how to change\nit yet. Anyway, rest assured, while `deflate` does not return the same\noutput, this is fully interoperable with node's native zlib.\n\n# License\n\nMIT\n", - "bugs": { - "url": "https://github.com/brianloveswords/zlib-browserify/issues" - }, - "homepage": "https://github.com/brianloveswords/zlib-browserify", - "_id": "zlib-browserify@0.0.3", - "_from": "zlib-browserify@^0.0.3" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/readme.md deleted file mode 100644 index 4dbf6b25..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/readme.md +++ /dev/null @@ -1,43 +0,0 @@ -# zlib-browserify [![Build Status](https://travis-ci.org/brianloveswords/zlib-browserify.png?branch=master)](https://travis-ci.org/brianloveswords/zlib-browserify) - -Zlib in yo' browser. - -# What is this? - -This is a very small wrapper for https://github.com/imaya/zlib.js. Fixes -some very minor API inconsistencies. Only implements `inflate`, -`deflate`, `gzip` and `gunzip` so if you're doing anything extra fancy -you're out of luck for now. - -# Run tests - -```bash -$ npm test -``` - -# Test methodology (a.k.a, "why doesn't the output match node's zlib?") - -(zlibA = native, zlibB = browserified) - -Pretending these are sync, I do the following to test: - -```js -assert(zlibB.inflate(zlibA.deflate('test')) === "test"); -assert(zlibA.inflate(zlibB.deflate('test')) === "test"); -... -``` - -and so on for each of the methods supported. Note, I do **not** do - -```js -assert(zlibA.deflate('test') === zlibB.deflate('test')); -``` - -Because node's deflate and the imaya's version do not seem to use the -same defaults for compression level. I haven't figured out how to change -it yet. Anyway, rest assured, while `deflate` does not return the same -output, this is fully interoperable with node's native zlib. - -# License - -MIT diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/test/zlib.test.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/test/zlib.test.js deleted file mode 100644 index c4c9f953..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/test/zlib.test.js +++ /dev/null @@ -1,64 +0,0 @@ -const test = require('tap').test; -const zlibA = require('zlib'); -const zlibB = require('..'); -const crypto = require('crypto'); - -test('zlibA.deflate -> zlibB.inflate', function (t) { - const expect = crypto.randomBytes(1024); - zlibA.deflate(expect, function (err, cmpA) { - zlibB.inflate(cmpA, function (err, result) { - t.same(result, expect, 'should match'); - t.end(); - }); - }); -}); - -test('zlibB.deflate -> zlibA.inflate', function (t) { - const expect = crypto.randomBytes(1024); - zlibB.deflate(expect, function (err, cmpA) { - zlibA.inflate(cmpA, function (err, result) { - t.same(result, expect, 'should match'); - t.end(); - }); - }); -}); - -test('zlibB.deflate -> zlibA.inflate (string)', function (t) { - const expect = 'ohaihihihihihihihihihihihihihihihi'; - zlibB.deflate(expect, function (err, cmpA) { - zlibA.inflate(cmpA, function (err, result) { - t.same(result.toString(), expect, 'should match'); - t.end(); - }); - }); -}); - -test('zlibA.gzip -> zlibB.gunzip', function (t) { - const expect = crypto.randomBytes(1024); - zlibA.gzip(expect, function (err, cmpA) { - zlibB.gunzip(cmpA, function (err, result) { - t.same(result, expect, 'should match'); - t.end(); - }); - }); -}); - -test('zlibB.gzip -> zlibA.gunzip', function (t) { - const expect = crypto.randomBytes(1024); - zlibB.gzip(expect, function (err, cmpA) { - zlibA.gunzip(cmpA, function (err, result) { - t.same(result, expect, 'should match'); - t.end(); - }); - }); -}); - -test('zlibB.gzip -> zlibA.gunzip', function (t) { - const expect = 'lololololoollolololoololololololololololololololololololololol'; - zlibB.gzip(expect, function (err, cmpA) { - zlibA.gunzip(cmpA, function (err, result) { - t.same(result.toString(), expect, 'should match'); - t.end(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/zlib.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/zlib.js deleted file mode 100644 index 921ff454..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/node_modules/zlib-browserify/zlib.js +++ /dev/null @@ -1,54 +0,0 @@ -/** @license zlib.js 0.1.7 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';function q(b){throw b;}var t=void 0,u=!0;var A="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array;function E(b,a){this.index="number"===typeof a?a:0;this.m=0;this.buffer=b instanceof(A?Uint8Array:Array)?b:new (A?Uint8Array:Array)(32768);2*this.buffer.length<=this.index&&q(Error("invalid index"));this.buffer.length<=this.index&&this.f()}E.prototype.f=function(){var b=this.buffer,a,c=b.length,d=new (A?Uint8Array:Array)(c<<1);if(A)d.set(b);else for(a=0;a<c;++a)d[a]=b[a];return this.buffer=d}; -E.prototype.d=function(b,a,c){var d=this.buffer,f=this.index,e=this.m,g=d[f],k;c&&1<a&&(b=8<a?(G[b&255]<<24|G[b>>>8&255]<<16|G[b>>>16&255]<<8|G[b>>>24&255])>>32-a:G[b]>>8-a);if(8>a+e)g=g<<a|b,e+=a;else for(k=0;k<a;++k)g=g<<1|b>>a-k-1&1,8===++e&&(e=0,d[f++]=G[g],g=0,f===d.length&&(d=this.f()));d[f]=g;this.buffer=d;this.m=e;this.index=f};E.prototype.finish=function(){var b=this.buffer,a=this.index,c;0<this.m&&(b[a]<<=8-this.m,b[a]=G[b[a]],a++);A?c=b.subarray(0,a):(b.length=a,c=b);return c}; -var aa=new (A?Uint8Array:Array)(256),J;for(J=0;256>J;++J){for(var N=J,Q=N,ba=7,N=N>>>1;N;N>>>=1)Q<<=1,Q|=N&1,--ba;aa[J]=(Q<<ba&255)>>>0}var G=aa;function R(b,a,c){var d,f="number"===typeof a?a:a=0,e="number"===typeof c?c:b.length;d=-1;for(f=e&7;f--;++a)d=d>>>8^S[(d^b[a])&255];for(f=e>>3;f--;a+=8)d=d>>>8^S[(d^b[a])&255],d=d>>>8^S[(d^b[a+1])&255],d=d>>>8^S[(d^b[a+2])&255],d=d>>>8^S[(d^b[a+3])&255],d=d>>>8^S[(d^b[a+4])&255],d=d>>>8^S[(d^b[a+5])&255],d=d>>>8^S[(d^b[a+6])&255],d=d>>>8^S[(d^b[a+7])&255];return(d^4294967295)>>>0} -var ga=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759, -2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977, -2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755, -2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956, -3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270, -936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],S=A?new Uint32Array(ga):ga;function ha(){};function ia(b){this.buffer=new (A?Uint16Array:Array)(2*b);this.length=0}ia.prototype.getParent=function(b){return 2*((b-2)/4|0)};ia.prototype.push=function(b,a){var c,d,f=this.buffer,e;c=this.length;f[this.length++]=a;for(f[this.length++]=b;0<c;)if(d=this.getParent(c),f[c]>f[d])e=f[c],f[c]=f[d],f[d]=e,e=f[c+1],f[c+1]=f[d+1],f[d+1]=e,c=d;else break;return this.length}; -ia.prototype.pop=function(){var b,a,c=this.buffer,d,f,e;a=c[0];b=c[1];this.length-=2;c[0]=c[this.length];c[1]=c[this.length+1];for(e=0;;){f=2*e+2;if(f>=this.length)break;f+2<this.length&&c[f+2]>c[f]&&(f+=2);if(c[f]>c[e])d=c[e],c[e]=c[f],c[f]=d,d=c[e+1],c[e+1]=c[f+1],c[f+1]=d;else break;e=f}return{index:b,value:a,length:this.length}};function ja(b){var a=b.length,c=0,d=Number.POSITIVE_INFINITY,f,e,g,k,h,l,s,n,m;for(n=0;n<a;++n)b[n]>c&&(c=b[n]),b[n]<d&&(d=b[n]);f=1<<c;e=new (A?Uint32Array:Array)(f);g=1;k=0;for(h=2;g<=c;){for(n=0;n<a;++n)if(b[n]===g){l=0;s=k;for(m=0;m<g;++m)l=l<<1|s&1,s>>=1;for(m=l;m<f;m+=h)e[m]=g<<16|n;++k}++g;k<<=1;h<<=1}return[e,c,d]};function ma(b,a){this.k=na;this.F=0;this.input=A&&b instanceof Array?new Uint8Array(b):b;this.b=0;a&&(a.lazy&&(this.F=a.lazy),"number"===typeof a.compressionType&&(this.k=a.compressionType),a.outputBuffer&&(this.a=A&&a.outputBuffer instanceof Array?new Uint8Array(a.outputBuffer):a.outputBuffer),"number"===typeof a.outputIndex&&(this.b=a.outputIndex));this.a||(this.a=new (A?Uint8Array:Array)(32768))}var na=2,oa={NONE:0,L:1,t:na,X:3},pa=[],T; -for(T=0;288>T;T++)switch(u){case 143>=T:pa.push([T+48,8]);break;case 255>=T:pa.push([T-144+400,9]);break;case 279>=T:pa.push([T-256+0,7]);break;case 287>=T:pa.push([T-280+192,8]);break;default:q("invalid literal: "+T)} -ma.prototype.h=function(){var b,a,c,d,f=this.input;switch(this.k){case 0:c=0;for(d=f.length;c<d;){a=A?f.subarray(c,c+65535):f.slice(c,c+65535);c+=a.length;var e=a,g=c===d,k=t,h=t,l=t,s=t,n=t,m=this.a,p=this.b;if(A){for(m=new Uint8Array(this.a.buffer);m.length<=p+e.length+5;)m=new Uint8Array(m.length<<1);m.set(this.a)}k=g?1:0;m[p++]=k|0;h=e.length;l=~h+65536&65535;m[p++]=h&255;m[p++]=h>>>8&255;m[p++]=l&255;m[p++]=l>>>8&255;if(A)m.set(e,p),p+=e.length,m=m.subarray(0,p);else{s=0;for(n=e.length;s<n;++s)m[p++]= -e[s];m.length=p}this.b=p;this.a=m}break;case 1:var r=new E(A?new Uint8Array(this.a.buffer):this.a,this.b);r.d(1,1,u);r.d(1,2,u);var v=qa(this,f),x,O,y;x=0;for(O=v.length;x<O;x++)if(y=v[x],E.prototype.d.apply(r,pa[y]),256<y)r.d(v[++x],v[++x],u),r.d(v[++x],5),r.d(v[++x],v[++x],u);else if(256===y)break;this.a=r.finish();this.b=this.a.length;break;case na:var D=new E(A?new Uint8Array(this.a.buffer):this.a,this.b),Da,P,U,V,W,qb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ca,Ea,da,Fa,ka,sa=Array(19), -Ga,X,la,B,Ha;Da=na;D.d(1,1,u);D.d(Da,2,u);P=qa(this,f);ca=ra(this.U,15);Ea=ta(ca);da=ra(this.T,7);Fa=ta(da);for(U=286;257<U&&0===ca[U-1];U--);for(V=30;1<V&&0===da[V-1];V--);var Ia=U,Ja=V,I=new (A?Uint32Array:Array)(Ia+Ja),w,K,z,ea,H=new (A?Uint32Array:Array)(316),F,C,L=new (A?Uint8Array:Array)(19);for(w=K=0;w<Ia;w++)I[K++]=ca[w];for(w=0;w<Ja;w++)I[K++]=da[w];if(!A){w=0;for(ea=L.length;w<ea;++w)L[w]=0}w=F=0;for(ea=I.length;w<ea;w+=K){for(K=1;w+K<ea&&I[w+K]===I[w];++K);z=K;if(0===I[w])if(3>z)for(;0< -z--;)H[F++]=0,L[0]++;else for(;0<z;)C=138>z?z:138,C>z-3&&C<z&&(C=z-3),10>=C?(H[F++]=17,H[F++]=C-3,L[17]++):(H[F++]=18,H[F++]=C-11,L[18]++),z-=C;else if(H[F++]=I[w],L[I[w]]++,z--,3>z)for(;0<z--;)H[F++]=I[w],L[I[w]]++;else for(;0<z;)C=6>z?z:6,C>z-3&&C<z&&(C=z-3),H[F++]=16,H[F++]=C-3,L[16]++,z-=C}b=A?H.subarray(0,F):H.slice(0,F);ka=ra(L,7);for(B=0;19>B;B++)sa[B]=ka[qb[B]];for(W=19;4<W&&0===sa[W-1];W--);Ga=ta(ka);D.d(U-257,5,u);D.d(V-1,5,u);D.d(W-4,4,u);for(B=0;B<W;B++)D.d(sa[B],3,u);B=0;for(Ha=b.length;B< -Ha;B++)if(X=b[B],D.d(Ga[X],ka[X],u),16<=X){B++;switch(X){case 16:la=2;break;case 17:la=3;break;case 18:la=7;break;default:q("invalid code: "+X)}D.d(b[B],la,u)}var Ka=[Ea,ca],La=[Fa,da],M,Ma,fa,va,Na,Oa,Pa,Qa;Na=Ka[0];Oa=Ka[1];Pa=La[0];Qa=La[1];M=0;for(Ma=P.length;M<Ma;++M)if(fa=P[M],D.d(Na[fa],Oa[fa],u),256<fa)D.d(P[++M],P[++M],u),va=P[++M],D.d(Pa[va],Qa[va],u),D.d(P[++M],P[++M],u);else if(256===fa)break;this.a=D.finish();this.b=this.a.length;break;default:q("invalid compression type")}return this.a}; -function ua(b,a){this.length=b;this.N=a} -var wa=function(){function b(a){switch(u){case 3===a:return[257,a-3,0];case 4===a:return[258,a-4,0];case 5===a:return[259,a-5,0];case 6===a:return[260,a-6,0];case 7===a:return[261,a-7,0];case 8===a:return[262,a-8,0];case 9===a:return[263,a-9,0];case 10===a:return[264,a-10,0];case 12>=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272, -a-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:q("invalid length: "+a)}}var a=[],c,d;for(c=3;258>=c;c++)d=b(c),a[c]=d[2]<<24|d[1]<< -16|d[0];return a}(),xa=A?new Uint32Array(wa):wa; -function qa(b,a){function c(a,c){var b=a.N,d=[],e=0,f;f=xa[a.length];d[e++]=f&65535;d[e++]=f>>16&255;d[e++]=f>>24;var g;switch(u){case 1===b:g=[0,b-1,0];break;case 2===b:g=[1,b-2,0];break;case 3===b:g=[2,b-3,0];break;case 4===b:g=[3,b-4,0];break;case 6>=b:g=[4,b-5,1];break;case 8>=b:g=[5,b-7,1];break;case 12>=b:g=[6,b-9,2];break;case 16>=b:g=[7,b-13,2];break;case 24>=b:g=[8,b-17,3];break;case 32>=b:g=[9,b-25,3];break;case 48>=b:g=[10,b-33,4];break;case 64>=b:g=[11,b-49,4];break;case 96>=b:g=[12,b- -65,5];break;case 128>=b:g=[13,b-97,5];break;case 192>=b:g=[14,b-129,6];break;case 256>=b:g=[15,b-193,6];break;case 384>=b:g=[16,b-257,7];break;case 512>=b:g=[17,b-385,7];break;case 768>=b:g=[18,b-513,8];break;case 1024>=b:g=[19,b-769,8];break;case 1536>=b:g=[20,b-1025,9];break;case 2048>=b:g=[21,b-1537,9];break;case 3072>=b:g=[22,b-2049,10];break;case 4096>=b:g=[23,b-3073,10];break;case 6144>=b:g=[24,b-4097,11];break;case 8192>=b:g=[25,b-6145,11];break;case 12288>=b:g=[26,b-8193,12];break;case 16384>= -b:g=[27,b-12289,12];break;case 24576>=b:g=[28,b-16385,13];break;case 32768>=b:g=[29,b-24577,13];break;default:q("invalid distance")}f=g;d[e++]=f[0];d[e++]=f[1];d[e++]=f[2];var h,k;h=0;for(k=d.length;h<k;++h)m[p++]=d[h];v[d[0]]++;x[d[3]]++;r=a.length+c-1;n=null}var d,f,e,g,k,h={},l,s,n,m=A?new Uint16Array(2*a.length):[],p=0,r=0,v=new (A?Uint32Array:Array)(286),x=new (A?Uint32Array:Array)(30),O=b.F,y;if(!A){for(e=0;285>=e;)v[e++]=0;for(e=0;29>=e;)x[e++]=0}v[256]=1;d=0;for(f=a.length;d<f;++d){e=k=0; -for(g=3;e<g&&d+e!==f;++e)k=k<<8|a[d+e];h[k]===t&&(h[k]=[]);l=h[k];if(!(0<r--)){for(;0<l.length&&32768<d-l[0];)l.shift();if(d+3>=f){n&&c(n,-1);e=0;for(g=f-d;e<g;++e)y=a[d+e],m[p++]=y,++v[y];break}0<l.length?(s=ya(a,d,l),n?n.length<s.length?(y=a[d-1],m[p++]=y,++v[y],c(s,0)):c(n,-1):s.length<O?n=s:c(s,0)):n?c(n,-1):(y=a[d],m[p++]=y,++v[y])}l.push(d)}m[p++]=256;v[256]++;b.U=v;b.T=x;return A?m.subarray(0,p):m} -function ya(b,a,c){var d,f,e=0,g,k,h,l,s=b.length;k=0;l=c.length;a:for(;k<l;k++){d=c[l-k-1];g=3;if(3<e){for(h=e;3<h;h--)if(b[d+h-1]!==b[a+h-1])continue a;g=e}for(;258>g&&a+g<s&&b[d+g]===b[a+g];)++g;g>e&&(f=d,e=g);if(258===g)break}return new ua(e,a-f)} -function ra(b,a){var c=b.length,d=new ia(572),f=new (A?Uint8Array:Array)(c),e,g,k,h,l;if(!A)for(h=0;h<c;h++)f[h]=0;for(h=0;h<c;++h)0<b[h]&&d.push(h,b[h]);e=Array(d.length/2);g=new (A?Uint32Array:Array)(d.length/2);if(1===e.length)return f[d.pop().index]=1,f;h=0;for(l=d.length/2;h<l;++h)e[h]=d.pop(),g[h]=e[h].value;k=za(g,g.length,a);h=0;for(l=e.length;h<l;++h)f[e[h].index]=k[h];return f} -function za(b,a,c){function d(b){var c=h[b][l[b]];c===a?(d(b+1),d(b+1)):--g[c];++l[b]}var f=new (A?Uint16Array:Array)(c),e=new (A?Uint8Array:Array)(c),g=new (A?Uint8Array:Array)(a),k=Array(c),h=Array(c),l=Array(c),s=(1<<c)-a,n=1<<c-1,m,p,r,v,x;f[c-1]=a;for(p=0;p<c;++p)s<n?e[p]=0:(e[p]=1,s-=n),s<<=1,f[c-2-p]=(f[c-1-p]/2|0)+a;f[0]=e[0];k[0]=Array(f[0]);h[0]=Array(f[0]);for(p=1;p<c;++p)f[p]>2*f[p-1]+e[p]&&(f[p]=2*f[p-1]+e[p]),k[p]=Array(f[p]),h[p]=Array(f[p]);for(m=0;m<a;++m)g[m]=c;for(r=0;r<f[c-1];++r)k[c- -1][r]=b[r],h[c-1][r]=r;for(m=0;m<c;++m)l[m]=0;1===e[c-1]&&(--g[0],++l[c-1]);for(p=c-2;0<=p;--p){v=m=0;x=l[p+1];for(r=0;r<f[p];r++)v=k[p+1][x]+k[p+1][x+1],v>b[m]?(k[p][r]=v,h[p][r]=a,x+=2):(k[p][r]=b[m],h[p][r]=m,++m);l[p]=0;1===e[p]&&d(p)}return g} -function ta(b){var a=new (A?Uint16Array:Array)(b.length),c=[],d=[],f=0,e,g,k,h;e=0;for(g=b.length;e<g;e++)c[b[e]]=(c[b[e]]|0)+1;e=1;for(g=16;e<=g;e++)d[e]=f,f+=c[e]|0,f<<=1;e=0;for(g=b.length;e<g;e++){f=d[b[e]];d[b[e]]+=1;k=a[e]=0;for(h=b[e];k<h;k++)a[e]=a[e]<<1|f&1,f>>>=1}return a};function Aa(b,a){this.input=b;this.b=this.c=0;this.g={};a&&(a.flags&&(this.g=a.flags),"string"===typeof a.filename&&(this.filename=a.filename),"string"===typeof a.comment&&(this.w=a.comment),a.deflateOptions&&(this.l=a.deflateOptions));this.l||(this.l={})} -Aa.prototype.h=function(){var b,a,c,d,f,e,g,k,h=new (A?Uint8Array:Array)(32768),l=0,s=this.input,n=this.c,m=this.filename,p=this.w;h[l++]=31;h[l++]=139;h[l++]=8;b=0;this.g.fname&&(b|=Ba);this.g.fcomment&&(b|=Ca);this.g.fhcrc&&(b|=Ra);h[l++]=b;a=(Date.now?Date.now():+new Date)/1E3|0;h[l++]=a&255;h[l++]=a>>>8&255;h[l++]=a>>>16&255;h[l++]=a>>>24&255;h[l++]=0;h[l++]=Sa;if(this.g.fname!==t){g=0;for(k=m.length;g<k;++g)e=m.charCodeAt(g),255<e&&(h[l++]=e>>>8&255),h[l++]=e&255;h[l++]=0}if(this.g.comment){g= -0;for(k=p.length;g<k;++g)e=p.charCodeAt(g),255<e&&(h[l++]=e>>>8&255),h[l++]=e&255;h[l++]=0}this.g.fhcrc&&(c=R(h,0,l)&65535,h[l++]=c&255,h[l++]=c>>>8&255);this.l.outputBuffer=h;this.l.outputIndex=l;f=new ma(s,this.l);h=f.h();l=f.b;A&&(l+8>h.buffer.byteLength?(this.a=new Uint8Array(l+8),this.a.set(new Uint8Array(h.buffer)),h=this.a):h=new Uint8Array(h.buffer));d=R(s,t,t);h[l++]=d&255;h[l++]=d>>>8&255;h[l++]=d>>>16&255;h[l++]=d>>>24&255;k=s.length;h[l++]=k&255;h[l++]=k>>>8&255;h[l++]=k>>>16&255;h[l++]= -k>>>24&255;this.c=n;A&&l<h.length&&(this.a=h=h.subarray(0,l));return h};var Sa=255,Ra=2,Ba=8,Ca=16;function Y(b,a){this.o=[];this.p=32768;this.e=this.j=this.c=this.s=0;this.input=A?new Uint8Array(b):b;this.u=!1;this.q=Ta;this.K=!1;if(a||!(a={}))a.index&&(this.c=a.index),a.bufferSize&&(this.p=a.bufferSize),a.bufferType&&(this.q=a.bufferType),a.resize&&(this.K=a.resize);switch(this.q){case Ua:this.b=32768;this.a=new (A?Uint8Array:Array)(32768+this.p+258);break;case Ta:this.b=0;this.a=new (A?Uint8Array:Array)(this.p);this.f=this.S;this.z=this.O;this.r=this.Q;break;default:q(Error("invalid inflate mode"))}} -var Ua=0,Ta=1; -Y.prototype.i=function(){for(;!this.u;){var b=Z(this,3);b&1&&(this.u=u);b>>>=1;switch(b){case 0:var a=this.input,c=this.c,d=this.a,f=this.b,e=t,g=t,k=t,h=d.length,l=t;this.e=this.j=0;e=a[c++];e===t&&q(Error("invalid uncompressed block header: LEN (first byte)"));g=e;e=a[c++];e===t&&q(Error("invalid uncompressed block header: LEN (second byte)"));g|=e<<8;e=a[c++];e===t&&q(Error("invalid uncompressed block header: NLEN (first byte)"));k=e;e=a[c++];e===t&&q(Error("invalid uncompressed block header: NLEN (second byte)"));k|= -e<<8;g===~k&&q(Error("invalid uncompressed block header: length verify"));c+g>a.length&&q(Error("input buffer is broken"));switch(this.q){case Ua:for(;f+g>d.length;){l=h-f;g-=l;if(A)d.set(a.subarray(c,c+l),f),f+=l,c+=l;else for(;l--;)d[f++]=a[c++];this.b=f;d=this.f();f=this.b}break;case Ta:for(;f+g>d.length;)d=this.f({B:2});break;default:q(Error("invalid inflate mode"))}if(A)d.set(a.subarray(c,c+g),f),f+=g,c+=g;else for(;g--;)d[f++]=a[c++];this.c=c;this.b=f;this.a=d;break;case 1:this.r(Va,Wa);break; -case 2:Xa(this);break;default:q(Error("unknown BTYPE: "+b))}}return this.z()}; -var Ya=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Za=A?new Uint16Array(Ya):Ya,$a=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],ab=A?new Uint16Array($a):$a,bb=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],cb=A?new Uint8Array(bb):bb,db=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],eb=A?new Uint16Array(db):db,fb=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10, -10,11,11,12,12,13,13],gb=A?new Uint8Array(fb):fb,hb=new (A?Uint8Array:Array)(288),$,ib;$=0;for(ib=hb.length;$<ib;++$)hb[$]=143>=$?8:255>=$?9:279>=$?7:8;var Va=ja(hb),jb=new (A?Uint8Array:Array)(30),kb,lb;kb=0;for(lb=jb.length;kb<lb;++kb)jb[kb]=5;var Wa=ja(jb);function Z(b,a){for(var c=b.j,d=b.e,f=b.input,e=b.c,g;d<a;)g=f[e++],g===t&&q(Error("input buffer is broken")),c|=g<<d,d+=8;g=c&(1<<a)-1;b.j=c>>>a;b.e=d-a;b.c=e;return g} -function mb(b,a){for(var c=b.j,d=b.e,f=b.input,e=b.c,g=a[0],k=a[1],h,l,s;d<k;){h=f[e++];if(h===t)break;c|=h<<d;d+=8}l=g[c&(1<<k)-1];s=l>>>16;b.j=c>>s;b.e=d-s;b.c=e;return l&65535} -function Xa(b){function a(a,b,c){var d,e,f,g;for(g=0;g<a;)switch(d=mb(this,b),d){case 16:for(f=3+Z(this,2);f--;)c[g++]=e;break;case 17:for(f=3+Z(this,3);f--;)c[g++]=0;e=0;break;case 18:for(f=11+Z(this,7);f--;)c[g++]=0;e=0;break;default:e=c[g++]=d}return c}var c=Z(b,5)+257,d=Z(b,5)+1,f=Z(b,4)+4,e=new (A?Uint8Array:Array)(Za.length),g,k,h,l;for(l=0;l<f;++l)e[Za[l]]=Z(b,3);g=ja(e);k=new (A?Uint8Array:Array)(c);h=new (A?Uint8Array:Array)(d);b.r(ja(a.call(b,c,g,k)),ja(a.call(b,d,g,h)))} -Y.prototype.r=function(b,a){var c=this.a,d=this.b;this.A=b;for(var f=c.length-258,e,g,k,h;256!==(e=mb(this,b));)if(256>e)d>=f&&(this.b=d,c=this.f(),d=this.b),c[d++]=e;else{g=e-257;h=ab[g];0<cb[g]&&(h+=Z(this,cb[g]));e=mb(this,a);k=eb[e];0<gb[e]&&(k+=Z(this,gb[e]));d>=f&&(this.b=d,c=this.f(),d=this.b);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d}; -Y.prototype.Q=function(b,a){var c=this.a,d=this.b;this.A=b;for(var f=c.length,e,g,k,h;256!==(e=mb(this,b));)if(256>e)d>=f&&(c=this.f(),f=c.length),c[d++]=e;else{g=e-257;h=ab[g];0<cb[g]&&(h+=Z(this,cb[g]));e=mb(this,a);k=eb[e];0<gb[e]&&(k+=Z(this,gb[e]));d+h>f&&(c=this.f(),f=c.length);for(;h--;)c[d]=c[d++-k]}for(;8<=this.e;)this.e-=8,this.c--;this.b=d}; -Y.prototype.f=function(){var b=new (A?Uint8Array:Array)(this.b-32768),a=this.b-32768,c,d,f=this.a;if(A)b.set(f.subarray(32768,b.length));else{c=0;for(d=b.length;c<d;++c)b[c]=f[c+32768]}this.o.push(b);this.s+=b.length;if(A)f.set(f.subarray(a,a+32768));else for(c=0;32768>c;++c)f[c]=f[a+c];this.b=32768;return f}; -Y.prototype.S=function(b){var a,c=this.input.length/this.c+1|0,d,f,e,g=this.input,k=this.a;b&&("number"===typeof b.B&&(c=b.B),"number"===typeof b.M&&(c+=b.M));2>c?(d=(g.length-this.c)/this.A[2],e=258*(d/2)|0,f=e<k.length?k.length+e:k.length<<1):f=k.length*c;A?(a=new Uint8Array(f),a.set(k)):a=k;return this.a=a}; -Y.prototype.z=function(){var b=0,a=this.a,c=this.o,d,f=new (A?Uint8Array:Array)(this.s+(this.b-32768)),e,g,k,h;if(0===c.length)return A?this.a.subarray(32768,this.b):this.a.slice(32768,this.b);e=0;for(g=c.length;e<g;++e){d=c[e];k=0;for(h=d.length;k<h;++k)f[b++]=d[k]}e=32768;for(g=this.b;e<g;++e)f[b++]=a[e];this.o=[];return this.buffer=f}; -Y.prototype.O=function(){var b,a=this.b;A?this.K?(b=new Uint8Array(a),b.set(this.a.subarray(0,a))):b=this.a.subarray(0,a):(this.a.length>a&&(this.a.length=a),b=this.a);return this.buffer=b};function nb(b){this.input=b;this.c=0;this.G=[];this.R=!1} -nb.prototype.i=function(){for(var b=this.input.length;this.c<b;){var a=new ha,c=t,d=t,f=t,e=t,g=t,k=t,h=t,l=t,s=t,n=this.input,m=this.c;a.C=n[m++];a.D=n[m++];(31!==a.C||139!==a.D)&&q(Error("invalid file signature:"+a.C+","+a.D));a.v=n[m++];switch(a.v){case 8:break;default:q(Error("unknown compression method: "+a.v))}a.n=n[m++];l=n[m++]|n[m++]<<8|n[m++]<<16|n[m++]<<24;a.$=new Date(1E3*l);a.ba=n[m++];a.aa=n[m++];0<(a.n&4)&&(a.W=n[m++]|n[m++]<<8,m+=a.W);if(0<(a.n&Ba)){h=[];for(k=0;0<(g=n[m++]);)h[k++]= -String.fromCharCode(g);a.name=h.join("")}if(0<(a.n&Ca)){h=[];for(k=0;0<(g=n[m++]);)h[k++]=String.fromCharCode(g);a.w=h.join("")}0<(a.n&Ra)&&(a.P=R(n,0,m)&65535,a.P!==(n[m++]|n[m++]<<8)&&q(Error("invalid header crc16")));c=n[n.length-4]|n[n.length-3]<<8|n[n.length-2]<<16|n[n.length-1]<<24;n.length-m-4-4<512*c&&(e=c);d=new Y(n,{index:m,bufferSize:e});a.data=f=d.i();m=d.c;a.Y=s=(n[m++]|n[m++]<<8|n[m++]<<16|n[m++]<<24)>>>0;R(f,t,t)!==s&&q(Error("invalid CRC-32 checksum: 0x"+R(f,t,t).toString(16)+" / 0x"+ -s.toString(16)));a.Z=c=(n[m++]|n[m++]<<8|n[m++]<<16|n[m++]<<24)>>>0;(f.length&4294967295)!==c&&q(Error("invalid input size: "+(f.length&4294967295)+" / "+c));this.G.push(a);this.c=m}this.R=u;var p=this.G,r,v,x=0,O=0,y;r=0;for(v=p.length;r<v;++r)O+=p[r].data.length;if(A){y=new Uint8Array(O);for(r=0;r<v;++r)y.set(p[r].data,x),x+=p[r].data.length}else{y=[];for(r=0;r<v;++r)y[r]=p[r].data;y=Array.prototype.concat.apply([],y)}return y};function ob(b){if("string"===typeof b){var a=b.split(""),c,d;c=0;for(d=a.length;c<d;c++)a[c]=(a[c].charCodeAt(0)&255)>>>0;b=a}for(var f=1,e=0,g=b.length,k,h=0;0<g;){k=1024<g?1024:g;g-=k;do f+=b[h++],e+=f;while(--k);f%=65521;e%=65521}return(e<<16|f)>>>0};function pb(b,a){var c,d;this.input=b;this.c=0;if(a||!(a={}))a.index&&(this.c=a.index),a.verify&&(this.V=a.verify);c=b[this.c++];d=b[this.c++];switch(c&15){case rb:this.method=rb;break;default:q(Error("unsupported compression method"))}0!==((c<<8)+d)%31&&q(Error("invalid fcheck flag:"+((c<<8)+d)%31));d&32&&q(Error("fdict flag is not supported"));this.J=new Y(b,{index:this.c,bufferSize:a.bufferSize,bufferType:a.bufferType,resize:a.resize})} -pb.prototype.i=function(){var b=this.input,a,c;a=this.J.i();this.c=this.J.c;this.V&&(c=(b[this.c++]<<24|b[this.c++]<<16|b[this.c++]<<8|b[this.c++])>>>0,c!==ob(a)&&q(Error("invalid adler-32 checksum")));return a};var rb=8;function sb(b,a){this.input=b;this.a=new (A?Uint8Array:Array)(32768);this.k=tb.t;var c={},d;if((a||!(a={}))&&"number"===typeof a.compressionType)this.k=a.compressionType;for(d in a)c[d]=a[d];c.outputBuffer=this.a;this.I=new ma(this.input,c)}var tb=oa; -sb.prototype.h=function(){var b,a,c,d,f,e,g,k=0;g=this.a;b=rb;switch(b){case rb:a=Math.LOG2E*Math.log(32768)-8;break;default:q(Error("invalid compression method"))}c=a<<4|b;g[k++]=c;switch(b){case rb:switch(this.k){case tb.NONE:f=0;break;case tb.L:f=1;break;case tb.t:f=2;break;default:q(Error("unsupported compression type"))}break;default:q(Error("invalid compression method"))}d=f<<6|0;g[k++]=d|31-(256*c+d)%31;e=ob(this.input);this.I.b=k;g=this.I.h();k=g.length;A&&(g=new Uint8Array(g.buffer),g.length<= -k+4&&(this.a=new Uint8Array(g.length+4),this.a.set(g),g=this.a),g=g.subarray(0,k+4));g[k++]=e>>24&255;g[k++]=e>>16&255;g[k++]=e>>8&255;g[k++]=e&255;return g};exports.deflate=ub;exports.deflateSync=vb;exports.inflate=wb;exports.inflateSync=xb;exports.gzip=yb;exports.gzipSync=zb;exports.gunzip=Ab;exports.gunzipSync=Bb;function ub(b,a,c){process.nextTick(function(){var d,f;try{f=vb(b,c)}catch(e){d=e}a(d,f)})}function vb(b,a){var c;c=(new sb(b)).h();a||(a={});return a.H?c:Cb(c)}function wb(b,a,c){process.nextTick(function(){var d,f;try{f=xb(b,c)}catch(e){d=e}a(d,f)})} -function xb(b,a){var c;b.subarray=b.slice;c=(new pb(b)).i();a||(a={});return a.noBuffer?c:Cb(c)}function yb(b,a,c){process.nextTick(function(){var d,f;try{f=zb(b,c)}catch(e){d=e}a(d,f)})}function zb(b,a){var c;b.subarray=b.slice;c=(new Aa(b)).h();a||(a={});return a.H?c:Cb(c)}function Ab(b,a,c){process.nextTick(function(){var d,f;try{f=Bb(b,c)}catch(e){d=e}a(d,f)})}function Bb(b,a){var c;b.subarray=b.slice;c=(new nb(b)).i();a||(a={});return a.H?c:Cb(c)} -function Cb(b){var a=new Buffer(b.length),c,d;c=0;for(d=b.length;c<d;++c)a[c]=b[c];return a};}).call(this); //@ sourceMappingURL=node-zlib.js.map diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/package.json deleted file mode 100644 index 694b0536..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "gzip-size", - "version": "0.1.0", - "description": "Get the gzipped size of a string or buffer", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/gzip-size" - }, - "bin": { - "gzip-size": "cli.js" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "cli", - "bin", - "app", - "tool", - "zlib", - "gzip", - "compressed", - "size", - "string", - "buffer" - ], - "dependencies": { - "concat-stream": "^1.4.1", - "zlib-browserify": "^0.0.3" - }, - "devDependencies": { - "mocha": "*" - }, - "readme": "# gzip-size [![Build Status](https://travis-ci.org/sindresorhus/gzip-size.png?branch=master)](https://travis-ci.org/sindresorhus/gzip-size)\n\n> Get the gzipped size of a string or buffer\n\n\n## Install\n\n```bash\n$ npm install --save gzip-size\n```\n\n\n## Example\n\n```js\nvar gzipSize = require('gzip-size');\nvar string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.';\n\nconsole.log(string.length);\n//=> 191\n\nconsole.log(gzipSize.sync(string));\n//=> 78\n```\n\n\n## API\n\n### gzipSize(input, callback)\n\n#### input\n\n*Required* \nType: `String`|`Buffer`\n\n#### callback(err, size)\n\n*Required* \nType: `Function`\n\n### gzipSize.sync(input)\n\n*Required* \nType: `String`|`Buffer` \nReturns: size\n\n\n## CLI\n\nYou can also use it as a CLI app by installing it globally:\n\n```bash\n$ npm install --global gzip-size\n```\n\n#### Usage\n\n```bash\n$ gzip-size --help\n\ngzip-size <input-file>\nor\ncat <input-file> | gzip-size\n```\n\n#### Example\n\n```bash\n$ gzip-size jquery.min.js\n29344\n```\n\nor with [pretty-bytes](https://github.com/sindresorhus/pretty-bytes):\n\n```bash\n$ pretty-bytes $(gzip-size jquery.min.js)\n29.34 kB\n```\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT) © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/gzip-size/issues" - }, - "homepage": "https://github.com/sindresorhus/gzip-size", - "_id": "gzip-size@0.1.0", - "_from": "gzip-size@^0.1.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/readme.md deleted file mode 100644 index d7fb093c..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/gzip-size/readme.md +++ /dev/null @@ -1,82 +0,0 @@ -# gzip-size [![Build Status](https://travis-ci.org/sindresorhus/gzip-size.png?branch=master)](https://travis-ci.org/sindresorhus/gzip-size) - -> Get the gzipped size of a string or buffer - - -## Install - -```bash -$ npm install --save gzip-size -``` - - -## Example - -```js -var gzipSize = require('gzip-size'); -var string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.'; - -console.log(string.length); -//=> 191 - -console.log(gzipSize.sync(string)); -//=> 78 -``` - - -## API - -### gzipSize(input, callback) - -#### input - -*Required* -Type: `String`|`Buffer` - -#### callback(err, size) - -*Required* -Type: `Function` - -### gzipSize.sync(input) - -*Required* -Type: `String`|`Buffer` -Returns: size - - -## CLI - -You can also use it as a CLI app by installing it globally: - -```bash -$ npm install --global gzip-size -``` - -#### Usage - -```bash -$ gzip-size --help - -gzip-size <input-file> -or -cat <input-file> | gzip-size -``` - -#### Example - -```bash -$ gzip-size jquery.min.js -29344 -``` - -or with [pretty-bytes](https://github.com/sindresorhus/pretty-bytes): - -```bash -$ pretty-bytes $(gzip-size jquery.min.js) -29.34 kB -``` - -## License - -[MIT](http://opensource.org/licenses/MIT) © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/cli.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/cli.js deleted file mode 100755 index 80570294..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/cli.js +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var prettyBytes = require('./pretty-bytes'); -var input = process.argv.slice(2); - -if (!input || process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) { - console.log(''); - console.log('pretty-bytes <number>'); - console.log(''); - console.log('Example:'); - console.log(' $ pretty-bytes 1337'); - console.log(' 1.34 kB'); - return; -} - -if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) { - console.log(require('./package').version); - return; -} - -console.log(prettyBytes(Number(input))); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/package.json deleted file mode 100644 index 50cb9222..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "pretty-bytes", - "version": "0.1.0", - "description": "Convert bytes to a human readable string: 1337 → 1.34 kB", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/pretty-bytes" - }, - "main": "pretty-bytes.js", - "bin": { - "pretty-bytes": "cli.js" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "pretty-bytes.js", - "cli.js" - ], - "keywords": [ - "cli", - "bin", - "browser", - "pretty", - "bytes", - "byte", - "filesize", - "size", - "file", - "human", - "humanized", - "readable", - "si", - "data" - ], - "devDependencies": { - "mocha": "*" - }, - "readme": "# pretty-bytes [![Build Status](https://travis-ci.org/sindresorhus/pretty-bytes.png?branch=master)](http://travis-ci.org/sindresorhus/pretty-bytes)\n\n> Convert bytes to a human readable string: `1337` → `1.34 kB`\n\nUseful for displaying file sizes for humans.\n\n-\n\n*Note that it uses base-10 (eg. kilobyte). \n[Read about the difference between kilobyte and kibibyte.](http://pacoup.com/2009/05/26/kb-kb-kib-whats-up-with-that/)*\n\n\n## Install\n\nDownload [manually](https://github.com/sindresorhus/pretty-bytes/releases) or with a package-manager.\n\n#### [npm](https://npmjs.org/package/pretty-bytes)\n\n```\nnpm install --save pretty-bytes\n```\n\n#### [Bower](http://bower.io)\n\n```\nbower install --save pretty-bytes\n```\n\n#### [Component](https://github.com/component/component)\n\n```\ncomponent install sindresorhus/pretty-bytes\n```\n\n\n## Example\n\n```js\nprettyBytes(1337);\n//=> '1.34 kB'\n\nprettyBytes(100);\n//=> '100 B'\n```\n\n\n## CLI\n\nYou can also use it as a CLI app by installing it globally:\n\n```\nnpm install --global pretty-bytes\n```\n\n### Usage\n\n```\n$ pretty-bytes 1337\n1.34 kB\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/pretty-bytes/issues" - }, - "homepage": "https://github.com/sindresorhus/pretty-bytes", - "_id": "pretty-bytes@0.1.0", - "_from": "pretty-bytes@^0.1.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/pretty-bytes.js b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/pretty-bytes.js deleted file mode 100644 index 7fb89c81..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/pretty-bytes.js +++ /dev/null @@ -1,40 +0,0 @@ -/*! - pretty-bytes - Convert bytes to a human readable string: 1337 → 1.34 kB - https://github.com/sindresorhus/pretty-bytes - by Sindre Sorhus - MIT License -*/ -(function () { - 'use strict'; - - var prettyBytes = function (num) { - if (typeof num !== 'number' || Number.isNaN(num)) { - throw new TypeError('Input must be a number'); - } - - var exponent; - var unit; - var neg = num < 0; - - if (neg) { - num = -num; - } - - if (num === 0) { - return '0 B'; - } - - exponent = Math.floor(Math.log(num) / Math.log(1000)); - num = (num / Math.pow(1000, exponent)).toFixed(2) * 1; - unit = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'][exponent]; - - return (neg ? '-' : '') + num + ' ' + unit; - }; - - if (typeof module !== 'undefined' && module.exports) { - module.exports = prettyBytes; - } else { - window.prettyBytes = prettyBytes; - } -})(); diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/readme.md deleted file mode 100644 index 55764baa..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/node_modules/pretty-bytes/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# pretty-bytes [![Build Status](https://travis-ci.org/sindresorhus/pretty-bytes.png?branch=master)](http://travis-ci.org/sindresorhus/pretty-bytes) - -> Convert bytes to a human readable string: `1337` → `1.34 kB` - -Useful for displaying file sizes for humans. - -- - -*Note that it uses base-10 (eg. kilobyte). -[Read about the difference between kilobyte and kibibyte.](http://pacoup.com/2009/05/26/kb-kb-kib-whats-up-with-that/)* - - -## Install - -Download [manually](https://github.com/sindresorhus/pretty-bytes/releases) or with a package-manager. - -#### [npm](https://npmjs.org/package/pretty-bytes) - -``` -npm install --save pretty-bytes -``` - -#### [Bower](http://bower.io) - -``` -bower install --save pretty-bytes -``` - -#### [Component](https://github.com/component/component) - -``` -component install sindresorhus/pretty-bytes -``` - - -## Example - -```js -prettyBytes(1337); -//=> '1.34 kB' - -prettyBytes(100); -//=> '100 B' -``` - - -## CLI - -You can also use it as a CLI app by installing it globally: - -``` -npm install --global pretty-bytes -``` - -### Usage - -``` -$ pretty-bytes 1337 -1.34 kB -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/package.json b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/package.json deleted file mode 100644 index b9b5c0ce..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "maxmin", - "version": "0.1.0", - "description": "Get a pretty output of the original, minified, gzipped size of a string or buffer: 130 B → 91 B → 53 B (gzip)", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/maxmin" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "string", - "buffer", - "pretty", - "color", - "gzip", - "minified", - "min", - "max", - "diff", - "difference" - ], - "devDependencies": { - "mocha": "*" - }, - "dependencies": { - "gzip-size": "^0.1.0", - "pretty-bytes": "^0.1.0", - "chalk": "^0.4.0" - }, - "readme": "# maxmin [![Build Status](https://travis-ci.org/sindresorhus/maxmin.png?branch=master)](https://travis-ci.org/sindresorhus/maxmin)\n\n> Get a pretty output of the original, minified, gzipped size of a string or buffer\n\n![](screenshot.png)\n\nUseful for logging the difference between original and minified file in e.g. a build-system.\n\n\n## Install\n\n```bash\n$ npm install --save maxmin\n```\n\n\n## Example\n\n```js\nvar maxmin = require('maxmin');\nvar max = 'function smoothRangeRandom(min,max){var num=Math.floor(Math.random()*(max-min+1)+min);return this.prev=num===this.prev?++num:num};';\nvar min = '(function(b,c){var a=Math.floor(Math.random()*(c-b+1)+b);return this.a=a===this.a?++a:a})()';\n\nconsole.log(maxmin(max, min, true));\n//=> 130 B → 91 B → 53 B (gzip)\n```\n\n## API\n\n### maxmin(max, min, useGzip)\n\n#### max\n\n*Required* \nType: `String`|`Buffer` \n\nOriginal string.\n\n#### min\n\n*Required* \nType: `String`|`Buffer` \n\nMinified string.\n\n#### useGzip\n\nType: `Boolean` \nDefault: `false`\n\nShow gzipped size of `min`. Pretty slow.\n\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT) © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/maxmin/issues" - }, - "homepage": "https://github.com/sindresorhus/maxmin", - "_id": "maxmin@0.1.0", - "_from": "maxmin@~0.1.0" -} diff --git a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/readme.md b/node_modules/grunt-contrib-cssmin/node_modules/maxmin/readme.md deleted file mode 100644 index a75da9a5..00000000 --- a/node_modules/grunt-contrib-cssmin/node_modules/maxmin/readme.md +++ /dev/null @@ -1,56 +0,0 @@ -# maxmin [![Build Status](https://travis-ci.org/sindresorhus/maxmin.png?branch=master)](https://travis-ci.org/sindresorhus/maxmin) - -> Get a pretty output of the original, minified, gzipped size of a string or buffer - -![](screenshot.png) - -Useful for logging the difference between original and minified file in e.g. a build-system. - - -## Install - -```bash -$ npm install --save maxmin -``` - - -## Example - -```js -var maxmin = require('maxmin'); -var max = 'function smoothRangeRandom(min,max){var num=Math.floor(Math.random()*(max-min+1)+min);return this.prev=num===this.prev?++num:num};'; -var min = '(function(b,c){var a=Math.floor(Math.random()*(c-b+1)+b);return this.a=a===this.a?++a:a})()'; - -console.log(maxmin(max, min, true)); -//=> 130 B → 91 B → 53 B (gzip) -``` - -## API - -### maxmin(max, min, useGzip) - -#### max - -*Required* -Type: `String`|`Buffer` - -Original string. - -#### min - -*Required* -Type: `String`|`Buffer` - -Minified string. - -#### useGzip - -Type: `Boolean` -Default: `false` - -Show gzipped size of `min`. Pretty slow. - - -## License - -[MIT](http://opensource.org/licenses/MIT) © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-cssmin/package.json b/node_modules/grunt-contrib-cssmin/package.json deleted file mode 100644 index e911b62a..00000000 --- a/node_modules/grunt-contrib-cssmin/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "grunt-contrib-cssmin", - "description": "Compress CSS files.", - "version": "0.9.0", - "homepage": "https://github.com/gruntjs/grunt-contrib-cssmin", - "author": { - "name": "Grunt Team", - "url": "http://gruntjs.com/" - }, - "repository": { - "type": "git", - "url": "git://github.com/gruntjs/grunt-contrib-cssmin.git" - }, - "bugs": { - "url": "https://github.com/gruntjs/grunt-contrib-cssmin/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/gruntjs/grunt-contrib-cssmin/blob/master/LICENSE-MIT" - } - ], - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "grunt test" - }, - "dependencies": { - "chalk": "~0.4.0", - "clean-css": "~2.1.0", - "maxmin": "~0.1.0" - }, - "devDependencies": { - "grunt-contrib-jshint": "~0.8.0", - "grunt-contrib-nodeunit": "~0.3.0", - "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-internal": "~0.4.6", - "grunt": "~0.4.1" - }, - "peerDependencies": { - "grunt": "~0.4.1" - }, - "keywords": [ - "gruntplugin" - ], - "files": [ - "tasks", - "LICENSE-MIT" - ], - "readme": "# grunt-contrib-cssmin v0.8.0 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-cssmin.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-cssmin)\n\n> Compress CSS files.\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.1`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-cssmin --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-contrib-cssmin');\n```\n\n*This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that [you upgrade](http://gruntjs.com/upgrading-from-0.3-to-0.4), but in case you can't please use [v0.3.2](https://github.com/gruntjs/grunt-contrib-cssmin/tree/grunt-0.3-stable).*\n\n\n\n## Cssmin task\n_Run this task with the `grunt cssmin` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n\nFiles are compressed with [clean-css](https://github.com/GoalSmashers/clean-css).\n### Options\n\n#### banner\n\nType: `String` \nDefault: `null`\n\nPrefix the compressed source with the given banner, with a linebreak inbetween.\n\n#### keepSpecialComments\n\nType: `String` `Number` \nDefault: `'*'`\n\nTo keep or remove special comments, exposing the underlying option from [clean-css](https://github.com/GoalSmashers/clean-css). `'*'` for keeping all (default), `1` for keeping first one, `0` for removing all.\n\n#### report\nChoices: `'min'`, `'gzip'` \nDefault: `'min'`\n\nEither report only minification result or report minification and gzip results.\nThis is useful to see exactly how well clean-css is performing but using `'gzip'` will make the task take 5-10x longer to complete. [Example output](https://github.com/sindresorhus/maxmin#readme).\n\n### Usage Examples\n\n#### Combine two files into one output file\n\n```js\ncssmin: {\n combine: {\n files: {\n 'path/to/output.css': ['path/to/input_one.css', 'path/to/input_two.css']\n }\n }\n}\n```\n\n#### Add a banner\n```js\ncssmin: {\n add_banner: {\n options: {\n banner: '/* My minified css file */'\n },\n files: {\n 'path/to/output.css': ['path/to/**/*.css']\n }\n }\n}\n```\n\n#### Minify all contents of a release directory and add a `.min.css` extension\n```js\ncssmin: {\n minify: {\n expand: true,\n cwd: 'release/css/',\n src: ['*.css', '!*.min.css'],\n dest: 'release/css/',\n ext: '.min.css'\n }\n}\n```\n\n\n## Release History\n\n * 2014-02-14   v0.8.0   update clean-css v2.1.0\n * 2013-11-23   v0.7.0   update clean-css v2.0.0\n * 2013-09-14   v0.6.2   Support relative URLs via clean-css ~1.1.1.\n * 2013-05-25   v0.6.1   Support import in-lining vis clean-css ~1.0.4.\n * 2013-04-05   v0.6.0   Update clean-css dependency to ~1.0.0\n * 2013-03-14   v0.5.0   Support for 'report' option (false by default)\n * 2013-03-10   v0.4.2   Add banner option Support clean-css keepSpecialComments\n * 2013-02-17   v0.4.1   Update clean-css dependency to ~0.10.0\n * 2013-02-15   v0.4.0   First official release for Grunt 0.4.0.\n * 2013-01-23   v0.4.0rc7   Updating grunt/gruntplugin dependencies to rc7. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.\n * 2013-01-09   v0.4.0rc5   Updating to work with grunt v0.4.0rc5. Switching to this.files api.\n * 2012-11-01   v0.3.2   Update clean-css dep.\n * 2012-10-12   v0.3.1   Rename grunt-contrib-lib dep to grunt-lib-contrib.\n * 2012-09-23   v0.3.0   Options no longer accepted from global config key.\n * 2012-09-10   v0.2.0   Refactored from grunt-contrib into individual repo.\n\n---\n\nTask submitted by [Tim Branyen](http://tbranyen.com/)\n\n*This file was generated on Sat Mar 01 2014 19:58:58.*\n", - "readmeFilename": "README.md", - "_id": "grunt-contrib-cssmin@0.9.0", - "dist": { - "shasum": "d03ef61c87a442dc6c0a472a0e39e3c20f17dc8c" - }, - "_from": "grunt-contrib-cssmin@", - "_resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.9.0.tgz" -} diff --git a/node_modules/grunt-contrib-cssmin/tasks/cssmin.js b/node_modules/grunt-contrib-cssmin/tasks/cssmin.js deleted file mode 100644 index bb8ba7b8..00000000 --- a/node_modules/grunt-contrib-cssmin/tasks/cssmin.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * grunt-contrib-cssmin - * http://gruntjs.com/ - * - * Copyright (c) 2014 Tim Branyen, contributors - * Licensed under the MIT license. - */ - -'use strict'; -var path = require('path'); -var CleanCSS = require('clean-css'); -var chalk = require('chalk'); -var maxmin = require('maxmin'); - -module.exports = function(grunt) { - var minify = function(source, options) { - try { - return new CleanCSS(options).minify(source); - } catch (err) { - grunt.log.error(err); - grunt.fail.warn('CSS minification failed.'); - } - }; - - grunt.registerMultiTask('cssmin', 'Minify CSS', function() { - var options = this.options({ - report: 'min' - }); - - this.files.forEach(function(file) { - var valid = file.src.filter(function(filepath) { - // Warn on and remove invalid source files (if nonull was set). - if (!grunt.file.exists(filepath)) { - grunt.log.warn('Source file ' + chalk.cyan(filepath) + ' not found.'); - return false; - } else { - return true; - } - }); - - var max = ''; - var min = valid.map(function(file) { - var src = grunt.file.read(file); - max += src; - options.relativeTo = path.dirname(file); - return minify(src, options); - }).join(''); - - if (min.length === 0) { - return grunt.log.warn('Destination not written because minified CSS was empty.'); - } - - if (options.banner) { - min = options.banner + grunt.util.linefeed + min; - } - - grunt.file.write(file.dest, min); - - grunt.log.writeln('File ' + chalk.cyan(file.dest) + ' created: ' + maxmin(max, min, options.report === 'gzip')); - }); - }); -}; diff --git a/node_modules/grunt-contrib-imagemin/LICENSE-MIT b/node_modules/grunt-contrib-imagemin/LICENSE-MIT deleted file mode 100644 index 0143ef9d..00000000 --- a/node_modules/grunt-contrib-imagemin/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 Sindre Sorhus, contributors - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/README.md b/node_modules/grunt-contrib-imagemin/README.md deleted file mode 100644 index cf63f8ac..00000000 --- a/node_modules/grunt-contrib-imagemin/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# grunt-contrib-imagemin v0.4.1 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-imagemin.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-imagemin) - -> Minify PNG, JPEG and GIF images - - - -## Getting Started -This plugin requires Grunt `~0.4.0` - -If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: - -```shell -npm install grunt-contrib-imagemin --save-dev -``` - -Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: - -```js -grunt.loadNpmTasks('grunt-contrib-imagemin'); -``` - - - - -## Imagemin task -_Run this task with the `grunt imagemin` command._ - -Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. - -Minify images using [OptiPNG](http://optipng.sourceforge.net), [pngquant](http://pngquant.org), [jpegtran](http://jpegclub.org/jpegtran/) and [gifsicle](http://www.lcdf.org/gifsicle). - -Images will be cached and only minified again if they change. - -### Options - -Options will only apply to the relevant files, so you don't need separate targets for png/jpg. - - -#### optimizationLevel *(png only)* - -Type: `Number` -Default: `7` - -Select optimization level between `0` and `7`. - -> The optimization level 0 enables a set of optimization operations that require minimal effort. There will be no changes to image attributes like bit depth or color type, and no recompression of existing IDAT datastreams. The optimization level 1 enables a single IDAT compression trial. The trial chosen is what. OptiPNG thinks it’s probably the most effective. The optimization levels 2 and higher enable multiple IDAT compression trials; the higher the level, the more trials. - -Level and trials: - -1. 1 trial -2. 8 trials -3. 16 trials -4. 24 trials -5. 48 trials -6. 120 trials -7. 240 trials - - -#### progressive *(jpg only)* - -Type: `Boolean` -Default: `true` - -Lossless conversion to progressive. - - -#### interlaced *(gif only)* - -Type: `Boolean` -Default: `true` - -Interlace gif for progressive rendering. - - -#### pngquant - -Type: `Boolean` -Default: `false` - -Whether to enable pngquant compression. - -> pngquant is a command-line utility for converting 24/32-bit PNG images to paletted (8-bit) PNGs. The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency. - -#### Example config - -You can either map your files statically or [dynamically](https://github.com/gruntjs/grunt/wiki/Configuring-tasks#building-the-files-object-dynamically). - -```javascript -grunt.initConfig({ - imagemin: { // Task - static: { // Target - options: { // Target options - optimizationLevel: 3 - }, - files: { // Dictionary of files - 'dist/img.png': 'src/img.png', // 'destination': 'source' - 'dist/img.jpg': 'src/img.jpg', - 'dist/img.gif': 'src/img.gif' - } - }, - dynamic: { // Another target - files: [{ - expand: true, // Enable dynamic expansion - cwd: 'src/', // Src matches are relative to this path - src: ['**/*.{png,jpg,gif}'], // Actual patterns to match - dest: 'dist/' // Destination path prefix - }] - } - } -}); - -grunt.loadNpmTasks('grunt-contrib-imagemin'); -grunt.registerTask('default', ['imagemin']); -``` - - -## Release History - - * 2014-01-08   v0.4.1   Prevent "Maximum call stack size exceeded". Speed up loading this task by lazy requiring bin deps. - * 2013-11-22   v0.4.0   The `pngquant` option is now `false` by default instead of `true`. - * 2013-09-09   v0.3.0   Add `interlace` option for gif files. - * 2013-08-16   v0.2.0   Add `gifsicle` and `pngquant`. Cache images so only changed images are optimized. Default `optimizationLevel` to `7` and `progressive` to `true`. - * 2013-04-10   v0.1.4   Fix exception when running in verbose mode. - * 2013-04-05   v0.1.3   Fix OptiPNG not being able to overwrite file. Allow overwriting src when dest/src is the same. Limit to 10 concurrent optimizations. - * 2013-02-22   v0.1.2   Fix OptiPNG not working on some systems. Prevent OptiPNG from producing .bak files. - * 2013-02-15   v0.1.1   First official release for Grunt 0.4.0. - * 2013-01-30   v0.1.1rc8   Fix task not creating destination folders - * 2013-01-30   v0.1.1rc7   Updating to work with grunt v0.4.0rc7. Switching to this.files api. - * 2012-11-01   v0.1.0   Initial release. - ---- - -Task submitted by [Sindre Sorhus](http://github.com/sindresorhus) - -*This file was generated on Wed Jan 08 2014 20:04:40.* diff --git a/node_modules/grunt-contrib-imagemin/node_modules/async/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/async/LICENSE deleted file mode 100644 index b7f9d500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/async/README.md b/node_modules/grunt-contrib-imagemin/node_modules/async/README.md deleted file mode 100644 index 951f76e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/async/README.md +++ /dev/null @@ -1,1425 +0,0 @@ -# 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/node_modules/grunt-contrib-imagemin/node_modules/async/component.json b/node_modules/grunt-contrib-imagemin/node_modules/async/component.json deleted file mode 100644 index bbb01154..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/async/component.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "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/node_modules/grunt-contrib-imagemin/node_modules/async/lib/async.js b/node_modules/grunt-contrib-imagemin/node_modules/async/lib/async.js deleted file mode 100755 index 1eebb153..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/async/lib/async.js +++ /dev/null @@ -1,958 +0,0 @@ -/*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/node_modules/grunt-contrib-imagemin/node_modules/async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/async/package.json deleted file mode 100644 index 50f75c81..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/async/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "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" - }, - "readme": "# Async.js\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), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\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### 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](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm 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. Usage:\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* [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](#series)\n* [parallel](#parallel)\n* [parallelLimit](#parallellimittasks-limit-callback)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [applyEachSeries](#applyEachSeries)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\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 an iterator function to each item in an array, 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 this callback, the main\ncallback for the each 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.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\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---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This 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 only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\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=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled 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, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\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 after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\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 only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The 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 only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\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 after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\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=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, 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 the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(results) - 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=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The 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. 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, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing 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) - 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, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator 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 array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at 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 the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - 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.\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, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (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 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 the array.\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) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array 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---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, 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 The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - 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__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 the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, 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 The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - 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__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 an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators 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 the arguments 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 the array.\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) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. 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 async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions 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 the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\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\nasync.series.\n\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 (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 an 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\nasync.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) it must call on completion with an error (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.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=\"parallel\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks 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 (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 the 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 to call each time the test passes. The function is\n passed a callback(err) which must be called once it has completed with an \n optional error 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. 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.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in series, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the 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 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\nf(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=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback 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, iterator, callback)\n\nThe same as 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\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the 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.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\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* 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, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks 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 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\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 bar');\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<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\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\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 error as an 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]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks 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\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 functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining 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. For 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 \nresults 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 literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The \n 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. The callback will receive an error as an argument\n if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n \n\n__Example__\n\n```js\nasync.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\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 },\n write_file: ['get_data', 'make_folder', function(callback){\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 // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\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 // async code to get some data\n },\n function(callback){\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 }\n],\nfunction(err, results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing 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, a useful\nshorthand 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)\n\nCalls the 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 the 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, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\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, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\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\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you 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 memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\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\nasync object.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/caolan/async", - "_id": "async@0.2.10", - "_from": "async@~0.2.9" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/index.js b/node_modules/grunt-contrib-imagemin/node_modules/chalk/index.js deleted file mode 100644 index a21f7022..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/index.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; -var ansi = require('ansi-styles'); -var stripAnsi = require('strip-ansi'); -var hasColor = require('has-color'); -var defineProps = Object.defineProperties; -var chalk = module.exports; - -var styles = (function () { - var ret = {}; - - ansi.grey = ansi.gray; - - Object.keys(ansi).forEach(function (key) { - ret[key] = { - get: function () { - this._styles.push(key); - return this; - } - }; - }); - - return ret; -})(); - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - var obj = defineProps(function self() { - var str = [].slice.call(arguments).join(' '); - - if (!chalk.enabled) { - return str; - } - - return self._styles.reduce(function (str, name) { - var code = ansi[name]; - return str ? code.open + str + code.close : ''; - }, str); - }, styles); - - obj._styles = []; - - return obj[name]; - } - } - }); - - return ret; -} - -defineProps(chalk, init()); - -chalk.styles = ansi; -chalk.stripColor = stripAnsi; -chalk.supportsColor = hasColor; - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/.bin/strip-ansi deleted file mode 120000 index b65c9f81..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/.bin/strip-ansi +++ /dev/null @@ -1 +0,0 @@ -../strip-ansi/cli.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js deleted file mode 100644 index 3da548c4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; -var styles = module.exports; - -var codes = { - reset: [0, 0], - - bold: [1, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - strikethrough: [9, 29], - - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] -}; - -Object.keys(codes).forEach(function (key) { - var val = codes[key]; - var style = styles[key] = {}; - style.open = '\x1b[' + val[0] + 'm'; - style.close = '\x1b[' + val[1] + 'm'; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index 2d61dabe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "ansi-styles", - "version": "1.0.0", - "description": "ANSI escape codes for colorizing strings in the terminal", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/ansi-styles", - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "ansi-styles.js" - ], - "main": "ansi-styles", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles)\n\n> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for colorizing strings in the terminal.\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![screenshot](screenshot.png)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles`\n\n\n## Example\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green.open + 'Hello world!' + ansi.green.close);\n```\n\n## API\n\nEach style has an `open` and `close` property.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "ansi-styles@1.0.0", - "_from": "ansi-styles@~1.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 4ac8cbd0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for colorizing strings in the terminal. - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -Install with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles` - - -## Example - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/has-color.js b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/has-color.js deleted file mode 100644 index 27316b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/has-color.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (!process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - return /^screen|^xterm|color|ansi|cygwin|linux/i.test(process.env.TERM); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/package.json b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/package.json deleted file mode 100644 index e55a6244..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "has-color", - "version": "0.1.4", - "description": "Detect whether a terminal supports color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "capability", - "detect" - ], - "homepage": "https://github.com/sindresorhus/has-color", - "bugs": { - "url": "https://github.com/sindresorhus/has-color/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "has-color.js" - ], - "main": "has-color", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-color.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color)\n\n> Detect whether a terminal supports color.\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/has-color): `npm install --save has-color`\n\n\n## Example\n\n```js\nvar hasColor = require('has-color');\n\nif (hasColor) {\n\tconsole.log('Terminal supports color.');\n}\n```\n\nIt obeys the CLI flags `--color` and `--no-color`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "has-color@0.1.4", - "_from": "has-color@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/readme.md deleted file mode 100644 index 0918c851..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/has-color/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color) - -> Detect whether a terminal supports color. - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install with [npm](https://npmjs.org/package/has-color): `npm install --save has-color` - - -## Example - -```js -var hasColor = require('has-color'); - -if (hasColor) { - console.log('Terminal supports color.'); -} -``` - -It obeys the CLI flags `--color` and `--no-color`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/cli.js b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/cli.js deleted file mode 100755 index f8019cda..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/cli.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var strip = require('./index'); -var input = process.argv[2]; - -if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) { - console.log('strip-ansi <input file> > <output file>'); - console.log('or'); - console.log('cat <input file> | strip-ansi > <output file>'); - return; -} - -if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) { - console.log(require('./package').version); - return; -} - -if (input) { - process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); - return; -} - -process.stdin.setEncoding('utf8'); -process.stdin.on('data', function (data) { - process.stdout.write(strip(data)); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/index.js b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/index.js deleted file mode 100644 index 62320c59..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function (str) { - return typeof str === 'string' ? str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, '') : str; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/package.json b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/package.json deleted file mode 100644 index 7ca2b5d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "strip-ansi", - "version": "0.1.1", - "description": "Strip ANSI escape codes (used for colorizing strings in the terminal)", - "license": "MIT", - "bin": { - "strip-ansi": "cli.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-ansi" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js", - "cli.js" - ], - "keywords": [ - "strip", - "trim", - "remove", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "devDependencies": { - "mocha": "~1.x" - }, - "readme": "# strip-ansi [![Build Status](https://secure.travis-ci.org/sindresorhus/strip-ansi.png?branch=master)](http://travis-ci.org/sindresorhus/strip-ansi)\n\n> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) (used for colorizing strings in the terminal)\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall locally with [npm](https://npmjs.org/package/strip-ansi):\n\n```\nnpm install --save strip-ansi\n```\n\nOr globally if you want to use it as a CLI app:\n\n```\nnpm install --global strip-ansi\n```\n\nYou can then use it in your Terminal like:\n\n```\nstrip-ansi file-with-color-codes\n```\n\nOr pipe something to it:\n\n```\nls | strip-ansi\n```\n\n\n## Example\n\n```js\nvar stripAnsi = require('strip-ansi');\nstripAnsi('\\x1b[4mcake\\x1b[0m');\n//=> cake\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/strip-ansi/issues" - }, - "homepage": "https://github.com/sindresorhus/strip-ansi", - "_id": "strip-ansi@0.1.1", - "_from": "strip-ansi@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/readme.md deleted file mode 100644 index eb661b3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/node_modules/strip-ansi/readme.md +++ /dev/null @@ -1,46 +0,0 @@ -# strip-ansi [![Build Status](https://secure.travis-ci.org/sindresorhus/strip-ansi.png?branch=master)](http://travis-ci.org/sindresorhus/strip-ansi) - -> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) (used for colorizing strings in the terminal) - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install locally with [npm](https://npmjs.org/package/strip-ansi): - -``` -npm install --save strip-ansi -``` - -Or globally if you want to use it as a CLI app: - -``` -npm install --global strip-ansi -``` - -You can then use it in your Terminal like: - -``` -strip-ansi file-with-color-codes -``` - -Or pipe something to it: - -``` -ls | strip-ansi -``` - - -## Example - -```js -var stripAnsi = require('strip-ansi'); -stripAnsi('\x1b[4mcake\x1b[0m'); -//=> cake -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/chalk/package.json deleted file mode 100644 index 853b0144..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "chalk", - "version": "0.4.0", - "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "dependencies": { - "has-color": "~0.1.0", - "ansi-styles": "~1.0.0", - "strip-ansi": "~0.1.0" - }, - "devDependencies": { - "mocha": "~1.x" - }, - "readme": "# <img width=\"250\" src=\"logo.png\" alt=\"chalk\">\n\n> Terminal string styling done right\n\n[![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk)\n\n[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](screenshot.png)\n\n\n## Why\n\n- **Doesn't extend String.prototype**\n- Expressive API\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n- [Used by 150+ modules](https://npmjs.org/browse/depended/chalk)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/chalk): `npm install --save chalk`\n\n\n## Example\n\nChalk comes with an easy to use composable API where you just chain and nest the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nconsole.log( chalk.blue('Hello world!') );\n\n// combine styled and normal strings\nconsole.log( chalk.blue('Hello'), 'World' + chalk.red('!') );\n\n// compose multiple styles using the chainable API\nconsole.log( chalk.blue.bgRed.bold('Hello world!') );\n\n// nest styles\nconsole.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') );\n\n// pass in multiple arguments\nconsole.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') );\n```\n\nYou can easily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\n\n## API\n\n### chalk.`<style>[.<style>...](string, [string...])`\n\nExample: `chalk.red.bold.underline('Hello', 'world');`\n\nChain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter.\n\nMultiple arguments will be separated by space.\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it.\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/has-color).\n\nCan be overridden by the user with the flags `--color` and `--no-color`.\n\nUsed internally and handled for you, but exposed for convenience.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\nGenerally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours.\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> {open: '\\x1b[31m', close: '\\x1b[39m'}\n\nconsole.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);\n```\n\n### chalk.stripColor(string)\n\n[Strip color](https://github.com/sindresorhus/strip-ansi) from a string.\n\nCan be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.\n\nExample:\n\n```js\nvar chalk = require('chalk');\nvar styledString = fromExternal();\n\nif (!chalk.supportsColor) {\n\tchalk.stripColor(styledString);\n}\n```\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n\n\n-\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sindresorhus/chalk/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "homepage": "https://github.com/sindresorhus/chalk", - "_id": "chalk@0.4.0", - "_from": "chalk@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/chalk/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/chalk/readme.md deleted file mode 100644 index 46813acf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/chalk/readme.md +++ /dev/null @@ -1,158 +0,0 @@ -# <img width="250" src="logo.png" alt="chalk"> - -> Terminal string styling done right - -[![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](screenshot.png) - - -## Why - -- **Doesn't extend String.prototype** -- Expressive API -- Clean and focused -- Auto-detects color support -- Actively maintained -- [Used by 150+ modules](https://npmjs.org/browse/depended/chalk) - - -## Install - -Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` - - -## Example - -Chalk comes with an easy to use composable API where you just chain and nest the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log( chalk.blue('Hello world!') ); - -// combine styled and normal strings -console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); - -// compose multiple styles using the chainable API -console.log( chalk.blue.bgRed.bold('Hello world!') ); - -// nest styles -console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); - -// pass in multiple arguments -console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); -``` - -You can easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - - -## API - -### chalk.`<style>[.<style>...](string, [string...])` - -Example: `chalk.red.bold.underline('Hello', 'world');` - -Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter. - -Multiple arguments will be separated by space. - -### chalk.enabled - -Color support is automatically detected, but you can override it. - -### chalk.supportsColor - -Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). - -Can be overridden by the user with the flags `--color` and `--no-color`. - -Used internally and handled for you, but exposed for convenience. - -### chalk.styles - -Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). - -Generally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours. - -```js -var chalk = require('chalk'); - -console.log(chalk.styles.red); -//=> {open: '\x1b[31m', close: '\x1b[39m'} - -console.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close); -``` - -### chalk.stripColor(string) - -[Strip color](https://github.com/sindresorhus/strip-ansi) from a string. - -Can be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported. - -Example: - -```js -var chalk = require('chalk'); -var styledString = fromExternal(); - -if (!chalk.supportsColor) { - chalk.stripColor(styledString); -} -``` - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) - - -- - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sindresorhus/chalk/trend.png)](https://bitdeli.com/free "Bitdeli Badge") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/filesize/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/filesize/.npmignore deleted file mode 100644 index 9cacf8da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/filesize/.npmignore +++ /dev/null @@ -1,8 +0,0 @@ -/node_modules/ -/lib/filesize.min.js -/lib/filesize.map -/src/ -/test/ -.jshintrc -.travis.yml -Gruntfile.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/filesize/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/filesize/LICENSE deleted file mode 100644 index c6f00fdd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/filesize/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2013, Jason Mulligan -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 {organization} nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/filesize/README.md b/node_modules/grunt-contrib-imagemin/node_modules/filesize/README.md deleted file mode 100644 index 7a233c4d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/filesize/README.md +++ /dev/null @@ -1,51 +0,0 @@ -[![build status](https://secure.travis-ci.org/avoidwork/filesize.js.png)](http://travis-ci.org/avoidwork/filesize.js) -# filesize.js - -filesize.js provides a simple way to get a human readable file size string from a number (float or integer) or string. - -## Optional settings - -`filesize()` accepts an optional descriptor Object as a second argument, so you can customize the output. - -### bits -_***(boolean)***_ Enables `bit` sizes, default is `false` - -### unix -_***(boolean)***_ Enables unix style human readable output, e.g `ls -lh`, default is `false` - -### base -_***(number)***_ Number base, default is `10` - -### round -_***(number)***_ Decimal place, default is `2` - -### spacer -_***(string)***_ Character between the `result` and `suffix`, default is `" "` - -### suffixes -_***(object)***_ Dictionary of SI suffixes to replace for localization, defaults to english if no match is found - -## Examples - -```javascript -filesize(500); // "500 B" -filesize(500, {bits: true}); // "4.00 kb" -filesize(265318); // "265.32 kB" -filesize(265318, {base: 2}); // "259.10 kB" -filesize(265318, {base: 2, round: 1}); // "259.1 kB" -filesize(1, {suffixes: {B: "Б"}}); // "1 Б" -``` - -## How can I load filesize.js? - -filesize.js supports AMD loaders (require.js, curl.js, etc.), node.js & npm (npm install filesize), or using a script tag. - -## Support - -If you're having problems, use the support forum at CodersClan. - -<a href="http://codersclan.net/forum/index.php?repo_id=11"><img src="http://www.codersclan.net/graphics/getSupport_blue_big.png" width="160"></a> - -## License -Copyright (c) 2013 Jason Mulligan -Licensed under the BSD-3 license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/filesize/lib/filesize.js b/node_modules/grunt-contrib-imagemin/node_modules/filesize/lib/filesize.js deleted file mode 100644 index 6ff08d31..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/filesize/lib/filesize.js +++ /dev/null @@ -1,147 +0,0 @@ -/** - * filesize - * - * @author Jason Mulligan <jason.mulligan@avoidwork.com> - * @copyright 2014 Jason Mulligan - * @license BSD-3 <https://raw.github.com/avoidwork/filesize.js/master/LICENSE> - * @link http://filesizejs.com - * @module filesize - * @version 2.0.3 - */ -( function ( global ) { -"use strict"; - -var bit = /b$/, - radix = 10, - left = /.*\./, - zero = /^0$/; - -/** - * filesize - * - * @method filesize - * @param {Mixed} arg String, Int or Float to transform - * @param {Object} descriptor [Optional] Flags - * @return {String} Readable file size String - */ -function filesize ( arg, descriptor ) { - var result = "", - skip = false, - e, base, bits, ceil, neg, num, round, unix, spacer, suffix, z, suffixes; - - if ( isNaN( arg ) ) { - throw new Error( "Invalid arguments" ); - } - - descriptor = descriptor || {}; - bits = ( descriptor.bits === true ); - unix = ( descriptor.unix === true ); - base = descriptor.base !== undefined ? descriptor.base : unix ? 2 : 10; - round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2; - spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " "; - suffixes = descriptor.suffixes !== undefined ? descriptor.suffixes : {}; - num = Number( arg ); - neg = ( num < 0 ); - ceil = base > 2 ? 1000 : 1024; - - // Flipping a negative number to determine the size - if ( neg ) { - num = -num; - } - - // Zero is now a special case because bytes divide by 1 - if ( num === 0 ) { - if ( unix ) { - result = "0"; - } - else { - suffix = "B"; - result = "0" + spacer + ( suffixes[suffix] || suffix ); - } - } - else { - e = Math.floor( Math.log( num ) / Math.log( 1000 ) ); - - // Exceeding supported length, time to reduce & multiply - if ( e > 8 ) { - result = result * ( 1000 * ( e - 8 ) ); - e = 8; - } - - if ( base === 2 ) { - result = num / Math.pow( 2, ( e * 10 ) ); - } - else { - result = num / Math.pow( 1000, e ); - } - - if ( bits ) { - result = ( result * 8 ); - - if ( result > ceil ) { - result = result / ceil; - e++; - } - } - - result = result.toFixed( e > 0 ? round : 0 ); - suffix = si[bits ? "bits" : "bytes"][e]; - - if ( !skip && unix ) { - if ( bits && bit.test( suffix ) ) { - suffix = suffix.toLowerCase(); - } - - suffix = suffix.charAt( 0 ); - z = result.replace( left, "" ); - - if ( suffix === "B" ) { - suffix = ""; - } - else if ( !bits && suffix === "k" ) { - suffix = "K"; - } - - if ( zero.test( z ) ) { - result = parseInt( result, radix ); - } - - result += spacer + ( suffixes[suffix] || suffix ); - } - else if ( !unix ) { - result += spacer + ( suffixes[suffix] || suffix ); - } - } - - // Decorating a 'diff' - if ( neg ) { - result = "-" + result; - } - - return result; -} - -/** - * SI suffixes - * - * @type {Object} - */ -var si = { - bits : ["B", "kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb"], - bytes : ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"] -}; - -// CommonJS, AMD, script tag -if ( typeof exports !== "undefined" ) { - module.exports = filesize; -} -else if ( typeof define === "function" ) { - define( function () { - return filesize; - } ); -} -else { - global.filesize = filesize; -} - -} )( this ); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/filesize/package.json b/node_modules/grunt-contrib-imagemin/node_modules/filesize/package.json deleted file mode 100644 index ec7570d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/filesize/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "filesize", - "description": "JavaScript library to generate a human readable String describing the file size", - "version": "2.0.3", - "homepage": "http://filesizejs.com", - "author": { - "name": "Jason Mulligan", - "email": "jason.mulligan@avoidwork.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/avoidwork/filesize.js.git" - }, - "bugs": { - "url": "https://github.com/avoidwork/filesize.js/issues" - }, - "licenses": [ - { - "type": "BSD-3", - "url": "https://raw.github.com/avoidwork/filesize.js/master/LICENSE" - } - ], - "main": "lib/filesize", - "engines": { - "node": ">= 0.4.0" - }, - "scripts": { - "test": "grunt test" - }, - "devDependencies": { - "grunt": "~0.4.1", - "grunt-cli": "~0.1.6", - "grunt-exec": "~0.4", - "grunt-sed": "~0.1", - "grunt-contrib-concat": "~0.1.3", - "grunt-contrib-jshint": "~0.1", - "grunt-contrib-nodeunit": "~0.1.2", - "grunt-contrib-watch": "~0.2" - }, - "keywords": [ - "file", - "filesize", - "size", - "readable", - "file system" - ], - "readme": "[![build status](https://secure.travis-ci.org/avoidwork/filesize.js.png)](http://travis-ci.org/avoidwork/filesize.js)\n# filesize.js\n\nfilesize.js provides a simple way to get a human readable file size string from a number (float or integer) or string.\n\n## Optional settings\n\n`filesize()` accepts an optional descriptor Object as a second argument, so you can customize the output.\n\n### bits\n_***(boolean)***_ Enables `bit` sizes, default is `false`\n\n### unix\n_***(boolean)***_ Enables unix style human readable output, e.g `ls -lh`, default is `false`\n\n### base\n_***(number)***_ Number base, default is `10`\n\n### round\n_***(number)***_ Decimal place, default is `2`\n\n### spacer\n_***(string)***_ Character between the `result` and `suffix`, default is `\" \"`\n\n### suffixes\n_***(object)***_ Dictionary of SI suffixes to replace for localization, defaults to english if no match is found\n\n## Examples\n\n```javascript\nfilesize(500); // \"500 B\"\nfilesize(500, {bits: true}); // \"4.00 kb\"\nfilesize(265318); // \"265.32 kB\"\nfilesize(265318, {base: 2}); // \"259.10 kB\"\nfilesize(265318, {base: 2, round: 1}); // \"259.1 kB\"\nfilesize(1, {suffixes: {B: \"Б\"}}); // \"1 Б\"\n```\n\n## How can I load filesize.js?\n\nfilesize.js supports AMD loaders (require.js, curl.js, etc.), node.js & npm (npm install filesize), or using a script tag.\n\n## Support\n\nIf you're having problems, use the support forum at CodersClan.\n\n<a href=\"http://codersclan.net/forum/index.php?repo_id=11\"><img src=\"http://www.codersclan.net/graphics/getSupport_blue_big.png\" width=\"160\"></a>\n\n## License\nCopyright (c) 2013 Jason Mulligan \nLicensed under the BSD-3 license.\n", - "readmeFilename": "README.md", - "_id": "filesize@2.0.3", - "_from": "filesize@~2.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/README.md deleted file mode 100644 index 3f096408..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# image-min [![Build Status](https://secure.travis-ci.org/kevva/image-min.png?branch=master)](http://travis-ci.org/kevva/image-min) - -Minify GIF, JPEG and PNG images seamlessly with Node.js. - -## Getting started - -Install with [npm](https://npmjs.org/package/image-min): `npm install image-min` - -## Examples - -`data` returns information about how much optimization was done. - -```js -var imagemin = require('image-min'); - -imagemin(img.gif, img-minified.gif, function (err, data) { - console.log('Saved ' + data.diffSize); -}); - -imagemin(img.jpg, img-minified.jpg, { progressive: true }, function (err, data) { - console.log('Saved ' + data.diffSize); -}); - -imagemin(img.png, img-minified.png, { optimizationLevel: 4 }, function (err, data) { - console.log('Saved ' + data.diffSize); -}); -``` - -## API - -### imagemin(src, dest, opts, cb) - -Optimize a `GIF`, `JPEG`, or `PNG` image by providing a `src` and `dest`. Use the -options below (optionally) to configure how your images are optimized. - -## Options - -### cache - -Type: `Boolean` -Default: `false` - -Whether to cache optimized images. - -### interlaced (GIF only) - -Type: `Boolean` -Default: `false` - -Interlace gif for progressive rendering. - -### optimizationLevel (PNG only) - -Type: `Number` -Default: `2` - -Select a optimization level between 0 and 7. - -### progressive (JPEG only) - -Type: `Boolean` -Default: `false` - -Lossless conversion to progressive. - -## Used by - -* [gulp-imagemin](https://github.com/sindresorhus/gulp-imagemin) -* [grunt-contrib-imagemin](https://github.com/gruntjs/grunt-contrib-imagemin) - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/imagemin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/imagemin.js deleted file mode 100644 index b93d6b4e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/imagemin.js +++ /dev/null @@ -1,190 +0,0 @@ -'use strict'; - -var cache = require('cache-file'); -var endsWith = require('mout/string/endsWith'); -var filesize = require('filesize'); -var find = require('mout/array/find'); -var fs = require('fs'); -var isFunction = require('mout/lang/isFunction'); -var mkdir = require('mkdirp'); -var path = require('path'); -var spawn = require('child_process').spawn; - -/** - * Initialize `Imagemin` with options - * - * @param {String} src - * @param {String} dest - * @param {Object} opts - * @api private - */ - -function Imagemin(src, dest, opts) { - opts = opts || {}; - this.opts = opts; - this.src = src; - this.dest = dest; - this.optimizers = { - '.gif': this._optimizeGif, - '.jpg': this._optimizeJpeg, - '.jpeg': this._optimizeJpeg, - '.png': this._optimizePng - }; - this.optimizerTypes = Object.keys(this.optimizers); - this.optimizer = this._getOptimizer(this.src); -} - -/** - * Optimize GIF, JPEG, and PNG images - * - * @param {Function} cb - * @api public - */ - -Imagemin.prototype.optimize = function (cb) { - if (!cb || !isFunction(cb)) { - cb = function () {}; - } - - if (!fs.existsSync(path.dirname(this.dest))) { - mkdir.sync(path.dirname(this.dest)); - } - - if (this.opts.cache && cache.check(this.src)) { - cache.get(this.src, this.dest); - return cb(null, this._process()); - } - - if (!isFunction(this.optimizer)) { - return cb(); - } - - var self = this; - var optimizer = this.optimizer(this.src, this.dest, cb); - - optimizer.on('error', function (err) { - return cb(new Error(err)); - }); - - optimizer.stderr.on('data', function (data) { - return cb(new Error(data.toString())); - }); - - optimizer.once('close', function (code) { - if (code === 0) { - return cb(null, self._process()); - } - }); -}; - -/** - * Get the optimizer for a desired file - * - * @param {String} src - * @api private - */ - -Imagemin.prototype._getOptimizer = function (src) { - src = src.toLowerCase(); - - var ext = find(this.optimizerTypes, function (ext) { - return endsWith(src, ext); - }); - - return ext ? this.optimizers[ext] : null; -}; - -/** - * Optimize a GIF image - * - * @param {String} src - * @param {String} dest - * @api private - */ - -Imagemin.prototype._optimizeGif = function (src, dest) { - var args = ['-w']; - var gifsicle = require('gifsicle').path; - - if (this.opts.interlaced) { - args.push('--interlace'); - } - - return spawn(gifsicle, args.concat(['-o', dest, src])); -}; - -/** - * Optimize a JPEG image - * - * @param {String} src - * @param {String} dest - * @api private - */ - -Imagemin.prototype._optimizeJpeg = function (src, dest) { - var args = ['-copy', 'none', '-optimize']; - var jpegtran = require('jpegtran-bin').path; - - if (this.opts.progressive) { - args.push('-progressive'); - } - - return spawn(jpegtran, args.concat(['-outfile', dest, src])); -}; - -/** - * Optimize a PNG image - * - * @param {String} src - * @param {String} dest - * @api private - */ - -Imagemin.prototype._optimizePng = function (src, dest) { - var args = ['-strip', 'all', '-quiet']; - var optipng = require('optipng-bin').path; - - if (typeof this.opts.optimizationLevel === 'number') { - args.push('-o', this.opts.optimizationLevel); - } - - return spawn(optipng, args.concat(['-out', dest, src])); -}; - -/** - * Process optimized images - * - * @api private - */ - -Imagemin.prototype._process = function () { - var size = fs.statSync(this.src).size; - var saved = size - fs.statSync(this.dest).size; - - if (this.opts.cache && !cache.check(this.src)) { - cache.store(this.dest, this.src); - } - - var data = { - origSize: filesize(size), - origSizeRaw: size, - diffSize: filesize(saved), - diffSizeRaw: saved - }; - - return data; -}; - -/** - * Module exports - */ - -module.exports = function (src, dest, opts, cb) { - if (!cb && isFunction(opts)) { - cb = opts; - opts = {}; - } - - var imagemin = new Imagemin(src, dest, opts); - return imagemin.optimize(cb); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/gifsicle b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/gifsicle deleted file mode 120000 index a098fdb4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/gifsicle +++ /dev/null @@ -1 +0,0 @@ -../gifsicle/bin/gifsicle.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/jpegtran b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/jpegtran deleted file mode 120000 index 16214f3c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/jpegtran +++ /dev/null @@ -1 +0,0 @@ -../jpegtran-bin/bin/jpegtran.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/optipng b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/optipng deleted file mode 120000 index 1297372d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/.bin/optipng +++ /dev/null @@ -1 +0,0 @@ -../optipng-bin/bin/optipng.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/README.md deleted file mode 100644 index 7bae2146..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# cache-file [![Build Status](https://secure.travis-ci.org/kevva/cache-file.png?branch=master)](http://travis-ci.org/kevva/cache-file) - -Store and get files from cache with Node.js. - -## Getting started - -Install with [npm](https://npmjs.org/package/cache-file): `npm install cache-file` - -## Examples - -```js -var cache = require('cache-file'); - -// store test.jpg inside a test folder in cache -cache.store('test.jpg'); - -// get test.jpg from cache and save it as test-restored.jpg -cache.get('test.jpg', 'test-restored.jpg'); - -// check if test.jpg exists in cache -cache.check('test.jpg'); - -// get the path to test.jpg in cache -cache.path('test.jpg'); - -// remove test.jpg from cache -cache.clean('test.jpg'); -``` - -## API - -### .store(src, dest) - -Store a file inside cache. Use `dest` to specify a custom name. - -### .get(src, dest) - -Get a cached file and save it to a desired location. - -### .check(src) - -Check if a cached file exists. - -### .path(src) - -Get the path to a cached file. - -### .clean(src) - -Remove a file from cache. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/index.js deleted file mode 100644 index aa37221d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/index.js +++ /dev/null @@ -1,103 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var hashfile = require('hash-file'); -var mkdir = require('mkdirp'); -var path = require('path'); -var rm = require('rimraf'); -var tmp = require('os').tmpdir(); - -/** - * Cache a file - * - * @param {String} src - * @param {String} dest - * @api public - */ - -module.exports.store = function (src, dest) { - var cache = dest ? path.join(tmp, hashfile(dest)) : path.join(tmp, hashfile(src)); - var stream; - - if (!fs.existsSync(cache)) { - if (!fs.existsSync(path.dirname(cache))) { - mkdir.sync(path.dirname(cache)); - } - - stream = fs.createWriteStream(cache); - fs.createReadStream(src).pipe(stream); - - return stream; - } -}; - -/** - * Get a cached file - * - * @param {String} src - * @param {String} dest - * @api public - */ - -module.exports.get = function (src, dest) { - var cache = path.join(tmp, hashfile(src)); - var stream; - - if (fs.existsSync(cache)) { - if (!fs.existsSync(path.dirname(dest))) { - mkdir.sync(path.dirname(dest)); - } - - stream = fs.createWriteStream(dest); - fs.createReadStream(src).pipe(stream); - - return stream; - } -}; - -/** - * Check if a file exists in cache - * - * @param {String} src - * @api public - */ - -module.exports.check = function (src) { - var cache = path.join(tmp, hashfile(src)); - - if (fs.existsSync(cache)) { - return true; - } - - return false; -}; - -/** - * Get the path to a cached file - * - * @param {String} src - * @api public - */ - -module.exports.path = function (src) { - var cache = path.join(tmp, hashfile(src)); - - if (fs.existsSync(cache)) { - return path.resolve(cache); - } -}; - -/** - * Clean cache - * - * @param {String} src - * @api public - */ - -module.exports.clean = function (src) { - var cache = path.join(tmp, hashfile(src)); - - if (fs.existsSync(cache)) { - rm.sync(cache); - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/.bin/rimraf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/README.md deleted file mode 100644 index 95a89599..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# hash-file [![Build Status](https://secure.travis-ci.org/kevva/hash-file.png?branch=master)](http://travis-ci.org/kevva/hash-file) - -Create a hashed file name with Node.js. - -## Getting started - -Install with [npm](https://npmjs.org/package/hash-file): `npm install hash-file` - -## Examples - -```js -var hashfile = require('hash-file'); - -hashfile('test.zip'); -``` - -## API - -### hashfile(src) - -Create a hashed file name from a files content. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/index.js deleted file mode 100644 index 52a32f25..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/index.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var crypto = require('crypto'); -var fs = require('fs'); - -module.exports = function (src) { - var data; - - if (Buffer.isBuffer(src)) { - data = src.toString('utf8'); - } else { - data = fs.readFileSync(String(src), 'utf8'); - } - - return crypto.createHash('sha1').update(data).digest('hex'); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/package.json deleted file mode 100644 index 31d29042..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/hash-file/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "hash-file", - "version": "0.1.0", - "description": "Create a hashed file name", - "keywords": [ - "file", - "hash", - "name" - ], - "homepage": "https://github.com/kevva/hash-file", - "bugs": { - "url": "https://github.com/kevva/hash-file/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/hash-file.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "index.js", - "files": [ - "index.js" - ], - "devDependencies": { - "mocha": "~1.17.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# hash-file [![Build Status](https://secure.travis-ci.org/kevva/hash-file.png?branch=master)](http://travis-ci.org/kevva/hash-file)\n\nCreate a hashed file name with Node.js.\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/hash-file): `npm install hash-file`\n\n## Examples\n\n```js\nvar hashfile = require('hash-file');\n\nhashfile('test.zip');\n```\n\n## API\n\n### hashfile(src)\n\nCreate a hashed file name from a files content.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "hash-file@0.1.0", - "_from": "hash-file@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/AUTHORS b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/AUTHORS deleted file mode 100644 index 247b7543..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -# 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/README.md deleted file mode 100644 index cd123b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/README.md +++ /dev/null @@ -1,30 +0,0 @@ -`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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/bin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/bin.js deleted file mode 100755 index 29bfa8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/bin.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/package.json deleted file mode 100644 index 13d6751e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "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" - } - ], - "readme": "`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.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n successfully, since your desired outcome is already the case.\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", - "bugs": { - "url": "https://github.com/isaacs/rimraf/issues" - }, - "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.2.6", - "_from": "rimraf@~2.2.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/rimraf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/rimraf.js deleted file mode 100644 index ce62051f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/rimraf.js +++ /dev/null @@ -1,178 +0,0 @@ -module.exports = rimraf -rimraf.sync = rimrafSync - -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 rimraf (p, cb) { - if (!cb) throw new Error("No callback passed to rimraf()") - - var busyTries = 0 - rimraf_(p, 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, 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, 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, cb) { - fs.unlink(p, function (er) { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb) - if (er.code === "EISDIR") - return rmdir(p, er, cb) - } - return cb(er) - }) -} - -function fixWinEPERM (p, er, cb) { - fs.chmod(p, 666, function (er2) { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - fs.stat(p, function(er3, stats) { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, er, cb) - else - fs.unlink(p, cb) - }) - }) -} - -function fixWinEPERMSync (p, er, cb) { - try { - fs.chmodSync(p, 666) - } catch (er2) { - if (er2.code !== "ENOENT") - throw er - } - - try { - var stats = fs.statSync(p) - } catch (er3) { - if (er3 !== "ENOENT") - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, er) - else - fs.unlinkSync(p) -} - -function rmdir (p, originalEr, cb) { - // 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. - fs.rmdir(p, function (er) { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -function rmkids(p, cb) { - fs.readdir(p, function (er, files) { - if (er) - return cb(er) - var n = files.length - if (n === 0) - return fs.rmdir(p, cb) - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), function (er) { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - fs.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) { - try { - fs.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er) - if (er.code !== "EISDIR") - throw er - rmdirSync(p, er) - } -} - -function rmdirSync (p, originalEr) { - try { - fs.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) - } -} - -function rmkidsSync (p) { - fs.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f)) - }) - fs.rmdirSync(p) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/run.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/run.sh deleted file mode 100644 index 598f0163..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -for i in test-*.js; do - echo -n $i ... - bash setup.sh - node $i - ! [ -d target ] - echo "pass" -done -rm -rf target diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/setup.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/setup.sh deleted file mode 100644 index 2602e631..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-async.js deleted file mode 100644 index 9c2e0b7b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-async.js +++ /dev/null @@ -1,5 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf(path.join(__dirname, "target"), function (er) { - if (er) throw er -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-sync.js deleted file mode 100644 index eb71f104..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/node_modules/rimraf/test/test-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf.sync(path.join(__dirname, "target")) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/package.json deleted file mode 100644 index 5813e6a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/cache-file/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "cache-file", - "version": "0.1.5", - "description": "Store and get files from cache", - "keywords": [ - "cache", - "store" - ], - "homepage": "https://github.com/kevva/cache-file", - "bugs": { - "url": "https://github.com/kevva/cache-file/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/cache-file.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "index.js", - "files": [ - "index.js" - ], - "dependencies": { - "hash-file": "~0.1.0", - "mkdirp": "~0.3.5", - "rimraf": "~2.2.2" - }, - "devDependencies": { - "mocha": "~1.12.0", - "each-async": "~0.1.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# cache-file [![Build Status](https://secure.travis-ci.org/kevva/cache-file.png?branch=master)](http://travis-ci.org/kevva/cache-file)\n\nStore and get files from cache with Node.js.\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/cache-file): `npm install cache-file`\n\n## Examples\n\n```js\nvar cache = require('cache-file');\n\n// store test.jpg inside a test folder in cache\ncache.store('test.jpg');\n\n// get test.jpg from cache and save it as test-restored.jpg\ncache.get('test.jpg', 'test-restored.jpg');\n\n// check if test.jpg exists in cache\ncache.check('test.jpg');\n\n// get the path to test.jpg in cache\ncache.path('test.jpg');\n\n// remove test.jpg from cache\ncache.clean('test.jpg');\n```\n\n## API\n\n### .store(src, dest)\n\nStore a file inside cache. Use `dest` to specify a custom name.\n\n### .get(src, dest)\n\nGet a cached file and save it to a desired location.\n\n### .check(src)\n\nCheck if a cached file exists.\n\n### .path(src)\n\nGet the path to a cached file.\n\n### .clean(src)\n\nRemove a file from cache.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "cache-file@0.1.5", - "_from": "cache-file@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/bin/gifsicle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/bin/gifsicle.js deleted file mode 100755 index 16935475..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/bin/gifsicle.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node -'use strict'; - -var binPath = require('../lib/gifsicle').path; -var spawn = require('child_process').spawn; - -spawn(binPath, process.argv.slice(2), { stdio: 'inherit' }) - .on('exit', process.exit); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/check.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/check.js deleted file mode 100644 index 725e38af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/check.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -var bin = require('./gifsicle').bin; -var chalk = require('chalk'); - -bin.check(function (w) { - if (!w) { - console.log(chalk.red('✗ pre-build test failed, compiling from source...')); - - if (process.platform === 'win32') { - throw new Error('building is not supported on ' + process.platform); - } - - return bin.build(function (err) { - if (err) { - return console.log(chalk.red('✗ ' + err.message)); - } - - console.log(chalk.green('✓ gifsicle rebuilt successfully')); - }); - } - - console.log(chalk.green('✓ pre-build test passed successfully')); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/gifsicle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/gifsicle.js deleted file mode 100644 index e216b386..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/lib/gifsicle.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -var Bin = require('bin-wrapper'); -var path = require('path'); - -var options = { - name: 'gifsicle', - bin: 'gifsicle', - path: path.join(__dirname, '../vendor'), - src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz', - buildScript: './configure --disable-gifview --disable-gifdiff ' + - '--bindir="' + path.join(__dirname, '../vendor') + '" && ' + - 'make install', - platform: { - darwin: { - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/osx/gifsicle' - }, - linux: { - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/linux/x86/gifsicle', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/linux/x64/gifsicle' - } - } - }, - freebsd: { - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/freebsd/x86/gifsicle', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/freebsd/x64/gifsicle' - } - } - }, - win32: { - bin: 'gifsicle.exe', - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/win/x86/gifsicle.exe', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-gifsicle/master/vendor/win/x64/gifsicle.exe' - } - } - } - } -}; -var bin = new Bin(options); - -exports.bin = bin; -exports.options = options; -exports.path = bin.path; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/README.md deleted file mode 100644 index 81dbc571..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# bin-wrapper [![Build Status](https://secure.travis-ci.org/kevva/bin-wrapper.png?branch=master)](http://travis-ci.org/kevva/bin-wrapper) - -Binary wrapper for Node.js that makes your programs seamlessly available as local dependencies - -## Getting started - -Install with [npm](https://npmjs.org/package/bin-wrapper): `npm install bin-wrapper` - -## Examples - -All `platform` and `arch` specific options takes precedence over the base -options. See [test.js](test.js) for a full fleshed example. - -```js -var Bin = require('bin-wrapper'); - -var opts = { - name: 'Gifsicle', - bin: 'gifsicle', - path: 'vendor', - url: 'http://url/to/gifsicle', - src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz', - buildScript: './configure --bindir="vendor" && make install', - platform: { - win32: { - bin: 'gifsicle.exe', - url: [ - 'http://url/to/gifsicle.exe' - 'http://url/to/gifsicle.dll' - ] - } - } -} -var bin = new Bin(opts); - -bin.check('--version', function (works) { - if (!works) { - console.log('Pre-build test failed, compiling from source'); - return bin.build(); - } - - console.log('Binary passed the test'); -}); -``` - -Get the path to your binary with `bin.path`. - -```js -console.log(bin.path); -// => path/to/vendor/gifsicle -``` - -## API - -### .check(cmd, cb) - -Check if a binary is present and working. If it isn't, download and test it by -running the binary with `cmd` and see if it exits correctly. - -### .build(cb) - -Download the source archive defined in the `src` property and build it using the -build script defined in the `buildScript` property. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/bin-wrapper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/bin-wrapper.js deleted file mode 100644 index d84d5874..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/bin-wrapper.js +++ /dev/null @@ -1,223 +0,0 @@ -'use strict'; - -var download = require('download'); -var exec = require('child_process').exec; -var fs = require('fs'); -var hasOwn = require('mout/object/hasOwn'); -var isbin = require('isbin'); -var isFunction = require('mout/lang/isFunction'); -var mixIn = require('mout/object/mixIn'); -var os = require('os'); -var path = require('path'); -var ProgressBar = require('progress'); -var spawn = require('child_process').spawn; -var which = require('which'); - -/** - * Initialize BinWrapper with options - * - * @param {Object} opts - * @api public - */ - -function BinWrapper(opts) { - opts = opts || {}; - this.opts = this._parse(opts); - this.name = this.opts.name; - this.bin = this.opts.bin; - this.dest = this.opts.path; - this.path = this._path() || path.join(this.dest, this.bin); - this.url = this.opts.url; - this.src = this.opts.src; - this.buildScript = this.opts.buildScript; - this.proxy = process.env.http_proxy || - process.env.HTTP_PROXY || - process.env.https_proxy || - process.env.HTTPS_PROXY || - null; -} - -/** - * Check if a binary is present and working - * - * @param {String|Array} cmd - * @param {Function} cb - * @api public - */ - -BinWrapper.prototype.check = function (cmd, cb) { - var self = this; - - if (!cb && isFunction(cmd)) { - cb = cmd; - cmd = ['--help']; - } - - cmd = cmd; - cmd = Array.isArray(cmd) ? cmd : [cmd]; - - if (this._path()) { - return self._test(cmd, cb); - } - - this._download(this.url, this.dest, { mode: '0755', proxy: this.proxy }) - .once('close', function () { - return self._test(cmd, cb); - }); -}; - -/** - * Download source and build a binary - * - * @param {Function} cb - * @api public - */ - -BinWrapper.prototype.build = function (cb) { - var self = this; - var tmpDir = os.tmpdir ? os.tmpdir() : os.tmpDir(); - var tmp = path.join(tmpDir, this.name); - var get = this._download(this.src, tmp, { extract: true, strip: '1', proxy: this.proxy }); - - if (!cb || !isFunction(cb)) { - cb = function () {}; - } - - if (!isbin('make')) { - throw new Error('failed to find make'); - } - - get.once('close', function () { - exec(self.buildScript, { cwd: tmp }, function (err) { - if (err) { - return cb(err); - } - - return cb(); - }); - }); -}; - -/** - * Download a string or an array of files - * - * @param {String|Array} src - * @param {String} dest - * @param {Object} opts - * @api private - */ - -BinWrapper.prototype._download = function (src, dest, opts) { - var get = download(src, dest, opts); - - get.on('response', function (res) { - var len = parseInt(res.headers['content-length'], 10); - var bar = new ProgressBar(' ' + path.basename(src) + ': downloading [:bar] :percent :etas', { - complete: '=', - incomplete: ' ', - width: 20, - total: len - }); - - res.on('data', function (data) { - bar.tick(data.length); - }); - - res.on('end', function () { - console.log('\n'); - }); - }); - - return get; -}; - -/** - * If a binary exists, get its path - * - * @api private - */ - -BinWrapper.prototype._path = function () { - var self = this; - - if (fs.existsSync(path.join(this.dest, this.bin))) { - return path.join(self.dest, self.bin); - } - - if (isbin(this.bin)) { - if (which.sync(self.bin).indexOf('node_modules/.bin') === -1) { - return which.sync(self.bin); - } - } - - return false; -}; - -/** - * Test if a binary is working by checking its exit code - * - * @param {Array} cmd - * @param {Function} cb - * @api private - */ - -BinWrapper.prototype._test = function (cmd, cb) { - var working; - var bin = spawn(this.path, cmd); - - bin.on('error', function () { - working = false; - return cb(working); - }); - - bin.on('exit', function (code) { - working = code === 0; - return cb(working); - }); -}; - -/** - * Parse options - * - * @param {Object} opts - * @api private - */ - -BinWrapper.prototype._parse = function (opts) { - opts.platform = opts.platform || {}; - opts.arch = opts.arch || {}; - - var platform = process.platform; - var arch = process.arch === 'x64' ? 'x64' : process.arch === 'arm' ? 'arm' : 'x86'; - var required = [ - 'bin', - 'name', - 'path', - 'url' - ]; - - if (hasOwn(opts.platform, [platform])) { - opts = mixIn(opts, opts.platform[platform]); - } - - if (hasOwn(opts.arch, [arch])) { - opts = mixIn(opts, opts.arch[arch]); - } - - required.forEach(function (val) { - if (!hasOwn(opts, val)) { - throw new Error(val + ' option is required'); - } - }); - - delete opts.platform; - delete opts.arch; - - return opts; -}; - -/** - * Module exports - */ - -module.exports = BinWrapper; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/.bin/which b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/.bin/which deleted file mode 120000 index f62471c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/.bin/which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/which \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/README.md deleted file mode 100644 index f57b2f41..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# download [![Build Status](https://secure.travis-ci.org/kevva/download.png?branch=master)](http://travis-ci.org/kevva/download) - -Download and extract files effortlessly in Node.js. - -## Getting started - -Install with [npm](https://npmjs.org/package/download): `npm install download` - -## Examples - -If you're fetching an archive you can set `extract: true` in options and -it'll extract it for you. - -```js -var download = require('download'); - -// download and extract `foo.tar.gz` into `bar/` -download('foo.tar.gz', 'bar', { extract: true }); - -// download and save `foo.exe` into `bar/foo.exe` with mode `0755` -download('foo.exe', 'bar', { mode: '0755' }); - -// download and save `foo.zip` into `bar/foobar.zip` -download({ url: 'foo.zip', name: 'foobar.zip' }, 'bar'); - -// download and save an array of files in `bar/` -var files = ['foo.jpg', 'bar.jpg', 'cat.jpg']; -download(files, 'bar'); - -// download, save and rename an array of files in `bar/` -var files = [{ - url: 'foo.jpg', - name: 'foobar.jpg' -}, { - url: 'cat.jpg', - name: 'dog.jpg' -}]; -download(files, 'bar'); -``` - -## API - -### download(url, dest, opts) - -Download a file or an array of files to a given destination. Returns an EventEmitter -that emits the following possible events: - -* `response` — Relayed when the underlying `http.ClientRequest` emits the same -event. Listeners called with a `http.IncomingMessage` instance. -* `data` — Relayed when the underlying `http.IncomingMessage` emits the same -event. Listeners called with a `Buffer` instance. -* `error` — Relayed when the underlying `http.ClientRequest` emits the same event -or when the response status code is not in the 200s. Listeners called with an -`Error` instance (in the first case) or the response status code. -* `close` — Relayed when the underlying `stream.Duplex` emits the same event. - -## Options - -You can define options accepted by the [request](https://github.com/mikeal/request/) module besides from the options below. - -### extract - -Type: `Boolean` -Default: `false` - -If set to `true`, try extracting the file using [decompress](https://github.com/kevva/decompress/). - -### mode - -Type: `String` -Default: `undefined` - -Set mode on the downloaded files. - -### strip - -Type: `Number` -Default: `0` - -Equivalent to `--strip-components` for tar. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/download.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/download.js deleted file mode 100644 index 4b9c05e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/download.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict'; - -var decompress = require('decompress'); -var eachAsync = require('each-async'); -var fs = require('fs'); -var mkdir = require('mkdirp'); -var path = require('path'); -var request = require('request'); -var through = require('through2'); - -/** - * Download a file to a given destination - * - * Options: - * - * - `extract` Try extracting the file - * - `mode` Set mode on the downloaded files - * - `strip` Equivalent to --strip-components for tar - * - * @param {String|Array|Object} url - * @param {String} dest - * @param {Object} opts - * @api public - */ - -module.exports = function (url, dest, opts) { - url = Array.isArray(url) ? url : [url]; - opts = opts || {}; - - var stream = through(); - var strip = opts.strip || '0'; - - eachAsync(url, function (url, index, done) { - opts.url = url; - var target = path.join(dest, path.basename(url)); - - if (url.url && url.name) { - target = path.join(dest, url.name); - opts.url = url.url; - } - - var req = request.get(opts) - .on('response', function (res) { - stream.emit('response', res); - }) - .on('data', function (data) { - stream.emit('data', data); - }) - .on('error', function (err) { - stream.emit('error', err); - }); - - req.on('response', function (res) { - var mime = res.headers['content-type']; - var status = res.statusCode; - var end; - - if (status < 200 || status >= 300) { - stream.emit('error', status); - return; - } - - if (opts.extract && decompress.canExtract(url, mime)) { - var ext; - - if (decompress.canExtract(url)) { - ext = url; - } else { - ext = mime; - } - - end = decompress.extract({ - ext: ext, - path: dest, - strip: strip - }); - } else { - if (!fs.existsSync(dest)) { - mkdir.sync(dest); - } - - end = fs.createWriteStream(target); - } - - req.pipe(end); - - end.on('close', function () { - if (!opts.extract && opts.mode) { - fs.chmodSync(target, opts.mode); - } - - done(); - }); - }); - }, function () { - stream.emit('close'); - }); - - return stream; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md deleted file mode 100644 index 4226d3f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# decompress [![Build Status](https://secure.travis-ci.org/kevva/decompress.png?branch=master)](http://travis-ci.org/kevva/decompress) - -Easily extract `.zip`, `.tar` and `.tar.gz` archives. Based on the extract -utility in [Bower](https://github.com/bower/bower). - -## Getting started - -Install with [npm](https://npmjs.org/package/decompress): `npm install decompress` - -## Examples - -You'll only need to pass a type into `ext` and it'll figure the rest out for -you. - -```js -var decompress = require('decompress'); -var fs = require('fs'); - -var src = fs.createReadStream('foo.tar.gz'); -var dest = decompress.extract({ ext: '.tar.gz' }); - -src.pipe(dest); -``` - -## API - -### .extract(opts) - -Extract an archive using the `ext` option to determine which extractor to use. -If no `path` is specified it'll extract it to your current location. - -### .canExtract(src, mime) - -Determine if a file can be extracted or not by checking the file extension -and/or the MIME type. - -```js -decompress.canExtract('foo.zip'); -// => true - -decompress.canExtract('application/zip'); -// => true -``` - -## Options - -### `ext` - -Type: `String` -Default: `''` - -String that can be a file name, URL, MIME type etc. - -### `path` - -Type: `String` -Default: `process.cwd()` - -Path to extract the archive to. If no `path` is defined it'll extract it to your -current location. - -### strip - -Type: `Number` -Default: `0` - -Equivalent to `--strip-components` for tar. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js deleted file mode 100644 index 3b477c1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -var AdmZip = require('adm-zip'); -var endsWith = require('mout/string/endsWith'); -var find = require('mout/array/find'); -var fs = require('fs'); -var mkdir = require('mkdirp'); -var path = require('path'); -var pipeline = require('stream-combiner'); -var rm = require('rimraf'); -var tar = require('tar'); -var tempfile = require('tempfile'); -var zlib = require('zlib'); - -/** - * Initialize Decompress with options - * - * Options: - * - * - `ext` String with file name, MIME type, etc - * - `path` Path to extract to - * - * @param {Object} opts - * @api private - */ - -function Decompress(opts) { - opts = opts || {}; - opts.strip = opts.strip || 0; - this.opts = opts; - this.path = opts.path || process.cwd(); - this.ext = opts.ext || ''; - this.strip = opts.strip >= 0 ? opts.strip : 0; - this.extractors = { - '.zip': this._extractZip, - '.tar': this._extractTar, - '.tar.gz': this._extractTarGz, - '.tgz': this._extractTarGz, - 'application/zip': this._extractZip, - 'application/x-tar': this._extractTar, - 'application/x-tgz': this._extractTarGz - }; - this.extractorTypes = Object.keys(this.extractors); - this.extractor = this._getExtractor(this.ext); -} - -/** - * Extract an archive - * - * @api public - */ - -Decompress.prototype.extract = function () { - var self = this; - var stream = this.extractor(); - - if (!fs.existsSync(this.path)) { - mkdir.sync(self.path); - } - - return stream; -}; - -/** - * Check if a file can be extracted - * - * @param {String} src - * @param {String} mime - * @api public - */ - -Decompress.prototype.canExtract = function (src, mime) { - if (this._getExtractor(src)) { - return true; - } - - if (mime && this._getExtractor(mime)) { - return true; - } - - return false; -}; - -/** - * Get the extractor for a desired file - * - * @param {String} src - * @api private - */ - -Decompress.prototype._getExtractor = function (src) { - src = src.toLowerCase(); - - var ext = find(this.extractorTypes, function (ext) { - return endsWith(src, ext); - }); - - return ext ? this.extractors[ext] : null; -}; - -/** - * Extract a zip file - * - * @api private - */ - -Decompress.prototype._extractZip = function () { - var self = this; - var tmp = tempfile('.zip'); - - var stream = fs.createWriteStream(tmp).on('close', function () { - var zip = new AdmZip(tmp); - var zipEntries = zip.getEntries(); - - zipEntries.forEach(function (entry) { - if (!entry.isDirectory) { - var ef = path.basename(entry.entryName.toString()); - var ed = path.dirname(entry.entryName.toString().split('/').slice(self.strip).join('/')); - var d = path.join(self.path, ed, ef); - - mkdir.sync(path.dirname(d)); - fs.writeFileSync(d, entry.getData()); - } - }); - }); - - return stream.on('close', function () { - rm.sync(tmp); - }); -}; - -/** - * Extract a tar file - * - * @api private - */ - -Decompress.prototype._extractTar = function () { - var stream = tar.Extract(this.opts); - return stream; -}; - -/** - * Extract a tar.gz file - * - * @api private - */ - -Decompress.prototype._extractTarGz = function () { - var stream = zlib.Unzip(); - var dest = tar.Extract(this.opts); - - return pipeline(stream, dest); -}; - -/** - * Module exports - */ - -module.exports.extract = function (opts) { - var decompress = new Decompress(opts); - return decompress.extract(); -}; - -module.exports.canExtract = function (src, mime) { - var decompress = new Decompress(); - return decompress.canExtract(src, mime); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml deleted file mode 100644 index 0d5175ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ -<component name="DependencyValidationManager"> - <state> - <option name="SKIP_IMPORT_STATEMENTS" value="false" /> - </state> -</component> \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt deleted file mode 100644 index 14c3ee5c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2012 Another-D-Mention Software and other contributors, -http://www.another-d-mention.ro/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md deleted file mode 100644 index 030fab8a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# ADM-ZIP for NodeJS - -ADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). - -# Installation - -With [npm](http://npmjs.org) do: - - $ npm install adm-zip - -## What is it good for? -The library allows you to: - -* decompress zip files directly to disk or in memory buffers -* compress files and store them to disk in .zip format or in compressed buffers -* update content of/add new/delete files from an existing .zip - -# Dependencies -There are no other nodeJS libraries that ADM-ZIP is dependent of - -# Examples - -## Basic usage -```javascript - - var AdmZip = require('adm-zip'); - - // reading archives - var zip = new AdmZip("./my_file.zip"); - var zipEntries = zip.getEntries(); // an array of ZipEntry records - - zipEntries.forEach(function(zipEntry) { - console.log(zipEntry.toString()); // outputs zip entries information - if (zipEntry.entryName == "my_file.txt") { - console.log(zipEntry.data.toString('utf8')); - } - }); - // outputs the content of some_folder/my_file.txt - console.log(zip.readAsText("some_folder/my_file.txt")); - // extracts the specified file to the specified location - zip.extractEntryTo(/*entry name*/"some_folder/my_file.txt", /*target path*/"/home/me/tempfolder", /*maintainEntryPath*/false, /*overwrite*/true); - // extracts everything - zip.extractAllTo(/*target path*/"/home/me/zipcontent/", /*overwrite*/true); - - - // creating archives - var zip = new AdmZip(); - - // add file directly - zip.addFile("test.txt", new Buffer("inner content of the file"), "entry comment goes here"); - // add local file - zip.addLocalFile("/home/me/some_picture.png"); - // get everything as a buffer - var willSendthis = zip.toBuffer(); - // or write everything to disk - zip.writeZip(/*target file name*/"/home/me/files.zip"); - - - // ... more examples in the wiki -``` - -For more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki). - -[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js deleted file mode 100644 index 46595fc5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js +++ /dev/null @@ -1,404 +0,0 @@ -var fs = require("fs"), - pth = require("path"); - -fs.existsSync = fs.existsSync || pth.existsSync; - -var ZipEntry = require("./zipEntry"), - ZipFile = require("./zipFile"), - Utils = require("./util"); - -module.exports = function(/*String*/input) { - var _zip = undefined, - _filename = ""; - - if (input && typeof input === "string") { // load zip file - if (fs.existsSync(input)) { - _filename = input; - _zip = new ZipFile(input, Utils.Constants.FILE); - } else { - throw Utils.Errors.INVALID_FILENAME; - } - } else if(input && Buffer.isBuffer(input)) { // load buffer - _zip = new ZipFile(input, Utils.Constants.BUFFER); - } else { // create new zip file - _zip = new ZipFile(null, Utils.Constants.NONE); - } - - function getEntry(/*Object*/entry) { - if (entry && _zip) { - var item; - // If entry was given as a file name - if (typeof entry === "string") - item = _zip.getEntry(entry); - // if entry was given as a ZipEntry object - if (typeof entry === "object" && entry.entryName != undefined && entry.header != undefined) - item = _zip.getEntry(entry.entryName); - - if (item) { - return item; - } - } - return null; - } - - return { - /** - * Extracts the given entry from the archive and returns the content as a Buffer object - * @param entry ZipEntry object or String with the full path of the entry - * - * @return Buffer or Null in case of error - */ - readFile : function(/*Object*/entry) { - var item = getEntry(entry); - return item && item.getData() || null; - }, - - /** - * Asynchronous readFile - * @param entry ZipEntry object or String with the full path of the entry - * @param callback - * - * @return Buffer or Null in case of error - */ - readFileAsync : function(/*Object*/entry, /*Function*/callback) { - var item = getEntry(entry); - if (item) { - item.getDataAsync(callback); - } else { - callback(null,"getEntry failed for:" + entry) - } - }, - - /** - * Extracts the given entry from the archive and returns the content as plain text in the given encoding - * @param entry ZipEntry object or String with the full path of the entry - * @param encoding Optional. If no encoding is specified utf8 is used - * - * @return String - */ - readAsText : function(/*Object*/entry, /*String - Optional*/encoding) { - var item = getEntry(entry); - if (item) { - var data = item.getData(); - if (data && data.length) { - return data.toString(encoding || "utf8"); - } - } - return ""; - }, - - /** - * Asynchronous readAsText - * @param entry ZipEntry object or String with the full path of the entry - * @param callback - * @param encoding Optional. If no encoding is specified utf8 is used - * - * @return String - */ - readAsTextAsync : function(/*Object*/entry, /*Function*/callback, /*String - Optional*/encoding) { - var item = getEntry(entry); - if (item) { - item.getDataAsync(function(data) { - if (data && data.length) { - callback(data.toString(encoding || "utf8")); - } else { - callback(""); - } - }) - } else { - callback(""); - } - }, - - /** - * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory - * - * @param entry - */ - deleteFile : function(/*Object*/entry) { // @TODO: test deleteFile - var item = getEntry(entry); - if (item) { - _zip.deleteEntry(item.entryName); - } - }, - - /** - * Adds a comment to the zip. The zip must be rewritten after adding the comment. - * - * @param comment - */ - addZipComment : function(/*String*/comment) { // @TODO: test addZipComment - _zip.comment = comment; - }, - - /** - * Returns the zip comment - * - * @return String - */ - getZipComment : function() { - return _zip.comment || ''; - }, - - /** - * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment - * The comment cannot exceed 65535 characters in length - * - * @param entry - * @param comment - */ - addZipEntryComment : function(/*Object*/entry,/*String*/comment) { - var item = getEntry(entry); - if (item) { - item.comment = comment; - } - }, - - /** - * Returns the comment of the specified entry - * - * @param entry - * @return String - */ - getZipEntryComment : function(/*Object*/entry) { - var item = getEntry(entry); - if (item) { - return item.comment || ''; - } - return '' - }, - - /** - * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content - * - * @param entry - * @param content - */ - updateFile : function(/*Object*/entry, /*Buffer*/content) { - var item = getEntry(entry); - if (item) { - item.setData(content); - } - }, - - /** - * Adds a file from the disk to the archive - * - * @param localPath - */ - addLocalFile : function(/*String*/localPath, /*String*/zipPath) { - if (fs.existsSync(localPath)) { - if(zipPath){ - zipPath=zipPath.split("\\").join("/"); - if(zipPath.charAt(zipPath.length - 1) != "/"){ - zipPath += "/"; - } - }else{ - zipPath=""; - } - var p = localPath.split("\\").join("/").split("/").pop(); - - this.addFile(zipPath+p, fs.readFileSync(localPath), "", 0) - } else { - throw Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath); - } - }, - - /** - * Adds a local directory and all its nested files and directories to the archive - * - * @param localPath - */ - addLocalFolder : function(/*String*/localPath, /*String*/zipPath) { - if(zipPath){ - zipPath=zipPath.split("\\").join("/"); - if(zipPath.charAt(zipPath.length - 1) != "/"){ - zipPath += "/"; - } - }else{ - zipPath=""; - } - localPath = localPath.split("\\").join("/"); //windows fix - if (localPath.charAt(localPath.length - 1) != "/") - localPath += "/"; - - if (fs.existsSync(localPath)) { - - var items = Utils.findFiles(localPath), - self = this; - - if (items.length) { - items.forEach(function(path) { - var p = path.split("\\").join("/").replace(localPath, ""); //windows fix - if (p.charAt(p.length - 1) !== "/") { - self.addFile(zipPath+p, fs.readFileSync(path), "", 0) - } else { - self.addFile(zipPath+p, new Buffer(0), "", 0) - } - }); - } - } else { - throw Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath); - } - }, - - /** - * Allows you to create a entry (file or directory) in the zip file. - * If you want to create a directory the entryName must end in / and a null buffer should be provided. - * Comment and attributes are optional - * - * @param entryName - * @param content - * @param comment - * @param attr - */ - addFile : function(/*String*/entryName, /*Buffer*/content, /*String*/comment, /*Number*/attr) { - var entry = new ZipEntry(); - entry.entryName = entryName; - entry.comment = comment || ""; - entry.attr = attr || 438; //0666; - if (entry.isDirectory && content.length) { - // throw Utils.Errors.DIRECTORY_CONTENT_ERROR; - } - entry.setData(content); - _zip.setEntry(entry); - }, - - /** - * Returns an array of ZipEntry objects representing the files and folders inside the archive - * - * @return Array - */ - getEntries : function() { - if (_zip) { - return _zip.entries; - } else { - return []; - } - }, - - /** - * Returns a ZipEntry object representing the file or folder specified by ``name``. - * - * @param name - * @return ZipEntry - */ - getEntry : function(/*String*/name) { - return getEntry(name); - }, - - /** - * Extracts the given entry to the given targetPath - * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted - * - * @param entry ZipEntry object or String with the full path of the entry - * @param targetPath Target folder where to write the file - * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder - * will be created in targetPath as well. Default is TRUE - * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true. - * Default is FALSE - * - * @return Boolean - */ - extractEntryTo : function(/*Object*/entry, /*String*/targetPath, /*Boolean*/maintainEntryPath, /*Boolean*/overwrite) { - overwrite = overwrite || false; - maintainEntryPath = typeof maintainEntryPath == "undefined" ? true : maintainEntryPath; - - var item = getEntry(entry); - if (!item) { - throw Utils.Errors.NO_ENTRY; - } - - var target = pth.resolve(targetPath, maintainEntryPath ? item.entryName : pth.basename(item.entryName)); - - if (item.isDirectory) { - target = pth.resolve(target, ".."); - var children = _zip.getEntryChildren(item); - children.forEach(function(child) { - if (child.isDirectory) return; - var content = child.getData(); - if (!content) { - throw Utils.Errors.CANT_EXTRACT_FILE; - } - Utils.writeFileTo(pth.resolve(targetPath, maintainEntryPath ? child.entryName : child.entryName.substr(item.entryName.length)), content, overwrite); - }); - return true; - } - - var content = item.getData(); - if (!content) throw Utils.Errors.CANT_EXTRACT_FILE; - - if (fs.existsSync(targetPath) && !overwrite) { - throw Utils.Errors.CANT_OVERRIDE; - } - Utils.writeFileTo(target, content, overwrite); - - return true; - }, - - /** - * Extracts the entire archive to the given location - * - * @param targetPath Target location - * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true. - * Default is FALSE - */ - extractAllTo : function(/*String*/targetPath, /*Boolean*/overwrite) { - overwrite = overwrite || false; - if (!_zip) { - throw Utils.Errors.NO_ZIP; - } - - _zip.entries.forEach(function(entry) { - if (entry.isDirectory) { - Utils.makeDir(pth.resolve(targetPath, entry.entryName.toString())); - return; - } - var content = entry.getData(); - if (!content) { - throw Utils.Errors.CANT_EXTRACT_FILE + "2"; - } - Utils.writeFileTo(pth.resolve(targetPath, entry.entryName.toString()), content, overwrite); - }) - }, - - /** - * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip - * - * @param targetFileName - * @param callback - */ - writeZip : function(/*String*/targetFileName, /*Function*/callback) { - if (arguments.length == 1) { - if (typeof targetFileName == "function") { - callback = targetFileName; - targetFileName = ""; - } - } - - if (!targetFileName && _filename) { - targetFileName = _filename; - } - if (!targetFileName) return; - - var zipData = _zip.compressToBuffer(); - if (zipData) { - Utils.writeFileTo(targetFileName, zipData, true); - } - }, - - /** - * Returns the content of the entire zip file as a Buffer object - * - * @return Buffer - */ - toBuffer : function(/*Function*/onSuccess,/*Function*/onFail,/*Function*/onItemStart,/*Function*/onItemEnd) { - this.valueOf = 2; - if (typeof onSuccess == "function") { - _zip.toAsyncBuffer(onSuccess,onFail,onItemStart,onItemEnd); - return null; - } - return _zip.compressToBuffer() - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js deleted file mode 100644 index a29c70f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js +++ /dev/null @@ -1,261 +0,0 @@ -var Utils = require("../util"), - Constants = Utils.Constants; - -/* The central directory file header */ -module.exports = function () { - var _verMade = 0x0A, - _version = 0x0A, - _flags = 0, - _method = 0, - _time = 0, - _crc = 0, - _compressedSize = 0, - _size = 0, - _fnameLen = 0, - _extraLen = 0, - - _comLen = 0, - _diskStart = 0, - _inattr = 0, - _attr = 0, - _offset = 0; - - var _dataHeader = {}; - - function setTime(val) { - var val = new Date(val); - _time = (val.getFullYear() - 1980 & 0x7f) << 25 // b09-16 years from 1980 - | (val.getMonth() + 1) << 21 // b05-08 month - | val.getDay() << 16 // b00-04 hour - - // 2 bytes time - | val.getHours() << 11 // b11-15 hour - | val.getMinutes() << 5 // b05-10 minute - | val.getSeconds() >> 1; // b00-04 seconds divided by 2 - } - - setTime(+new Date()); - - return { - get made () { return _verMade; }, - set made (val) { _verMade = val; }, - - get version () { return _version; }, - set version (val) { _version = val }, - - get flags () { return _flags }, - set flags (val) { _flags = val; }, - - get method () { return _method; }, - set method (val) { _method = val; }, - - get time () { return new Date( - ((_time >> 25) & 0x7f) + 1980, - ((_time >> 21) & 0x0f) - 1, - (_time >> 16) & 0x1f, - (_time >> 11) & 0x1f, - (_time >> 5) & 0x3f, - (_time & 0x1f) << 1 - ); - }, - set time (val) { - setTime(val); - }, - - get crc () { return _crc; }, - set crc (val) { _crc = val; }, - - get compressedSize () { return _compressedSize; }, - set compressedSize (val) { _compressedSize = val; }, - - get size () { return _size; }, - set size (val) { _size = val; }, - - get fileNameLength () { return _fnameLen; }, - set fileNameLength (val) { _fnameLen = val; }, - - get extraLength () { return _extraLen }, - set extraLength (val) { _extraLen = val; }, - - get commentLength () { return _comLen }, - set commentLength (val) { _comLen = val }, - - get diskNumStart () { return _diskStart }, - set diskNumStart (val) { _diskStart = val }, - - get inAttr () { return _inattr }, - set inAttr (val) { _inattr = val }, - - get attr () { return _attr }, - set attr (val) { _attr = val }, - - get offset () { return _offset }, - set offset (val) { _offset = val }, - - get encripted () { return (_flags & 1) == 1 }, - - get entryHeaderSize () { - return Constants.CENHDR + _fnameLen + _extraLen + _comLen; - }, - - get realDataOffset () { - return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen; - }, - - get dataHeader () { - return _dataHeader; - }, - - loadDataHeaderFromBinary : function(/*Buffer*/input) { - var data = input.slice(_offset, _offset + Constants.LOCHDR); - // 30 bytes and should start with "PK\003\004" - if (data.readUInt32LE(0) != Constants.LOCSIG) { - throw Utils.Errors.INVALID_LOC; - } - _dataHeader = { - // version needed to extract - version : data.readUInt16LE(Constants.LOCVER), - // general purpose bit flag - flags : data.readUInt16LE(Constants.LOCFLG), - // compression method - method : data.readUInt16LE(Constants.LOCHOW), - // modification time (2 bytes time, 2 bytes date) - time : data.readUInt32LE(Constants.LOCTIM), - // uncompressed file crc-32 value - crc : data.readUInt32LE(Constants.LOCCRC), - // compressed size - compressedSize : data.readUInt32LE(Constants.LOCSIZ), - // uncompressed size - size : data.readUInt32LE(Constants.LOCLEN), - // filename length - fnameLen : data.readUInt16LE(Constants.LOCNAM), - // extra field length - extraLen : data.readUInt16LE(Constants.LOCEXT) - } - }, - - loadFromBinary : function(/*Buffer*/data) { - // data should be 46 bytes and start with "PK 01 02" - if (data.length != Constants.CENHDR || data.readUInt32LE(0) != Constants.CENSIG) { - throw Utils.Errors.INVALID_CEN; - } - // version made by - _verMade = data.readUInt16LE(Constants.CENVEM); - // version needed to extract - _version = data.readUInt16LE(Constants.CENVER); - // encrypt, decrypt flags - _flags = data.readUInt16LE(Constants.CENFLG); - // compression method - _method = data.readUInt16LE(Constants.CENHOW); - // modification time (2 bytes time, 2 bytes date) - _time = data.readUInt32LE(Constants.CENTIM); - // uncompressed file crc-32 value - _crc = data.readUInt32LE(Constants.CENCRC); - // compressed size - _compressedSize = data.readUInt32LE(Constants.CENSIZ); - // uncompressed size - _size = data.readUInt32LE(Constants.CENLEN); - // filename length - _fnameLen = data.readUInt16LE(Constants.CENNAM); - // extra field length - _extraLen = data.readUInt16LE(Constants.CENEXT); - // file comment length - _comLen = data.readUInt16LE(Constants.CENCOM); - // volume number start - _diskStart = data.readUInt16LE(Constants.CENDSK); - // internal file attributes - _inattr = data.readUInt16LE(Constants.CENATT); - // external file attributes - _attr = data.readUInt32LE(Constants.CENATX); - // LOC header offset - _offset = data.readUInt32LE(Constants.CENOFF); - }, - - dataHeaderToBinary : function() { - // LOC header size (30 bytes) - var data = new Buffer(Constants.LOCHDR); - // "PK\003\004" - data.writeUInt32LE(Constants.LOCSIG, 0); - // version needed to extract - data.writeUInt16LE(_version, Constants.LOCVER); - // general purpose bit flag - data.writeUInt16LE(_flags, Constants.LOCFLG); - // compression method - data.writeUInt16LE(_method, Constants.LOCHOW); - // modification time (2 bytes time, 2 bytes date) - data.writeUInt32LE(_time, Constants.LOCTIM); - // uncompressed file crc-32 value - data.writeUInt32LE(_crc, Constants.LOCCRC); - // compressed size - data.writeUInt32LE(_compressedSize, Constants.LOCSIZ); - // uncompressed size - data.writeUInt32LE(_size, Constants.LOCLEN); - // filename length - data.writeUInt16LE(_fnameLen, Constants.LOCNAM); - // extra field length - data.writeUInt16LE(_extraLen, Constants.LOCEXT); - return data; - }, - - entryHeaderToBinary : function() { - // CEN header size (46 bytes) - var data = new Buffer(Constants.CENHDR + _fnameLen + _extraLen + _comLen); - // "PK\001\002" - data.writeUInt32LE(Constants.CENSIG, 0); - // version made by - data.writeUInt16LE(_verMade, Constants.CENVEM); - // version needed to extract - data.writeUInt16LE(_version, Constants.CENVER); - // encrypt, decrypt flags - data.writeUInt16LE(_flags, Constants.CENFLG); - // compression method - data.writeUInt16LE(_method, Constants.CENHOW); - // modification time (2 bytes time, 2 bytes date) - data.writeUInt32LE(_time, Constants.CENTIM); - // uncompressed file crc-32 value - data.writeInt32LE(_crc, Constants.CENCRC, true); - // compressed size - data.writeUInt32LE(_compressedSize, Constants.CENSIZ); - // uncompressed size - data.writeUInt32LE(_size, Constants.CENLEN); - // filename length - data.writeUInt16LE(_fnameLen, Constants.CENNAM); - // extra field length - data.writeUInt16LE(_extraLen, Constants.CENEXT); - // file comment length - data.writeUInt16LE(_comLen, Constants.CENCOM); - // volume number start - data.writeUInt16LE(_diskStart, Constants.CENDSK); - // internal file attributes - data.writeUInt16LE(_inattr, Constants.CENATT); - // external file attributes - data.writeUInt32LE(_attr, Constants.CENATX); - // LOC header offset - data.writeUInt32LE(_offset, Constants.CENOFF); - // fill all with - data.fill(0x00, Constants.CENHDR); - return data; - }, - - toString : function() { - return '{\n' + - '\t"made" : ' + _verMade + ",\n" + - '\t"version" : ' + _version + ",\n" + - '\t"flags" : ' + _flags + ",\n" + - '\t"method" : ' + Utils.methodToString(_method) + ",\n" + - '\t"time" : ' + _time + ",\n" + - '\t"crc" : 0x' + _crc.toString(16).toUpperCase() + ",\n" + - '\t"compressedSize" : ' + _compressedSize + " bytes,\n" + - '\t"size" : ' + _size + " bytes,\n" + - '\t"fileNameLength" : ' + _fnameLen + ",\n" + - '\t"extraLength" : ' + _extraLen + " bytes,\n" + - '\t"commentLength" : ' + _comLen + " bytes,\n" + - '\t"diskNumStart" : ' + _diskStart + ",\n" + - '\t"inAttr" : ' + _inattr + ",\n" + - '\t"attr" : ' + _attr + ",\n" + - '\t"offset" : ' + _offset + ",\n" + - '\t"entryHeaderSize" : ' + (Constants.CENHDR + _fnameLen + _extraLen + _comLen) + " bytes\n" + - '}'; - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js deleted file mode 100644 index b8c67b96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.EntryHeader = require("./entryHeader"); -exports.MainHeader = require("./mainHeader"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js deleted file mode 100644 index 002bc8a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js +++ /dev/null @@ -1,80 +0,0 @@ -var Utils = require("../util"), - Constants = Utils.Constants; - -/* The entries in the end of central directory */ -module.exports = function () { - var _volumeEntries = 0, - _totalEntries = 0, - _size = 0, - _offset = 0, - _commentLength = 0; - - return { - get diskEntries () { return _volumeEntries }, - set diskEntries (/*Number*/val) { _volumeEntries = _totalEntries = val; }, - - get totalEntries () { return _totalEntries }, - set totalEntries (/*Number*/val) { _totalEntries = _volumeEntries = val; }, - - get size () { return _size }, - set size (/*Number*/val) { _size = val; }, - - get offset () { return _offset }, - set offset (/*Number*/val) { _offset = val; }, - - get commentLength () { return _commentLength }, - set commentLength (/*Number*/val) { _commentLength = val; }, - - get mainHeaderSize () { - return Constants.ENDHDR + _commentLength; - }, - - loadFromBinary : function(/*Buffer*/data) { - // data should be 22 bytes and start with "PK 05 06" - if (data.length != Constants.ENDHDR || data.readUInt32LE(0) != Constants.ENDSIG) - throw Utils.Errors.INVALID_END; - - // number of entries on this volume - _volumeEntries = data.readUInt16LE(Constants.ENDSUB); - // total number of entries - _totalEntries = data.readUInt16LE(Constants.ENDTOT); - // central directory size in bytes - _size = data.readUInt32LE(Constants.ENDSIZ); - // offset of first CEN header - _offset = data.readUInt32LE(Constants.ENDOFF); - // zip file comment length - _commentLength = data.readUInt16LE(Constants.ENDCOM); - }, - - toBinary : function() { - var b = new Buffer(Constants.ENDHDR + _commentLength); - // "PK 05 06" signature - b.writeUInt32LE(Constants.ENDSIG, 0); - b.writeUInt32LE(0, 4); - // number of entries on this volume - b.writeUInt16LE(_volumeEntries, Constants.ENDSUB); - // total number of entries - b.writeUInt16LE(_totalEntries, Constants.ENDTOT); - // central directory size in bytes - b.writeUInt32LE(_size, Constants.ENDSIZ); - // offset of first CEN header - b.writeUInt32LE(_offset, Constants.ENDOFF); - // zip file comment length - b.writeUInt16LE(_commentLength, Constants.ENDCOM); - // fill comment memory with spaces so no garbage is left there - b.fill(" ", Constants.ENDHDR); - - return b; - }, - - toString : function() { - return '{\n' + - '\t"diskEntries" : ' + _volumeEntries + ",\n" + - '\t"totalEntries" : ' + _totalEntries + ",\n" + - '\t"size" : ' + _size + " bytes,\n" + - '\t"offset" : 0x' + _offset.toString(16).toUpperCase() + ",\n" + - '\t"commentLength" : 0x' + _commentLength + "\n" + - '}'; - } - } -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js deleted file mode 100644 index 32679434..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js +++ /dev/null @@ -1,1578 +0,0 @@ -/* - * $Id: rawdeflate.js,v 0.5 2013/04/09 14:25:38 dankogai Exp dankogai $ - * - * GNU General Public License, version 2 (GPL-2.0) - * http://opensource.org/licenses/GPL-2.0 - * Original: - * http://www.onicos.com/staff/iz/amuse/javascript/expert/deflate.txt - */ -function JSDeflater(/*inbuff*/inbuf) { - - /* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp> - * Version: 1.0.1 - * LastModified: Dec 25 1999 - */ - - var WSIZE = 32768, // Sliding Window size - zip_STORED_BLOCK = 0, - zip_STATIC_TREES = 1, - zip_DYN_TREES = 2, - zip_DEFAULT_LEVEL = 6, - zip_FULL_SEARCH = true, - zip_INBUFSIZ = 32768, // Input buffer size - zip_INBUF_EXTRA = 64, // Extra buffer - zip_OUTBUFSIZ = 1024 * 8, - zip_window_size = 2 * WSIZE, - MIN_MATCH = 3, - MAX_MATCH = 258, - zip_BITS = 16, - LIT_BUFSIZE = 0x2000, - zip_HASH_BITS = 13, - zip_DIST_BUFSIZE = LIT_BUFSIZE, - zip_HASH_SIZE = 1 << zip_HASH_BITS, - zip_HASH_MASK = zip_HASH_SIZE - 1, - zip_WMASK = WSIZE - 1, - zip_NIL = 0, // Tail of hash chains - zip_TOO_FAR = 4096, - zip_MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1, - zip_MAX_DIST = WSIZE - zip_MIN_LOOKAHEAD, - zip_SMALLEST = 1, - zip_MAX_BITS = 15, - zip_MAX_BL_BITS = 7, - zip_LENGTH_CODES = 29, - zip_LITERALS = 256, - zip_END_BLOCK = 256, - zip_L_CODES = zip_LITERALS + 1 + zip_LENGTH_CODES, - zip_D_CODES = 30, - zip_BL_CODES = 19, - zip_REP_3_6 = 16, - zip_REPZ_3_10 = 17, - zip_REPZ_11_138 = 18, - zip_HEAP_SIZE = 2 * zip_L_CODES + 1, - zip_H_SHIFT = parseInt((zip_HASH_BITS + MIN_MATCH - 1) / MIN_MATCH); - - var zip_free_queue, zip_qhead, zip_qtail, zip_initflag, zip_outbuf = null, zip_outcnt, zip_outoff, zip_complete, - zip_window, zip_d_buf, zip_l_buf, zip_prev, zip_bi_buf, zip_bi_valid, zip_block_start, zip_ins_h, zip_hash_head, - zip_prev_match, zip_match_available, zip_match_length, zip_prev_length, zip_strstart, zip_match_start, zip_eofile, - zip_lookahead, zip_max_chain_length, zip_max_lazy_match, zip_compr_level, zip_good_match, zip_nice_match, - zip_dyn_ltree, zip_dyn_dtree, zip_static_ltree, zip_static_dtree, zip_bl_tree, zip_l_desc, zip_d_desc, zip_bl_desc, - zip_bl_count, zip_heap, zip_heap_len, zip_heap_max, zip_depth, zip_length_code, zip_dist_code, zip_base_length, - zip_base_dist, zip_flag_buf, zip_last_lit, zip_last_dist, zip_last_flags, zip_flags, zip_flag_bit, zip_opt_len, - zip_static_len, zip_deflate_data, zip_deflate_pos; - - var zip_DeflateCT = function () { - this.fc = 0; // frequency count or bit string - this.dl = 0; // father node in Huffman tree or length of bit string - }; - - var zip_DeflateTreeDesc = function () { - this.dyn_tree = null; // the dynamic tree - this.static_tree = null; // corresponding static tree or NULL - this.extra_bits = null; // extra bits for each code or NULL - this.extra_base = 0; // base index for extra_bits - this.elems = 0; // max number of elements in the tree - this.max_length = 0; // max bit length for the codes - this.max_code = 0; // largest code with non zero frequency - }; - - /* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ - var zip_DeflateConfiguration = function (a, b, c, d) { - this.good_length = a; // reduce lazy search above this match length - this.max_lazy = b; // do not perform lazy search above this match length - this.nice_length = c; // quit search above this match length - this.max_chain = d; - }; - - var zip_DeflateBuffer = function () { - this.next = null; - this.len = 0; - this.ptr = new Array(zip_OUTBUFSIZ); - this.off = 0; - }; - - /* constant tables */ - var zip_extra_lbits = new Array( - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0); - var zip_extra_dbits = new Array( - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13); - var zip_extra_blbits = new Array( - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7); - var zip_bl_order = new Array( - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15); - var zip_configuration_table = new Array( - new zip_DeflateConfiguration(0, 0, 0, 0), - new zip_DeflateConfiguration(4, 4, 8, 4), - new zip_DeflateConfiguration(4, 5, 16, 8), - new zip_DeflateConfiguration(4, 6, 32, 32), - new zip_DeflateConfiguration(4, 4, 16, 16), - new zip_DeflateConfiguration(8, 16, 32, 32), - new zip_DeflateConfiguration(8, 16, 128, 128), - new zip_DeflateConfiguration(8, 32, 128, 256), - new zip_DeflateConfiguration(32, 128, 258, 1024), - new zip_DeflateConfiguration(32, 258, 258, 4096)); - - - /* routines (deflate) */ - - var zip_deflate_start = function (level) { - var i; - - if (!level) - level = zip_DEFAULT_LEVEL; - else if (level < 1) - level = 1; - else if (level > 9) - level = 9; - - zip_compr_level = level; - zip_initflag = false; - zip_eofile = false; - if (zip_outbuf != null) - return; - - zip_free_queue = zip_qhead = zip_qtail = null; - zip_outbuf = new Array(zip_OUTBUFSIZ); - zip_window = new Array(zip_window_size); - zip_d_buf = new Array(zip_DIST_BUFSIZE); - zip_l_buf = new Array(zip_INBUFSIZ + zip_INBUF_EXTRA); - zip_prev = new Array(1 << zip_BITS); - zip_dyn_ltree = new Array(zip_HEAP_SIZE); - for (i = 0; i < zip_HEAP_SIZE; i++) zip_dyn_ltree[i] = new zip_DeflateCT(); - zip_dyn_dtree = new Array(2 * zip_D_CODES + 1); - for (i = 0; i < 2 * zip_D_CODES + 1; i++) zip_dyn_dtree[i] = new zip_DeflateCT(); - zip_static_ltree = new Array(zip_L_CODES + 2); - for (i = 0; i < zip_L_CODES + 2; i++) zip_static_ltree[i] = new zip_DeflateCT(); - zip_static_dtree = new Array(zip_D_CODES); - for (i = 0; i < zip_D_CODES; i++) zip_static_dtree[i] = new zip_DeflateCT(); - zip_bl_tree = new Array(2 * zip_BL_CODES + 1); - for (i = 0; i < 2 * zip_BL_CODES + 1; i++) zip_bl_tree[i] = new zip_DeflateCT(); - zip_l_desc = new zip_DeflateTreeDesc(); - zip_d_desc = new zip_DeflateTreeDesc(); - zip_bl_desc = new zip_DeflateTreeDesc(); - zip_bl_count = new Array(zip_MAX_BITS + 1); - zip_heap = new Array(2 * zip_L_CODES + 1); - zip_depth = new Array(2 * zip_L_CODES + 1); - zip_length_code = new Array(MAX_MATCH - MIN_MATCH + 1); - zip_dist_code = new Array(512); - zip_base_length = new Array(zip_LENGTH_CODES); - zip_base_dist = new Array(zip_D_CODES); - zip_flag_buf = new Array(parseInt(LIT_BUFSIZE / 8)); - }; - - var zip_deflate_end = function () { - zip_free_queue = zip_qhead = zip_qtail = null; - zip_outbuf = null; - zip_window = null; - zip_d_buf = null; - zip_l_buf = null; - zip_prev = null; - zip_dyn_ltree = null; - zip_dyn_dtree = null; - zip_static_ltree = null; - zip_static_dtree = null; - zip_bl_tree = null; - zip_l_desc = null; - zip_d_desc = null; - zip_bl_desc = null; - zip_bl_count = null; - zip_heap = null; - zip_depth = null; - zip_length_code = null; - zip_dist_code = null; - zip_base_length = null; - zip_base_dist = null; - zip_flag_buf = null; - }; - - var zip_reuse_queue = function (p) { - p.next = zip_free_queue; - zip_free_queue = p; - }; - - var zip_new_queue = function () { - var p; - - if (zip_free_queue != null) { - p = zip_free_queue; - zip_free_queue = zip_free_queue.next; - } - else - p = new zip_DeflateBuffer(); - p.next = null; - p.len = p.off = 0; - - return p; - }; - - var zip_head1 = function (i) { - return zip_prev[WSIZE + i]; - }; - - var zip_head2 = function (i, val) { - return zip_prev[WSIZE + i] = val; - }; - - /* put_byte is used for the compressed output, put_ubyte for the - * uncompressed output. However unlzw() uses window for its - * suffix table instead of its output buffer, so it does not use put_ubyte - * (to be cleaned up). - */ - var zip_put_byte = function (c) { - zip_outbuf[zip_outoff + zip_outcnt++] = c; - if (zip_outoff + zip_outcnt == zip_OUTBUFSIZ) - zip_qoutbuf(); - }; - - /* Output a 16 bit value, lsb first */ - var zip_put_short = function (w) { - w &= 0xffff; - if (zip_outoff + zip_outcnt < zip_OUTBUFSIZ - 2) { - zip_outbuf[zip_outoff + zip_outcnt++] = (w & 0xff); - zip_outbuf[zip_outoff + zip_outcnt++] = (w >>> 8); - } else { - zip_put_byte(w & 0xff); - zip_put_byte(w >>> 8); - } - }; - - /* ========================================================================== - * Insert string s in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of s are valid - * (except for the last MIN_MATCH-1 bytes of the input file). - */ - var zip_INSERT_STRING = function () { - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) - ^ (zip_window[zip_strstart + MIN_MATCH - 1] & 0xff)) - & zip_HASH_MASK; - zip_hash_head = zip_head1(zip_ins_h); - zip_prev[zip_strstart & zip_WMASK] = zip_hash_head; - zip_head2(zip_ins_h, zip_strstart); - }; - - /* Send a code of the given tree. c and tree must not have side effects */ - var zip_SEND_CODE = function (c, tree) { - zip_send_bits(tree[c].fc, tree[c].dl); - }; - - /* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. dist_code[256] and dist_code[257] are never - * used. - */ - var zip_D_CODE = function (dist) { - return (dist < 256 ? zip_dist_code[dist] - : zip_dist_code[256 + (dist >> 7)]) & 0xff; - }; - - /* ========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ - var zip_SMALLER = function (tree, n, m) { - return tree[n].fc < tree[m].fc || - (tree[n].fc == tree[m].fc && zip_depth[n] <= zip_depth[m]); - }; - - /* ========================================================================== - * read string data - */ - var zip_read_buff = function (buff, offset, n) { - var i; - for (i = 0; i < n && zip_deflate_pos < zip_deflate_data.length; i++) - buff[offset + i] = - zip_deflate_data[zip_deflate_pos++] & 0xff; - return i; - }; - - /* ========================================================================== - * Initialize the "longest match" routines for a new file - */ - var zip_lm_init = function () { - var j; - - /* Initialize the hash table. */ - for (j = 0; j < zip_HASH_SIZE; j++) - zip_prev[WSIZE + j] = 0; - zip_max_lazy_match = zip_configuration_table[zip_compr_level].max_lazy; - zip_good_match = zip_configuration_table[zip_compr_level].good_length; - if (!zip_FULL_SEARCH) - zip_nice_match = zip_configuration_table[zip_compr_level].nice_length; - zip_max_chain_length = zip_configuration_table[zip_compr_level].max_chain; - - zip_strstart = 0; - zip_block_start = 0; - - zip_lookahead = zip_read_buff(zip_window, 0, 2 * WSIZE); - if (zip_lookahead <= 0) { - zip_eofile = true; - zip_lookahead = 0; - return; - } - zip_eofile = false; - /* Make sure that we always have enough lookahead. This is important - * if input comes from a device such as a tty. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - - /* If lookahead < MIN_MATCH, ins_h is garbage, but this is - * not important since only literal bytes will be emitted. - */ - zip_ins_h = 0; - for (j = 0; j < MIN_MATCH - 1; j++) { - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) ^ (zip_window[j] & 0xff)) & zip_HASH_MASK; - } - }; - - /* ========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - */ - var zip_longest_match = function (cur_match) { - var chain_length = zip_max_chain_length; // max hash chain length - var scanp = zip_strstart; // current string - var matchp; // matched string - var len; // length of current match - var best_len = zip_prev_length; // best match length so far - - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - var limit = (zip_strstart > zip_MAX_DIST ? zip_strstart - zip_MAX_DIST : zip_NIL); - - var strendp = zip_strstart + MAX_MATCH; - var scan_end1 = zip_window[scanp + best_len - 1]; - var scan_end = zip_window[scanp + best_len]; - - /* Do not waste too much time if we already have a good match: */ - if (zip_prev_length >= zip_good_match) - chain_length >>= 2; - - do { - matchp = cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2: - */ - if (zip_window[matchp + best_len] != scan_end || - zip_window[matchp + best_len - 1] != scan_end1 || - zip_window[matchp] != zip_window[scanp] || - zip_window[++matchp] != zip_window[scanp + 1]) { - continue; - } - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scanp += 2; - matchp++; - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - scanp < strendp); - - len = MAX_MATCH - (strendp - scanp); - scanp = strendp - MAX_MATCH; - - if (len > best_len) { - zip_match_start = cur_match; - best_len = len; - if (zip_FULL_SEARCH) { - if (len >= MAX_MATCH) break; - } else { - if (len >= zip_nice_match) break; - } - - scan_end1 = zip_window[scanp + best_len - 1]; - scan_end = zip_window[scanp + best_len]; - } - } while ((cur_match = zip_prev[cur_match & zip_WMASK]) > limit - && --chain_length != 0); - - return best_len; - }; - - /* ========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead, and sets eofile if end of input file. - * IN assertion: lookahead < MIN_LOOKAHEAD && strstart + lookahead > 0 - * OUT assertions: at least one byte has been read, or eofile is set; - * file reads are performed for at least two bytes (required for the - * translate_eol option). - */ - var zip_fill_window = function () { - var n, m; - - // Amount of free space at the end of the window. - var more = zip_window_size - zip_lookahead - zip_strstart; - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (more == -1) { - /* Very unlikely, but possible on 16 bit machine if strstart == 0 - * and lookahead == 1 (input done one byte at time) - */ - more--; - } else if (zip_strstart >= WSIZE + zip_MAX_DIST) { - /* By the IN assertion, the window is not empty so we can't confuse - * more == 0 with more == 64K on a 16 bit machine. - */ - for (n = 0; n < WSIZE; n++) - zip_window[n] = zip_window[n + WSIZE]; - - zip_match_start -= WSIZE; - zip_strstart -= WSIZE; - /* we now have strstart >= MAX_DIST: */ - zip_block_start -= WSIZE; - - for (n = 0; n < zip_HASH_SIZE; n++) { - m = zip_head1(n); - zip_head2(n, m >= WSIZE ? m - WSIZE : zip_NIL); - } - for (n = 0; n < WSIZE; n++) { - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - m = zip_prev[n]; - zip_prev[n] = (m >= WSIZE ? m - WSIZE : zip_NIL); - } - more += WSIZE; - } - // At this point, more >= 2 - if (!zip_eofile) { - n = zip_read_buff(zip_window, zip_strstart + zip_lookahead, more); - if (n <= 0) - zip_eofile = true; - else - zip_lookahead += n; - } - }; - - /* ========================================================================== - * Processes a new input file and return its compressed length. This - * function does not perform lazy evaluationof matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ - var zip_deflate_fast = function () { - while (zip_lookahead != 0 && zip_qhead == null) { - var flush; // set if current block must be flushed - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - zip_INSERT_STRING(); - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (zip_hash_head != zip_NIL && - zip_strstart - zip_hash_head <= zip_MAX_DIST) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - zip_match_length = zip_longest_match(zip_hash_head); - /* longest_match() sets match_start */ - if (zip_match_length > zip_lookahead) - zip_match_length = zip_lookahead; - } - if (zip_match_length >= MIN_MATCH) { - flush = zip_ct_tally(zip_strstart - zip_match_start, - zip_match_length - MIN_MATCH); - zip_lookahead -= zip_match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ - if (zip_match_length <= zip_max_lazy_match) { - zip_match_length--; // string at strstart already in hash table - do { - zip_strstart++; - zip_INSERT_STRING(); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH - * these bytes are garbage, but it does not matter since - * the next lookahead bytes will be emitted as literals. - */ - } while (--zip_match_length != 0); - zip_strstart++; - } else { - zip_strstart += zip_match_length; - zip_match_length = 0; - zip_ins_h = zip_window[zip_strstart] & 0xff; - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) ^ (zip_window[zip_strstart + 1] & 0xff)) & zip_HASH_MASK; - } - } else { - /* No match, output a literal byte */ - flush = zip_ct_tally(0, zip_window[zip_strstart] & 0xff); - zip_lookahead--; - zip_strstart++; - } - if (flush) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - } - }; - - var zip_deflate_better = function () { - /* Process the input block. */ - while (zip_lookahead != 0 && zip_qhead == null) { - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - zip_INSERT_STRING(); - - /* Find the longest match, discarding those <= prev_length. - */ - zip_prev_length = zip_match_length; - zip_prev_match = zip_match_start; - zip_match_length = MIN_MATCH - 1; - - if (zip_hash_head != zip_NIL && - zip_prev_length < zip_max_lazy_match && - zip_strstart - zip_hash_head <= zip_MAX_DIST) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - zip_match_length = zip_longest_match(zip_hash_head); - /* longest_match() sets match_start */ - if (zip_match_length > zip_lookahead) - zip_match_length = zip_lookahead; - - /* Ignore a length 3 match if it is too distant: */ - if (zip_match_length == MIN_MATCH && - zip_strstart - zip_match_start > zip_TOO_FAR) { - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - zip_match_length--; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (zip_prev_length >= MIN_MATCH && - zip_match_length <= zip_prev_length) { - var flush; // set if current block must be flushed - flush = zip_ct_tally(zip_strstart - 1 - zip_prev_match, - zip_prev_length - MIN_MATCH); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. - */ - zip_lookahead -= zip_prev_length - 1; - zip_prev_length -= 2; - do { - zip_strstart++; - zip_INSERT_STRING(); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH - * these bytes are garbage, but it does not matter since the - * next lookahead bytes will always be emitted as literals. - */ - } while (--zip_prev_length != 0); - zip_match_available = 0; - zip_match_length = MIN_MATCH - 1; - zip_strstart++; - if (flush) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - } else if (zip_match_available != 0) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - if (zip_ct_tally(0, zip_window[zip_strstart - 1] & 0xff)) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - zip_strstart++; - zip_lookahead--; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - zip_match_available = 1; - zip_strstart++; - zip_lookahead--; - } - - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - } - }; - - var zip_init_deflate = function () { - if (zip_eofile) - return; - zip_bi_buf = 0; - zip_bi_valid = 0; - zip_ct_init(); - zip_lm_init(); - - zip_qhead = null; - zip_outcnt = 0; - zip_outoff = 0; - zip_match_available = 0; - - if (zip_compr_level <= 3) { - zip_prev_length = MIN_MATCH - 1; - zip_match_length = 0; - } - else { - zip_match_length = MIN_MATCH - 1; - zip_match_available = 0; - zip_match_available = 0; - } - - zip_complete = false; - }; - - /* ========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ - var zip_deflate_internal = function (buff, off, buff_size) { - var n; - - if (!zip_initflag) { - zip_init_deflate(); - zip_initflag = true; - if (zip_lookahead == 0) { // empty - zip_complete = true; - return 0; - } - } - - if ((n = zip_qcopy(buff, off, buff_size)) == buff_size) - return buff_size; - - if (zip_complete) - return n; - - if (zip_compr_level <= 3) // optimized for speed - zip_deflate_fast(); - else - zip_deflate_better(); - if (zip_lookahead == 0) { - if (zip_match_available != 0) - zip_ct_tally(0, zip_window[zip_strstart - 1] & 0xff); - zip_flush_block(1); - zip_complete = true; - } - return n + zip_qcopy(buff, n + off, buff_size - n); - }; - - var zip_qcopy = function (buff, off, buff_size) { - var n, i, j; - - n = 0; - while (zip_qhead != null && n < buff_size) { - i = buff_size - n; - if (i > zip_qhead.len) - i = zip_qhead.len; - for (j = 0; j < i; j++) - buff[off + n + j] = zip_qhead.ptr[zip_qhead.off + j]; - - zip_qhead.off += i; - zip_qhead.len -= i; - n += i; - if (zip_qhead.len == 0) { - var p; - p = zip_qhead; - zip_qhead = zip_qhead.next; - zip_reuse_queue(p); - } - } - - if (n == buff_size) - return n; - - if (zip_outoff < zip_outcnt) { - i = buff_size - n; - if (i > zip_outcnt - zip_outoff) - i = zip_outcnt - zip_outoff; - // System.arraycopy(outbuf, outoff, buff, off + n, i); - for (j = 0; j < i; j++) - buff[off + n + j] = zip_outbuf[zip_outoff + j]; - zip_outoff += i; - n += i; - if (zip_outcnt == zip_outoff) - zip_outcnt = zip_outoff = 0; - } - return n; - }; - - /* ========================================================================== - * Allocate the match buffer, initialize the various tables and save the - * location of the internal file attribute (ascii/binary) and method - * (DEFLATE/STORE). - */ - var zip_ct_init = function () { - var n; // iterates over tree elements - var bits; // bit counter - var length; // length value - var code; // code value - var dist; // distance index - - if (zip_static_dtree[0].dl != 0) return; // ct_init already called - - zip_l_desc.dyn_tree = zip_dyn_ltree; - zip_l_desc.static_tree = zip_static_ltree; - zip_l_desc.extra_bits = zip_extra_lbits; - zip_l_desc.extra_base = zip_LITERALS + 1; - zip_l_desc.elems = zip_L_CODES; - zip_l_desc.max_length = zip_MAX_BITS; - zip_l_desc.max_code = 0; - - zip_d_desc.dyn_tree = zip_dyn_dtree; - zip_d_desc.static_tree = zip_static_dtree; - zip_d_desc.extra_bits = zip_extra_dbits; - zip_d_desc.extra_base = 0; - zip_d_desc.elems = zip_D_CODES; - zip_d_desc.max_length = zip_MAX_BITS; - zip_d_desc.max_code = 0; - - zip_bl_desc.dyn_tree = zip_bl_tree; - zip_bl_desc.static_tree = null; - zip_bl_desc.extra_bits = zip_extra_blbits; - zip_bl_desc.extra_base = 0; - zip_bl_desc.elems = zip_BL_CODES; - zip_bl_desc.max_length = zip_MAX_BL_BITS; - zip_bl_desc.max_code = 0; - - // Initialize the mapping length (0..255) -> length code (0..28) - length = 0; - for (code = 0; code < zip_LENGTH_CODES - 1; code++) { - zip_base_length[code] = length; - for (n = 0; n < (1 << zip_extra_lbits[code]); n++) - zip_length_code[length++] = code; - } - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - zip_length_code[length - 1] = code; - - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - dist = 0; - for (code = 0; code < 16; code++) { - zip_base_dist[code] = dist; - for (n = 0; n < (1 << zip_extra_dbits[code]); n++) { - zip_dist_code[dist++] = code; - } - } - dist >>= 7; // from now on, all distances are divided by 128 - for (; code < zip_D_CODES; code++) { - zip_base_dist[code] = dist << 7; - for (n = 0; n < (1 << (zip_extra_dbits[code] - 7)); n++) - zip_dist_code[256 + dist++] = code; - } - // Construct the codes of the static literal tree - for (bits = 0; bits <= zip_MAX_BITS; bits++) - zip_bl_count[bits] = 0; - n = 0; - while (n <= 143) { - zip_static_ltree[n++].dl = 8; - zip_bl_count[8]++; - } - while (n <= 255) { - zip_static_ltree[n++].dl = 9; - zip_bl_count[9]++; - } - while (n <= 279) { - zip_static_ltree[n++].dl = 7; - zip_bl_count[7]++; - } - while (n <= 287) { - zip_static_ltree[n++].dl = 8; - zip_bl_count[8]++; - } - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - zip_gen_codes(zip_static_ltree, zip_L_CODES + 1); - - /* The static distance tree is trivial: */ - for (n = 0; n < zip_D_CODES; n++) { - zip_static_dtree[n].dl = 5; - zip_static_dtree[n].fc = zip_bi_reverse(n, 5); - } - - // Initialize the first block of the first file: - zip_init_block(); - }; - - /* ========================================================================== - * Initialize a new block. - */ - var zip_init_block = function () { - var n; // iterates over tree elements - - // Initialize the trees. - for (n = 0; n < zip_L_CODES; n++) zip_dyn_ltree[n].fc = 0; - for (n = 0; n < zip_D_CODES; n++) zip_dyn_dtree[n].fc = 0; - for (n = 0; n < zip_BL_CODES; n++) zip_bl_tree[n].fc = 0; - - zip_dyn_ltree[zip_END_BLOCK].fc = 1; - zip_opt_len = zip_static_len = 0; - zip_last_lit = zip_last_dist = zip_last_flags = 0; - zip_flags = 0; - zip_flag_bit = 1; - }; - - /* ========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ - var zip_pqdownheap = function (tree, // the tree to restore - k) { // node to move down - var v = zip_heap[k]; - var j = k << 1; // left son of k - - while (j <= zip_heap_len) { - // Set j to the smallest of the two sons: - if (j < zip_heap_len && - zip_SMALLER(tree, zip_heap[j + 1], zip_heap[j])) - j++; - - // Exit if v is smaller than both sons - if (zip_SMALLER(tree, v, zip_heap[j])) - break; - - // Exchange v with the smallest son - zip_heap[k] = zip_heap[j]; - k = j; - - // And continue down the tree, setting j to the left son of k - j <<= 1; - } - zip_heap[k] = v; - }; - - /* ========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ - var zip_gen_bitlen = function (desc) { // the tree descriptor - var tree = desc.dyn_tree; - var extra = desc.extra_bits; - var base = desc.extra_base; - var max_code = desc.max_code; - var max_length = desc.max_length; - var stree = desc.static_tree; - var h; // heap index - var n, m; // iterate over the tree elements - var bits; // bit length - var xbits; // extra bits - var f; // frequency - var overflow = 0; // number of elements with bit length too large - - for (bits = 0; bits <= zip_MAX_BITS; bits++) - zip_bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[zip_heap[zip_heap_max]].dl = 0; // root of the heap - - for (h = zip_heap_max + 1; h < zip_HEAP_SIZE; h++) { - n = zip_heap[h]; - bits = tree[tree[n].dl].dl + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n].dl = bits; - // We overwrite tree[n].dl which is no longer needed - - if (n > max_code) - continue; // not a leaf node - - zip_bl_count[bits]++; - xbits = 0; - if (n >= base) - xbits = extra[n - base]; - f = tree[n].fc; - zip_opt_len += f * (bits + xbits); - if (stree != null) - zip_static_len += f * (stree[n].dl + xbits); - } - if (overflow == 0) - return; - - // This happens for example on obj2 and pic of the Calgary corpus - - // Find the first bit length which could increase: - do { - bits = max_length - 1; - while (zip_bl_count[bits] == 0) - bits--; - zip_bl_count[bits]--; // move one leaf down the tree - zip_bl_count[bits + 1] += 2; // move one overflow item as its brother - zip_bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = zip_bl_count[bits]; - while (n != 0) { - m = zip_heap[--h]; - if (m > max_code) - continue; - if (tree[m].dl != bits) { - zip_opt_len += (bits - tree[m].dl) * tree[m].fc; - tree[m].fc = bits; - } - n--; - } - } - }; - - /* ========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ - var zip_gen_codes = function (tree, // the tree to decorate - max_code) { // largest code with non zero frequency - var next_code = new Array(zip_MAX_BITS + 1); // next code value for each bit length - var code = 0; // running code value - var bits; // bit index - var n; // code index - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= zip_MAX_BITS; bits++) { - code = ((code + zip_bl_count[bits - 1]) << 1); - next_code[bits] = code; - } - - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - for (n = 0; n <= max_code; n++) { - var len = tree[n].dl; - if (len == 0) - continue; - // Now reverse the bits - tree[n].fc = zip_bi_reverse(next_code[len]++, len); - } - }; - - /* ========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ - var zip_build_tree = function (desc) { // the tree descriptor - var tree = desc.dyn_tree; - var stree = desc.static_tree; - var elems = desc.elems; - var n, m; // iterate over heap elements - var max_code = -1; // largest code with non zero frequency - var node = elems; // next internal node of the tree - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - zip_heap_len = 0; - zip_heap_max = zip_HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].fc != 0) { - zip_heap[++zip_heap_len] = max_code = n; - zip_depth[n] = 0; - } else - tree[n].dl = 0; - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (zip_heap_len < 2) { - var xnew = zip_heap[++zip_heap_len] = (max_code < 2 ? ++max_code : 0); - tree[xnew].fc = 1; - zip_depth[xnew] = 0; - zip_opt_len--; - if (stree != null) - zip_static_len -= stree[xnew].dl; - // new is 0 or 1 so it does not have extra bits - } - desc.max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = zip_heap_len >> 1; n >= 1; n--) - zip_pqdownheap(tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - do { - n = zip_heap[zip_SMALLEST]; - zip_heap[zip_SMALLEST] = zip_heap[zip_heap_len--]; - zip_pqdownheap(tree, zip_SMALLEST); - - m = zip_heap[zip_SMALLEST]; // m = node of next least frequency - - // keep the nodes sorted by frequency - zip_heap[--zip_heap_max] = n; - zip_heap[--zip_heap_max] = m; - - // Create a new node father of n and m - tree[node].fc = tree[n].fc + tree[m].fc; - if (zip_depth[n] > zip_depth[m] + 1) - zip_depth[node] = zip_depth[n]; - else - zip_depth[node] = zip_depth[m] + 1; - tree[n].dl = tree[m].dl = node; - - // and insert the new node in the heap - zip_heap[zip_SMALLEST] = node++; - zip_pqdownheap(tree, zip_SMALLEST); - - } while (zip_heap_len >= 2); - - zip_heap[--zip_heap_max] = zip_heap[zip_SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - zip_gen_bitlen(desc); - - // The field len is now set, we can generate the bit codes - zip_gen_codes(tree, max_code); - }; - - /* ========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. Updates opt_len to take into account the repeat - * counts. (The contribution of the bit length codes will be added later - * during the construction of bl_tree.) - */ - var zip_scan_tree = function (tree,// the tree to be scanned - max_code) { // and its largest code of non zero frequency - var n; // iterates over all tree elements - var prevlen = -1; // last emitted length - var curlen; // length of current code - var nextlen = tree[0].dl; // length of next code - var count = 0; // repeat count of the current code - var max_count = 7; // max repeat count - var min_count = 4; // min repeat count - - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } - tree[max_code + 1].dl = 0xffff; // guard - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].dl; - if (++count < max_count && curlen == nextlen) - continue; - else if (count < min_count) - zip_bl_tree[curlen].fc += count; - else if (curlen != 0) { - if (curlen != prevlen) - zip_bl_tree[curlen].fc++; - zip_bl_tree[zip_REP_3_6].fc++; - } else if (count <= 10) - zip_bl_tree[zip_REPZ_3_10].fc++; - else - zip_bl_tree[zip_REPZ_11_138].fc++; - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - }; - - /* ========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ - var zip_send_tree = function (tree, // the tree to be scanned - max_code) { // and its largest code of non zero frequency - var n; // iterates over all tree elements - var prevlen = -1; // last emitted length - var curlen; // length of current code - var nextlen = tree[0].dl; // length of next code - var count = 0; // repeat count of the current code - var max_count = 7; // max repeat count - var min_count = 4; // min repeat count - - /* tree[max_code+1].dl = -1; */ - /* guard already set */ - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].dl; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { - zip_SEND_CODE(curlen, zip_bl_tree); - } while (--count != 0); - } else if (curlen != 0) { - if (curlen != prevlen) { - zip_SEND_CODE(curlen, zip_bl_tree); - count--; - } - // Assert(count >= 3 && count <= 6, " 3_6?"); - zip_SEND_CODE(zip_REP_3_6, zip_bl_tree); - zip_send_bits(count - 3, 2); - } else if (count <= 10) { - zip_SEND_CODE(zip_REPZ_3_10, zip_bl_tree); - zip_send_bits(count - 3, 3); - } else { - zip_SEND_CODE(zip_REPZ_11_138, zip_bl_tree); - zip_send_bits(count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - }; - - /* ========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ - var zip_build_bl_tree = function () { - var max_blindex; // index of last bit length code of non zero freq - - // Determine the bit length frequencies for literal and distance trees - zip_scan_tree(zip_dyn_ltree, zip_l_desc.max_code); - zip_scan_tree(zip_dyn_dtree, zip_d_desc.max_code); - - // Build the bit length tree: - zip_build_tree(zip_bl_desc); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = zip_BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (zip_bl_tree[zip_bl_order[max_blindex]].dl != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - zip_opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - return max_blindex; - }; - - /* ========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ - var zip_send_all_trees = function (lcodes, dcodes, blcodes) { // number of codes for each tree - var rank; // index in bl_order - zip_send_bits(lcodes - 257, 5); // not +255 as stated in appnote.txt - zip_send_bits(dcodes - 1, 5); - zip_send_bits(blcodes - 4, 4); // not -3 as stated in appnote.txt - for (rank = 0; rank < blcodes; rank++) { - zip_send_bits(zip_bl_tree[zip_bl_order[rank]].dl, 3); - } - - // send the literal tree - zip_send_tree(zip_dyn_ltree, lcodes - 1); - - // send the distance tree - zip_send_tree(zip_dyn_dtree, dcodes - 1); - }; - - /* ========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ - var zip_flush_block = function (eof) { // true if this is the last block for a file - var opt_lenb, static_lenb; // opt_len and static_len in bytes - var max_blindex; // index of last bit length code of non zero freq - var stored_len; // length of input block - - stored_len = zip_strstart - zip_block_start; - zip_flag_buf[zip_last_flags] = zip_flags; // Save the flags for the last 8 items - - // Construct the literal and distance trees - zip_build_tree(zip_l_desc); - zip_build_tree(zip_d_desc); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = zip_build_bl_tree(); - - // Determine the best encoding. Compute first the block length in bytes - opt_lenb = (zip_opt_len + 3 + 7) >> 3; - static_lenb = (zip_static_len + 3 + 7) >> 3; - if (static_lenb <= opt_lenb) - opt_lenb = static_lenb; - if (stored_len + 4 <= opt_lenb // 4: two words for the lengths - && zip_block_start >= 0) { - var i; - - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - zip_send_bits((zip_STORED_BLOCK << 1) + eof, 3); - /* send block type */ - zip_bi_windup(); - /* align on byte boundary */ - zip_put_short(stored_len); - zip_put_short(~stored_len); - - // copy block - for (i = 0; i < stored_len; i++) - zip_put_byte(zip_window[zip_block_start + i]); - - } else if (static_lenb == opt_lenb) { - zip_send_bits((zip_STATIC_TREES << 1) + eof, 3); - zip_compress_block(zip_static_ltree, zip_static_dtree); - } else { - zip_send_bits((zip_DYN_TREES << 1) + eof, 3); - zip_send_all_trees(zip_l_desc.max_code + 1, - zip_d_desc.max_code + 1, - max_blindex + 1); - zip_compress_block(zip_dyn_ltree, zip_dyn_dtree); - } - - zip_init_block(); - - if (eof != 0) - zip_bi_windup(); - }; - - /* ========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ - var zip_ct_tally = function (dist, // distance of matched string - lc) { // match length-MIN_MATCH or unmatched char (if dist==0) - zip_l_buf[zip_last_lit++] = lc; - if (dist == 0) { - // lc is the unmatched char - zip_dyn_ltree[lc].fc++; - } else { - // Here, lc is the match length - MIN_MATCH - dist--; // dist = match distance - 1 - zip_dyn_ltree[zip_length_code[lc] + zip_LITERALS + 1].fc++; - zip_dyn_dtree[zip_D_CODE(dist)].fc++; - - zip_d_buf[zip_last_dist++] = dist; - zip_flags |= zip_flag_bit; - } - zip_flag_bit <<= 1; - - // Output the flags if they fill a byte - if ((zip_last_lit & 7) == 0) { - zip_flag_buf[zip_last_flags++] = zip_flags; - zip_flags = 0; - zip_flag_bit = 1; - } - // Try to guess if it is profitable to stop the current block here - if (zip_compr_level > 2 && (zip_last_lit & 0xfff) == 0) { - // Compute an upper bound for the compressed length - var out_length = zip_last_lit * 8; - var in_length = zip_strstart - zip_block_start; - var dcode; - - for (dcode = 0; dcode < zip_D_CODES; dcode++) { - out_length += zip_dyn_dtree[dcode].fc * (5 + zip_extra_dbits[dcode]); - } - out_length >>= 3; - if (zip_last_dist < parseInt(zip_last_lit / 2) && - out_length < parseInt(in_length / 2)) - return true; - } - return (zip_last_lit == LIT_BUFSIZE - 1 || - zip_last_dist == zip_DIST_BUFSIZE); - /* We avoid equality with LIT_BUFSIZE because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ - }; - - /* ========================================================================== - * Send the block data compressed using the given Huffman trees - */ - var zip_compress_block = function (ltree, // literal tree - dtree) { // distance tree - var dist; // distance of matched string - var lc; // match length or unmatched char (if dist == 0) - var lx = 0; // running index in l_buf - var dx = 0; // running index in d_buf - var fx = 0; // running index in flag_buf - var flag = 0; // current flags - var code; // the code to send - var extra; // number of extra bits to send - - if (zip_last_lit != 0) do { - if ((lx & 7) == 0) - flag = zip_flag_buf[fx++]; - lc = zip_l_buf[lx++] & 0xff; - if ((flag & 1) == 0) { - zip_SEND_CODE(lc, ltree); - /* send a literal byte */ - } else { - // Here, lc is the match length - MIN_MATCH - code = zip_length_code[lc]; - zip_SEND_CODE(code + zip_LITERALS + 1, ltree); // send the length code - extra = zip_extra_lbits[code]; - if (extra != 0) { - lc -= zip_base_length[code]; - zip_send_bits(lc, extra); // send the extra length bits - } - dist = zip_d_buf[dx++]; - // Here, dist is the match distance - 1 - code = zip_D_CODE(dist); - zip_SEND_CODE(code, dtree); // send the distance code - extra = zip_extra_dbits[code]; - if (extra != 0) { - dist -= zip_base_dist[code]; - zip_send_bits(dist, extra); // send the extra distance bits - } - } // literal or match pair ? - flag >>= 1; - } while (lx < zip_last_lit); - - zip_SEND_CODE(zip_END_BLOCK, ltree); - }; - - /* ========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ - var zip_Buf_size = 16; // bit size of bi_buf - var zip_send_bits = function (value, // value to send - length) { // number of bits - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (zip_bi_valid > zip_Buf_size - length) { - zip_bi_buf |= (value << zip_bi_valid); - zip_put_short(zip_bi_buf); - zip_bi_buf = (value >> (zip_Buf_size - zip_bi_valid)); - zip_bi_valid += length - zip_Buf_size; - } else { - zip_bi_buf |= value << zip_bi_valid; - zip_bi_valid += length; - } - }; - - /* ========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ - var zip_bi_reverse = function (code, // the value to invert - len) { // its bit length - var res = 0; - do { - res |= code & 1; - code >>= 1; - res <<= 1; - } while (--len > 0); - return res >> 1; - }; - - /* ========================================================================== - * Write out any remaining bits in an incomplete byte. - */ - var zip_bi_windup = function () { - if (zip_bi_valid > 8) { - zip_put_short(zip_bi_buf); - } else if (zip_bi_valid > 0) { - zip_put_byte(zip_bi_buf); - } - zip_bi_buf = 0; - zip_bi_valid = 0; - }; - - var zip_qoutbuf = function () { - if (zip_outcnt != 0) { - var q, i; - q = zip_new_queue(); - if (zip_qhead == null) - zip_qhead = zip_qtail = q; - else - zip_qtail = zip_qtail.next = q; - q.len = zip_outcnt - zip_outoff; - for (i = 0; i < q.len; i++) - q.ptr[i] = zip_outbuf[zip_outoff + i]; - zip_outcnt = zip_outoff = 0; - } - }; - - function deflate(buffData, level) { - zip_deflate_data = buffData; - zip_deflate_pos = 0; - zip_deflate_start(level); - - var buff = new Array(1024), - pages = [], - totalSize = 0, - i; - - for (i = 0; i < 1024; i++) buff[i] = 0; - while ((i = zip_deflate_internal(buff, 0, buff.length)) > 0) { - var buf = new Buffer(buff.slice(0, i)); - pages.push(buf); - totalSize += buf.length; - } - - if (pages.length == 1) { - return pages[0]; - } - - var result = new Buffer(totalSize), - index = 0; - - for (i = 0; i < pages.length; i++) { - pages[i].copy(result, index); - index = index + pages[i].length - } - - return result; - } - - return { - deflate: function () { - return deflate(inbuf, 8); - } - } -} - -module.exports = function (/*Buffer*/inbuf) { - - var zlib = require("zlib"); - - return { - deflate: function () { - return new JSDeflater(inbuf).deflate(); - }, - - deflateAsync: function (/*Function*/callback) { - var tmp = zlib.createDeflateRaw({chunkSize:(parseInt(inbuf.length / 1024) + 1)*1024}), - parts = [], total = 0; - tmp.on('data', function(data) { - parts.push(data); - total += data.length; - }); - tmp.on('end', function() { - var buf = new Buffer(total), written = 0; - buf.fill(0); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - part.copy(buf, written); - written += part.length; - } - callback && callback(buf); - }); - tmp.end(inbuf); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js deleted file mode 100644 index ddcbba60..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.Deflater = require("./deflater"); -exports.Inflater = require("./inflater"); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js deleted file mode 100644 index 59536c90..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js +++ /dev/null @@ -1,448 +0,0 @@ -var Buffer = require("buffer").Buffer; - -function JSInflater(/*Buffer*/input) { - - var WSIZE = 0x8000, - slide = new Buffer(0x10000), - windowPos = 0, - fixedTableList = null, - fixedTableDist, - fixedLookup, - bitBuf = 0, - bitLen = 0, - method = -1, - eof = false, - copyLen = 0, - copyDist = 0, - tblList, tblDist, bitList, bitdist, - - inputPosition = 0, - - MASK_BITS = [0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff], - LENS = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], - LEXT = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99], - DISTS = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], - DEXT = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], - BITORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - - function HuffTable(clen, cnum, cval, blist, elist, lookupm) { - - this.status = 0; - this.root = null; - this.maxbit = 0; - - var el, f, tail, - offsets = [], - countTbl = [], - sTbl = [], - values = [], - tentry = {extra: 0, bitcnt: 0, lbase: 0, next: null}; - - tail = this.root = null; - for(var i = 0; i < 0x11; i++) { countTbl[i] = 0; sTbl[i] = 0; offsets[i] = 0; } - for(i = 0; i < 0x120; i++) values[i] = 0; - - el = cnum > 256 ? clen[256] : 16; - - var pidx = -1; - while (++pidx < cnum) countTbl[clen[pidx]]++; - - if(countTbl[0] == cnum) return; - - for(var j = 1; j <= 16; j++) if(countTbl[j] != 0) break; - var bitLen = j; - for(i = 16; i != 0; i--) if(countTbl[i] != 0) break; - var maxLen = i; - - lookupm < j && (lookupm = j); - - var dCodes = 1 << j; - for(; j < i; j++, dCodes <<= 1) - if((dCodes -= countTbl[j]) < 0) { - this.status = 2; - this.maxbit = lookupm; - return; - } - - if((dCodes -= countTbl[i]) < 0) { - this.status = 2; - this.maxbit = lookupm; - return; - } - - countTbl[i] += dCodes; - offsets[1] = j = 0; - pidx = 1; - var xp = 2; - while(--i > 0) offsets[xp++] = (j += countTbl[pidx++]); - pidx = 0; - i = 0; - do { - (j = clen[pidx++]) && (values[offsets[j]++] = i); - } while(++i < cnum); - cnum = offsets[maxLen]; - offsets[0] = i = 0; - pidx = 0; - - var level = -1, - w = sTbl[0] = 0, - cnode = null, - tblCnt = 0, - tblStack = []; - - for(; bitLen <= maxLen; bitLen++) { - var kccnt = countTbl[bitLen]; - while(kccnt-- > 0) { - while(bitLen > w + sTbl[1 + level]) { - w += sTbl[1 + level]; - level++; - tblCnt = (tblCnt = maxLen - w) > lookupm ? lookupm : tblCnt; - if((f = 1 << (j = bitLen - w)) > kccnt + 1) { - f -= kccnt + 1; - xp = bitLen; - while(++j < tblCnt) { - if((f <<= 1) <= countTbl[++xp]) break; - f -= countTbl[xp]; - } - } - if(w + j > el && w < el) j = el - w; - tblCnt = 1 << j; - sTbl[1 + level] = j; - cnode = []; - while (cnode.length < tblCnt) cnode.push({extra: 0, bitcnt: 0, lbase: 0, next: null}); - if (tail == null) { - tail = this.root = {next:null, list:null}; - } else { - tail = tail.next = {next:null, list:null} - } - tail.next = null; - tail.list = cnode; - - tblStack[level] = cnode; - - if(level > 0) { - offsets[level] = i; - tentry.bitcnt = sTbl[level]; - tentry.extra = 16 + j; - tentry.next = cnode; - j = (i & ((1 << w) - 1)) >> (w - sTbl[level]); - - tblStack[level-1][j].extra = tentry.extra; - tblStack[level-1][j].bitcnt = tentry.bitcnt; - tblStack[level-1][j].lbase = tentry.lbase; - tblStack[level-1][j].next = tentry.next; - } - } - tentry.bitcnt = bitLen - w; - if(pidx >= cnum) - tentry.extra = 99; - else if(values[pidx] < cval) { - tentry.extra = (values[pidx] < 256 ? 16 : 15); - tentry.lbase = values[pidx++]; - } else { - tentry.extra = elist[values[pidx] - cval]; - tentry.lbase = blist[values[pidx++] - cval]; - } - - f = 1 << (bitLen - w); - for(j = i >> w; j < tblCnt; j += f) { - cnode[j].extra = tentry.extra; - cnode[j].bitcnt = tentry.bitcnt; - cnode[j].lbase = tentry.lbase; - cnode[j].next = tentry.next; - } - for(j = 1 << (bitLen - 1); (i & j) != 0; j >>= 1) - i ^= j; - i ^= j; - while((i & ((1 << w) - 1)) != offsets[level]) { - w -= sTbl[level]; - level--; - } - } - } - - this.maxbit = sTbl[1]; - this.status = ((dCodes != 0 && maxLen != 1) ? 1 : 0); - } - - function addBits(n) { - while(bitLen < n) { - bitBuf |= input[inputPosition++] << bitLen; - bitLen += 8; - } - return bitBuf; - } - - function cutBits(n) { - bitLen -= n; - return bitBuf >>= n; - } - - function maskBits(n) { - while(bitLen < n) { - bitBuf |= input[inputPosition++] << bitLen; - bitLen += 8; - } - var res = bitBuf & MASK_BITS[n]; - bitBuf >>= n; - bitLen -= n; - return res; - } - - function codes(buff, off, size) { - var e, t; - if(size == 0) return 0; - - var n = 0; - for(;;) { - t = tblList.list[addBits(bitList) & MASK_BITS[bitList]]; - e = t.extra; - while(e > 16) { - if(e == 99) return -1; - cutBits(t.bitcnt); - e -= 16; - t = t.next[addBits(e) & MASK_BITS[e]]; - e = t.extra; - } - cutBits(t.bitcnt); - if(e == 16) { - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = t.lbase; - if(n == size) return size; - continue; - } - if(e == 15) break; - - copyLen = t.lbase + maskBits(e); - t = tblDist.list[addBits(bitdist) & MASK_BITS[bitdist]]; - e = t.extra; - - while(e > 16) { - if(e == 99) return -1; - cutBits(t.bitcnt); - e -= 16; - t = t.next[addBits(e) & MASK_BITS[e]]; - e = t.extra - } - cutBits(t.bitcnt); - copyDist = windowPos - t.lbase - maskBits(e); - - while(copyLen > 0 && n < size) { - copyLen--; - copyDist &= WSIZE - 1; - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = slide[copyDist++]; - } - - if(n == size) return size; - } - - method = -1; // done - return n; - } - - function stored(buff, off, size) { - cutBits(bitLen & 7); - var n = maskBits(0x10); - if(n != ((~maskBits(0x10)) & 0xffff)) return -1; - copyLen = n; - - n = 0; - while(copyLen > 0 && n < size) { - copyLen--; - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = maskBits(8); - } - - if(copyLen == 0) method = -1; - return n; - } - - function fixed(buff, off, size) { - var fixed_bd = 0; - if(fixedTableList == null) { - var lengths = []; - - for(var symbol = 0; symbol < 144; symbol++) lengths[symbol] = 8; - for(; symbol < 256; symbol++) lengths[symbol] = 9; - for(; symbol < 280; symbol++) lengths[symbol] = 7; - for(; symbol < 288; symbol++) lengths[symbol] = 8; - - fixedLookup = 7; - - var htbl = new HuffTable(lengths, 288, 257, LENS, LEXT, fixedLookup); - - if(htbl.status != 0) return -1; - - fixedTableList = htbl.root; - fixedLookup = htbl.maxbit; - - for(symbol = 0; symbol < 30; symbol++) lengths[symbol] = 5; - fixed_bd = 5; - - htbl = new HuffTable(lengths, 30, 0, DISTS, DEXT, fixed_bd); - if(htbl.status > 1) { - fixedTableList = null; - return -1; - } - fixedTableDist = htbl.root; - fixed_bd = htbl.maxbit; - } - - tblList = fixedTableList; - tblDist = fixedTableDist; - bitList = fixedLookup; - bitdist = fixed_bd; - return codes(buff, off, size); - } - - function dynamic(buff, off, size) { - var ll = new Array(0x023C); - - for (var m = 0; m < 0x023C; m++) ll[m] = 0; - - var llencnt = 257 + maskBits(5), - dcodescnt = 1 + maskBits(5), - bitlencnt = 4 + maskBits(4); - - if(llencnt > 286 || dcodescnt > 30) return -1; - - for(var j = 0; j < bitlencnt; j++) ll[BITORDER[j]] = maskBits(3); - for(; j < 19; j++) ll[BITORDER[j]] = 0; - - // build decoding table for trees--single level, 7 bit lookup - bitList = 7; - var hufTable = new HuffTable(ll, 19, 19, null, null, bitList); - if(hufTable.status != 0) - return -1; // incomplete code set - - tblList = hufTable.root; - bitList = hufTable.maxbit; - var lencnt = llencnt + dcodescnt, - i = 0, - lastLen = 0; - while(i < lencnt) { - var hufLcode = tblList.list[addBits(bitList) & MASK_BITS[bitList]]; - j = hufLcode.bitcnt; - cutBits(j); - j = hufLcode.lbase; - if(j < 16) - ll[i++] = lastLen = j; - else if(j == 16) { - j = 3 + maskBits(2); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = lastLen; - } else if(j == 17) { - j = 3 + maskBits(3); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = 0; - lastLen = 0; - } else { - j = 11 + maskBits(7); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = 0; - lastLen = 0; - } - } - bitList = 9; - hufTable = new HuffTable(ll, llencnt, 257, LENS, LEXT, bitList); - bitList == 0 && (hufTable.status = 1); - - if (hufTable.status != 0) return -1; - - tblList = hufTable.root; - bitList = hufTable.maxbit; - - for(i = 0; i < dcodescnt; i++) ll[i] = ll[i + llencnt]; - bitdist = 6; - hufTable = new HuffTable(ll, dcodescnt, 0, DISTS, DEXT, bitdist); - tblDist = hufTable.root; - bitdist = hufTable.maxbit; - - if((bitdist == 0 && llencnt > 257) || hufTable.status != 0) return -1; - - return codes(buff, off, size); - } - - return { - inflate : function(/*Buffer*/outputBuffer) { - tblList = null; - - var size = outputBuffer.length, - offset = 0, i; - - while(offset < size) { - if(eof && method == -1) return; - if(copyLen > 0) { - if(method != 0) { - while(copyLen > 0 && offset < size) { - copyLen--; - copyDist &= WSIZE - 1; - windowPos &= WSIZE - 1; - outputBuffer[offset++] = (slide[windowPos++] = slide[copyDist++]); - } - } else { - while(copyLen > 0 && offset < size) { - copyLen--; - windowPos &= WSIZE - 1; - outputBuffer[offset++] = (slide[windowPos++] = maskBits(8)); - } - copyLen == 0 && (method = -1); // done - } - if (offset == size) return; - } - - if(method == -1) { - if(eof) break; - eof = maskBits(1) != 0; - method = maskBits(2); - tblList = null; - copyLen = 0; - } - switch(method) { - case 0: i = stored(outputBuffer, offset, size - offset); break; - case 1: i = tblList != null ? codes(outputBuffer, offset, size - offset) : fixed(outputBuffer, offset, size - offset); break; - case 2: i = tblList != null ? codes(outputBuffer, offset, size - offset) : dynamic(outputBuffer, offset, size - offset); break; - default: i = -1; break; - } - - if(i == -1) return; - offset += i; - } - } - }; -} - -module.exports = function(/*Buffer*/inbuf) { - var zlib = require("zlib"); - return { - inflateAsync : function(/*Function*/callback) { - var tmp = zlib.createInflateRaw(), - parts = [], total = 0; - tmp.on('data', function(data) { - parts.push(data); - total += data.length; - }); - tmp.on('end', function() { - var buf = new Buffer(total), written = 0; - buf.fill(0); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - part.copy(buf, written); - written += part.length; - } - callback && callback(buf); - }); - tmp.end(inbuf) - }, - - inflate : function(/*Buffer*/outputBuffer) { - var x = { - x: new JSInflater(inbuf) - }; - x.x.inflate(outputBuffer); - delete(x.x); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json deleted file mode 100644 index 6f8f7597..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "adm-zip", - "version": "0.4.4", - "description": "A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk", - "keywords": [ - "zip", - "methods", - "archive", - "unzip" - ], - "homepage": "http://github.com/cthackers/adm-zip", - "author": { - "name": "Nasca Iacob", - "email": "sy@another-d-mention.ro", - "url": "https://github.com/cthackers" - }, - "bugs": { - "url": "https://github.com/cthackers/adm-zip/issues", - "email": "sy@another-d-mention.ro" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/cthackers/adm-zip/master/MIT-LICENSE.txt" - } - ], - "main": "adm-zip.js", - "repository": { - "type": "git", - "url": "https://github.com/cthackers/adm-zip.git" - }, - "engines": { - "node": ">=0.3.0" - }, - "readme": "# ADM-ZIP for NodeJS\r\n\r\nADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). \r\n\r\n# Installation\r\n\r\nWith [npm](http://npmjs.org) do:\r\n\r\n $ npm install adm-zip\r\n\t\r\n## What is it good for?\r\nThe library allows you to:\r\n\r\n* decompress zip files directly to disk or in memory buffers\r\n* compress files and store them to disk in .zip format or in compressed buffers\r\n* update content of/add new/delete files from an existing .zip\r\n\r\n# Dependencies\r\nThere are no other nodeJS libraries that ADM-ZIP is dependent of\r\n\r\n# Examples\r\n\r\n## Basic usage\r\n```javascript\r\n\r\n\tvar AdmZip = require('adm-zip');\r\n\r\n\t// reading archives\r\n\tvar zip = new AdmZip(\"./my_file.zip\");\r\n\tvar zipEntries = zip.getEntries(); // an array of ZipEntry records\r\n\r\n\tzipEntries.forEach(function(zipEntry) {\r\n\t console.log(zipEntry.toString()); // outputs zip entries information\r\n\t\tif (zipEntry.entryName == \"my_file.txt\") {\r\n\t\t console.log(zipEntry.data.toString('utf8')); \r\n\t\t}\r\n\t});\r\n\t// outputs the content of some_folder/my_file.txt\r\n\tconsole.log(zip.readAsText(\"some_folder/my_file.txt\")); \r\n\t// extracts the specified file to the specified location\r\n\tzip.extractEntryTo(/*entry name*/\"some_folder/my_file.txt\", /*target path*/\"/home/me/tempfolder\", /*maintainEntryPath*/false, /*overwrite*/true);\r\n\t// extracts everything\r\n\tzip.extractAllTo(/*target path*/\"/home/me/zipcontent/\", /*overwrite*/true);\r\n\t\r\n\t\r\n\t// creating archives\r\n\tvar zip = new AdmZip();\r\n\t\r\n\t// add file directly\r\n\tzip.addFile(\"test.txt\", new Buffer(\"inner content of the file\"), \"entry comment goes here\");\r\n\t// add local file\r\n\tzip.addLocalFile(\"/home/me/some_picture.png\");\r\n\t// get everything as a buffer\r\n\tvar willSendthis = zip.toBuffer();\r\n\t// or write everything to disk\r\n\tzip.writeZip(/*target file name*/\"/home/me/files.zip\");\r\n\t\r\n\t\r\n\t// ... more examples in the wiki\r\n```\r\n\r\nFor more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki).\r\n\r\n[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip)\r\n", - "readmeFilename": "README.md", - "_id": "adm-zip@0.4.4", - "_from": "adm-zip@~0.4.3" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip deleted file mode 100644 index d57bfc075800e3f49b0a3e0ceca9a199d82c4c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4189 zcmWIWW@h1H00FMbOb0LnN(cby#FCPt%%swi)Z%y`F3}HwtL8vcErLaLVsQ!{9hx|F z_@$OBgrruKD7fS&m*%GCmFSgJlprkrS%K<IIV{E`<s{~1E2L%Sq@wEmgQiy&x8D4m zl++?5*DIj;R~m~}kjv8$8buhG7&sWjfEtf9@wEjpF);jNW?)douQ4MtB_%Zv<m}kM zvwgD-1onLvSv)6-Gxz;o%Lgp08zvT-ot@agxsIc6L*|zJ`;wFHUJY|{nm6-({xYM_ zSF7^xvRpfykXBsReEN>h!4ktSn++dSWwfX5n<3HEoL1F5d!{YZ9ZQq4O_y1vGVZ?B zJ#^AQp|`wthxz7%5Ba3t$7V}EX+F30^i`jQoJ+3XzF6@?jE#Brug)7a@vc^vdnV3p zsCuuv<F>&L)dM*-GjhFU3~#KIo!)1&XS;j#R)5x}^WThE<P~2&GGzSO^YE3`?aTMq zY|J}dxuvdS;bxcGI3_V$(P(2quHruh#udhWf<_Tv_NM(U*?w-qS7}`noA4(qi{$To z%@%sSxNfHU6cg=b#XB~Ie(cX=4$at8{`kc^k+r44>6#P&OS(!$pS}6lG<%w<oR8ju ztL>~-2i|^Ob$*)stiqPfm3lm-Z$$!M+Me_IWcT1<uJNI>XIJ0*Zx|n7|2W|ETsxzq zj#mOSe`*EIJJfdd$Gsy3B36^xc`X)3tn^nXKX6L;k5H-<^Z!`Qxa$g`DqULQGTDoK zJ~?Zhvds|;_u}2D(c%`Q+sHCMr0Kd#Si#hkA1Tojxof)?&%K~p_-+Xkn`m&9O8Xqm z6@05EnY#ZJ$@C6<C$j28)AV1gp&Qx$h{^|~>zw!0N@6cre?nemla=Pi^Cl@q{+43f zW#(?oJtrR|p>=YmMv_P5!EZILo+*KXy|#A_8a@tDvTciB)T*QDrsTc$gJiPTQu_t& zfuAL22$|}pEKd=1-{R+TVk%3aYW;=_s~(<qEoiydKC529=~QH2OvSuUr+>!%V+3U) z?1@s3m_!+0l$w~5pO;fPnmR{QCp}ZAI{wr-nk+{P&4DO12_(zn{M=Mn6J)e5AFa!& zU6(U5i7?=5xvKz6Ob`II;Xwes9nZy}02XItkYL!5|8C>gzh@X>w1M9C*&u#^H^K(Y z);_Wg*jf*uwm-5h1>LM0K&Haz3BqA32-%{^0J8<;+5{j*_Xo%pto;RiR>Pct>_N<4 z1+vx4u~?1T$3V94z`N1~Ag`g*$o66OL}2!TqU<ql`yky5Wa|WGJzWg44xL7}4zu@y zY@Hk<X2>G-Wsog<a4hx|$TAoWOEeJ6us1GMq0z|5pak?+IDX3z{U2m&9S$Bm0J1hg z!TS(0jn7&=xV6eaYu^C7Ug)U@$&V0gQChfI?O*PH0&G8&#%I4e+<rx%{atK$?MH6I zV6*tcC!wPti(xcz7ApWPR^-HMF>)=1&Ef@>M>m5khS34utU#XtM+<<kf`x%$2R8$Q YI73NBX0ZYg<yL}w-3rP1xuBjq04-@*$N&HU diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip deleted file mode 100644 index f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPu^^f#DxB1A{7ljTxCK zDXDoNXU7Jf?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)iF=(-fonmF@8a6u=O(1Aj^*S$ zTk-7o>`Q0FU+*myj^J;e>HC@Q`ObMwFOy!RCm;BFf$wXLnIQ}N*DrkG#?>(ezAN6Q zEH}P#Vb|;GmdS|@67PQ%tWIw}EPLhN?rYaN*ym<X@1E%-+p&K8;*TG6dDzUZCMSQc zRekAW>sIDu!hBwR$4!GBst0mvX5@NH7~WVZJH5}uX1;s%Mt-)a`EM&Z?3^wfUCew* z^6=5pZOivZ=EhD>+fvuDa5KwY9md)7X04r>!Cm{Oz_`M=Pf#i1%HFEK>+|L+zMR4P z$zJKxm7TorKHcp68o2+Aa8Qy)%Jsw)?Z@($*<M|!cz^8T-4ju-mz|rW{NK3C#O`YE z@9Z%B)wVNY99EWdmNbMO`MauL-TumB4&I{mjf(5%DrMQeU9fxUM@Ihq*MjTv;(qSC zRpa<?inHqXUnfM^107dBne9=*BpsHxxAUP!i59<9fzw8(`3~<IMb&?(cB!!a+a0oJ zmBT8JC#h-{-&{7H=IhjmOYE+0y)vOQCWGawP{#*GRf~6T6`yBKPdd3xN%)tDd-X!@ zLwCGcdAycwxgl$`Y=O;+pfH)2!Y#Tk8^cc=Dvo<0o^n*~gSpNEugGbFp-1>u#7(rj zaq`oWBiXAIr$!#yxbx|Xo?PR)<xau7dpd2}TAsd{dPQ?W$08-E-K(3EPpx#V;n_b| zY?Fetb!0|sYLDL3e-XA_UB?ehS)nmu@1#nZz&Se_l{uQKS@$mvxRUK4FMd#P6@SJr zP7cm=$)tysUH;Fjf3m|eF=pD-BPMOe7o{eq<mcs7jwaI4L^=S8R2_dJ9Zj91Md$z) zp#)NAaei(ptX(o%!H-t(G^*eknd}*Gwdz%X<tGS$+V>!U-UjDlPymZFGDt9l|M}3p z*6=JNjDGOyJ(wThjoSth24owsH7P*-0%TiM+99^UXyF71A7Trx-UG}QkZTiw7~LNr zTd?*ekgYE0X5H}h?-@pz)i4^_YRn!7venD6SdH5MK(_C|yV3<9`<N^tUWC!e0gBm6 zf!PO&vd6gXgLFNRtrM8_bTP;}({&K*U^KFI=>0xvl=zcl#0*)aeh#u_PJe%b69<fj zB^rcfm@Q6KxMfN}e}&_>4AD12w$|a`!2=*a8asUjTMwi0S*r)PRvBpRXJEGsJ@p{@ z5n?S$vlpBFtAf9Q?T69$>{o}|uL!h%1{+@cky|v_ELKeY4z?IZ6KAmk&|))AycQ!@ dR@f|tMKp{K@MZ=2gn@wz2rF0^7_M-GcmP+qZUz7V diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip deleted file mode 100644 index f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPu^^f#DxB1A{7ljTxCK zDXDoNXU7Jf?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)iF=(-fonmF@8a6u=O(1Aj^*S$ zTk-7o>`Q0FU+*myj^J;e>HC@Q`ObMwFOy!RCm;BFf$wXLnIQ}N*DrkG#?>(ezAN6Q zEH}P#Vb|;GmdS|@67PQ%tWIw}EPLhN?rYaN*ym<X@1E%-+p&K8;*TG6dDzUZCMSQc zRekAW>sIDu!hBwR$4!GBst0mvX5@NH7~WVZJH5}uX1;s%Mt-)a`EM&Z?3^wfUCew* z^6=5pZOivZ=EhD>+fvuDa5KwY9md)7X04r>!Cm{Oz_`M=Pf#i1%HFEK>+|L+zMR4P z$zJKxm7TorKHcp68o2+Aa8Qy)%Jsw)?Z@($*<M|!cz^8T-4ju-mz|rW{NK3C#O`YE z@9Z%B)wVNY99EWdmNbMO`MauL-TumB4&I{mjf(5%DrMQeU9fxUM@Ihq*MjTv;(qSC zRpa<?inHqXUnfM^107dBne9=*BpsHxxAUP!i59<9fzw8(`3~<IMb&?(cB!!a+a0oJ zmBT8JC#h-{-&{7H=IhjmOYE+0y)vOQCWGawP{#*GRf~6T6`yBKPdd3xN%)tDd-X!@ zLwCGcdAycwxgl$`Y=O;+pfH)2!Y#Tk8^cc=Dvo<0o^n*~gSpNEugGbFp-1>u#7(rj zaq`oWBiXAIr$!#yxbx|Xo?PR)<xau7dpd2}TAsd{dPQ?W$08-E-K(3EPpx#V;n_b| zY?Fetb!0|sYLDL3e-XA_UB?ehS)nmu@1#nZz&Se_l{uQKS@$mvxRUK4FMd#P6@SJr zP7cm=$)tysUH;Fjf3m|eF=pD-BPMOe7o{eq<mcs7jwaI4L^=S8R2_dJ9Zj91Md$z) zp#)NAaei(ptX(o%!H-t(G^*eknd}*Gwdz%X<tGS$+V>!U-UjDlPymZFGDt9l|M}3p z*6=JNjDGOyJ(wThjoSth24owsH7P*-0%TiM+99^UXyF71A7Trx-UG}QkZTiw7~LNr zTd?*ekgYE0X5H}h?-@pz)i4^_YRn!7venD6SdH5MK(_C|yV3<9`<N^tUWC!e0gBm6 zf!PO&vd6gXgLFNRtrM8_bTP;}({&K*U^KFI=>0xvl=zcl#0*)aeh#u_PJe%b69<fj zB^rcfm@Q6KxMfN}e}&_>4AD12w$|a`!2=*a8asUjTMwi0S*r)PRvBpRXJEGsJ@p{@ z5n?S$vlpBFtAf9Q?T69$>{o}|uL!h%1{+@cky|v_ELKeY4z?IZ6KAmk&|))AycQ!@ dR@f|tMKp{K@MZ=2gn@wz2rF0^7_M-GcmP+qZUz7V diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip deleted file mode 100644 index 188eccbe8bdb2b5b288857de8a397b77ff8e7414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmWIWW@Zs#U|`^2P@7ZZFx{>BaWati9*FrEWEe_Pi%axDgkExfURr1fCj+yAMzOy( z5SLbPGcdBeU}j(d6I0I|<ZLkDakyB$`~_1P^FiAq&Q}7Me3dg@3aUhxT$mmAzunx; zNHaw3`LPw7^8fM5uJNfXYM*p)&V}!93wvx9PusoumgEef6sbiXJ|`SBbq<M6)!}lx z)U@^AVV-W&bHe)s#RGs&<pMg4fk7PTR4@Zdu)>@QcA+THb;_774De=Tl4Hi@R|&9D zj6iZrBZ!Iab5@AY(R>Xt6PKePW->4cF#L5~4Kp(|1ZWh<i5Nz)vVkmS0>b$~`W1-7 F004HEX6gU{ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip deleted file mode 100644 index 86a8ec776107c075ce2c7f803472aa97dc25cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4086 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKug#8$f#DxB1A{7ljTxCK zDXDoNXNLrOXB{!%x%*orDNL7T*LzK_x2!VJeW5bi5k-gZ?Avsb=Zu!4|9kcN#M_=N zJD50Aa(3KH%-*MUj5Wxa#ZO>UzO>!~o_+To9#C_85NaE`O1grh=FZ&QEHlZ6OP1$n zoEF@}!TxC(`$Xsa8&_R_IDN%}1GCdwZht?zW3T_@j(rxZ3^uT{sAoP~cOhU)poA26 z0Pj-w(;r&6-<DYNR4vwBZ6W-&>GYYM2hL5r^yAT*(l1*lJYiMheYtftZz>OSSaPqN z{2hl4BI#T$OmpHcos|uc+iv*(wTqEj`m?`VIXk`ghHgG`vXke~<&Wacw^G)r>$RQ_ z)Gg>Wkvh4&*q-g@)c*x#Grum_6m>;1(eA*<nyc(8H>Wdc$FU#Iu+Qs}E4{VhzkYX4 zkaAn1#-8(<N7fv^<JdVh;>yMz9sgOW(_5XqZ~qRqG+=f<I9vVCzUA}h$J_t;eVe_e zw(k3$`s6rUd!dlX9Cy_RT&_=#H8RC)*tM@`!)Dh^wtvosw;4AvJY$ZtXcv63RpTnx zBIbNm!^+;zbD|#XIrL<o4qK<WS^KO8_IrUoTMwIEvfOo~Q~0(aA9wV-Gp-^6T&q6b z5z?Bn%vGzhrXc6po)yb4xZPYg@0IC-+1x7xgI@(Qn{_YRYd>SD%&BaXj!8_Fg-RYh z!HeWd`ApTH<hC?OuPfPgMAJ%TUpagAlDJouFY?W%y-BvPo4rfspv&9DyE`v&tcdyT zBsMiyW=UkZM|(;9vdKm3q~_@<RlN#($=KpBV@~MZKPCHK%foUiW&+eBCIQA5r6#82 z=jBw6ro_>dNUM~njz1-iCc)9dkk*AEfh1U*pPLG6MvT_SqxCT*^)VxpJp-<mwhFK$ z1OZT+8wAkX#as*uU~xtU35M`LAG+5Xo@Ip54_>_o^8>tb+aSV#Yy-9y0I02wY>P@e z#1<GWoB-iNY{Au{huH#hZ2}OZ`vYVP*7iNJ)dk(G8@~QM!w9n)Mk8B|*$Y6ndN~%W zQTqhQ_8oXvx&UM!lO@E9Fd8{PF?$X$`#@3l7`J_p?f|lN0<)ej23cpi4q_dQMz#*U zFD8u=e{zhNA&b=aK(@^3?@w^zfYGo-gRl&<fv5_%ObO_(aQv1b`YXuRIvhNB0OUtw zr>|h^VKhE#_2AYj1FgLQ>?)zB9wa|PtVL<1VzYl$@HepiFdCoz>TvrNf%Ye{;k6&R zZGz2W#nkU$i(xcz7ApWPe#(K@V&obLo5iq*hS34utU#YIFmM531q%a11~-TY0JSC= A-v9sr diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip deleted file mode 100644 index b4602c94ee000ee54c71c9302b9db956b3fd9f0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4170 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPvB~f#DxB1A{7ljTxCK zDXDoNXQu|9?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)i93_p4ke3CzKi$N9zW;5dzFZ0 zMcTgoGox;9F7ul$xurQUvUJbEliN0j*K#$7a-Ctgd*jw*uY=MV&!uCglyVrj-+vW( zUOi)>@$~4X$#pJL>1_46YY#n?i+b*}Jo-uVy^_<BXZL+|%)c<X=)=)|uCTMr8-Gc; zR$cY$oTvC@p6-q;`&mbuL(fIuW$hFBa>v)ZUoP&g=ls%;9f#N2_1;tU*kv)*ZNBCl z-}UVu)+enwT{LHlbnuJP1$KIJ-FhO{rpj7Rex&JGnEG-WWqgs{^slshzT@je^A-Oi zCUQ@GopEk{TH)oB8*WIdh93FC7A_`Qzw%tNY9D{vtTUpE7rxwiU2)>?c`8EDZ!i7{ zGxY9Z-~2JdG-8MRgHO9&ZGL*JY}SJna@@hTbt((L^dvX$`CL(P*RR0P?8RU4&%9rY zxp?oNvK17GVBY#bUT3l78jt4pp<LB!#rq~V2sed%VyNL>Vs(H&ELHQu{H+UonPXJe ztl@Uscx;vL#?ujB`Ld6M#yB1HQkxi3<Zw`3bg{33_R1SieyC)J8B}^q)}0*s;7$=E zOO}$#?KfOX3+{E!G8cJjyku>}R?!ts-ccvbLyk&a;IDC*Jb4jE5a-Q>)q;Nxwq0jG zc(0h#Qs1cSsHtmuO6&y%QRiH)L#ITHf+m$q1<FLaG$r$wZ#bW+!D`#Izc*#iAqkIo z&&Km2!CXI^-bFeGD>RuVDn=hXZE~=bjfG!@G5q2Qp>W>+aV+kSs;^%VS4^2Aa^kAO zkIO&r{bPV-U(8ggM@*`WFG@{J$<NEF98I31$&;?hQyqWu98H&_#pZw%n*`Ejaei(p ztQ9g^osU-MRIkn%nd}*Gwcb^LWhMxK+VLQO-qz+~PymZFGDt9l|M}3p*6=JNjDGOy zJ(wThjoSth24owsH6TFke`H%!+99^UXyF71A7TrxUINS(kZTiw7~LNrTd?*SkgYE0 zX5H}h?-@pz)i4^_YRsMmvenD6SdH4xK(_C|yV3<9`<N^tUWC!e0gBlhf!PO&vd6gX zgLE;FtrM8_bTP;}({&K*U^KFI=>0osl=zcl#0*)a{tU8ZPJe%b69<fjB^rcfnC(kd zxMfN}e}&_>4ABQdw$|a`!2=*a8asUjTMwi0S*r)PRvBpRTVVGKJ@p{@5n?S$BNv<f ztAf9Q?T69$>{o}|uL!iihYhd&$gLP`7AvNH2U`rIiL+P%Xt4?>UW<{dDQp(QA{s^q Vc(Ve1!oa`<gcU3d412giJOGZ1Gxh)g diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip deleted file mode 100644 index e2add30dc0e3129dc89e20a71abe7314052d0002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5878 zcmeI0PmkMF5Wv0tgTRNXf(jv3RMVxaQprk%5C^!hPU38=b!^La8Wst)PW-ZY;MgnM zVRvu90S^5Fh!YYABqS<6LMw5E?|?vDH~^P|Dz%82=Q!(Rlh8ZPt~2rToB7SmvqtZY zy?gfDC5b-ozISh1{Fr`SMCoT)!uykqrML0QZrUqnla0mMei{f3Sy+7bW4<kZOuufR zT&7{NL-5#92F-Xd8M7#>Wk(r-b2E=Vnm2Q0iJ5-rM<2kDhpf=eLwvlT`|@htI1E^_ zCf>_SRLS$<iDK^Wix~FzpIrF#pR<xg*VcN)5f1_u3Ab4?=4r~~2zUx3mazUY>?eMd zu|R=g!WhIu7>xX6pDB>V;77-Bz>*Xd;(q4yh)4V2!yrC5mT_h_LNjSR%ntp8;p71P zG>r$`M|%)VbM0ruqs*o7YBpl9=}t8^ZwN@h{7~i*T4PW=f<vB-;z<Sxz9R`AkPQWR zGzcdF`A|F#`Iu)pfz%VeKgv=WJ)fi)0r{!GI1c!bBokpBO!^^DM+yX-Ow+5VKuUuH z7LgXlaWhUJWnn0z1&)4;SWmnYb0|NU8{|(@l+wuIC?3y8!c%!TNg_mIQgB8PW6A{a zeKyEwggnPZ4&y@#Z4gHRr+Cx1WZA<<en0+@iC9E<5XBj~D$*?$Ksb@F>hw`M^1~4N zY??6S@<^tkA{>lv(oZv7c<zUA5GR7S7-kLmZ4F$j<@HoY1KkDNv2N*2tqGf|i}#xf z^mMOnbv?itj%s>)V6{Ls_h45yn+j;}*pBA9U^%khu?=0rG2Lt!-KK8tKppi=%L7C2 z=pGvNEFj?2l&+y(3p$$9XrpDdt{b|yr^qecGs$MlazF)Jbv(V%HB<-eu47xShWI9$ zHFdM)AVuqFrdLBMj)8UyZ@_J<hCwJ<?V|S%`3DWl-gESwwg+v?XlgiE*U&SyZfH3Q zgK8M6-cg{bcGMm6&H)RpI5JJky@Os`qaos{_}}n!%cL+GmgzZot6-FlH&gBDuBL$M z=q@Fs<yaj>rgWkPT1O+OXKJ|>O0`JPY(;PiC9I1<7rsDKQw_9*%VW+hU+tveEf$d4 z(-e@~3G;(E3XiKwQdN?wl2nxhi-xpVNv^N2BvlEiHY3$$q}q&VYc?bQQ9{yq%x1^1 z>O7-Bb)Eq_tySll|KE9L<ILOAs!r22+MeKtdQS9N><h^fi17{SC8_uL&%58g_Txq& zfBNkYac}RgCR~!rgk>iv>Q$8~*FMWBg?!;oexFlTb+if!d3y)1#W;wvw7*qGAKX3v z-NPq8Y!v81meHrXU}f~zOVIN@u`=)e?~^ZycjnDJ#6p%6db)E~@My_?S<TDaVP)LK zFMj=saBtkpafK}77JHGG=hpAa#_7zKdT(V|{mCQoaul+7Y09}=+!k-mV4E0MZ$0d! zUsuL%KX`DTVtl>+P~Z!>4qKaHUqS5W=hw!VW9Lr!%lO~8e+hme*YU5<_*aqt^K)zY w<+H&u@KyG=02lJ<z<}Vb3v0pU9mO(mvCxIIch5hARwWt#j?PKa=y|&P7yOI$IRF3v diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip deleted file mode 100644 index 86a8ec776107c075ce2c7f803472aa97dc25cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4086 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKug#8$f#DxB1A{7ljTxCK zDXDoNXNLrOXB{!%x%*orDNL7T*LzK_x2!VJeW5bi5k-gZ?Avsb=Zu!4|9kcN#M_=N zJD50Aa(3KH%-*MUj5Wxa#ZO>UzO>!~o_+To9#C_85NaE`O1grh=FZ&QEHlZ6OP1$n zoEF@}!TxC(`$Xsa8&_R_IDN%}1GCdwZht?zW3T_@j(rxZ3^uT{sAoP~cOhU)poA26 z0Pj-w(;r&6-<DYNR4vwBZ6W-&>GYYM2hL5r^yAT*(l1*lJYiMheYtftZz>OSSaPqN z{2hl4BI#T$OmpHcos|uc+iv*(wTqEj`m?`VIXk`ghHgG`vXke~<&Wacw^G)r>$RQ_ z)Gg>Wkvh4&*q-g@)c*x#Grum_6m>;1(eA*<nyc(8H>Wdc$FU#Iu+Qs}E4{VhzkYX4 zkaAn1#-8(<N7fv^<JdVh;>yMz9sgOW(_5XqZ~qRqG+=f<I9vVCzUA}h$J_t;eVe_e zw(k3$`s6rUd!dlX9Cy_RT&_=#H8RC)*tM@`!)Dh^wtvosw;4AvJY$ZtXcv63RpTnx zBIbNm!^+;zbD|#XIrL<o4qK<WS^KO8_IrUoTMwIEvfOo~Q~0(aA9wV-Gp-^6T&q6b z5z?Bn%vGzhrXc6po)yb4xZPYg@0IC-+1x7xgI@(Qn{_YRYd>SD%&BaXj!8_Fg-RYh z!HeWd`ApTH<hC?OuPfPgMAJ%TUpagAlDJouFY?W%y-BvPo4rfspv&9DyE`v&tcdyT zBsMiyW=UkZM|(;9vdKm3q~_@<RlN#($=KpBV@~MZKPCHK%foUiW&+eBCIQA5r6#82 z=jBw6ro_>dNUM~njz1-iCc)9dkk*AEfh1U*pPLG6MvT_SqxCT*^)VxpJp-<mwhFK$ z1OZT+8wAkX#as*uU~xtU35M`LAG+5Xo@Ip54_>_o^8>tb+aSV#Yy-9y0I02wY>P@e z#1<GWoB-iNY{Au{huH#hZ2}OZ`vYVP*7iNJ)dk(G8@~QM!w9n)Mk8B|*$Y6ndN~%W zQTqhQ_8oXvx&UM!lO@E9Fd8{PF?$X$`#@3l7`J_p?f|lN0<)ej23cpi4q_dQMz#*U zFD8u=e{zhNA&b=aK(@^3?@w^zfYGo-gRl&<fv5_%ObO_(aQv1b`YXuRIvhNB0OUtw zr>|h^VKhE#_2AYj1FgLQ>?)zB9wa|PtVL<1VzYl$@HepiFdCoz>TvrNf%Ye{;k6&R zZGz2W#nkU$i(xcz7ApWPe#(K@V&obLo5iq*hS34utU#YIFmM531q%a11~-TY0JSC= A-v9sr diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js deleted file mode 100644 index 70acb517..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var Attr = require("../util").FileAttr, - Zip = require("../adm-zip"), - fs = require("fs"); - -//zip.addLocalFile("./test/readonly.txt"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js deleted file mode 100644 index 05480541..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js +++ /dev/null @@ -1,84 +0,0 @@ -module.exports = { - /* The local file header */ - LOCHDR : 30, // LOC header size - LOCSIG : 0x04034b50, // "PK\003\004" - LOCVER : 4, // version needed to extract - LOCFLG : 6, // general purpose bit flag - LOCHOW : 8, // compression method - LOCTIM : 10, // modification time (2 bytes time, 2 bytes date) - LOCCRC : 14, // uncompressed file crc-32 value - LOCSIZ : 18, // compressed size - LOCLEN : 22, // uncompressed size - LOCNAM : 26, // filename length - LOCEXT : 28, // extra field length - - /* The Data descriptor */ - EXTSIG : 0x08074b50, // "PK\007\008" - EXTHDR : 16, // EXT header size - EXTCRC : 4, // uncompressed file crc-32 value - EXTSIZ : 8, // compressed size - EXTLEN : 12, // uncompressed size - - /* The central directory file header */ - CENHDR : 46, // CEN header size - CENSIG : 0x02014b50, // "PK\001\002" - CENVEM : 4, // version made by - CENVER : 6, // version needed to extract - CENFLG : 8, // encrypt, decrypt flags - CENHOW : 10, // compression method - CENTIM : 12, // modification time (2 bytes time, 2 bytes date) - CENCRC : 16, // uncompressed file crc-32 value - CENSIZ : 20, // compressed size - CENLEN : 24, // uncompressed size - CENNAM : 28, // filename length - CENEXT : 30, // extra field length - CENCOM : 32, // file comment length - CENDSK : 34, // volume number start - CENATT : 36, // internal file attributes - CENATX : 38, // external file attributes (host system dependent) - CENOFF : 42, // LOC header offset - - /* The entries in the end of central directory */ - ENDHDR : 22, // END header size - ENDSIG : 0x06054b50, // "PK\005\006" - ENDSUB : 8, // number of entries on this disk - ENDTOT : 10, // total number of entries - ENDSIZ : 12, // central directory size in bytes - ENDOFF : 16, // offset of first CEN header - ENDCOM : 20, // zip file comment length - - /* Compression methods */ - STORED : 0, // no compression - SHRUNK : 1, // shrunk - REDUCED1 : 2, // reduced with compression factor 1 - REDUCED2 : 3, // reduced with compression factor 2 - REDUCED3 : 4, // reduced with compression factor 3 - REDUCED4 : 5, // reduced with compression factor 4 - IMPLODED : 6, // imploded - // 7 reserved - DEFLATED : 8, // deflated - ENHANCED_DEFLATED: 9, // enhanced deflated - PKWARE : 10,// PKWare DCL imploded - // 11 reserved - BZIP2 : 12, // compressed using BZIP2 - // 13 reserved - LZMA : 14, // LZMA - // 15-17 reserved - IBM_TERSE : 18, // compressed using IBM TERSE - IBM_LZ77 : 19, //IBM LZ77 z - - /* General purpose bit flag */ - FLG_ENC : 0, // encripted file - FLG_COMP1 : 1, // compression option - FLG_COMP2 : 2, // compression option - FLG_DESC : 4, // data descriptor - FLG_ENH : 8, // enhanced deflation - FLG_STR : 16, // strong encryption - FLG_LNG : 1024, // language encoding - FLG_MSK : 4096, // mask header values - - /* Load type */ - FILE : 0, - BUFFER : 1, - NONE : 2 -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js deleted file mode 100644 index db5d69e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - /* Header error messages */ - "INVALID_LOC" : "Invalid LOC header (bad signature)", - "INVALID_CEN" : "Invalid CEN header (bad signature)", - "INVALID_END" : "Invalid END header (bad signature)", - - /* ZipEntry error messages*/ - "NO_DATA" : "Nothing to decompress", - "BAD_CRC" : "CRC32 checksum failed", - "FILE_IN_THE_WAY" : "There is a file in the way: %s", - "UNKNOWN_METHOD" : "Invalid/unsupported compression method", - - /* Inflater error messages */ - "AVAIL_DATA" : "inflate::Available inflate data did not terminate", - "INVALID_DISTANCE" : "inflate::Invalid literal/length or distance code in fixed or dynamic block", - "TO_MANY_CODES" : "inflate::Dynamic block code description: too many length or distance codes", - "INVALID_REPEAT_LEN" : "inflate::Dynamic block code description: repeat more than specified lengths", - "INVALID_REPEAT_FIRST" : "inflate::Dynamic block code description: repeat lengths with no first length", - "INCOMPLETE_CODES" : "inflate::Dynamic block code description: code lengths codes incomplete", - "INVALID_DYN_DISTANCE": "inflate::Dynamic block code description: invalid distance code lengths", - "INVALID_CODES_LEN": "inflate::Dynamic block code description: invalid literal/length code lengths", - "INVALID_STORE_BLOCK" : "inflate::Stored block length did not match one's complement", - "INVALID_BLOCK_TYPE" : "inflate::Invalid block type (type == 3)", - - /* ADM-ZIP error messages */ - "CANT_EXTRACT_FILE" : "Could not extract the file", - "CANT_OVERRIDE" : "Target file already exists", - "NO_ZIP" : "No zip file was loaded", - "NO_ENTRY" : "Entry doesn't exist", - "DIRECTORY_CONTENT_ERROR" : "A directory cannot have content", - "FILE_NOT_FOUND" : "File not found: %s", - "NOT_IMPLEMENTED" : "Not implemented", - "INVALID_FILENAME" : "Invalid filename", - "INVALID_FORMAT" : "Invalid or unsupported zip format. No END header found" -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js deleted file mode 100644 index 2191ec1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js +++ /dev/null @@ -1,84 +0,0 @@ -var fs = require("fs"), - pth = require("path"); - -fs.existsSync = fs.existsSync || pth.existsSync; - -module.exports = function(/*String*/path) { - - var _path = path || "", - _permissions = 0, - _obj = newAttr(), - _stat = null; - - function newAttr() { - return { - directory : false, - readonly : false, - hidden : false, - executable : false, - mtime : 0, - atime : 0 - } - } - - if (_path && fs.existsSync(_path)) { - _stat = fs.statSync(_path); - _obj.directory = _stat.isDirectory(); - _obj.mtime = _stat.mtime; - _obj.atime = _stat.atime; - _obj.executable = !!(1 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); - _obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); - _obj.hidden = pth.basename(_path)[0] === "."; - } else { - console.warn("Invalid path: " + _path) - } - - return { - - get directory () { - return _obj.directory; - }, - - get readOnly () { - return _obj.readonly; - }, - - get hidden () { - return _obj.hidden; - }, - - get mtime () { - return _obj.mtime; - }, - - get atime () { - return _obj.atime; - }, - - - get executable () { - return _obj.executable; - }, - - decodeAttributes : function(val) { - - }, - - encodeAttributes : function (val) { - - }, - - toString : function() { - return '{\n' + - '\t"path" : "' + _path + ",\n" + - '\t"isDirectory" : ' + _obj.directory + ",\n" + - '\t"isReadOnly" : ' + _obj.readonly + ",\n" + - '\t"isHidden" : ' + _obj.hidden + ",\n" + - '\t"isExecutable" : ' + _obj.executable + ",\n" + - '\t"mTime" : ' + _obj.mtime + "\n" + - '\t"aTime" : ' + _obj.atime + "\n" + - '}'; - } - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js deleted file mode 100644 index 935fc1a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = require("./utils"); -module.exports.Constants = require("./constants"); -module.exports.Errors = require("./errors"); -module.exports.FileAttr = require("./fattr"); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js deleted file mode 100644 index b14db8c1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js +++ /dev/null @@ -1,145 +0,0 @@ -var fs = require("fs"), - pth = require('path'); - -fs.existsSync = fs.existsSync || pth.existsSync; - -module.exports = (function() { - - var crcTable = [], - Constants = require('./constants'), - Errors = require('./errors'), - - PATH_SEPARATOR = pth.normalize("/"); - - - function mkdirSync(/*String*/path) { - var resolvedPath = path.split(PATH_SEPARATOR)[0]; - path.split(PATH_SEPARATOR).forEach(function(name) { - if (!name || name.substr(-1,1) == ":") return; - resolvedPath += PATH_SEPARATOR + name; - var stat; - try { - stat = fs.statSync(resolvedPath); - } catch (e) { - fs.mkdirSync(resolvedPath); - } - if (stat && stat.isFile()) - throw Errors.FILE_IN_THE_WAY.replace("%s", resolvedPath); - }); - } - - function findSync(/*String*/root, /*RegExp*/pattern, /*Boolean*/recoursive) { - if (typeof pattern === 'boolean') { - recoursive = pattern; - pattern = undefined; - } - var files = []; - fs.readdirSync(root).forEach(function(file) { - var path = pth.join(root, file); - - if (fs.statSync(path).isDirectory() && recoursive) - files = files.concat(findSync(path, pattern, recoursive)); - - if (!pattern || pattern.test(path)) { - files.push(pth.normalize(path) + (fs.statSync(path).isDirectory() ? PATH_SEPARATOR : "")); - } - - }); - return files; - } - - return { - makeDir : function(/*String*/path) { - mkdirSync(path); - }, - - crc32 : function(buf) { - var b = new Buffer(4); - if (!crcTable.length) { - for (var n = 0; n < 256; n++) { - var c = n; - for (var k = 8; --k >= 0;) // - if ((c & 1) != 0) { c = 0xedb88320 ^ (c >>> 1); } else { c = c >>> 1; } - if (c < 0) { - b.writeInt32LE(c, 0); - c = b.readUInt32LE(0); - } - crcTable[n] = c; - } - } - var crc = 0, off = 0, len = buf.length, c1 = ~crc; - while(--len >= 0) c1 = crcTable[(c1 ^ buf[off++]) & 0xff] ^ (c1 >>> 8); - crc = ~c1; - b.writeInt32LE(crc & 0xffffffff, 0); - return b.readUInt32LE(0); - }, - - methodToString : function(/*Number*/method) { - switch (method) { - case Constants.STORED: - return 'STORED (' + method + ')'; - case Constants.DEFLATED: - return 'DEFLATED (' + method + ')'; - default: - return 'UNSUPPORTED (' + method + ')' - } - - }, - - writeFileTo : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr) { - if (fs.existsSync(path)) { - if (!overwrite) - return false; // cannot overwite - - var stat = fs.statSync(path); - if (stat.isDirectory()) { - return false; - } - } - var folder = pth.dirname(path); - if (!fs.existsSync(folder)) { - mkdirSync(folder); - } - - var fd; - try { - fd = fs.openSync(path, 'w', 438); // 0666 - } catch(e) { - fs.chmodSync(path, 438); - fd = fs.openSync(path, 'w', 438); - } - if (fd) { - fs.writeSync(fd, content, 0, content.length, 0); - fs.closeSync(fd); - } - fs.chmodSync(path, attr || 438); - return true; - }, - - findFiles : function(/*String*/path) { - return findSync(path, true); - }, - - getAttributes : function(/*String*/path) { - - }, - - setAttributes : function(/*String*/path) { - - }, - - toBuffer : function(input) { - if (Buffer.isBuffer(input)) { - return input; - } else { - if (input.length == 0) { - return new Buffer(0) - } - return new Buffer(input, 'utf8'); - } - }, - - Constants : Constants, - Errors : Errors - } -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js deleted file mode 100644 index 02c31725..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js +++ /dev/null @@ -1,224 +0,0 @@ -var Utils = require("./util"), - Headers = require("./headers"), - Constants = Utils.Constants, - Methods = require("./methods"); - -module.exports = function (/*Buffer*/input) { - - var _entryHeader = new Headers.EntryHeader(), - _entryName = new Buffer(0), - _comment = new Buffer(0), - _isDirectory = false, - uncompressedData = null, - _extra = new Buffer(0); - - function getCompressedDataFromZip() { - if (!input || !Buffer.isBuffer(input)) { - return new Buffer(0); - } - _entryHeader.loadDataHeaderFromBinary(input); - return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize) - } - - function crc32OK(data) { - // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written - if (_entryHeader.flags & 0x8 != 0x8) { - if (Utils.crc32(data) != _entryHeader.crc) { - return false; - } - } else { - // @TODO: load and check data descriptor header - // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure - // (optionally preceded by a 4-byte signature) immediately after the compressed data: - } - return true; - } - - function decompress(/*Boolean*/async, /*Function*/callback) { - if (_isDirectory) { - if (async && callback) { - callback(new Buffer(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error. - } - return new Buffer(0); - } - - var compressedData = getCompressedDataFromZip(); - if (compressedData.length == 0) { - if (async && callback) callback(compressedData, Utils.Errors.NO_DATA);//si added error. - return compressedData; - } - - var data = new Buffer(_entryHeader.size); - data.fill(0); - - switch (_entryHeader.method) { - case Utils.Constants.STORED: - compressedData.copy(data); - if (!crc32OK(data)) { - if (async && callback) callback(data, Utils.Errors.BAD_CRC);//si added error - return Utils.Errors.BAD_CRC; - } else {//si added otherwise did not seem to return data. - if (async && callback) callback(data); - return data; - } - break; - case Utils.Constants.DEFLATED: - var inflater = new Methods.Inflater(compressedData); - if (!async) { - inflater.inflate(data); - if (!crc32OK(data)) { - console.warn(Utils.Errors.BAD_CRC + " " + _entryName.toString()) - } - return data; - } else { - inflater.inflateAsync(function(result) { - result.copy(data, 0); - if (crc32OK(data)) { - if (callback) callback(data, Utils.Errors.BAD_CRC); //si added error - } else { //si added otherwise did not seem to return data. - if (callback) callback(data); - } - }) - } - break; - default: - if (async && callback) callback(new Buffer(0), Utils.Errors.UNKNOWN_METHOD); - return Utils.Errors.UNKNOWN_METHOD; - } - } - - function compress(/*Boolean*/async, /*Function*/callback) { - if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) { - // no data set or the data wasn't changed to require recompression - if (async && callback) callback(getCompressedDataFromZip()); - return getCompressedDataFromZip(); - } - - if (uncompressedData.length && !_isDirectory) { - var compressedData; - // Local file header - switch (_entryHeader.method) { - case Utils.Constants.STORED: - _entryHeader.compressedSize = _entryHeader.size; - - compressedData = new Buffer(uncompressedData.length); - uncompressedData.copy(compressedData); - - if (async && callback) callback(compressedData); - return compressedData; - - break; - default: - case Utils.Constants.DEFLATED: - - var deflater = new Methods.Deflater(uncompressedData); - if (!async) { - var deflated = deflater.deflate(); - _entryHeader.compressedSize = deflated.length; - return deflated; - } else { - deflater.deflateAsync(function(data) { - compressedData = new Buffer(data.length); - _entryHeader.compressedSize = data.length; - data.copy(compressedData); - callback && callback(compressedData); - }) - } - deflater = null; - break; - } - } else { - if (async && callback) { - callback(new Buffer(0)); - } else { - return new Buffer(0); - } - } - } - - return { - get entryName () { return _entryName.toString(); }, - get rawEntryName() { return _entryName; }, - set entryName (val) { - _entryName = Utils.toBuffer(val); - var lastChar = _entryName[_entryName.length - 1]; - _isDirectory = (lastChar == 47) || (lastChar == 92); - _entryHeader.fileNameLength = _entryName.length; - }, - - get extra () { return _extra; }, - set extra (val) { - _extra = val; - _entryHeader.extraLength = val.length; - }, - - get comment () { return _comment.toString(); }, - set comment (val) { - _comment = Utils.toBuffer(val); - _entryHeader.commentLength = _comment.length; - }, - - get name () { var n = _entryName.toString(); return _isDirectory ? n.substr(n.length - 1).split("/").pop() : n.split("/").pop(); }, - get isDirectory () { return _isDirectory }, - - getCompressedData : function() { - return compress(false, null) - }, - - getCompressedDataAsync : function(/*Function*/callback) { - compress(true, callback) - }, - - setData : function(value) { - uncompressedData = Utils.toBuffer(value); - if (!_isDirectory && uncompressedData.length) { - _entryHeader.size = uncompressedData.length; - _entryHeader.method = Utils.Constants.DEFLATED; - _entryHeader.crc = Utils.crc32(value); - } else { // folders and blank files should be stored - _entryHeader.method = Utils.Constants.STORED; - } - }, - - getData : function() { - return decompress(false, null); - }, - - getDataAsync : function(/*Function*/callback) { - decompress(true, callback) - }, - - set header(/*Buffer*/data) { - _entryHeader.loadFromBinary(data); - }, - - get header() { - return _entryHeader; - }, - - packHeader : function() { - var header = _entryHeader.entryHeaderToBinary(); - // add - _entryName.copy(header, Utils.Constants.CENHDR); - if (_entryHeader.extraLength) { - _extra.copy(header, Utils.Constants.CENHDR + _entryName.length) - } - if (_entryHeader.commentLength) { - _comment.copy(header, Utils.Constants.CENHDR + _entryName.length + _entryHeader.extraLength, _comment.length); - } - return header; - }, - - toString : function() { - return '{\n' + - '\t"entryName" : "' + _entryName.toString() + "\",\n" + - '\t"name" : "' + _entryName.toString().split("/").pop() + "\",\n" + - '\t"comment" : "' + _comment.toString() + "\",\n" + - '\t"isDirectory" : ' + _isDirectory + ",\n" + - '\t"header" : ' + _entryHeader.toString().replace(/\t/mg, "\t\t") + ",\n" + - '\t"compressedData" : <' + (input && input.length + " bytes buffer" || "null") + ">\n" + - '\t"data" : <' + (uncompressedData && uncompressedData.length + " bytes buffer" || "null") + ">\n" + - '}'; - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js deleted file mode 100644 index f066d7ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js +++ /dev/null @@ -1,311 +0,0 @@ -var ZipEntry = require("./zipEntry"), - Headers = require("./headers"), - Utils = require("./util"); - -module.exports = function(/*String|Buffer*/input, /*Number*/inputType) { - var entryList = [], - entryTable = {}, - _comment = new Buffer(0), - filename = "", - fs = require("fs"), - inBuffer = null, - mainHeader = new Headers.MainHeader(); - - if (inputType == Utils.Constants.FILE) { - // is a filename - filename = input; - inBuffer = fs.readFileSync(filename); - readMainHeader(); - } else if (inputType == Utils.Constants.BUFFER) { - // is a memory buffer - inBuffer = input; - readMainHeader(); - } else { - // none. is a new file - } - - function readEntries() { - entryTable = {}; - entryList = new Array(mainHeader.diskEntries); // total number of entries - var index = mainHeader.offset; // offset of first CEN header - for(var i = 0; i < entryList.length; i++) { - - var tmp = index, - entry = new ZipEntry(inBuffer); - entry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR); - - entry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength); - - if (entry.header.extraLength) { - entry.extra = inBuffer.slice(tmp, tmp += entry.header.extraLength); - } - - if (entry.header.commentLength) - entry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength); - - index += entry.header.entryHeaderSize; - - entryList[i] = entry; - entryTable[entry.entryName] = entry; - } - } - - function readMainHeader() { - var i = inBuffer.length - Utils.Constants.ENDHDR, // END header size - n = Math.max(0, i - 0xFFFF), // 0xFFFF is the max zip file comment length - endOffset = 0; // Start offset of the END header - - for (i; i >= n; i--) { - if (inBuffer[i] != 0x50) continue; // quick check that the byte is 'P' - if (inBuffer.readUInt32LE(i) == Utils.Constants.ENDSIG) { // "PK\005\006" - endOffset = i; - break; - } - } - if (!endOffset) - throw Utils.Errors.INVALID_FORMAT; - - mainHeader.loadFromBinary(inBuffer.slice(endOffset, endOffset + Utils.Constants.ENDHDR)); - if (mainHeader.commentLength) { - _comment = inBuffer.slice(endOffset + Utils.Constants.ENDHDR); - } - readEntries(); - } - - return { - /** - * Returns an array of ZipEntry objects existent in the current opened archive - * @return Array - */ - get entries () { - return entryList; - }, - - /** - * Archive comment - * @return {String} - */ - get comment () { return _comment.toString(); }, - set comment(val) { - mainHeader.commentLength = val.length; - _comment = val; - }, - - /** - * Returns a reference to the entry with the given name or null if entry is inexistent - * - * @param entryName - * @return ZipEntry - */ - getEntry : function(/*String*/entryName) { - return entryTable[entryName] || null; - }, - - /** - * Adds the given entry to the entry list - * - * @param entry - */ - setEntry : function(/*ZipEntry*/entry) { - entryList.push(entry); - entryTable[entry.entryName] = entry; - mainHeader.totalEntries = entryList.length; - }, - - /** - * Removes the entry with the given name from the entry list. - * - * If the entry is a directory, then all nested files and directories will be removed - * @param entryName - */ - deleteEntry : function(/*String*/entryName) { - var entry = entryTable[entryName]; - if (entry && entry.isDirectory) { - var _self = this; - this.getEntryChildren(entry).forEach(function(child) { - if (child.entryName != entryName) { - _self.deleteEntry(child.entryName) - } - }) - } - entryList.splice(entryList.indexOf(entry), 1); - delete(entryTable[entryName]); - mainHeader.totalEntries = entryList.length; - }, - - /** - * Iterates and returns all nested files and directories of the given entry - * - * @param entry - * @return Array - */ - getEntryChildren : function(/*ZipEntry*/entry) { - if (entry.isDirectory) { - var list = [], - name = entry.entryName, - len = name.length; - - entryList.forEach(function(zipEntry) { - if (zipEntry.entryName.substr(0, len) == name) { - list.push(zipEntry); - } - }); - return list; - } - return [] - }, - - /** - * Returns the zip file - * - * @return Buffer - */ - compressToBuffer : function() { - if (entryList.length > 1) { - entryList.sort(function(a, b) { - var nameA = a.entryName.toLowerCase(); - var nameB = b.entryName.toLowerCase(); - if (nameA < nameB) {return -1} - if (nameA > nameB) {return 1} - return 0; - }); - } - - var totalSize = 0, - dataBlock = [], - entryHeaders = [], - dindex = 0; - - mainHeader.size = 0; - mainHeader.offset = 0; - - entryList.forEach(function(entry) { - entry.header.offset = dindex; - - // compress data and set local and entry header accordingly. Reason why is called first - var compressedData = entry.getCompressedData(); - // data header - var dataHeader = entry.header.dataHeaderToBinary(); - var postHeader = new Buffer(entry.entryName + entry.extra.toString()); - var dataLength = dataHeader.length + postHeader.length + compressedData.length; - - dindex += dataLength; - - dataBlock.push(dataHeader); - dataBlock.push(postHeader); - dataBlock.push(compressedData); - - var entryHeader = entry.packHeader(); - entryHeaders.push(entryHeader); - mainHeader.size += entryHeader.length; - totalSize += (dataLength + entryHeader.length); - }); - - totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length - // point to end of data and begining of central directory first record - mainHeader.offset = dindex; - - dindex = 0; - var outBuffer = new Buffer(totalSize); - dataBlock.forEach(function(content) { - content.copy(outBuffer, dindex); // write data blocks - dindex += content.length; - }); - entryHeaders.forEach(function(content) { - content.copy(outBuffer, dindex); // write central directory entries - dindex += content.length; - }); - - var mh = mainHeader.toBinary(); - if (_comment) { - _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment - } - - mh.copy(outBuffer, dindex); // write main header - - return outBuffer - }, - - toAsyncBuffer : function(/*Function*/onSuccess,/*Function*/onFail,/*Function*/onItemStart,/*Function*/onItemEnd) { - if (entryList.length > 1) { - entryList.sort(function(a, b) { - var nameA = a.entryName.toLowerCase(); - var nameB = b.entryName.toLowerCase(); - if (nameA > nameB) {return -1} - if (nameA < nameB) {return 1} - return 0; - }); - } - - var totalSize = 0, - dataBlock = [], - entryHeaders = [], - dindex = 0; - - mainHeader.size = 0; - mainHeader.offset = 0; - - var compress=function(entryList){ - var self=arguments.callee; - var entry; - if(entryList.length){ - var entry=entryList.pop(); - var name=entry.entryName + entry.extra.toString(); - if(onItemStart)onItemStart(name); - entry.getCompressedDataAsync(function(compressedData){ - if(onItemEnd)onItemEnd(name); - - entry.header.offset = dindex; - // data header - var dataHeader = entry.header.dataHeaderToBinary(); - var postHeader = new Buffer(name); - var dataLength = dataHeader.length + postHeader.length + compressedData.length; - - dindex += dataLength; - - dataBlock.push(dataHeader); - dataBlock.push(postHeader); - dataBlock.push(compressedData); - - var entryHeader = entry.packHeader(); - entryHeaders.push(entryHeader); - mainHeader.size += entryHeader.length; - totalSize += (dataLength + entryHeader.length); - - if(entryList.length){ - self(entryList); - }else{ - - - totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length - // point to end of data and begining of central directory first record - mainHeader.offset = dindex; - - dindex = 0; - var outBuffer = new Buffer(totalSize); - dataBlock.forEach(function(content) { - content.copy(outBuffer, dindex); // write data blocks - dindex += content.length; - }); - entryHeaders.forEach(function(content) { - content.copy(outBuffer, dindex); // write central directory entries - dindex += content.length; - }); - - var mh = mainHeader.toBinary(); - if (_comment) { - _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment - } - - mh.copy(outBuffer, dindex); // write main header - - onSuccess(outBuffer); - } - }); - } - }; - - compress(entryList); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS deleted file mode 100644 index 247b7543..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -# 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md deleted file mode 100644 index cd123b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md +++ /dev/null @@ -1,30 +0,0 @@ -`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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js deleted file mode 100755 index 29bfa8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json deleted file mode 100644 index 13d6751e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "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" - } - ], - "readme": "`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.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n successfully, since your desired outcome is already the case.\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", - "bugs": { - "url": "https://github.com/isaacs/rimraf/issues" - }, - "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.2.6", - "_from": "rimraf@~2.2.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js deleted file mode 100644 index ce62051f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js +++ /dev/null @@ -1,178 +0,0 @@ -module.exports = rimraf -rimraf.sync = rimrafSync - -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 rimraf (p, cb) { - if (!cb) throw new Error("No callback passed to rimraf()") - - var busyTries = 0 - rimraf_(p, 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, 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, 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, cb) { - fs.unlink(p, function (er) { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb) - if (er.code === "EISDIR") - return rmdir(p, er, cb) - } - return cb(er) - }) -} - -function fixWinEPERM (p, er, cb) { - fs.chmod(p, 666, function (er2) { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - fs.stat(p, function(er3, stats) { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, er, cb) - else - fs.unlink(p, cb) - }) - }) -} - -function fixWinEPERMSync (p, er, cb) { - try { - fs.chmodSync(p, 666) - } catch (er2) { - if (er2.code !== "ENOENT") - throw er - } - - try { - var stats = fs.statSync(p) - } catch (er3) { - if (er3 !== "ENOENT") - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, er) - else - fs.unlinkSync(p) -} - -function rmdir (p, originalEr, cb) { - // 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. - fs.rmdir(p, function (er) { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -function rmkids(p, cb) { - fs.readdir(p, function (er, files) { - if (er) - return cb(er) - var n = files.length - if (n === 0) - return fs.rmdir(p, cb) - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), function (er) { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - fs.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) { - try { - fs.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er) - if (er.code !== "EISDIR") - throw er - rmdirSync(p, er) - } -} - -function rmdirSync (p, originalEr) { - try { - fs.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) - } -} - -function rmkidsSync (p) { - fs.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f)) - }) - fs.rmdirSync(p) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh deleted file mode 100644 index 598f0163..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -for i in test-*.js; do - echo -n $i ... - bash setup.sh - node $i - ! [ -d target ] - echo "pass" -done -rm -rf target diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh deleted file mode 100644 index 2602e631..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js deleted file mode 100644 index 9c2e0b7b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js +++ /dev/null @@ -1,5 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf(path.join(__dirname, "target"), function (er) { - if (er) throw er -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js deleted file mode 100644 index eb71f104..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf.sync(path.join(__dirname, "target")) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE deleted file mode 100644 index 6d03581f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 'Dominic Tarr' - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md deleted file mode 100644 index 565e0e26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# stream-combiner - -<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master> - -## Combine (stream1,...,streamN) - -Turn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream -and reads from the last stream. - -Listening for 'error' will recieve errors from all streams inside the pipe. - -``` js - var Combine = require('stream-combiner') - var es = require('event-stream') - - Combine( //connect streams together with `pipe` - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - callback(null - , inspect(JSON.parse(data))) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) -``` - -## License - -MIT diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js deleted file mode 100644 index 99cf5b61..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var duplexer = require('duplexer') - -module.exports = function () { - - var streams = [].slice.call(arguments) - , first = streams[0] - , last = streams[streams.length - 1] - , thepipe = duplexer(first, last) - - if(streams.length == 1) - return streams[0] - else if (!streams.length) - throw new Error('connect called with empty args') - - //pipe all the streams together - - function recurse (streams) { - if(streams.length < 2) - return - streams[0].pipe(streams[1]) - recurse(streams.slice(1)) - } - - recurse(streams) - - function onerror () { - var args = [].slice.call(arguments) - args.unshift('error') - thepipe.emit.apply(thepipe, args) - } - - //es.duplex already reemits the error from the first and last stream. - //add a listener for the inner streams in the pipeline. - for(var i = 1; i < streams.length - 1; i ++) - streams[i].on('error', onerror) - - return thepipe -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore deleted file mode 100644 index 062c11e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -*.err \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml deleted file mode 100644 index ed05f88d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md deleted file mode 100644 index 61ff71aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# duplexer - -[![build status][1]][2] [![dependency status][3]][4] - -[![browser support][5]][6] - -Creates a duplex stream - -Taken from [event-stream][7] - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -## Example - -```js -var grep = cp.exec('grep Stream') - -duplex(grep.stdin, grep.stdout) -``` - -## Installation - -`npm install duplexer` - -## Tests - -`npm test` - -## Contributors - - - Dominictarr - - Raynos - - samccone - -## MIT Licenced - - [1]: https://secure.travis-ci.org/Raynos/duplexer.png - [2]: https://travis-ci.org/Raynos/duplexer - [3]: https://david-dm.org/Raynos/duplexer.png - [4]: https://david-dm.org/Raynos/duplexer - [5]: https://ci.testling.com/Raynos/duplexer.png - [6]: https://ci.testling.com/Raynos/duplexer - [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js deleted file mode 100644 index a188a210..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js +++ /dev/null @@ -1,87 +0,0 @@ -var Stream = require("stream") -var writeMethods = ["write", "end", "destroy"] -var readMethods = ["resume", "pause"] -var readEvents = ["data", "close"] -var slice = Array.prototype.slice - -module.exports = duplex - -function forEach (arr, fn) { - if (arr.forEach) { - return arr.forEach(fn) - } - - for (var i = 0; i < arr.length; i++) { - fn(arr[i], i) - } -} - -function duplex(writer, reader) { - var stream = new Stream() - var ended = false - - forEach(writeMethods, proxyWriter) - - forEach(readMethods, proxyReader) - - forEach(readEvents, proxyStream) - - reader.on("end", handleEnd) - - writer.on("drain", function() { - stream.emit("drain") - }) - - writer.on("error", reemit) - reader.on("error", reemit) - - stream.writable = writer.writable - stream.readable = reader.readable - - return stream - - function proxyWriter(methodName) { - stream[methodName] = method - - function method() { - return writer[methodName].apply(writer, arguments) - } - } - - function proxyReader(methodName) { - stream[methodName] = method - - function method() { - stream.emit(methodName) - var func = reader[methodName] - if (func) { - return func.apply(reader, arguments) - } - reader.emit(methodName) - } - } - - function proxyStream(methodName) { - reader.on(methodName, reemit) - - function reemit() { - var args = slice.call(arguments) - args.unshift(methodName) - stream.emit.apply(stream, args) - } - } - - function handleEnd() { - if (ended) { - return - } - ended = true - var args = slice.call(arguments) - args.unshift("end") - stream.emit.apply(stream, args) - } - - function reemit(err) { - stream.emit("error", err) - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json deleted file mode 100644 index 86ab2145..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "duplexer", - "version": "0.1.1", - "description": "Creates a duplex stream", - "keywords": [], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/duplexer.git" - }, - "main": "index", - "homepage": "https://github.com/Raynos/duplexer", - "contributors": [ - { - "name": "Jake Verbaten" - } - ], - "bugs": { - "url": "https://github.com/Raynos/duplexer/issues", - "email": "raynos2@gmail.com" - }, - "devDependencies": { - "tape": "0.3.3", - "through": "~0.1.4" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/Raynos/duplexer/raw/master/LICENSE" - } - ], - "scripts": { - "test": "node test" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "ie/8..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ] - }, - "readme": "# duplexer\n\n[![build status][1]][2] [![dependency status][3]][4]\n\n[![browser support][5]][6]\n\nCreates a duplex stream\n\nTaken from [event-stream][7]\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way.\n\n## Example\n\n```js\nvar grep = cp.exec('grep Stream')\n\nduplex(grep.stdin, grep.stdout)\n```\n\n## Installation\n\n`npm install duplexer`\n\n## Tests\n\n`npm test`\n\n## Contributors\n\n - Dominictarr\n - Raynos\n - samccone\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/duplexer.png\n [2]: https://travis-ci.org/Raynos/duplexer\n [3]: https://david-dm.org/Raynos/duplexer.png\n [4]: https://david-dm.org/Raynos/duplexer\n [5]: https://ci.testling.com/Raynos/duplexer.png\n [6]: https://ci.testling.com/Raynos/duplexer\n [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream\n", - "readmeFilename": "README.md", - "_id": "duplexer@0.1.1", - "_from": "duplexer@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js deleted file mode 100644 index 4988e0d9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js +++ /dev/null @@ -1,31 +0,0 @@ -var through = require("through") -var test = require("tape") - -var duplex = require("../index") - -var readable = through() -var writable = through(write) -var written = 0 -var data = 0 - -var stream = duplex(writable, readable) - -function write() { - written++ -} - -stream.on("data", ondata) - -function ondata() { - data++ -} - -test("emit and write", function(t) { - t.plan(2) - - stream.write() - readable.emit("data") - - t.equal(written, 1, "should have written once") - t.equal(data, 1, "should have recived once") -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json deleted file mode 100644 index 5b10d918..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "stream-combiner", - "version": "0.0.4", - "homepage": "https://github.com/dominictarr/stream-combiner", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/stream-combiner.git" - }, - "dependencies": { - "duplexer": "~0.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "event-stream": "~3.0.7" - }, - "scripts": { - "test": "set -e; for t in test/*.js; do node $t; done" - }, - "author": { - "name": "'Dominic Tarr'", - "email": "dominic.tarr@gmail.com", - "url": "http://dominictarr.com" - }, - "license": "MIT", - "readme": "# stream-combiner\n\n<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master>\n\n## Combine (stream1,...,streamN)\n\nTurn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream\nand reads from the last stream. \n\nListening for 'error' will recieve errors from all streams inside the pipe.\n\n``` js\n var Combine = require('stream-combiner')\n var es = require('event-stream')\n\n Combine( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n```\n\n## License\n\nMIT\n", - "readmeFilename": "README.md", - "description": "<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master>", - "bugs": { - "url": "https://github.com/dominictarr/stream-combiner/issues" - }, - "_id": "stream-combiner@0.0.4", - "_from": "stream-combiner@~0.0.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js deleted file mode 100644 index d17ddada..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('event-stream') -var combine = require('..') -var test = require('tape') - -test('do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); -}) - -test('3 pipe do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); - -}) - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore deleted file mode 100644 index c167ad5b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules -examples/extract/ -test/tmp/ -test/fixtures/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml deleted file mode 100644 index 2d26206d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE deleted file mode 100644 index 74489e2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md deleted file mode 100644 index 5bcc82cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# node-tar - -Tar for Node.js. - -[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/) - -## API - -See `examples/` for usage examples. - -### var tar = require('tar') - -Returns an object with `.Pack`, `.Extract` and `.Parse` methods. - -### tar.Pack([properties]) - -Returns a through stream. Use -[fstream](https://npmjs.org/package/fstream) to write files into the -pack stream and you will receive tar archive data from the pack -stream. - -The optional `properties` object are used to set properties in the tar -'Global Extended Header'. - -### tar.Extract([options]) - -Returns a through stream. Write tar data to the stream and the files -in the tarball will be extracted onto the filesystem. - -`options` can be: - -```js -{ - path: '/path/to/extract/tar/into', - strip: 0, // how many path segments to strip from the root when extracting -} -``` - -`options` also get passed to the `fstream.Writer` instance that `tar` -uses internally. - -### tar.Parse() - -Returns a writable stream. Write tar data to it and it will emit -`entry` events for each entry parsed from the tarball. This is used by -`tar.Extract`. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js deleted file mode 100644 index e150abf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js +++ /dev/null @@ -1,11 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Extract({ path: __dirname + "/extract" })) - .on("error", function (er) { - console.error("error here") - }) - .on("end", function () { - console.error("done") - }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js deleted file mode 100644 index 39f3f088..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js +++ /dev/null @@ -1,36 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Parse()) - .on("extendedHeader", function (e) { - console.error("extended pax header", e.props) - e.on("end", function () { - console.error("extended pax fields:", e.fields) - }) - }) - .on("ignoredEntry", function (e) { - console.error("ignoredEntry?!?", e.props) - }) - .on("longLinkpath", function (e) { - console.error("longLinkpath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("longPath", function (e) { - console.error("longPath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("entry", function (e) { - console.error("entry", e.props) - e.on("data", function (c) { - console.error(" >>>" + c.toString().replace(/\n/g, "\\n")) - }) - e.on("end", function () { - console.error(" <<<EOF") - }) - }) - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js deleted file mode 100644 index 6c1da237..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js +++ /dev/null @@ -1,30 +0,0 @@ -// just like the Entry class, but it buffers the contents -// -// XXX It would be good to set a maximum BufferEntry filesize, -// since it eats up memory. In normal operation, -// these are only for long filenames or link names, which are -// rarely very big. - -module.exports = BufferEntry - -var inherits = require("inherits") - , Entry = require("./entry.js") - -function BufferEntry () { - Entry.apply(this, arguments) - this._buffer = new Buffer(this.props.size) - this._offset = 0 - this.body = "" - this.on("end", function () { - this.body = this._buffer.toString().slice(0, -1) - }) -} - -inherits(BufferEntry, Entry) - -// collect the bytes as they come in. -BufferEntry.prototype.write = function (c) { - c.copy(this._buffer, this._offset) - this._offset += c.length - Entry.prototype.write.call(this, c) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js deleted file mode 100644 index 8e09042d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js +++ /dev/null @@ -1,169 +0,0 @@ -module.exports = EntryWriter - -var tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , inherits = require("inherits") - , BlockStream = require("block-stream") - , ExtendedHeaderWriter - , Stream = require("stream").Stream - , EOF = {} - -inherits(EntryWriter, Stream) - -function EntryWriter (props) { - var me = this - - if (!(me instanceof EntryWriter)) { - return new EntryWriter(props) - } - - Stream.apply(this) - - me.writable = true - me.readable = true - - me._stream = new BlockStream(512) - - me._stream.on("data", function (c) { - me.emit("data", c) - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) - - me._stream.on("end", function () { - me.emit("end") - me.emit("close") - }) - - me.props = props - if (props.type === "Directory") { - props.size = 0 - } - props.ustar = "ustar\0" - props.ustarver = "00" - me.path = props.path - - me._buffer = [] - me._didHeader = false - me._meta = false - - me.on("pipe", function () { - me._process() - }) -} - -EntryWriter.prototype.write = function (c) { - // console.error(".. ew write") - if (this._ended) return this.emit("error", new Error("write after end")) - this._buffer.push(c) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -EntryWriter.prototype.end = function (c) { - // console.error(".. ew end") - if (c) this._buffer.push(c) - this._buffer.push(EOF) - this._ended = true - this._process() - this._needDrain = this._buffer.length > 0 -} - -EntryWriter.prototype.pause = function () { - // console.error(".. ew pause") - this._paused = true - this.emit("pause") -} - -EntryWriter.prototype.resume = function () { - // console.error(".. ew resume") - this._paused = false - this.emit("resume") - this._process() -} - -EntryWriter.prototype.add = function (entry) { - // console.error(".. ew add") - if (!this.parent) return this.emit("error", new Error("no parent")) - - // make sure that the _header and such is emitted, and clear out - // the _currentEntry link on the parent. - if (!this._ended) this.end() - - return this.parent.add(entry) -} - -EntryWriter.prototype._header = function () { - // console.error(".. ew header") - if (this._didHeader) return - this._didHeader = true - - var headerBlock = TarHeader.encode(this.props) - - if (this.props.needExtended && !this._meta) { - var me = this - - ExtendedHeaderWriter = ExtendedHeaderWriter || - require("./extended-header-writer.js") - - ExtendedHeaderWriter(this.props) - .on("data", function (c) { - me.emit("data", c) - }) - .on("error", function (er) { - me.emit("error", er) - }) - .end() - } - - // console.error(".. .. ew headerBlock emitting") - this.emit("data", headerBlock) - this.emit("header") -} - -EntryWriter.prototype._process = function () { - // console.error(".. .. ew process") - if (!this._didHeader && !this._meta) { - this._header() - } - - if (this._paused || this._processing) { - // console.error(".. .. .. paused=%j, processing=%j", this._paused, this._processing) - return - } - - this._processing = true - - var buf = this._buffer - for (var i = 0; i < buf.length; i ++) { - // console.error(".. .. .. i=%d", i) - - var c = buf[i] - - if (c === EOF) this._stream.end() - else this._stream.write(c) - - if (this._paused) { - // console.error(".. .. .. paused mid-emission") - this._processing = false - if (i < buf.length) { - this._needDrain = true - this._buffer = buf.slice(i + 1) - } - return - } - } - - // console.error(".. .. .. emitted") - this._buffer.length = 0 - this._processing = false - - // console.error(".. .. .. emitting drain") - this.emit("drain") -} - -EntryWriter.prototype.destroy = function () {} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js deleted file mode 100644 index 4af5c410..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js +++ /dev/null @@ -1,213 +0,0 @@ -// A passthrough read/write stream that sets its properties -// based on a header, extendedHeader, and globalHeader -// -// Can be either a file system object of some sort, or -// a pax/ustar metadata entry. - -module.exports = Entry - -var TarHeader = require("./header.js") - , tar = require("../tar") - , assert = require("assert").ok - , Stream = require("stream").Stream - , inherits = require("inherits") - , fstream = require("fstream").Abstract - -function Entry (header, extended, global) { - Stream.call(this) - this.readable = true - this.writable = true - - this._needDrain = false - this._paused = false - this._reading = false - this._ending = false - this._ended = false - this._remaining = 0 - this._queue = [] - this._index = 0 - this._queueLen = 0 - - this._read = this._read.bind(this) - - this.props = {} - this._header = header - this._extended = extended || {} - - // globals can change throughout the course of - // a file parse operation. Freeze it at its current state. - this._global = {} - var me = this - Object.keys(global || {}).forEach(function (g) { - me._global[g] = global[g] - }) - - this._setProps() -} - -inherits(Entry, Stream) - -Entry.prototype.write = function (c) { - if (this._ending) this.error("write() after end()", null, true) - if (this._remaining === 0) { - this.error("invalid bytes past eof") - } - - // often we'll get a bunch of \0 at the end of the last write, - // since chunks will always be 512 bytes when reading a tarball. - if (c.length > this._remaining) { - c = c.slice(0, this._remaining) - } - this._remaining -= c.length - - // put it on the stack. - var ql = this._queueLen - this._queue.push(c) - this._queueLen ++ - - this._read() - - // either paused, or buffered - if (this._paused || ql > 0) { - this._needDrain = true - return false - } - - return true -} - -Entry.prototype.end = function (c) { - if (c) this.write(c) - this._ending = true - this._read() -} - -Entry.prototype.pause = function () { - this._paused = true - this.emit("pause") -} - -Entry.prototype.resume = function () { - // console.error(" Tar Entry resume", this.path) - this.emit("resume") - this._paused = false - this._read() - return this._queueLen - this._index > 1 -} - - // This is bound to the instance -Entry.prototype._read = function () { - // console.error(" Tar Entry _read", this.path) - - if (this._paused || this._reading || this._ended) return - - // set this flag so that event handlers don't inadvertently - // get multiple _read() calls running. - this._reading = true - - // have any data to emit? - while (this._index < this._queueLen && !this._paused) { - var chunk = this._queue[this._index ++] - this.emit("data", chunk) - } - - // check if we're drained - if (this._index >= this._queueLen) { - this._queue.length = this._queueLen = this._index = 0 - if (this._needDrain) { - this._needDrain = false - this.emit("drain") - } - if (this._ending) { - this._ended = true - this.emit("end") - } - } - - // if the queue gets too big, then pluck off whatever we can. - // this should be fairly rare. - var mql = this._maxQueueLen - if (this._queueLen > mql && this._index > 0) { - mql = Math.min(this._index, mql) - this._index -= mql - this._queueLen -= mql - this._queue = this._queue.slice(mql) - } - - this._reading = false -} - -Entry.prototype._setProps = function () { - // props = extended->global->header->{} - var header = this._header - , extended = this._extended - , global = this._global - , props = this.props - - // first get the values from the normal header. - var fields = tar.fields - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = header[field] - if (typeof val !== "undefined") props[field] = val - } - - // next, the global header for this file. - // numeric values, etc, will have already been parsed. - ;[global, extended].forEach(function (p) { - Object.keys(p).forEach(function (f) { - if (typeof p[f] !== "undefined") props[f] = p[f] - }) - }) - - // no nulls allowed in path or linkpath - ;["path", "linkpath"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = props[p].split("\0")[0] - } - }) - - - // set date fields to be a proper date - ;["mtime", "ctime", "atime"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = new Date(props[p] * 1000) - } - }) - - // set the type so that we know what kind of file to create - var type - switch (tar.types[props.type]) { - case "OldFile": - case "ContiguousFile": - type = "File" - break - - case "GNUDumpDir": - type = "Directory" - break - - case undefined: - type = "Unknown" - break - - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - default: - type = tar.types[props.type] - } - - this.type = type - this.path = props.path - this.size = props.size - - // size is special, since it signals when the file needs to end. - this._remaining = props.size -} - -Entry.prototype.warn = fstream.warn -Entry.prototype.error = fstream.error diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js deleted file mode 100644 index 1728c458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js +++ /dev/null @@ -1,191 +0,0 @@ - -module.exports = ExtendedHeaderWriter - -var inherits = require("inherits") - , EntryWriter = require("./entry-writer.js") - -inherits(ExtendedHeaderWriter, EntryWriter) - -var tar = require("../tar.js") - , path = require("path") - , TarHeader = require("./header.js") - -// props is the props of the thing we need to write an -// extended header for. -// Don't be shy with it. Just encode everything. -function ExtendedHeaderWriter (props) { - // console.error(">> ehw ctor") - var me = this - - if (!(me instanceof ExtendedHeaderWriter)) { - return new ExtendedHeaderWriter(props) - } - - me.fields = props - - var p = - { path : ("PaxHeader" + path.join("/", props.path || "")) - .replace(/\\/g, "/").substr(0, 100) - , mode : props.mode || 0666 - , uid : props.uid || 0 - , gid : props.gid || 0 - , size : 0 // will be set later - , mtime : props.mtime || Date.now() / 1000 - , type : "x" - , linkpath : "" - , ustar : "ustar\0" - , ustarver : "00" - , uname : props.uname || "" - , gname : props.gname || "" - , devmaj : props.devmaj || 0 - , devmin : props.devmin || 0 - } - - - EntryWriter.call(me, p) - // console.error(">> ehw props", me.props) - me.props = p - - me._meta = true -} - -ExtendedHeaderWriter.prototype.end = function () { - // console.error(">> ehw end") - var me = this - - if (me._ended) return - me._ended = true - - me._encodeFields() - - if (me.props.size === 0) { - // nothing to write! - me._ready = true - me._stream.end() - return - } - - me._stream.write(TarHeader.encode(me.props)) - me.body.forEach(function (l) { - me._stream.write(l) - }) - me._ready = true - - // console.error(">> ehw _process calling end()", me.props) - this._stream.end() -} - -ExtendedHeaderWriter.prototype._encodeFields = function () { - // console.error(">> ehw _encodeFields") - this.body = [] - if (this.fields.prefix) { - this.fields.path = this.fields.prefix + "/" + this.fields.path - this.fields.prefix = "" - } - encodeFields(this.fields, "", this.body, this.fields.noProprietary) - var me = this - this.body.forEach(function (l) { - me.props.size += l.length - }) -} - -function encodeFields (fields, prefix, body, nop) { - // console.error(">> >> ehw encodeFields") - // "%d %s=%s\n", <length>, <keyword>, <value> - // The length is a decimal number, and includes itself and the \n - // Numeric values are decimal strings. - - Object.keys(fields).forEach(function (k) { - var val = fields[k] - , numeric = tar.numeric[k] - - if (prefix) k = prefix + "." + k - - // already including NODETAR.type, don't need File=true also - if (k === fields.type && val === true) return - - switch (k) { - // don't include anything that's always handled just fine - // in the normal header, or only meaningful in the context - // of nodetar - case "mode": - case "cksum": - case "ustar": - case "ustarver": - case "prefix": - case "basename": - case "dirname": - case "needExtended": - case "block": - case "filter": - return - - case "rdev": - if (val === 0) return - break - - case "nlink": - case "dev": // Truly a hero among men, Creator of Star! - case "ino": // Speak his name with reverent awe! It is: - k = "SCHILY." + k - break - - default: break - } - - if (val && typeof val === "object" && - !Buffer.isBuffer(val)) encodeFields(val, k, body, nop) - else if (val === null || val === undefined) return - else body.push.apply(body, encodeField(k, val, nop)) - }) - - return body -} - -function encodeField (k, v, nop) { - // lowercase keys must be valid, otherwise prefix with - // "NODETAR." - if (k.charAt(0) === k.charAt(0).toLowerCase()) { - var m = k.split(".")[0] - if (!tar.knownExtended[m]) k = "NODETAR." + k - } - - // no proprietary - if (nop && k.charAt(0) !== k.charAt(0).toLowerCase()) { - return [] - } - - if (typeof val === "number") val = val.toString(10) - - var s = new Buffer(" " + k + "=" + v + "\n") - , digits = Math.floor(Math.log(s.length) / Math.log(10)) + 1 - - // console.error("1 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - // if adding that many digits will make it go over that length, - // then add one to it. For example, if the string is: - // " foo=bar\n" - // then that's 9 characters. With the "9", that bumps the length - // up to 10. However, this is invalid: - // "10 foo=bar\n" - // but, since that's actually 11 characters, since 10 adds another - // character to the length, and the length includes the number - // itself. In that case, just bump it up again. - if (s.length + digits >= Math.pow(10, digits)) digits += 1 - // console.error("2 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - var len = digits + s.length - // console.error("3 s=%j digits=%j s.length=%d len=%d", s.toString(), digits, s.length, len) - var lenBuf = new Buffer("" + len) - if (lenBuf.length + s.length !== len) { - throw new Error("Bad length calculation\n"+ - "len="+len+"\n"+ - "lenBuf="+JSON.stringify(lenBuf.toString())+"\n"+ - "lenBuf.length="+lenBuf.length+"\n"+ - "digits="+digits+"\n"+ - "s="+JSON.stringify(s.toString())+"\n"+ - "s.length="+s.length) - } - - return [lenBuf, s] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js deleted file mode 100644 index 74f432ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js +++ /dev/null @@ -1,140 +0,0 @@ -// An Entry consisting of: -// -// "%d %s=%s\n", <length>, <keyword>, <value> -// -// The length is a decimal number, and includes itself and the \n -// \0 does not terminate anything. Only the length terminates the string. -// Numeric values are decimal strings. - -module.exports = ExtendedHeader - -var Entry = require("./entry.js") - , inherits = require("inherits") - , tar = require("../tar.js") - , numeric = tar.numeric - , keyTrans = { "SCHILY.dev": "dev" - , "SCHILY.ino": "ino" - , "SCHILY.nlink": "nlink" } - -function ExtendedHeader () { - Entry.apply(this, arguments) - this.on("data", this._parse) - this.fields = {} - this._position = 0 - this._fieldPos = 0 - this._state = SIZE - this._sizeBuf = [] - this._keyBuf = [] - this._valBuf = [] - this._size = -1 - this._key = "" -} - -inherits(ExtendedHeader, Entry) -ExtendedHeader.prototype._parse = parse - -var s = 0 - , states = ExtendedHeader.states = {} - , SIZE = states.SIZE = s++ - , KEY = states.KEY = s++ - , VAL = states.VAL = s++ - , ERR = states.ERR = s++ - -Object.keys(states).forEach(function (s) { - states[states[s]] = states[s] -}) - -states[s] = null - -// char code values for comparison -var _0 = "0".charCodeAt(0) - , _9 = "9".charCodeAt(0) - , point = ".".charCodeAt(0) - , a = "a".charCodeAt(0) - , Z = "Z".charCodeAt(0) - , a = "a".charCodeAt(0) - , z = "z".charCodeAt(0) - , space = " ".charCodeAt(0) - , eq = "=".charCodeAt(0) - , cr = "\n".charCodeAt(0) - -function parse (c) { - if (this._state === ERR) return - - for ( var i = 0, l = c.length - ; i < l - ; this._position++, this._fieldPos++, i++) { - // console.error("top of loop, size="+this._size) - - var b = c[i] - - if (this._size >= 0 && this._fieldPos > this._size) { - error(this, "field exceeds length="+this._size) - return - } - - switch (this._state) { - case ERR: return - - case SIZE: - // console.error("parsing size, b=%d, rest=%j", b, c.slice(i).toString()) - if (b === space) { - this._state = KEY - // this._fieldPos = this._sizeBuf.length - this._size = parseInt(new Buffer(this._sizeBuf).toString(), 10) - this._sizeBuf.length = 0 - continue - } - if (b < _0 || b > _9) { - error(this, "expected [" + _0 + ".." + _9 + "], got " + b) - return - } - this._sizeBuf.push(b) - continue - - case KEY: - // can be any char except =, not > size. - if (b === eq) { - this._state = VAL - this._key = new Buffer(this._keyBuf).toString() - if (keyTrans[this._key]) this._key = keyTrans[this._key] - this._keyBuf.length = 0 - continue - } - this._keyBuf.push(b) - continue - - case VAL: - // field must end with cr - if (this._fieldPos === this._size - 1) { - // console.error("finished with "+this._key) - if (b !== cr) { - error(this, "expected \\n at end of field") - return - } - var val = new Buffer(this._valBuf).toString() - if (numeric[this._key]) { - val = parseFloat(val) - } - this.fields[this._key] = val - - this._valBuf.length = 0 - this._state = SIZE - this._size = -1 - this._fieldPos = -1 - continue - } - this._valBuf.push(b) - continue - } - } -} - -function error (me, msg) { - msg = "invalid header: " + msg - + "\nposition=" + me._position - + "\nfield position=" + me._fieldPos - - me.error(msg) - me.state = ERR -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js deleted file mode 100644 index c34a81e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js +++ /dev/null @@ -1,78 +0,0 @@ -// give it a tarball and a path, and it'll dump the contents - -module.exports = Extract - -var tar = require("../tar.js") - , fstream = require("fstream") - , inherits = require("inherits") - , path = require("path") - -function Extract (opts) { - if (!(this instanceof Extract)) return new Extract(opts) - tar.Parse.apply(this) - - // have to dump into a directory - opts.type = "Directory" - opts.Directory = true - - if (typeof opts !== "object") { - opts = { path: opts } - } - - // better to drop in cwd? seems more standard. - opts.path = opts.path || path.resolve("node-tar-extract") - opts.type = "Directory" - opts.Directory = true - - // similar to --strip or --strip-components - opts.strip = +opts.strip - if (!opts.strip || opts.strip <= 0) opts.strip = 0 - - this._fst = fstream.Writer(opts) - - this.pause() - var me = this - - // Hardlinks in tarballs are relative to the root - // of the tarball. So, they need to be resolved against - // the target directory in order to be created properly. - me.on("entry", function (entry) { - // if there's a "strip" argument, then strip off that many - // path components. - if (opts.strip) { - var p = entry.path.split("/").slice(opts.strip).join("/") - entry.path = entry.props.path = p - if (entry.linkpath) { - var lp = entry.linkpath.split("/").slice(opts.strip).join("/") - entry.linkpath = entry.props.linkpath = lp - } - } - if (entry.type !== "Link") return - entry.linkpath = entry.props.linkpath = - path.join(opts.path, path.join("/", entry.props.linkpath)) - }) - - this._fst.on("ready", function () { - me.pipe(me._fst, { end: false }) - me.resume() - }) - - // this._fst.on("end", function () { - // console.error("\nEEEE Extract End", me._fst.path) - // }) - - this._fst.on("close", function () { - // console.error("\nEEEE Extract End", me._fst.path) - me.emit("end") - me.emit("close") - }) -} - -inherits(Extract, tar.Parse) - -Extract.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me._fst.end() - // my .end() is coming later. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js deleted file mode 100644 index 0bfc7b80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = GlobalHeaderWriter - -var ExtendedHeaderWriter = require("./extended-header-writer.js") - , inherits = require("inherits") - -inherits(GlobalHeaderWriter, ExtendedHeaderWriter) - -function GlobalHeaderWriter (props) { - if (!(this instanceof GlobalHeaderWriter)) { - return new GlobalHeaderWriter(props) - } - ExtendedHeaderWriter.call(this, props) - this.props.type = "g" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js deleted file mode 100644 index 05b237c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js +++ /dev/null @@ -1,385 +0,0 @@ -// parse a 512-byte header block to a data object, or vice-versa -// If the data won't fit nicely in a simple header, then generate -// the appropriate extended header file, and return that. - -module.exports = TarHeader - -var tar = require("../tar.js") - , fields = tar.fields - , fieldOffs = tar.fieldOffs - , fieldEnds = tar.fieldEnds - , fieldSize = tar.fieldSize - , numeric = tar.numeric - , assert = require("assert").ok - , space = " ".charCodeAt(0) - , slash = "/".charCodeAt(0) - , bslash = process.platform === "win32" ? "\\".charCodeAt(0) : null - -function TarHeader (block) { - if (!(this instanceof TarHeader)) return new TarHeader(block) - if (block) this.decode(block) -} - -TarHeader.prototype = - { decode : decode - , encode: encode - , calcSum: calcSum - , checkSum: checkSum - } - -TarHeader.parseNumeric = parseNumeric -TarHeader.encode = encode -TarHeader.decode = decode - -// note that this will only do the normal ustar header, not any kind -// of extended posix header file. If something doesn't fit comfortably, -// then it will set obj.needExtended = true, and set the block to -// the closest approximation. -function encode (obj) { - if (!obj && !(this instanceof TarHeader)) throw new Error( - "encode must be called on a TarHeader, or supplied an object") - - obj = obj || this - var block = obj.block = new Buffer(512) - - // if the object has a "prefix", then that's actually an extension of - // the path field. - if (obj.prefix) { - // console.error("%% header encoding, got a prefix", obj.prefix) - obj.path = obj.prefix + "/" + obj.path - // console.error("%% header encoding, prefixed path", obj.path) - obj.prefix = "" - } - - obj.needExtended = false - - if (obj.mode) { - if (typeof obj.mode === "string") obj.mode = parseInt(obj.mode, 8) - obj.mode = obj.mode & 0777 - } - - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , off = fieldOffs[f] - , end = fieldEnds[f] - , ret - - switch (field) { - case "cksum": - // special, done below, after all the others - break - - case "prefix": - // special, this is an extension of the "path" field. - // console.error("%% header encoding, skip prefix later") - break - - case "type": - // convert from long name to a single char. - var type = obj.type || "0" - if (type.length > 1) { - type = tar.types[obj.type] - if (!type) type = "0" - } - writeText(block, off, end, type) - break - - case "path": - // uses the "prefix" field if > 100 bytes, but <= 255 - var pathLen = Buffer.byteLength(obj.path) - , pathFSize = fieldSize[fields.path] - , prefFSize = fieldSize[fields.prefix] - - // paths between 100 and 255 should use the prefix field. - // longer than 255 - if (pathLen > pathFSize && - pathLen <= pathFSize + prefFSize) { - // need to find a slash somewhere in the middle so that - // path and prefix both fit in their respective fields - var searchStart = pathLen - 1 - pathFSize - , searchEnd = prefFSize - , found = false - , pathBuf = new Buffer(obj.path) - - for ( var s = searchStart - ; (s <= searchEnd) - ; s ++ ) { - if (pathBuf[s] === slash || pathBuf[s] === bslash) { - found = s - break - } - } - - if (found !== false) { - prefix = pathBuf.slice(0, found).toString("utf8") - path = pathBuf.slice(found + 1).toString("utf8") - - ret = writeText(block, off, end, path) - off = fieldOffs[fields.prefix] - end = fieldEnds[fields.prefix] - // console.error("%% header writing prefix", off, end, prefix) - ret = writeText(block, off, end, prefix) || ret - break - } - } - - // paths less than 100 chars don't need a prefix - // and paths longer than 255 need an extended header and will fail - // on old implementations no matter what we do here. - // Null out the prefix, and fallthrough to default. - // console.error("%% header writing no prefix") - var poff = fieldOffs[fields.prefix] - , pend = fieldEnds[fields.prefix] - writeText(block, poff, pend, "") - // fallthrough - - // all other fields are numeric or text - default: - ret = numeric[field] - ? writeNumeric(block, off, end, obj[field]) - : writeText(block, off, end, obj[field] || "") - break - } - obj.needExtended = obj.needExtended || ret - } - - var off = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - writeNumeric(block, off, end, calcSum.call(this, block)) - - return block -} - -// if it's a negative number, or greater than will fit, -// then use write256. -var MAXNUM = { 12: 077777777777 - , 11: 07777777777 - , 8 : 07777777 - , 7 : 0777777 } -function writeNumeric (block, off, end, num) { - var writeLen = end - off - , maxNum = MAXNUM[writeLen] || 0 - - num = num || 0 - // console.error(" numeric", num) - - if (num instanceof Date || - Object.prototype.toString.call(num) === "[object Date]") { - num = num.getTime() / 1000 - } - - if (num > maxNum || num < 0) { - write256(block, off, end, num) - // need an extended header if negative or too big. - return true - } - - // god, tar is so annoying - // if the string is small enough, you should put a space - // between the octal string and the \0, but if it doesn't - // fit, then don't. - var numStr = Math.floor(num).toString(8) - if (num < MAXNUM[writeLen - 1]) numStr += " " - - // pad with "0" chars - if (numStr.length < writeLen) { - numStr = (new Array(writeLen - numStr.length).join("0")) + numStr - } - - if (numStr.length !== writeLen - 1) { - throw new Error("invalid length: " + JSON.stringify(numStr) + "\n" + - "expected: "+writeLen) - } - block.write(numStr, off, writeLen, "utf8") - block[end - 1] = 0 -} - -function write256 (block, off, end, num) { - var buf = block.slice(off, end) - var positive = num >= 0 - buf[0] = positive ? 0x80 : 0xFF - - // get the number as a base-256 tuple - if (!positive) num *= -1 - var tuple = [] - do { - var n = num % 256 - tuple.push(n) - num = (num - n) / 256 - } while (num) - - var bytes = tuple.length - - var fill = buf.length - bytes - for (var i = 1; i < fill; i ++) { - buf[i] = positive ? 0 : 0xFF - } - - // tuple is a base256 number, with [0] as the *least* significant byte - // if it's negative, then we need to flip all the bits once we hit the - // first non-zero bit. The 2's-complement is (0x100 - n), and the 1's- - // complement is (0xFF - n). - var zero = true - for (i = bytes; i > 0; i --) { - var byte = tuple[bytes - i] - if (positive) buf[fill + i] = byte - else if (zero && byte === 0) buf[fill + i] = 0 - else if (zero) { - zero = false - buf[fill + i] = 0x100 - byte - } else buf[fill + i] = 0xFF - byte - } -} - -function writeText (block, off, end, str) { - // strings are written as utf8, then padded with \0 - var strLen = Buffer.byteLength(str) - , writeLen = Math.min(strLen, end - off) - // non-ascii fields need extended headers - // long fields get truncated - , needExtended = strLen !== str.length || strLen > writeLen - - // write the string, and null-pad - if (writeLen > 0) block.write(str, off, writeLen, "utf8") - for (var i = off + writeLen; i < end; i ++) block[i] = 0 - - return needExtended -} - -function calcSum (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - if (!block) throw new Error("Need block to checksum") - - // now figure out what it would be if the cksum was " " - var sum = 0 - , start = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - for (var i = 0; i < fieldOffs[fields.cksum]; i ++) { - sum += block[i] - } - - for (var i = start; i < end; i ++) { - sum += space - } - - for (var i = end; i < 512; i ++) { - sum += block[i] - } - - return sum -} - - -function checkSum (block) { - var sum = calcSum.call(this, block) - block = block || this.block - - var cksum = block.slice(fieldOffs[fields.cksum], fieldEnds[fields.cksum]) - cksum = parseNumeric(cksum) - - return cksum === sum -} - -function decode (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - this.block = block - this.cksumValid = this.checkSum() - - var prefix = null - - // slice off each field. - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = block.slice(fieldOffs[f], fieldEnds[f]) - - switch (field) { - case "ustar": - // if not ustar, then everything after that is just padding. - if (val.toString() !== "ustar\0") { - this.ustar = false - return - } else { - // console.error("ustar:", val, val.toString()) - this.ustar = val.toString() - } - break - - // prefix is special, since it might signal the xstar header - case "prefix": - var atime = parseNumeric(val.slice(131, 131 + 12)) - , ctime = parseNumeric(val.slice(131 + 12, 131 + 12 + 12)) - if ((val[130] === 0 || val[130] === space) && - typeof atime === "number" && - typeof ctime === "number" && - val[131 + 12] === space && - val[131 + 12 + 12] === space) { - this.atime = atime - this.ctime = ctime - val = val.slice(0, 130) - } - prefix = val.toString("utf8").replace(/\0+$/, "") - // console.error("%% header reading prefix", prefix) - break - - // all other fields are null-padding text - // or a number. - default: - if (numeric[field]) { - this[field] = parseNumeric(val) - } else { - this[field] = val.toString("utf8").replace(/\0+$/, "") - } - break - } - } - - // if we got a prefix, then prepend it to the path. - if (prefix) { - this.path = prefix + "/" + this.path - // console.error("%% header got a prefix", this.path) - } -} - -function parse256 (buf) { - // first byte MUST be either 80 or FF - // 80 for positive, FF for 2's comp - var positive - if (buf[0] === 0x80) positive = true - else if (buf[0] === 0xFF) positive = false - else return null - - // build up a base-256 tuple from the least sig to the highest - var zero = false - , tuple = [] - for (var i = buf.length - 1; i > 0; i --) { - var byte = buf[i] - if (positive) tuple.push(byte) - else if (zero && byte === 0) tuple.push(0) - else if (zero) { - zero = false - tuple.push(0x100 - byte) - } else tuple.push(0xFF - byte) - } - - for (var sum = 0, i = 0, l = tuple.length; i < l; i ++) { - sum += tuple[i] * Math.pow(256, i) - } - - return positive ? sum : -1 * sum -} - -function parseNumeric (f) { - if (f[0] & 0x80) return parse256(f) - - var str = f.toString("utf8").split("\0")[0].trim() - , res = parseInt(str, 8) - - return isNaN(res) ? null : res -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js deleted file mode 100644 index 3ff14dd6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js +++ /dev/null @@ -1,231 +0,0 @@ -// pipe in an fstream, and it'll make a tarball. -// key-value pair argument is global extended header props. - -module.exports = Pack - -var EntryWriter = require("./entry-writer.js") - , Stream = require("stream").Stream - , path = require("path") - , inherits = require("inherits") - , GlobalHeaderWriter = require("./global-header-writer.js") - , collect = require("fstream").collect - , eof = new Buffer(512) - -for (var i = 0; i < 512; i ++) eof[i] = 0 - -inherits(Pack, Stream) - -function Pack (props) { - // console.error("-- p ctor") - var me = this - if (!(me instanceof Pack)) return new Pack(props) - - if (props) me._noProprietary = props.noProprietary - else me._noProprietary = false - - me._global = props - - me.readable = true - me.writable = true - me._buffer = [] - // console.error("-- -- set current to null in ctor") - me._currentEntry = null - me._processing = false - - me._pipeRoot = null - me.on("pipe", function (src) { - if (src.root === me._pipeRoot) return - me._pipeRoot = src - src.on("end", function () { - me._pipeRoot = null - }) - me.add(src) - }) -} - -Pack.prototype.addGlobal = function (props) { - // console.error("-- p addGlobal") - if (this._didGlobal) return - this._didGlobal = true - - var me = this - GlobalHeaderWriter(props) - .on("data", function (c) { - me.emit("data", c) - }) - .end() -} - -Pack.prototype.add = function (stream) { - if (this._global && !this._didGlobal) this.addGlobal(this._global) - - if (this._ended) return this.emit("error", new Error("add after end")) - - collect(stream) - this._buffer.push(stream) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -Pack.prototype.pause = function () { - this._paused = true - if (this._currentEntry) this._currentEntry.pause() - this.emit("pause") -} - -Pack.prototype.resume = function () { - this._paused = false - if (this._currentEntry) this._currentEntry.resume() - this.emit("resume") - this._process() -} - -Pack.prototype.end = function () { - this._ended = true - this._buffer.push(eof) - this._process() -} - -Pack.prototype._process = function () { - var me = this - if (me._paused || me._processing) { - return - } - - var entry = me._buffer.shift() - - if (!entry) { - if (me._needDrain) { - me.emit("drain") - } - return - } - - if (entry.ready === false) { - // console.error("-- entry is not ready", entry) - me._buffer.unshift(entry) - entry.on("ready", function () { - // console.error("-- -- ready!", entry) - me._process() - }) - return - } - - me._processing = true - - if (entry === eof) { - // need 2 ending null blocks. - me.emit("data", eof) - me.emit("data", eof) - me.emit("end") - me.emit("close") - return - } - - // Change the path to be relative to the root dir that was - // added to the tarball. - // - // XXX This should be more like how -C works, so you can - // explicitly set a root dir, and also explicitly set a pathname - // in the tarball to use. That way we can skip a lot of extra - // work when resolving symlinks for bundled dependencies in npm. - - var root = path.dirname((entry.root || entry).path) - var wprops = {} - - Object.keys(entry.props || {}).forEach(function (k) { - wprops[k] = entry.props[k] - }) - - if (me._noProprietary) wprops.noProprietary = true - - wprops.path = path.relative(root, entry.path || '') - - // actually not a matter of opinion or taste. - if (process.platform === "win32") { - wprops.path = wprops.path.replace(/\\/g, "/") - } - - if (!wprops.type) - wprops.type = 'Directory' - - switch (wprops.type) { - // sockets not supported - case "Socket": - return - - case "Directory": - wprops.path += "/" - wprops.size = 0 - break - - case "Link": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(root, lp) || "." - wprops.size = 0 - break - - case "SymbolicLink": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "." - wprops.size = 0 - break - } - - // console.error("-- new writer", wprops) - // if (!wprops.type) { - // // console.error("-- no type?", entry.constructor.name, entry) - // } - - // console.error("-- -- set current to new writer", wprops.path) - var writer = me._currentEntry = EntryWriter(wprops) - - writer.parent = me - - // writer.on("end", function () { - // // console.error("-- -- writer end", writer.path) - // }) - - writer.on("data", function (c) { - me.emit("data", c) - }) - - writer.on("header", function () { - Buffer.prototype.toJSON = function () { - return this.toString().split(/\0/).join(".") - } - // console.error("-- -- writer header %j", writer.props) - if (writer.props.size === 0) nextEntry() - }) - writer.on("close", nextEntry) - - var ended = false - function nextEntry () { - if (ended) return - ended = true - - // console.error("-- -- writer close", writer.path) - // console.error("-- -- set current to null", wprops.path) - me._currentEntry = null - me._processing = false - me._process() - } - - writer.on("error", function (er) { - // console.error("-- -- writer error", writer.path) - me.emit("error", er) - }) - - // if it's the root, then there's no need to add its entries, - // or data, since they'll be added directly. - if (entry === me._pipeRoot) { - // console.error("-- is the root, don't auto-add") - writer.add = null - } - - entry.pipe(writer) -} - -Pack.prototype.destroy = function () {} -Pack.prototype.write = function () {} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js deleted file mode 100644 index 884e73db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js +++ /dev/null @@ -1,270 +0,0 @@ - -// A writable stream. -// It emits "entry" events, which provide a readable stream that has -// header info attached. - -module.exports = Parse.create = Parse - -var stream = require("stream") - , Stream = stream.Stream - , BlockStream = require("block-stream") - , tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , BufferEntry = require("./buffer-entry.js") - , ExtendedHeader = require("./extended-header.js") - , assert = require("assert").ok - , inherits = require("inherits") - , fstream = require("fstream") - -// reading a tar is a lot like reading a directory -// However, we're actually not going to run the ctor, -// since it does a stat and various other stuff. -// This inheritance gives us the pause/resume/pipe -// behavior that is desired. -inherits(Parse, fstream.Reader) - -function Parse () { - var me = this - if (!(me instanceof Parse)) return new Parse() - - // doesn't apply fstream.Reader ctor? - // no, becasue we don't want to stat/etc, we just - // want to get the entry/add logic from .pipe() - Stream.apply(me) - - me.writable = true - me.readable = true - me._stream = new BlockStream(512) - me.position = 0 - - me._stream.on("error", function (e) { - me.emit("error", e) - }) - - me._stream.on("data", function (c) { - me._process(c) - }) - - me._stream.on("end", function () { - me._streamEnd() - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) -} - -// overridden in Extract class, since it needs to -// wait for its DirWriter part to finish before -// emitting "end" -Parse.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me.emit("end") -} - -// a tar reader is actually a filter, not just a readable stream. -// So, you should pipe a tarball stream into it, and it needs these -// write/end methods to do that. -Parse.prototype.write = function (c) { - if (this._ended) { - // gnutar puts a LOT of nulls at the end. - // you can keep writing these things forever. - // Just ignore them. - for (var i = 0, l = c.length; i > l; i ++) { - if (c[i] !== 0) return this.error("write() after end()") - } - return - } - return this._stream.write(c) -} - -Parse.prototype.end = function (c) { - this._ended = true - return this._stream.end(c) -} - -// don't need to do anything, since we're just -// proxying the data up from the _stream. -// Just need to override the parent's "Not Implemented" -// error-thrower. -Parse.prototype._read = function () {} - -Parse.prototype._process = function (c) { - assert(c && c.length === 512, "block size should be 512") - - // one of three cases. - // 1. A new header - // 2. A part of a file/extended header - // 3. One of two or more EOF null blocks - - if (this._entry) { - var entry = this._entry - entry.write(c) - if (entry._remaining === 0) { - entry.end() - this._entry = null - } - } else { - // either zeroes or a header - var zero = true - for (var i = 0; i < 512 && zero; i ++) { - zero = c[i] === 0 - } - - // eof is *at least* 2 blocks of nulls, and then the end of the - // file. you can put blocks of nulls between entries anywhere, - // so appending one tarball to another is technically valid. - // ending without the eof null blocks is not allowed, however. - if (zero) { - this._ended = this._eofStarted - this._eofStarted = true - } else { - this._ended = this._eofStarted = false - this._startEntry(c) - } - - } - - this.position += 512 -} - -// take a header chunk, start the right kind of entry. -Parse.prototype._startEntry = function (c) { - var header = new TarHeader(c) - , self = this - , entry - , ev - , EntryType - , onend - , meta = false - - if (null === header.size || !header.cksumValid) { - var e = new Error("invalid tar file") - e.header = header - e.tar_file_offset = this.position - e.tar_block = this.position / 512 - this.emit("error", e) - } - - switch (tar.types[header.type]) { - case "File": - case "OldFile": - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - case "ContiguousFile": - case "GNUDumpDir": - // start a file. - // pass in any extended headers - // These ones consumers are typically most interested in. - EntryType = Entry - ev = "entry" - break - - case "GlobalExtendedHeader": - // extended headers that apply to the rest of the tarball - EntryType = ExtendedHeader - onend = function () { - self._global = self._global || {} - Object.keys(entry.fields).forEach(function (k) { - self._global[k] = entry.fields[k] - }) - } - ev = "globalExtendedHeader" - meta = true - break - - case "ExtendedHeader": - case "OldExtendedHeader": - // extended headers that apply to the next entry - EntryType = ExtendedHeader - onend = function () { - self._extended = entry.fields - } - ev = "extendedHeader" - meta = true - break - - case "NextFileHasLongLinkpath": - // set linkpath=<contents> in extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.linkpath = entry.body - } - ev = "longLinkpath" - meta = true - break - - case "NextFileHasLongPath": - case "OldGnuLongPath": - // set path=<contents> in file-extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.path = entry.body - } - ev = "longPath" - meta = true - break - - default: - // all the rest we skip, but still set the _entry - // member, so that we can skip over their data appropriately. - // emit an event to say that this is an ignored entry type? - EntryType = Entry - ev = "ignoredEntry" - break - } - - var global, extended - if (meta) { - global = extended = null - } else { - var global = this._global - var extended = this._extended - - // extendedHeader only applies to one entry, so once we start - // an entry, it's over. - this._extended = null - } - entry = new EntryType(header, extended, global) - entry.meta = meta - - // only proxy data events of normal files. - if (!meta) { - entry.on("data", function (c) { - me.emit("data", c) - }) - } - - if (onend) entry.on("end", onend) - - this._entry = entry - var me = this - - entry.on("pause", function () { - me.pause() - }) - - entry.on("resume", function () { - me.resume() - }) - - if (this.listeners("*").length) { - this.emit("*", ev, entry) - } - - this.emit(ev, entry) - - // Zero-byte entry. End immediately. - if (entry.props.size === 0) { - entry.end() - this._entry = null - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE deleted file mode 100644 index 74489e2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md deleted file mode 100644 index c16e9c46..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# block-stream - -A stream of blocks. - -Write data into it, and it'll output data in buffer blocks the size you -specify, padding with zeroes if necessary. - -```javascript -var block = new BlockStream(512) -fs.createReadStream("some-file").pipe(block) -block.pipe(fs.createWriteStream("block-file")) -``` - -When `.end()` or `.flush()` is called, it'll pad the block with zeroes. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js deleted file mode 100644 index 9328844a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js deleted file mode 100644 index 1141f3a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js deleted file mode 100644 index 93e4068e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js deleted file mode 100644 index 55fa1330..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js deleted file mode 100644 index 008de035..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js +++ /dev/null @@ -1,209 +0,0 @@ -// write data to it, and it'll emit data in 512 byte blocks. -// if you .end() or .flush(), it'll emit whatever it's got, -// padded with nulls to 512 bytes. - -module.exports = BlockStream - -var Stream = require("stream").Stream - , inherits = require("inherits") - , assert = require("assert").ok - , debug = process.env.DEBUG ? console.error : function () {} - -function BlockStream (size, opt) { - this.writable = this.readable = true - this._opt = opt || {} - this._chunkSize = size || 512 - this._offset = 0 - this._buffer = [] - this._bufferLength = 0 - if (this._opt.nopad) this._zeroes = false - else { - this._zeroes = new Buffer(this._chunkSize) - for (var i = 0; i < this._chunkSize; i ++) { - this._zeroes[i] = 0 - } - } -} - -inherits(BlockStream, Stream) - -BlockStream.prototype.write = function (c) { - // debug(" BS write", c) - if (this._ended) throw new Error("BlockStream: write after end") - if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "") - if (c.length) { - this._buffer.push(c) - this._bufferLength += c.length - } - // debug("pushed onto buffer", this._bufferLength) - if (this._bufferLength >= this._chunkSize) { - if (this._paused) { - // debug(" BS paused, return false, need drain") - this._needDrain = true - return false - } - this._emitChunk() - } - return true -} - -BlockStream.prototype.pause = function () { - // debug(" BS pausing") - this._paused = true -} - -BlockStream.prototype.resume = function () { - // debug(" BS resume") - this._paused = false - return this._emitChunk() -} - -BlockStream.prototype.end = function (chunk) { - // debug("end", chunk) - if (typeof chunk === "function") cb = chunk, chunk = null - if (chunk) this.write(chunk) - this._ended = true - this.flush() -} - -BlockStream.prototype.flush = function () { - this._emitChunk(true) -} - -BlockStream.prototype._emitChunk = function (flush) { - // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused) - - // emit a <chunkSize> chunk - if (flush && this._zeroes) { - // debug(" BS push zeroes", this._bufferLength) - // push a chunk of zeroes - var padBytes = (this._bufferLength % this._chunkSize) - if (padBytes !== 0) padBytes = this._chunkSize - padBytes - if (padBytes > 0) { - // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes)) - this._buffer.push(this._zeroes.slice(0, padBytes)) - this._bufferLength += padBytes - // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength) - } - } - - if (this._emitting || this._paused) return - this._emitting = true - - // debug(" BS entering loops") - var bufferIndex = 0 - while (this._bufferLength >= this._chunkSize && - (flush || !this._paused)) { - // debug(" BS data emission loop", this._bufferLength) - - var out - , outOffset = 0 - , outHas = this._chunkSize - - while (outHas > 0 && (flush || !this._paused) ) { - // debug(" BS data inner emit loop", this._bufferLength) - var cur = this._buffer[bufferIndex] - , curHas = cur.length - this._offset - // debug("cur=", cur) - // debug("curHas=%j", curHas) - // If it's not big enough to fill the whole thing, then we'll need - // to copy multiple buffers into one. However, if it is big enough, - // then just slice out the part we want, to save unnecessary copying. - // Also, need to copy if we've already done some copying, since buffers - // can't be joined like cons strings. - if (out || curHas < outHas) { - out = out || new Buffer(this._chunkSize) - cur.copy(out, outOffset, - this._offset, this._offset + Math.min(curHas, outHas)) - } else if (cur.length === outHas && this._offset === 0) { - // shortcut -- cur is exactly long enough, and no offset. - out = cur - } else { - // slice out the piece of cur that we need. - out = cur.slice(this._offset, this._offset + outHas) - } - - if (curHas > outHas) { - // means that the current buffer couldn't be completely output - // update this._offset to reflect how much WAS written - this._offset += outHas - outHas = 0 - } else { - // output the entire current chunk. - // toss it away - outHas -= curHas - outOffset += curHas - bufferIndex ++ - this._offset = 0 - } - } - - this._bufferLength -= this._chunkSize - assert(out.length === this._chunkSize) - // debug("emitting data", out) - // debug(" BS emitting, paused=%j", this._paused, this._bufferLength) - this.emit("data", out) - out = null - } - // debug(" BS out of loops", this._bufferLength) - - // whatever is left, it's not enough to fill up a block, or we're paused - this._buffer = this._buffer.slice(bufferIndex) - if (this._paused) { - // debug(" BS paused, leaving", this._bufferLength) - this._needsDrain = true - this._emitting = false - return - } - - // if flushing, and not using null-padding, then need to emit the last - // chunk(s) sitting in the queue. We know that it's not enough to - // fill up a whole block, because otherwise it would have been emitted - // above, but there may be some offset. - var l = this._buffer.length - if (flush && !this._zeroes && l) { - if (l === 1) { - if (this._offset) { - this.emit("data", this._buffer[0].slice(this._offset)) - } else { - this.emit("data", this._buffer[0]) - } - } else { - var outHas = this._bufferLength - , out = new Buffer(outHas) - , outOffset = 0 - for (var i = 0; i < l; i ++) { - var cur = this._buffer[i] - , curHas = cur.length - this._offset - cur.copy(out, outOffset, this._offset) - this._offset = 0 - outOffset += curHas - this._bufferLength -= curHas - } - this.emit("data", out) - } - // truncate - this._buffer.length = 0 - this._bufferLength = 0 - this._offset = 0 - } - - // now either drained or ended - // debug("either draining, or ended", this._bufferLength, this._ended) - // means that we've flushed out all that we can so far. - if (this._needDrain) { - // debug("emitting drain", this._bufferLength) - this._needDrain = false - this.emit("drain") - } - - if ((this._bufferLength === 0) && this._ended && !this._endEmitted) { - // debug("emitting end", this._bufferLength) - this._endEmitted = true - this.emit("end") - } - - this._emitting = false - - // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json deleted file mode 100644 index 48840aa1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "block-stream", - "description": "a stream of blocks", - "version": "0.0.7", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/block-stream.git" - }, - "engines": { - "node": "0.4 || >=0.5.8" - }, - "main": "block-stream.js", - "dependencies": { - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "0.x" - }, - "scripts": { - "test": "tap test/" - }, - "license": "BSD", - "readme": "# block-stream\n\nA stream of blocks.\n\nWrite data into it, and it'll output data in buffer blocks the size you\nspecify, padding with zeroes if necessary.\n\n```javascript\nvar block = new BlockStream(512)\nfs.createReadStream(\"some-file\").pipe(block)\nblock.pipe(fs.createWriteStream(\"block-file\"))\n```\n\nWhen `.end()` or `.flush()` is called, it'll pad the block with zeroes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/block-stream/issues" - }, - "homepage": "https://github.com/isaacs/block-stream", - "_id": "block-stream@0.0.7", - "_from": "block-stream@*" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js deleted file mode 100644 index b4b93051..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js +++ /dev/null @@ -1,27 +0,0 @@ -var tap = require("tap") - , BlockStream = require("../block-stream.js") - -tap.test("basic test", function (t) { - var b = new BlockStream(16) - var fs = require("fs") - var fstr = fs.createReadStream(__filename, {encoding: "utf8"}) - fstr.pipe(b) - - var stat - t.doesNotThrow(function () { - stat = fs.statSync(__filename) - }, "stat should not throw") - - var totalBytes = 0 - b.on("data", function (c) { - t.equal(c.length, 16, "chunks should be 16 bytes long") - t.type(c, Buffer, "chunks should be buffer objects") - totalBytes += c.length - }) - b.on("end", function () { - var expectedBytes = stat.size + (16 - stat.size % 16) - t.equal(totalBytes, expectedBytes, "Should be multiple of 16") - t.end() - }) - -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js deleted file mode 100644 index 7a8de88b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js deleted file mode 100644 index 6d38429f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js +++ /dev/null @@ -1,57 +0,0 @@ -var BlockStream = require("../") -var tap = require("tap") - - -tap.test("don't pad, small writes", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - f.on("data", function (c) { - t.equal(c.toString(), "abc", "should get 'abc'") - }) - - f.on("end", function () { t.end() }) - - f.write(new Buffer("a")) - f.write(new Buffer("b")) - f.write(new Buffer("c")) - f.end() -}) - -tap.test("don't pad, exact write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.fail("should only get one") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnop")) -}) - -tap.test("don't pad, big write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(2) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.equal(c.toString(), "q") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnopq")) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js deleted file mode 100644 index 64d0d091..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16] - , writeSizes = [15, 16, 17] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - var paused = false - - f.on("data", function (c) { - timeouts ++ - t.notOk(paused, "should not be paused when emitting data") - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - paused = true - f.pause() - process.nextTick(function () { - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - paused = false - f.resume() - timeouts -- - }) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 200) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js deleted file mode 100644 index 1cc9ea08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js deleted file mode 100644 index c6db79a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js +++ /dev/null @@ -1,59 +0,0 @@ -var log = console.log, - assert = require( 'assert' ), - BlockStream = require("../block-stream.js"), - isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0, - filter = null, paper = null, stack = null, - -// a source data buffer -tsize = 1 * 1024; // <- 1K -stack = new Buffer( tsize ); -for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0); - -isize = 1 * 1024; // <- initial packet size with 4K no bug! -fsize = 2 * 1024 ; // <- first block-stream size -psize = Math.ceil( isize / 6 ); // <- second block-stream size - -fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first -pexpected = Math.ceil( tsize / psize ); // <- packets expected for second - - -filter = new BlockStream( fsize, { nopad : true } ); -paper = new BlockStream( psize, { nopad : true } ); - - -var fcounter = 0; -filter.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++fcounter; -} ); - -var pcounter = 0; -paper.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++pcounter; -} ); - -filter.pipe( paper ); - -filter.on( 'end', function () { - log("fcounter: %s === %s", fcounter, fexpected) - assert.strictEqual( fcounter, fexpected ); -} ); - -paper.on( 'end', function () { - log("pcounter: %s === %s", pcounter, pexpected); - assert.strictEqual( pcounter, pexpected ); -} ); - - -for ( i = 0, j = isize; j <= tsize; j += isize ) { - filter.write( stack.slice( j - isize, j ) ); -} - -filter.end(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore deleted file mode 100644 index 494272a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules/ -examples/deep-copy/ -examples/path/ -examples/filter-copy/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml deleted file mode 100644 index 2d26206d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md deleted file mode 100644 index 9d8cb77e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md +++ /dev/null @@ -1,76 +0,0 @@ -Like FS streams, but with stat on them, and supporting directories and -symbolic links, as well as normal files. Also, you can use this to set -the stats on a file, even if you don't change its contents, or to create -a symlink, etc. - -So, for example, you can "write" a directory, and it'll call `mkdir`. You -can specify a uid and gid, and it'll call `chown`. You can specify a -`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink -and provide a `linkpath` and it'll call `symlink`. - -Note that it won't automatically resolve symbolic links. So, if you -call `fstream.Reader('/some/symlink')` then you'll get an object -that stats and then ends immediately (since it has no data). To follow -symbolic links, do this: `fstream.Reader({path:'/some/symlink', follow: -true })`. - -There are various checks to make sure that the bytes emitted are the -same as the intended size, if the size is set. - -## Examples - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - }) - .write("hello\n") - .end() -``` - -This will create the directories if they're missing, and then write -`hello\n` into the file, chmod it to 0755, and assert that 6 bytes have -been written when it's done. - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - , flags: "a" - }) - .write("hello\n") - .end() -``` - -You can pass flags in, if you want to append to a file. - -```javascript -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , SymbolicLink: true - , mode: "0755" // octal strings supported - }) - .end() -``` - -If isSymbolicLink is a function, it'll be called, and if it returns -true, then it'll treat it as a symlink. If it's not a function, then -any truish value will make a symlink, or you can set `type: -'SymbolicLink'`, which does the same thing. - -Note that the linkpath is relative to the symbolic link location, not -the parent dir or cwd. - -```javascript -fstream - .Reader("path/to/dir") - .pipe(fstream.Writer("path/to/other/dir")) -``` - -This will do like `cp -Rp path/to/dir path/to/other/dir`. If the other -dir exists and isn't a directory, then it'll emit an error. It'll also -set the uid, gid, mode, etc. to be identical. In this way, it's more -like `rsync -a` than simply a copy. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js deleted file mode 100644 index c6b55b3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js +++ /dev/null @@ -1,131 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - !this.basename.match(/^filter-copy$/) - } - }) - -// this writer will only write directories -var w = fstream.Writer({ path: path.resolve(__dirname, "filter-copy") - , type: "Directory" - , filter: function () { - return this.type === "Directory" - } - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 1000) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -var i = 1 -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok " + (i ++) + " A WINNAR IS YOU") - ended = true - // now go through and verify that everything in there is a dir. - var p = path.resolve(__dirname, "filter-copy") - var checker = fstream.Reader({ path: p }) - checker.checker = true - checker.on("child", function (e) { - var ok = e.type === "Directory" - console.log((ok ? "" : "not ") + "ok " + (i ++) + - " should be a dir: " + - e.path.substr(checker.path.length + 1)) - }) -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok " + (i ++) + " ended") -}) - -r.pipe(w) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js deleted file mode 100644 index 648ec849..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js +++ /dev/null @@ -1,115 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - } - }) - -var w = fstream.Writer({ path: path.resolve(__dirname, "deep-copy") - , type: "Directory" - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename, entry) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 10) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok 1 A WINNAR IS YOU") - ended = true -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok 2 ended") -}) - -r.pipe(w) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js deleted file mode 100644 index 9aa1a953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js +++ /dev/null @@ -1,54 +0,0 @@ -var fstream = require("../fstream.js") -var tap = require("tap") -var fs = require("fs") -var path = require("path") -var children = -1 -var dir = path.dirname(__dirname) - -var gotReady = false -var ended = false - -tap.test("reader test", function (t) { - - var r = fstream.Reader({ path: dir - , filter: function () { - // return this.parent === r - return this.parent === r || this === r - } - }) - - r.on("ready", function () { - gotReady = true - children = fs.readdirSync(dir).length - console.error("Setting expected children to "+children) - t.equal(r.type, "Directory", "should be a directory") - }) - - r.on("entry", function (entry) { - children -- - if (!gotReady) { - t.fail("children before ready!") - } - t.equal(entry.dirname, r.path, "basename is parent dir") - }) - - r.on("error", function (er) { - t.fail(er) - t.end() - process.exit(1) - }) - - r.on("end", function () { - t.equal(children, 0, "should have seen all children") - ended = true - }) - - var closed = false - r.on("close", function () { - t.ok(ended, "saw end before close") - t.notOk(closed, "close should only happen once") - closed = true - t.end() - }) - -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js deleted file mode 100644 index d7816d24..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js +++ /dev/null @@ -1,24 +0,0 @@ -var fstream = require("../fstream.js") - , closed = false - -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , isSymbolicLink: true - , mode: "0755" // octal strings supported - }) - .on("close", function () { - closed = true - var fs = require("fs") - var s = fs.lstatSync("path/to/symlink") - var isSym = s.isSymbolicLink() - console.log((isSym?"":"not ") +"ok 1 should be symlink") - var t = fs.readlinkSync("path/to/symlink") - var isTarget = t === "./file" - console.log((isTarget?"":"not ") +"ok 2 should link to ./file") - }) - .end() - -process.on("exit", function () { - console.log((closed?"":"not ")+"ok 3 should be closed") -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js deleted file mode 100644 index c66d26f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js +++ /dev/null @@ -1,31 +0,0 @@ -exports.Abstract = require("./lib/abstract.js") -exports.Reader = require("./lib/reader.js") -exports.Writer = require("./lib/writer.js") - -exports.File = - { Reader: require("./lib/file-reader.js") - , Writer: require("./lib/file-writer.js") } - -exports.Dir = - { Reader : require("./lib/dir-reader.js") - , Writer : require("./lib/dir-writer.js") } - -exports.Link = - { Reader : require("./lib/link-reader.js") - , Writer : require("./lib/link-writer.js") } - -exports.Proxy = - { Reader : require("./lib/proxy-reader.js") - , Writer : require("./lib/proxy-writer.js") } - -exports.Reader.Dir = exports.DirReader = exports.Dir.Reader -exports.Reader.File = exports.FileReader = exports.File.Reader -exports.Reader.Link = exports.LinkReader = exports.Link.Reader -exports.Reader.Proxy = exports.ProxyReader = exports.Proxy.Reader - -exports.Writer.Dir = exports.DirWriter = exports.Dir.Writer -exports.Writer.File = exports.FileWriter = exports.File.Writer -exports.Writer.Link = exports.LinkWriter = exports.Link.Writer -exports.Writer.Proxy = exports.ProxyWriter = exports.Proxy.Writer - -exports.collect = require("./lib/collect.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js deleted file mode 100644 index 11ef0e28..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js +++ /dev/null @@ -1,85 +0,0 @@ -// the parent class for all fstreams. - -module.exports = Abstract - -var Stream = require("stream").Stream - , inherits = require("inherits") - -function Abstract () { - Stream.call(this) -} - -inherits(Abstract, Stream) - -Abstract.prototype.on = function (ev, fn) { - if (ev === "ready" && this.ready) { - process.nextTick(fn.bind(this)) - } else { - Stream.prototype.on.call(this, ev, fn) - } - return this -} - -Abstract.prototype.abort = function () { - this._aborted = true - this.emit("abort") -} - -Abstract.prototype.destroy = function () {} - -Abstract.prototype.warn = function (msg, code) { - var me = this - , er = decorate(msg, code, me) - if (!me.listeners("warn")) { - console.error("%s %s\n" + - "path = %s\n" + - "syscall = %s\n" + - "fstream_type = %s\n" + - "fstream_path = %s\n" + - "fstream_unc_path = %s\n" + - "fstream_class = %s\n" + - "fstream_stack =\n%s\n", - code || "UNKNOWN", - er.stack, - er.path, - er.syscall, - er.fstream_type, - er.fstream_path, - er.fstream_unc_path, - er.fstream_class, - er.fstream_stack.join("\n")) - } else { - me.emit("warn", er) - } -} - -Abstract.prototype.info = function (msg, code) { - this.emit("info", msg, code) -} - -Abstract.prototype.error = function (msg, code, th) { - var er = decorate(msg, code, this) - if (th) throw er - else this.emit("error", er) -} - -function decorate (er, code, me) { - if (!(er instanceof Error)) er = new Error(er) - er.code = er.code || code - er.path = er.path || me.path - er.fstream_type = er.fstream_type || me.type - er.fstream_path = er.fstream_path || me.path - if (me._path !== me.path) { - er.fstream_unc_path = er.fstream_unc_path || me._path - } - if (me.linkpath) { - er.fstream_linkpath = er.fstream_linkpath || me.linkpath - } - er.fstream_class = er.fstream_class || me.constructor.name - er.fstream_stack = er.fstream_stack || - new Error().stack.split(/\n/).slice(3).map(function (s) { - return s.replace(/^ at /, "") - }) - - return er -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js deleted file mode 100644 index a36f780e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = collect - -function collect (stream) { - if (stream._collected) return - - stream._collected = true - stream.pause() - - stream.on("data", save) - stream.on("end", save) - var buf = [] - function save (b) { - if (typeof b === "string") b = new Buffer(b) - if (Buffer.isBuffer(b) && !b.length) return - buf.push(b) - } - - stream.on("entry", saveEntry) - var entryBuffer = [] - function saveEntry (e) { - collect(e) - entryBuffer.push(e) - } - - stream.on("proxy", proxyPause) - function proxyPause (p) { - p.pause() - } - - - // replace the pipe method with a new version that will - // unlock the buffered stuff. if you just call .pipe() - // without a destination, then it'll re-play the events. - stream.pipe = (function (orig) { return function (dest) { - // console.error(" === open the pipes", dest && dest.path) - - // let the entries flow through one at a time. - // Once they're all done, then we can resume completely. - var e = 0 - ;(function unblockEntry () { - var entry = entryBuffer[e++] - // console.error(" ==== unblock entry", entry && entry.path) - if (!entry) return resume() - entry.on("end", unblockEntry) - if (dest) dest.add(entry) - else stream.emit("entry", entry) - })() - - function resume () { - stream.removeListener("entry", saveEntry) - stream.removeListener("data", save) - stream.removeListener("end", save) - - stream.pipe = orig - if (dest) stream.pipe(dest) - - buf.forEach(function (b) { - if (b) stream.emit("data", b) - else stream.emit("end") - }) - - stream.resume() - } - - return dest - }})(stream.pipe) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js deleted file mode 100644 index 346ac2b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js +++ /dev/null @@ -1,251 +0,0 @@ -// A thing that emits "entry" events with Reader objects -// Pausing it causes it to stop emitting entry events, and also -// pauses the current entry if there is one. - -module.exports = DirReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , Reader = require("./reader.js") - , assert = require("assert").ok - -inherits(DirReader, Reader) - -function DirReader (props) { - var me = this - if (!(me instanceof DirReader)) throw new Error( - "DirReader must be called as constructor.") - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - throw new Error("Non-directory type "+ props.type) - } - - me.entries = null - me._index = -1 - me._paused = false - me._length = -1 - - if (props.sort) { - this.sort = props.sort - } - - Reader.call(this, props) -} - -DirReader.prototype._getEntries = function () { - var me = this - - // race condition. might pause() before calling _getEntries, - // and then resume, and try to get them a second time. - if (me._gotEntries) return - me._gotEntries = true - - fs.readdir(me._path, function (er, entries) { - if (er) return me.error(er) - - me.entries = entries - - me.emit("entries", entries) - if (me._paused) me.once("resume", processEntries) - else processEntries() - - function processEntries () { - me._length = me.entries.length - if (typeof me.sort === "function") { - me.entries = me.entries.sort(me.sort.bind(me)) - } - me._read() - } - }) -} - -// start walking the dir, and emit an "entry" event for each one. -DirReader.prototype._read = function () { - var me = this - - if (!me.entries) return me._getEntries() - - if (me._paused || me._currentEntry || me._aborted) { - // console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted) - return - } - - me._index ++ - if (me._index >= me.entries.length) { - if (!me._ended) { - me._ended = true - me.emit("end") - me.emit("close") - } - return - } - - // ok, handle this one, then. - - // save creating a proxy, by stat'ing the thing now. - var p = path.resolve(me._path, me.entries[me._index]) - assert(p !== me._path) - assert(me.entries[me._index]) - - // set this to prevent trying to _read() again in the stat time. - me._currentEntry = p - fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) { - if (er) return me.error(er) - - var who = me._proxy || me - - stat.path = p - stat.basename = path.basename(p) - stat.dirname = path.dirname(p) - var childProps = me.getChildProps.call(who, stat) - childProps.path = p - childProps.basename = path.basename(p) - childProps.dirname = path.dirname(p) - - var entry = Reader(childProps, stat) - - // console.error("DR Entry", p, stat.size) - - me._currentEntry = entry - - // "entry" events are for direct entries in a specific dir. - // "child" events are for any and all children at all levels. - // This nomenclature is not completely final. - - entry.on("pause", function (who) { - if (!me._paused && !entry._disowned) { - me.pause(who) - } - }) - - entry.on("resume", function (who) { - if (me._paused && !entry._disowned) { - me.resume(who) - } - }) - - entry.on("stat", function (props) { - me.emit("_entryStat", entry, props) - if (entry._aborted) return - if (entry._paused) entry.once("resume", function () { - me.emit("entryStat", entry, props) - }) - else me.emit("entryStat", entry, props) - }) - - entry.on("ready", function EMITCHILD () { - // console.error("DR emit child", entry._path) - if (me._paused) { - // console.error(" DR emit child - try again later") - // pause the child, and emit the "entry" event once we drain. - // console.error("DR pausing child entry") - entry.pause(me) - return me.once("resume", EMITCHILD) - } - - // skip over sockets. they can't be piped around properly, - // so there's really no sense even acknowledging them. - // if someone really wants to see them, they can listen to - // the "socket" events. - if (entry.type === "Socket") { - me.emit("socket", entry) - } else { - me.emitEntry(entry) - } - }) - - var ended = false - entry.on("close", onend) - entry.on("disown", onend) - function onend () { - if (ended) return - ended = true - me.emit("childEnd", entry) - me.emit("entryEnd", entry) - me._currentEntry = null - if (!me._paused) { - me._read() - } - } - - // XXX Remove this. Works in node as of 0.6.2 or so. - // Long filenames should not break stuff. - entry.on("error", function (er) { - if (entry._swallowErrors) { - me.warn(er) - entry.emit("end") - entry.emit("close") - } else { - me.emit("error", er) - } - }) - - // proxy up some events. - ; [ "child" - , "childEnd" - , "warn" - ].forEach(function (ev) { - entry.on(ev, me.emit.bind(me, ev)) - }) - }) -} - -DirReader.prototype.disown = function (entry) { - entry.emit("beforeDisown") - entry._disowned = true - entry.parent = entry.root = null - if (entry === this._currentEntry) { - this._currentEntry = null - } - entry.emit("disown") -} - -DirReader.prototype.getChildProps = function (stat) { - return { depth: this.depth + 1 - , root: this.root || this - , parent: this - , follow: this.follow - , filter: this.filter - , sort: this.props.sort - , hardlinks: this.props.hardlinks - } -} - -DirReader.prototype.pause = function (who) { - var me = this - if (me._paused) return - who = who || me - me._paused = true - if (me._currentEntry && me._currentEntry.pause) { - me._currentEntry.pause(who) - } - me.emit("pause", who) -} - -DirReader.prototype.resume = function (who) { - var me = this - if (!me._paused) return - who = who || me - - me._paused = false - // console.error("DR Emit Resume", me._path) - me.emit("resume", who) - if (me._paused) { - // console.error("DR Re-paused", me._path) - return - } - - if (me._currentEntry) { - if (me._currentEntry.resume) me._currentEntry.resume(who) - } else me._read() -} - -DirReader.prototype.emitEntry = function (entry) { - this.emit("entry", entry) - this.emit("child", entry) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js deleted file mode 100644 index 7073b883..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js +++ /dev/null @@ -1,171 +0,0 @@ -// It is expected that, when .add() returns false, the consumer -// of the DirWriter will pause until a "drain" event occurs. Note -// that this is *almost always going to be the case*, unless the -// thing being written is some sort of unsupported type, and thus -// skipped over. - -module.exports = DirWriter - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Writer = require("./writer.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , collect = require("./collect.js") - -inherits(DirWriter, Writer) - -function DirWriter (props) { - var me = this - if (!(me instanceof DirWriter)) me.error( - "DirWriter must be called as constructor.", null, true) - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - me.error("Non-directory type "+ props.type + " " + - JSON.stringify(props), null, true) - } - - Writer.call(this, props) -} - -DirWriter.prototype._create = function () { - var me = this - mkdir(me._path, Writer.dirmode, function (er) { - if (er) return me.error(er) - // ready to start getting entries! - me.ready = true - me.emit("ready") - me._process() - }) -} - -// a DirWriter has an add(entry) method, but its .write() doesn't -// do anything. Why a no-op rather than a throw? Because this -// leaves open the door for writing directory metadata for -// gnu/solaris style dumpdirs. -DirWriter.prototype.write = function () { - return true -} - -DirWriter.prototype.end = function () { - this._ended = true - this._process() -} - -DirWriter.prototype.add = function (entry) { - var me = this - - // console.error("\tadd", entry._path, "->", me._path) - collect(entry) - if (!me.ready || me._currentEntry) { - me._buffer.push(entry) - return false - } - - // create a new writer, and pipe the incoming entry into it. - if (me._ended) { - return me.error("add after end") - } - - me._buffer.push(entry) - me._process() - - return 0 === this._buffer.length -} - -DirWriter.prototype._process = function () { - var me = this - - // console.error("DW Process p=%j", me._processing, me.basename) - - if (me._processing) return - - var entry = me._buffer.shift() - if (!entry) { - // console.error("DW Drain") - me.emit("drain") - if (me._ended) me._finish() - return - } - - me._processing = true - // console.error("DW Entry", entry._path) - - me.emit("entry", entry) - - // ok, add this entry - // - // don't allow recursive copying - var p = entry - do { - var pp = p._path || p.path - if (pp === me.root._path || pp === me._path || - (pp && pp.indexOf(me._path) === 0)) { - // console.error("DW Exit (recursive)", entry.basename, me._path) - me._processing = false - if (entry._collected) entry.pipe() - return me._process() - } - } while (p = p.parent) - - // console.error("DW not recursive") - - // chop off the entry's root dir, replace with ours - var props = { parent: me - , root: me.root || me - , type: entry.type - , depth: me.depth + 1 } - - var p = entry._path || entry.path || entry.props.path - if (entry.parent) { - p = p.substr(entry.parent._path.length + 1) - } - // get rid of any ../../ shenanigans - props.path = path.join(me.path, path.join("/", p)) - - // if i have a filter, the child should inherit it. - props.filter = me.filter - - // all the rest of the stuff, copy over from the source. - Object.keys(entry.props).forEach(function (k) { - if (!props.hasOwnProperty(k)) { - props[k] = entry.props[k] - } - }) - - // not sure at this point what kind of writer this is. - var child = me._currentChild = new Writer(props) - child.on("ready", function () { - // console.error("DW Child Ready", child.type, child._path) - // console.error(" resuming", entry._path) - entry.pipe(child) - entry.resume() - }) - - // XXX Make this work in node. - // Long filenames should not break stuff. - child.on("error", function (er) { - if (child._swallowErrors) { - me.warn(er) - child.emit("end") - child.emit("close") - } else { - me.emit("error", er) - } - }) - - // we fire _end internally *after* end, so that we don't move on - // until any "end" listeners have had their chance to do stuff. - child.on("close", onend) - var ended = false - function onend () { - if (ended) return - ended = true - // console.error("* DW Child end", child.basename) - me._currentChild = null - me._processing = false - me._process() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js deleted file mode 100644 index b1f98618..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js +++ /dev/null @@ -1,147 +0,0 @@ -// Basically just a wrapper around an fs.ReadStream - -module.exports = FileReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - , EOF = {EOF: true} - , CLOSE = {CLOSE: true} - -inherits(FileReader, Reader) - -function FileReader (props) { - // console.error(" FR create", props.path, props.size, new Error().stack) - var me = this - if (!(me instanceof FileReader)) throw new Error( - "FileReader must be called as constructor.") - - // should already be established as a File type - // XXX Todo: preserve hardlinks by tracking dev+inode+nlink, - // with a HardLinkReader class. - if (!((props.type === "Link" && props.Link) || - (props.type === "File" && props.File))) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesEmitted = 0 - Reader.call(me, props) -} - -FileReader.prototype._getStream = function () { - var me = this - , stream = me._stream = fs.createReadStream(me._path, me.props) - - if (me.props.blksize) { - stream.bufferSize = me.props.blksize - } - - stream.on("open", me.emit.bind(me, "open")) - - stream.on("data", function (c) { - // console.error("\t\t%d %s", c.length, me.basename) - me._bytesEmitted += c.length - // no point saving empty chunks - if (!c.length) return - else if (me._paused || me._buffer.length) { - me._buffer.push(c) - me._read() - } else me.emit("data", c) - }) - - stream.on("end", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering End", me._path) - me._buffer.push(EOF) - me._read() - } else { - me.emit("end") - } - - if (me._bytesEmitted !== me.props.size) { - me.error("Didn't get expected byte count\n"+ - "expect: "+me.props.size + "\n" + - "actual: "+me._bytesEmitted) - } - }) - - stream.on("close", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering Close", me._path) - me._buffer.push(CLOSE) - me._read() - } else { - // console.error("FR close 1", me._path) - me.emit("close") - } - }) - - me._read() -} - -FileReader.prototype._read = function () { - var me = this - // console.error("FR _read", me._path) - if (me._paused) { - // console.error("FR _read paused", me._path) - return - } - - if (!me._stream) { - // console.error("FR _getStream calling", me._path) - return me._getStream() - } - - // clear out the buffer, if there is one. - if (me._buffer.length) { - // console.error("FR _read has buffer", me._buffer.length, me._path) - var buf = me._buffer - for (var i = 0, l = buf.length; i < l; i ++) { - var c = buf[i] - if (c === EOF) { - // console.error("FR Read emitting buffered end", me._path) - me.emit("end") - } else if (c === CLOSE) { - // console.error("FR Read emitting buffered close", me._path) - me.emit("close") - } else { - // console.error("FR Read emitting buffered data", me._path) - me.emit("data", c) - } - - if (me._paused) { - // console.error("FR Read Re-pausing at "+i, me._path) - me._buffer = buf.slice(i) - return - } - } - me._buffer.length = 0 - } - // console.error("FR _read done") - // that's about all there is to it. -} - -FileReader.prototype.pause = function (who) { - var me = this - // console.error("FR Pause", me._path) - if (me._paused) return - who = who || me - me._paused = true - if (me._stream) me._stream.pause() - me.emit("pause", who) -} - -FileReader.prototype.resume = function (who) { - var me = this - // console.error("FR Resume", me._path) - if (!me._paused) return - who = who || me - me.emit("resume", who) - me._paused = false - if (me._stream) me._stream.resume() - me._read() -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js deleted file mode 100644 index 68114625..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js +++ /dev/null @@ -1,100 +0,0 @@ -module.exports = FileWriter - -var fs = require("graceful-fs") - , mkdir = require("mkdirp") - , Writer = require("./writer.js") - , inherits = require("inherits") - , EOF = {} - -inherits(FileWriter, Writer) - -function FileWriter (props) { - var me = this - if (!(me instanceof FileWriter)) throw new Error( - "FileWriter must be called as constructor.") - - // should already be established as a File type - if (props.type !== "File" || !props.File) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesWritten = 0 - - Writer.call(this, props) -} - -FileWriter.prototype._create = function () { - var me = this - if (me._stream) return - - var so = {} - if (me.props.flags) so.flags = me.props.flags - so.mode = Writer.filemode - if (me._old && me._old.blksize) so.bufferSize = me._old.blksize - - me._stream = fs.createWriteStream(me._path, so) - - me._stream.on("open", function (fd) { - // console.error("FW open", me._buffer, me._path) - me.ready = true - me._buffer.forEach(function (c) { - if (c === EOF) me._stream.end() - else me._stream.write(c) - }) - me.emit("ready") - // give this a kick just in case it needs it. - me.emit("drain") - }) - - me._stream.on("drain", function () { me.emit("drain") }) - - me._stream.on("close", function () { - // console.error("\n\nFW Stream Close", me._path, me.size) - me._finish() - }) -} - -FileWriter.prototype.write = function (c) { - var me = this - - me._bytesWritten += c.length - - if (!me.ready) { - if (!Buffer.isBuffer(c) && typeof c !== 'string') - throw new Error('invalid write data') - me._buffer.push(c) - return false - } - - var ret = me._stream.write(c) - // console.error("\t-- fw wrote, _stream says", ret, me._stream._queue.length) - - // allow 2 buffered writes, because otherwise there's just too - // much stop and go bs. - return ret || (me._stream._queue && me._stream._queue.length <= 2) -} - -FileWriter.prototype.end = function (c) { - var me = this - - if (c) me.write(c) - - if (!me.ready) { - me._buffer.push(EOF) - return false - } - - return me._stream.end() -} - -FileWriter.prototype._finish = function () { - var me = this - if (typeof me.size === "number" && me._bytesWritten != me.size) { - me.error( - "Did not get expected byte count.\n" + - "expect: " + me.size + "\n" + - "actual: " + me._bytesWritten) - } - Writer.prototype._finish.call(me) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js deleted file mode 100644 index cd65c41d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = getType - -function getType (st) { - var types = - [ "Directory" - , "File" - , "SymbolicLink" - , "Link" // special for hardlinks from tarballs - , "BlockDevice" - , "CharacterDevice" - , "FIFO" - , "Socket" ] - , type - - if (st.type && -1 !== types.indexOf(st.type)) { - st[st.type] = true - return st.type - } - - for (var i = 0, l = types.length; i < l; i ++) { - type = types[i] - var is = st[type] || st["is" + type] - if (typeof is === "function") is = is.call(st) - if (is) { - st[type] = true - st.type = type - return type - } - } - - return null -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js deleted file mode 100644 index 7e7ab6ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js +++ /dev/null @@ -1,54 +0,0 @@ -// Basically just a wrapper around an fs.readlink -// -// XXX: Enhance this to support the Link type, by keeping -// a lookup table of {<dev+inode>:<path>}, so that hardlinks -// can be preserved in tarballs. - -module.exports = LinkReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(LinkReader, Reader) - -function LinkReader (props) { - var me = this - if (!(me instanceof LinkReader)) throw new Error( - "LinkReader must be called as constructor.") - - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - Reader.call(me, props) -} - -// When piping a LinkReader into a LinkWriter, we have to -// already have the linkpath property set, so that has to -// happen *before* the "ready" event, which means we need to -// override the _stat method. -LinkReader.prototype._stat = function (currentStat) { - var me = this - fs.readlink(me._path, function (er, linkpath) { - if (er) return me.error(er) - me.linkpath = me.props.linkpath = linkpath - me.emit("linkpath", linkpath) - Reader.prototype._stat.call(me, currentStat) - }) -} - -LinkReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we need - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js deleted file mode 100644 index 5c8f1e70..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js +++ /dev/null @@ -1,95 +0,0 @@ - -module.exports = LinkWriter - -var fs = require("graceful-fs") - , Writer = require("./writer.js") - , inherits = require("inherits") - , path = require("path") - , rimraf = require("rimraf") - -inherits(LinkWriter, Writer) - -function LinkWriter (props) { - var me = this - if (!(me instanceof LinkWriter)) throw new Error( - "LinkWriter must be called as constructor.") - - // should already be established as a Link type - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - if (props.linkpath === "") props.linkpath = "." - if (!props.linkpath) { - me.error("Need linkpath property to create " + props.type) - } - - Writer.call(this, props) -} - -LinkWriter.prototype._create = function () { - // console.error(" LW _create") - var me = this - , hard = me.type === "Link" || process.platform === "win32" - , link = hard ? "link" : "symlink" - , lp = hard ? path.resolve(me.dirname, me.linkpath) : me.linkpath - - // can only change the link path by clobbering - // For hard links, let's just assume that's always the case, since - // there's no good way to read them if we don't already know. - if (hard) return clobber(me, lp, link) - - fs.readlink(me._path, function (er, p) { - // only skip creation if it's exactly the same link - if (p && p === lp) return finish(me) - clobber(me, lp, link) - }) -} - -function clobber (me, lp, link) { - rimraf(me._path, function (er) { - if (er) return me.error(er) - create(me, lp, link) - }) -} - -function create (me, lp, link) { - fs[link](lp, me._path, function (er) { - // if this is a hard link, and we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier in. - // Additionally, an EPERM or EACCES can happen on win32 if it's trying - // to make a link to a directory. Again, just skip it. - // A better solution would be to have fs.symlink be supported on - // windows in some nice fashion. - if (er) { - if ((er.code === "ENOENT" || - er.code === "EACCES" || - er.code === "EPERM" ) && process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - } else return me.error(er) - } - finish(me) - }) -} - -function finish (me) { - me.ready = true - me.emit("ready") - if (me._ended && !me._finished) me._finish() -} - -LinkWriter.prototype.end = function () { - // console.error("LW finish in end") - this._ended = true - if (this.ready) { - this._finished = true - this._finish() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js deleted file mode 100644 index a0ece34a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js +++ /dev/null @@ -1,93 +0,0 @@ -// A reader for when we don't yet know what kind of thing -// the thing is. - -module.exports = ProxyReader - -var Reader = require("./reader.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , fs = require("graceful-fs") - -inherits(ProxyReader, Reader) - -function ProxyReader (props) { - var me = this - if (!(me instanceof ProxyReader)) throw new Error( - "ProxyReader must be called as constructor.") - - me.props = props - me._buffer = [] - me.ready = false - - Reader.call(me, props) -} - -ProxyReader.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Reader(props, current)) - }) -} - -ProxyReader.prototype._addProxy = function (proxy) { - var me = this - if (me._proxyTarget) { - return me.error("proxy already set") - } - - me._proxyTarget = proxy - proxy._proxy = me - - ; [ "error" - , "data" - , "end" - , "close" - , "linkpath" - , "entry" - , "entryEnd" - , "child" - , "childEnd" - , "warn" - , "stat" - ].forEach(function (ev) { - // console.error("~~ proxy event", ev, me.path) - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - proxy.on("ready", function () { - // console.error("~~ proxy is ready!", me.path) - me.ready = true - me.emit("ready") - }) - - var calls = me._buffer - me._buffer.length = 0 - calls.forEach(function (c) { - proxy[c[0]].apply(proxy, c[1]) - }) -} - -ProxyReader.prototype.pause = function () { - return this._proxyTarget ? this._proxyTarget.pause() : false -} - -ProxyReader.prototype.resume = function () { - return this._proxyTarget ? this._proxyTarget.resume() : false -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js deleted file mode 100644 index b0476633..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js +++ /dev/null @@ -1,109 +0,0 @@ -// A writer for when we don't know what kind of thing -// the thing is. That is, it's not explicitly set, -// so we're going to make it whatever the thing already -// is, or "File" -// -// Until then, collect all events. - -module.exports = ProxyWriter - -var Writer = require("./writer.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , collect = require("./collect.js") - , fs = require("fs") - -inherits(ProxyWriter, Writer) - -function ProxyWriter (props) { - var me = this - if (!(me instanceof ProxyWriter)) throw new Error( - "ProxyWriter must be called as constructor.") - - me.props = props - me._needDrain = false - - Writer.call(me, props) -} - -ProxyWriter.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Writer(props, current)) - }) -} - -ProxyWriter.prototype._addProxy = function (proxy) { - // console.error("~~ set proxy", this.path) - var me = this - if (me._proxy) { - return me.error("proxy already set") - } - - me._proxy = proxy - ; [ "ready" - , "error" - , "close" - , "pipe" - , "drain" - , "warn" - ].forEach(function (ev) { - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - var calls = me._buffer - calls.forEach(function (c) { - // console.error("~~ ~~ proxy buffered call", c[0], c[1]) - proxy[c[0]].apply(proxy, c[1]) - }) - me._buffer.length = 0 - if (me._needsDrain) me.emit("drain") -} - -ProxyWriter.prototype.add = function (entry) { - // console.error("~~ proxy add") - collect(entry) - - if (!this._proxy) { - this._buffer.push(["add", [entry]]) - this._needDrain = true - return false - } - return this._proxy.add(entry) -} - -ProxyWriter.prototype.write = function (c) { - // console.error("~~ proxy write") - if (!this._proxy) { - this._buffer.push(["write", [c]]) - this._needDrain = true - return false - } - return this._proxy.write(c) -} - -ProxyWriter.prototype.end = function (c) { - // console.error("~~ proxy end") - if (!this._proxy) { - this._buffer.push(["end", [c]]) - return false - } - return this._proxy.end(c) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js deleted file mode 100644 index eaf921cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js +++ /dev/null @@ -1,260 +0,0 @@ - -module.exports = Reader - -var fs = require("graceful-fs") - , Stream = require("stream").Stream - , inherits = require("inherits") - , path = require("path") - , getType = require("./get-type.js") - , hardLinks = Reader.hardLinks = {} - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Reader, Abstract) - -var DirReader = require("./dir-reader.js") - , FileReader = require("./file-reader.js") - , LinkReader = require("./link-reader.js") - , SocketReader = require("./socket-reader.js") - , ProxyReader = require("./proxy-reader.js") - -function Reader (props, currentStat) { - var me = this - if (!(me instanceof Reader)) return new Reader(props, currentStat) - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) { - me.error("Must provide a path", null, true) - } - - // polymorphism. - // call fstream.Reader(dir) to get a DirReader object, etc. - // Note that, unlike in the Writer case, ProxyReader is going - // to be the *normal* state of affairs, since we rarely know - // the type of a file prior to reading it. - - - var type - , ClassType - - if (props.type && typeof props.type === "function") { - type = props.type - ClassType = type - } else { - type = getType(props) - ClassType = Reader - } - - if (currentStat && !type) { - type = getType(currentStat) - props[type] = true - props.type = type - } - - switch (type) { - case "Directory": - ClassType = DirReader - break - - case "Link": - // XXX hard links are just files. - // However, it would be good to keep track of files' dev+inode - // and nlink values, and create a HardLinkReader that emits - // a linkpath value of the original copy, so that the tar - // writer can preserve them. - // ClassType = HardLinkReader - // break - - case "File": - ClassType = FileReader - break - - case "SymbolicLink": - ClassType = LinkReader - break - - case "Socket": - ClassType = SocketReader - break - - case null: - ClassType = ProxyReader - break - } - - if (!(me instanceof ClassType)) { - return new ClassType(props) - } - - Abstract.call(me) - - me.readable = true - me.writable = false - - me.type = type - me.props = props - me.depth = props.depth = props.depth || 0 - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - // how DOES one create files on the moon? - // if the path has spaces in it, then UNC will fail. - me._swallowErrors = true - //if (me._path.indexOf(" ") === -1) { - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - //} - } - } - me.basename = props.basename = path.basename(me.path) - me.dirname = props.dirname = path.dirname(me.path) - - // these have served their purpose, and are now just noisy clutter - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - me.filter = typeof props.filter === "function" ? props.filter : null - if (props.sort === "alpha") props.sort = alphasort - - // start the ball rolling. - // this will stat the thing, and then call me._read() - // to start reading whatever it is. - // console.error("calling stat", props.path, currentStat) - me._stat(currentStat) -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - -Reader.prototype._stat = function (currentStat) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - // console.error("Reader._stat", me._path, currentStat) - if (currentStat) process.nextTick(statCb.bind(null, null, currentStat)) - else fs[stat](me._path, statCb) - - - function statCb (er, props_) { - // console.error("Reader._stat, statCb", me._path, props_, props_.nlink) - if (er) return me.error(er) - - Object.keys(props_).forEach(function (k) { - props[k] = props_[k] - }) - - // if it's not the expected size, then abort here. - if (undefined !== me.size && props.size !== me.size) { - return me.error("incorrect size") - } - me.size = props.size - - var type = getType(props) - var handleHardlinks = props.hardlinks !== false - - // special little thing for handling hardlinks. - if (handleHardlinks && type !== "Directory" && props.nlink && props.nlink > 1) { - var k = props.dev + ":" + props.ino - // console.error("Reader has nlink", me._path, k) - if (hardLinks[k] === me._path || !hardLinks[k]) hardLinks[k] = me._path - else { - // switch into hardlink mode. - type = me.type = me.props.type = "Link" - me.Link = me.props.Link = true - me.linkpath = me.props.linkpath = hardLinks[k] - // console.error("Hardlink detected, switching mode", me._path, me.linkpath) - // Setting __proto__ would arguably be the "correct" - // approach here, but that just seems too wrong. - me._stat = me._read = LinkReader.prototype._read - } - } - - if (me.type && me.type !== type) { - me.error("Unexpected type: " + type) - } - - // if the filter doesn't pass, then just skip over this one. - // still have to emit end so that dir-walking can move on. - if (me.filter) { - var who = me._proxy || me - // special handling for ProxyReaders - if (!me.filter.call(who, who, props)) { - if (!me._disowned) { - me.abort() - me.emit("end") - me.emit("close") - } - return - } - } - - // last chance to abort or disown before the flow starts! - var events = ["_stat", "stat", "ready"] - var e = 0 - ;(function go () { - if (me._aborted) { - me.emit("end") - me.emit("close") - return - } - - if (me._paused) { - me.once("resume", go) - return - } - - var ev = events[e ++] - if (!ev) return me._read() - me.emit(ev, props) - go() - })() - } -} - -Reader.prototype.pipe = function (dest, opts) { - var me = this - if (typeof dest.add === "function") { - // piping to a multi-compatible, and we've got directory entries. - me.on("entry", function (entry) { - var ret = dest.add(entry) - if (false === ret) { - me.pause() - } - }) - } - - // console.error("R Pipe apply Stream Pipe") - return Stream.prototype.pipe.apply(this, arguments) -} - -Reader.prototype.pause = function (who) { - this._paused = true - who = who || this - this.emit("pause", who) - if (this._stream) this._stream.pause(who) -} - -Reader.prototype.resume = function (who) { - this._paused = false - who = who || this - this.emit("resume", who) - if (this._stream) this._stream.resume(who) - this._read() -} - -Reader.prototype._read = function () { - this.error("Cannot read unknown type: "+this.type) -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js deleted file mode 100644 index e89c1731..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js +++ /dev/null @@ -1,38 +0,0 @@ -// Just get the stats, and then don't do anything. -// You can't really "read" from a socket. You "connect" to it. -// Mostly, this is here so that reading a dir with a socket in it -// doesn't blow up. - -module.exports = SocketReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(SocketReader, Reader) - -function SocketReader (props) { - var me = this - if (!(me instanceof SocketReader)) throw new Error( - "SocketReader must be called as constructor.") - - if (!(props.type === "Socket" && props.Socket)) { - throw new Error("Non-socket type "+ props.type) - } - - Reader.call(me, props) -} - -SocketReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we have - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js deleted file mode 100644 index 5599fb22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js +++ /dev/null @@ -1,389 +0,0 @@ - -module.exports = Writer - -var fs = require("graceful-fs") - , inherits = require("inherits") - , rimraf = require("rimraf") - , mkdir = require("mkdirp") - , path = require("path") - , umask = process.platform === "win32" ? 0 : process.umask() - , getType = require("./get-type.js") - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Writer, Abstract) - -Writer.dirmode = 0777 & (~umask) -Writer.filemode = 0666 & (~umask) - -var DirWriter = require("./dir-writer.js") - , LinkWriter = require("./link-writer.js") - , FileWriter = require("./file-writer.js") - , ProxyWriter = require("./proxy-writer.js") - -// props is the desired state. current is optionally the current stat, -// provided here so that subclasses can avoid statting the target -// more than necessary. -function Writer (props, current) { - var me = this - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) me.error("Must provide a path", null, true) - - // polymorphism. - // call fstream.Writer(dir) to get a DirWriter object, etc. - var type = getType(props) - , ClassType = Writer - - switch (type) { - case "Directory": - ClassType = DirWriter - break - case "File": - ClassType = FileWriter - break - case "Link": - case "SymbolicLink": - ClassType = LinkWriter - break - case null: - // Don't know yet what type to create, so we wrap in a proxy. - ClassType = ProxyWriter - break - } - - if (!(me instanceof ClassType)) return new ClassType(props) - - // now get down to business. - - Abstract.call(me) - - // props is what we want to set. - // set some convenience properties as well. - me.type = props.type - me.props = props - me.depth = props.depth || 0 - me.clobber = false === props.clobber ? props.clobber : true - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - me._swallowErrors = true - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - } - } - me.basename = path.basename(props.path) - me.dirname = path.dirname(props.path) - me.linkpath = props.linkpath || null - - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - - if (typeof props.mode === "string") { - props.mode = parseInt(props.mode, 8) - } - - me.readable = false - me.writable = true - - // buffer until ready, or while handling another entry - me._buffer = [] - me.ready = false - - me.filter = typeof props.filter === "function" ? props.filter: null - - // start the ball rolling. - // this checks what's there already, and then calls - // me._create() to call the impl-specific creation stuff. - me._stat(current) -} - -// Calling this means that it's something we can't create. -// Just assert that it's already there, otherwise raise a warning. -Writer.prototype._create = function () { - var me = this - fs[me.props.follow ? "stat" : "lstat"](me._path, function (er, current) { - if (er) { - return me.warn("Cannot create " + me._path + "\n" + - "Unsupported type: "+me.type, "ENOTSUP") - } - me._finish() - }) -} - -Writer.prototype._stat = function (current) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - , who = me._proxy || me - - if (current) statCb(null, current) - else fs[stat](me._path, statCb) - - function statCb (er, current) { - if (me.filter && !me.filter.call(who, who, current)) { - me._aborted = true - me.emit("end") - me.emit("close") - return - } - - // if it's not there, great. We'll just create it. - // if it is there, then we'll need to change whatever differs - if (er || !current) { - return create(me) - } - - me._old = current - var currentType = getType(current) - - // if it's a type change, then we need to clobber or error. - // if it's not a type change, then let the impl take care of it. - if (currentType !== me.type) { - return rimraf(me._path, function (er) { - if (er) return me.error(er) - me._old = null - create(me) - }) - } - - // otherwise, just handle in the app-specific way - // this creates a fs.WriteStream, or mkdir's, or whatever - create(me) - } -} - -function create (me) { - // console.error("W create", me._path, Writer.dirmode) - - // XXX Need to clobber non-dirs that are in the way, - // unless { clobber: false } in the props. - mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) { - // console.error("W created", path.dirname(me._path), er) - if (er) return me.error(er) - - // later on, we have to set the mode and owner for these - me._madeDir = made - return me._create() - }) -} - -function endChmod (me, want, current, path, cb) { - var wantMode = want.mode - , chmod = want.follow || me.type !== "SymbolicLink" - ? "chmod" : "lchmod" - - if (!fs[chmod]) return cb() - if (typeof wantMode !== "number") return cb() - - var curMode = current.mode & 0777 - wantMode = wantMode & 0777 - if (wantMode === curMode) return cb() - - fs[chmod](path, wantMode, cb) -} - - -function endChown (me, want, current, path, cb) { - // Don't even try it unless root. Too easy to EPERM. - if (process.platform === "win32") return cb() - if (!process.getuid || !process.getuid() === 0) return cb() - if (typeof want.uid !== "number" && - typeof want.gid !== "number" ) return cb() - - if (current.uid === want.uid && - current.gid === want.gid) return cb() - - var chown = (me.props.follow || me.type !== "SymbolicLink") - ? "chown" : "lchown" - if (!fs[chown]) return cb() - - if (typeof want.uid !== "number") want.uid = current.uid - if (typeof want.gid !== "number") want.gid = current.gid - - fs[chown](path, want.uid, want.gid, cb) -} - -function endUtimes (me, want, current, path, cb) { - if (!fs.utimes || process.platform === "win32") return cb() - - var utimes = (want.follow || me.type !== "SymbolicLink") - ? "utimes" : "lutimes" - - if (utimes === "lutimes" && !fs[utimes]) { - utimes = "utimes" - } - - if (!fs[utimes]) return cb() - - var curA = current.atime - , curM = current.mtime - , meA = want.atime - , meM = want.mtime - - if (meA === undefined) meA = curA - if (meM === undefined) meM = curM - - if (!isDate(meA)) meA = new Date(meA) - if (!isDate(meM)) meA = new Date(meM) - - if (meA.getTime() === curA.getTime() && - meM.getTime() === curM.getTime()) return cb() - - fs[utimes](path, meA, meM, cb) -} - - -// XXX This function is beastly. Break it up! -Writer.prototype._finish = function () { - var me = this - - // console.error(" W Finish", me._path, me.size) - - // set up all the things. - // At this point, we're already done writing whatever we've gotta write, - // adding files to the dir, etc. - var todo = 0 - var errState = null - var done = false - - if (me._old) { - // the times will almost *certainly* have changed. - // adds the utimes syscall, but remove another stat. - me._old.atime = new Date(0) - me._old.mtime = new Date(0) - // console.error(" W Finish Stale Stat", me._path, me.size) - setProps(me._old) - } else { - var stat = me.props.follow ? "stat" : "lstat" - // console.error(" W Finish Stating", me._path, me.size) - fs[stat](me._path, function (er, current) { - // console.error(" W Finish Stated", me._path, me.size, current) - if (er) { - // if we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier on. - if (er.code === "ENOENT" && - (me.type === "Link" || me.type === "SymbolicLink") && - process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - return - } else return me.error(er) - } - setProps(me._old = current) - }) - } - - return - - function setProps (current) { - todo += 3 - endChmod(me, me.props, current, me._path, next("chmod")) - endChown(me, me.props, current, me._path, next("chown")) - endUtimes(me, me.props, current, me._path, next("utimes")) - } - - function next (what) { - return function (er) { - // console.error(" W Finish", what, todo) - if (errState) return - if (er) { - er.fstream_finish_call = what - return me.error(errState = er) - } - if (--todo > 0) return - if (done) return - done = true - - // we may still need to set the mode/etc. on some parent dirs - // that were created previously. delay end/close until then. - if (!me._madeDir) return end() - else endMadeDir(me, me._path, end) - - function end (er) { - if (er) { - er.fstream_finish_call = "setupMadeDir" - return me.error(er) - } - // all the props have been set, so we're completely done. - me.emit("end") - me.emit("close") - } - } - } -} - -function endMadeDir (me, p, cb) { - var made = me._madeDir - // everything *between* made and path.dirname(me._path) - // needs to be set up. Note that this may just be one dir. - var d = path.dirname(p) - - endMadeDir_(me, d, function (er) { - if (er) return cb(er) - if (d === made) { - return cb() - } - endMadeDir(me, d, cb) - }) -} - -function endMadeDir_ (me, p, cb) { - var dirProps = {} - Object.keys(me.props).forEach(function (k) { - dirProps[k] = me.props[k] - - // only make non-readable dirs if explicitly requested. - if (k === "mode" && me.type !== "Directory") { - dirProps[k] = dirProps[k] | 0111 - } - }) - - var todo = 3 - , errState = null - fs.stat(p, function (er, current) { - if (er) return cb(errState = er) - endChmod(me, dirProps, current, p, next) - endChown(me, dirProps, current, p, next) - endUtimes(me, dirProps, current, p, next) - }) - - function next (er) { - if (errState) return - if (er) return cb(errState = er) - if (-- todo === 0) return cb() - } -} - -Writer.prototype.pipe = function () { - this.error("Can't pipe from writable stream") -} - -Writer.prototype.add = function () { - this.error("Cannot add to non-Directory type") -} - -Writer.prototype.write = function () { - return true -} - -function objectToString (d) { - return Object.prototype.toString.call(d) -} - -function isDate(d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md deleted file mode 100644 index eb1a1093..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over fs module - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index baf957d8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,161 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('fs') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -// The EMFILE enqueuing stuff - -var util = require('util') - -function noop () {} - -var debug = noop -var util = require('util') -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json deleted file mode 100644 index d882e6ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "2.0.2", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "readme": "# graceful-fs\n\ngraceful-fs functions as a drop-in replacement for the fs module,\nmaking various improvements.\n\nThe improvements are meant to normalize behavior across different\nplatforms and environments, and to make filesystem access more\nresilient to errors.\n\n## Improvements over fs module\n\ngraceful-fs:\n\n* Queues up `open` and `readdir` calls, and retries them once\n something closes if there is an EMFILE error from too many file\n descriptors.\n* fixes `lchmod` for Node versions prior to 0.6.2.\n* implements `fs.lutimes` if possible. Otherwise it becomes a noop.\n* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or\n `lchown` if the user isn't root.\n* makes `lchmod` and `lchown` become noops, if not available.\n* retries reading a file if `read` results in EAGAIN error.\n\nOn Windows, it retries renaming a file for up to one second if `EACCESS`\nor `EPERM` error occurs, likely because antivirus software has locked\nthe directory.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs", - "_id": "graceful-fs@2.0.2", - "_from": "graceful-fs@~2.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index afc83b3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,228 +0,0 @@ -var fs = require('fs') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -function chownErOk (er) { - // if there's no getuid, or if getuid() is something other than 0, - // and the error is EINVAL or EPERM, then just ignore it. - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // When running as root, or if other types of errors are encountered, - // then it's strict. - if (!er || (!process.getuid || process.getuid() !== 0) - && (er.code === "EINVAL" || er.code === "EPERM")) return true -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 104f36b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('fs')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index aeaedf1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,21 +0,0 @@ -var test = require("tap").test -var fs = require("fs") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - console.error(files) - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json deleted file mode 100644 index 2afd6d51..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "fstream", - "description": "Advanced file system stream things", - "version": "0.1.25", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream.git" - }, - "main": "fstream.js", - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "rimraf": "2", - "mkdirp": "0.3", - "graceful-fs": "~2.0.0", - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "" - }, - "scripts": { - "test": "tap examples/*.js" - }, - "license": "BSD", - "readme": "Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don't change its contents, or to create\na symlink, etc.\n\nSo, for example, you can \"write\" a directory, and it'll call `mkdir`. You\ncan specify a uid and gid, and it'll call `chown`. You can specify a\n`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it'll call `symlink`.\n\nNote that it won't automatically resolve symbolic links. So, if you\ncall `fstream.Reader('/some/symlink')` then you'll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:'/some/symlink', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n })\n .write(\"hello\\n\")\n .end()\n```\n\nThis will create the directories if they're missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it's done.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n , flags: \"a\"\n })\n .write(\"hello\\n\")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/symlink\"\n , linkpath: \"./file\"\n , SymbolicLink: true\n , mode: \"0755\" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it'll be called, and if it returns\ntrue, then it'll treat it as a symlink. If it's not a function, then\nany truish value will make a symlink, or you can set `type:\n'SymbolicLink'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader(\"path/to/dir\")\n .pipe(fstream.Writer(\"path/to/other/dir\"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn't a directory, then it'll emit an error. It'll also\nset the uid, gid, mode, etc. to be identical. In this way, it's more\nlike `rsync -a` than simply a copy.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/fstream/issues" - }, - "homepage": "https://github.com/isaacs/fstream", - "_id": "fstream@0.1.25", - "_from": "fstream@~0.1.8" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json deleted file mode 100644 index 5bf0db56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json deleted file mode 100644 index 978bb769..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "tar", - "description": "tar for node", - "version": "0.1.19", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-tar.git" - }, - "main": "tar.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "inherits": "2", - "block-stream": "*", - "fstream": "~0.1.8" - }, - "devDependencies": { - "tap": "0.x", - "rimraf": "1.x" - }, - "license": "BSD", - "readme": "# node-tar\n\nTar for Node.js.\n\n[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/)\n\n## API\n\nSee `examples/` for usage examples.\n\n### var tar = require('tar')\n\nReturns an object with `.Pack`, `.Extract` and `.Parse` methods.\n\n### tar.Pack([properties])\n\nReturns a through stream. Use\n[fstream](https://npmjs.org/package/fstream) to write files into the\npack stream and you will receive tar archive data from the pack\nstream.\n\nThe optional `properties` object are used to set properties in the tar\n'Global Extended Header'.\n\n### tar.Extract([options])\n\nReturns a through stream. Write tar data to the stream and the files\nin the tarball will be extracted onto the filesystem.\n\n`options` can be:\n\n```js\n{\n path: '/path/to/extract/tar/into',\n strip: 0, // how many path segments to strip from the root when extracting\n}\n```\n\n`options` also get passed to the `fstream.Writer` instance that `tar`\nuses internally.\n\n### tar.Parse()\n\nReturns a writable stream. Write tar data to it and it will emit\n`entry` events for each entry parsed from the tarball. This is used by\n`tar.Extract`.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-tar/issues" - }, - "homepage": "https://github.com/isaacs/node-tar", - "_id": "tar@0.1.19", - "_from": "tar@~0.1.18" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js deleted file mode 100644 index a81298b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js +++ /dev/null @@ -1,173 +0,0 @@ -// field paths that every tar file must have. -// header is padded to 512 bytes. -var f = 0 - , fields = {} - , path = fields.path = f++ - , mode = fields.mode = f++ - , uid = fields.uid = f++ - , gid = fields.gid = f++ - , size = fields.size = f++ - , mtime = fields.mtime = f++ - , cksum = fields.cksum = f++ - , type = fields.type = f++ - , linkpath = fields.linkpath = f++ - , headerSize = 512 - , blockSize = 512 - , fieldSize = [] - -fieldSize[path] = 100 -fieldSize[mode] = 8 -fieldSize[uid] = 8 -fieldSize[gid] = 8 -fieldSize[size] = 12 -fieldSize[mtime] = 12 -fieldSize[cksum] = 8 -fieldSize[type] = 1 -fieldSize[linkpath] = 100 - -// "ustar\0" may introduce another bunch of headers. -// these are optional, and will be nulled out if not present. - -var ustar = fields.ustar = f++ - , ustarver = fields.ustarver = f++ - , uname = fields.uname = f++ - , gname = fields.gname = f++ - , devmaj = fields.devmaj = f++ - , devmin = fields.devmin = f++ - , prefix = fields.prefix = f++ - , fill = fields.fill = f++ - -// terminate fields. -fields[f] = null - -fieldSize[ustar] = 6 -fieldSize[ustarver] = 2 -fieldSize[uname] = 32 -fieldSize[gname] = 32 -fieldSize[devmaj] = 8 -fieldSize[devmin] = 8 -fieldSize[prefix] = 155 -fieldSize[fill] = 12 - -// nb: prefix field may in fact be 130 bytes of prefix, -// a null char, 12 bytes for atime, 12 bytes for ctime. -// -// To recognize this format: -// 1. prefix[130] === ' ' or '\0' -// 2. atime and ctime are octal numeric values -// 3. atime and ctime have ' ' in their last byte - -var fieldEnds = {} - , fieldOffs = {} - , fe = 0 -for (var i = 0; i < f; i ++) { - fieldOffs[i] = fe - fieldEnds[i] = (fe += fieldSize[i]) -} - -// build a translation table of field paths. -Object.keys(fields).forEach(function (f) { - if (fields[f] !== null) fields[fields[f]] = f -}) - -// different values of the 'type' field -// paths match the values of Stats.isX() functions, where appropriate -var types = - { 0: "File" - , "\0": "OldFile" // like 0 - , "": "OldFile" - , 1: "Link" - , 2: "SymbolicLink" - , 3: "CharacterDevice" - , 4: "BlockDevice" - , 5: "Directory" - , 6: "FIFO" - , 7: "ContiguousFile" // like 0 - // posix headers - , g: "GlobalExtendedHeader" // k=v for the rest of the archive - , x: "ExtendedHeader" // k=v for the next file - // vendor-specific stuff - , A: "SolarisACL" // skip - , D: "GNUDumpDir" // like 5, but with data, which should be skipped - , I: "Inode" // metadata only, skip - , K: "NextFileHasLongLinkpath" // data = link path of next file - , L: "NextFileHasLongPath" // data = path of next file - , M: "ContinuationFile" // skip - , N: "OldGnuLongPath" // like L - , S: "SparseFile" // skip - , V: "TapeVolumeHeader" // skip - , X: "OldExtendedHeader" // like x - } - -Object.keys(types).forEach(function (t) { - types[types[t]] = types[types[t]] || t -}) - -// values for the mode field -var modes = - { suid: 04000 // set uid on extraction - , sgid: 02000 // set gid on extraction - , svtx: 01000 // set restricted deletion flag on dirs on extraction - , uread: 0400 - , uwrite: 0200 - , uexec: 0100 - , gread: 040 - , gwrite: 020 - , gexec: 010 - , oread: 4 - , owrite: 2 - , oexec: 1 - , all: 07777 - } - -var numeric = - { mode: true - , uid: true - , gid: true - , size: true - , mtime: true - , devmaj: true - , devmin: true - , cksum: true - , atime: true - , ctime: true - , dev: true - , ino: true - , nlink: true - } - -Object.keys(modes).forEach(function (t) { - modes[modes[t]] = modes[modes[t]] || t -}) - -var knownExtended = - { atime: true - , charset: true - , comment: true - , ctime: true - , gid: true - , gname: true - , linkpath: true - , mtime: true - , path: true - , realtime: true - , security: true - , size: true - , uid: true - , uname: true } - - -exports.fields = fields -exports.fieldSize = fieldSize -exports.fieldOffs = fieldOffs -exports.fieldEnds = fieldEnds -exports.types = types -exports.modes = modes -exports.numeric = numeric -exports.headerSize = headerSize -exports.blockSize = blockSize -exports.knownExtended = knownExtended - -exports.Pack = require("./lib/pack.js") -exports.Parse = require("./lib/parse.js") -exports.Extract = require("./lib/extract.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js deleted file mode 100644 index 1524ff7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js +++ /dev/null @@ -1,53 +0,0 @@ -// the fixtures have some weird stuff that is painful -// to include directly in the repo for various reasons. -// -// So, unpack the fixtures with the system tar first. -// -// This means, of course, that it'll only work if you -// already have a tar implementation, and some of them -// will not properly unpack the fixtures anyway. -// -// But, since usually those tests will fail on Windows -// and other systems with less capable filesystems anyway, -// at least this way we don't cause inconveniences by -// merely cloning the repo or installing the package. - -var tap = require("tap") -, child_process = require("child_process") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) - -test("extract fixtures", function (t) { - var c = child_process.spawn("tar" - ,["xzvf", "fixtures.tgz"] - ,{ cwd: __dirname }) - - c.stdout.on("data", errwrite) - c.stderr.on("data", errwrite) - function errwrite (chunk) { - process.stderr.write(chunk) - } - - c.on("exit", function (code) { - t.equal(code, 0, "extract fixtures should exit with 0") - if (code) { - t.comment("Note, all tests from here on out will fail because of this.") - } - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js deleted file mode 100644 index fff48181..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js +++ /dev/null @@ -1,358 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , target = path.resolve(__dirname, "tmp/extract-test") - , index = 0 - , fstream = require("fstream") - - , ee = 0 - , expectEntries = -[ { path: 'c.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'cc.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 100, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51693379 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 201, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '777', - type: '2', - depth: undefined, - size: 0, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200-hard', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 2, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '1', - depth: undefined, - size: 0, - linkpath: path.resolve(target, '200-hard'), - nlink: 2, - dev: 234881026, - ino: 51681874 } ] - - , ef = 0 - , expectFiles = -[ { path: '', - mode: '40755', - type: 'Directory', - depth: 0, - linkpath: undefined }, - { path: '/200-hard', - mode: '100644', - type: 'File', - depth: 1, - size: 200, - linkpath: undefined, - nlink: 2 }, - { path: '/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'Link', - depth: 1, - size: 200, - linkpath: path.join(target, '200-hard'), - nlink: 2 }, - { path: '/200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '120777', - type: 'SymbolicLink', - depth: 1, - size: 200, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: 1 }, - { path: '/c.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/cc.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/r', - mode: '40755', - type: 'Directory', - depth: 1, - linkpath: undefined }, - { path: '/r/e', - mode: '40755', - type: 'Directory', - depth: 2, - linkpath: undefined }, - { path: '/r/e/a', - mode: '40755', - type: 'Directory', - depth: 3, - linkpath: undefined }, - { path: '/r/e/a/l', - mode: '40755', - type: 'Directory', - depth: 4, - linkpath: undefined }, - { path: '/r/e/a/l/l', - mode: '40755', - type: 'Directory', - depth: 5, - linkpath: undefined }, - { path: '/r/e/a/l/l/y', - mode: '40755', - type: 'Directory', - depth: 6, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-', - mode: '40755', - type: 'Directory', - depth: 7, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d', - mode: '40755', - type: 'Directory', - depth: 8, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e', - mode: '40755', - type: 'Directory', - depth: 9, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e', - mode: '40755', - type: 'Directory', - depth: 10, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p', - mode: '40755', - type: 'Directory', - depth: 11, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-', - mode: '40755', - type: 'Directory', - depth: 12, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f', - mode: '40755', - type: 'Directory', - depth: 13, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o', - mode: '40755', - type: 'Directory', - depth: 14, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l', - mode: '40755', - type: 'Directory', - depth: 15, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d', - mode: '40755', - type: 'Directory', - depth: 16, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e', - mode: '40755', - type: 'Directory', - depth: 17, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r', - mode: '40755', - type: 'Directory', - depth: 18, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-', - mode: '40755', - type: 'Directory', - depth: 19, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p', - mode: '40755', - type: 'Directory', - depth: 20, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a', - mode: '40755', - type: 'Directory', - depth: 21, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t', - mode: '40755', - type: 'Directory', - depth: 22, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h', - mode: '40755', - type: 'Directory', - depth: 23, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'File', - depth: 24, - size: 100, - linkpath: undefined, - nlink: 1 }, - { path: '/Ω.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 2, - linkpath: undefined, - nlink: 1 } ] - - - -// The extract class basically just pipes the input -// to a Reader, and then to a fstream.DirWriter - -// So, this is as much a test of fstream.Reader and fstream.Writer -// as it is of tar.Extract, but it sort of makes sense. - -tap.test("extract test", function (t) { - var extract = tar.Extract(target) - var inp = fs.createReadStream(file) - - // give it a weird buffer size to try to break in odd places - inp.bufferSize = 1234 - - inp.pipe(extract) - - extract.on("end", function () { - t.equal(ee, expectEntries.length, "should see "+ee+" entries") - - // should get no more entries after end - extract.removeAllListeners("entry") - extract.on("entry", function (e) { - t.fail("Should not get entries after end!") - }) - - next() - }) - - extract.on("entry", function (entry) { - var found = - { path: entry.path - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - , dev: entry.props.dev - , ino: entry.props.ino - } - - var wanted = expectEntries[ee ++] - - t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) - }) - - function next () { - var r = fstream.Reader({ path: target - , type: "Directory" - // this is just to encourage consistency - , sort: "alpha" }) - - r.on("ready", function () { - foundEntry(r) - }) - - r.on("end", finish) - - function foundEntry (entry) { - var p = entry.path.substr(target.length) - var found = - { path: p - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - } - - var wanted = expectFiles[ef ++] - - t.has(found, wanted, "unpacked file " + ef + " " + wanted.path) - - entry.on("entry", foundEntry) - } - - function finish () { - t.equal(ef, expectFiles.length, "should have "+ef+" items") - t.end() - } - } -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz deleted file mode 100644 index 4501bcf22695435b84edb3d4076cd9a70687b035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19205 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 L7Wcr_0GI;+;ZGx1 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js deleted file mode 100644 index 8ea6f795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js +++ /dev/null @@ -1,183 +0,0 @@ -var tap = require("tap") -var TarHeader = require("../lib/header.js") -var tar = require("../tar.js") -var fs = require("fs") - - -var headers = - { "a.txt file header": - [ "612e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303430312031313635313336303333332030313234353100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'a.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 257 - , mtime: 1319493851 - , cksum: 5417 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "omega pax": // the extended header from omega tar. - [ "5061784865616465722fcea92e74787400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303137302031313534333731303631312030313530353100207800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'PaxHeader/Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 120 - , mtime: 1301254537 - , cksum: 6697 - , type: 'x' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "omega file header": - [ "cea92e7478740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030322031313534333731303631312030313330373200203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 2 - , mtime: 1301254537 - , cksum: 5690 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "foo.js file header": - [ "666f6f2e6a730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030342031313534333637303734312030313236313700203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'foo.js' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 4 - , mtime: 1301246433 - , cksum: 5519 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "b.txt file header": - [ "622e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030313030302031313635313336303637372030313234363100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'b.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 512 - , mtime: 1319494079 - , cksum: 5425 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "deep nested file": - [ "636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363633030303634342000303537373631200030303030323420003030303030303030313434203131363532313531353333203034333331340020300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075737461720030306973616163730000000000000000000000000000000000000000000000000000737461666600000000000000000000000000000000000000000000000000000030303030303020003030303030302000722f652f612f6c2f6c2f792f2d2f642f652f652f702f2d2f662f6f2f6c2f642f652f722f2d2f702f612f742f680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true, - path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 100 - , mtime: 1319687003 - , cksum: 18124 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - } - -tap.test("parsing", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , header = new Buffer(h[0], "hex") - , expect = h[1] - , parsed = new TarHeader(header) - - // console.error(parsed) - t.has(parsed, expect, "parse " + name) - }) - t.end() -}) - -tap.test("encoding", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , expect = new Buffer(h[0], "hex") - , encoded = TarHeader.encode(h[1]) - - // might have slightly different bytes, since the standard - // isn't very strict, but should have the same semantics - // checkSum will be different, but cksumValid will be true - - var th = new TarHeader(encoded) - delete h[1].block - delete h[1].needExtended - delete h[1].cksum - t.has(th, h[1], "fields "+name) - }) - t.end() -}) - -// test these manually. they're a bit rare to find in the wild -tap.test("parseNumeric tests", function (t) { - var parseNumeric = TarHeader.parseNumeric - , numbers = - { "303737373737373700": 2097151 - , "30373737373737373737373700": 8589934591 - , "303030303036343400": 420 - , "800000ffffffffffff": 281474976710655 - , "ffffff000000000001": -281474976710654 - , "ffffff000000000000": -281474976710655 - , "800000000000200000": 2097152 - , "8000000000001544c5": 1393861 - , "ffffffffffff1544c5": -15383354 } - Object.keys(numbers).forEach(function (n) { - var b = new Buffer(n, "hex") - t.equal(parseNumeric(b), numbers[n], n + " === " + numbers[n]) - }) - t.end() -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js deleted file mode 100644 index 5bf0e540..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js +++ /dev/null @@ -1,854 +0,0 @@ -// This is exactly like test/pack.js, except that it's excluding -// any proprietary headers. -// -// This loses some information about the filesystem, but creates -// tarballs that are supported by more versions of tar, especially -// old non-spec-compliant copies of gnutar. - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - uid: uid, - gid: gid, - size: 200 } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - uid: uid, - gid: gid, - size: 2 } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , uid: uid - , gid: gid - , size: 2 } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var props = doGH ? pkg : {} - props.noProprietary = true - var pack = Pack(props) - var writer = Writer(target) - - // global header should be skipped regardless, since it has no content. - var entry = 0 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - if (ev !== wanted[0] || e.path !== wanted[1].path) { - console.error(wanted) - console.error([ev, e.props]) - e.on("end", function () { - console.error(e.fields) - throw "break" - }) - } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js deleted file mode 100644 index 0f509945..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js +++ /dev/null @@ -1,897 +0,0 @@ - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'globalExtendedHeader', - { path: 'PaxHeader/', - mode: 438, - uid: 0, - gid: 0, - type: 'g', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { "NODETAR.author": pkg.author, - "NODETAR.name": pkg.name, - "NODETAR.description": pkg.description, - "NODETAR.version": pkg.version, - "NODETAR.repository.type": pkg.repository.type, - "NODETAR.repository.url": pkg.repository.url, - "NODETAR.main": pkg.main, - "NODETAR.scripts.test": pkg.scripts.test } ] - - , [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 200, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 2, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , "NODETAR.depth": "1" - , "NODETAR.type": "File" - , nlink: 1 - , uid: uid - , gid: gid - , size: 2 - , "NODETAR.blksize": "4096" - , "NODETAR.blocks": "8" } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var pack = Pack(doGH ? pkg : null) - var writer = Writer(target) - - // skip the global header if we're not doing that. - var entry = doGH ? 0 : 1 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - // if (ev !== wanted[0] || e.path !== wanted[1].path) { - // console.error(wanted) - // console.error([ev, e.props]) - // throw "break" - // } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js deleted file mode 100644 index f765a501..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js +++ /dev/null @@ -1,359 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , index = 0 - - , expect = -[ [ 'entry', - { path: 'c.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), - cksum: 5422, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'cc.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), - cksum: 5525, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 100, - mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), - cksum: 18124, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 120, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 6702, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'Ω.txt', - ctime: 1319737909, - atime: 1319739061, - dev: 234881026, - ino: 51693379, - nlink: 1 } ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), - dev: 234881026, - ino: 51693379, - nlink: 1 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1319686868, - atime: 1319741254, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14570, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 }, - undefined ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 1000, - gid: 1000, - size: 201, - mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), - cksum: 14086, - type: '0', - linkpath: '', - ustar: false }, - undefined ], - [ 'longLinkpath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4975, - type: 'K', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], - [ 'entry', - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: 511, - uid: 1000, - gid: 1000, - size: 0, - mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), - cksum: 21603, - type: '2', - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ustar: false }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 143, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 6533, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { ctime: 1320617144, - atime: 1320617232, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 5526, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1320617144, - atime: 1320617406, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 0, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 15173, - type: '1', - linkpath: '200-hard', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ] ] - - -tap.test("parser test", function (t) { - var parser = tar.Parse() - - parser.on("end", function () { - t.equal(index, expect.length, "saw all expected events") - t.end() - }) - - fs.createReadStream(file) - .pipe(parser) - .on("*", function (ev, entry) { - var wanted = expect[index] - if (!wanted) { - return t.fail("Unexpected event: " + ev) - } - var result = [ev, entry.props] - entry.on("end", function () { - result.push(entry.fields || entry.body) - - t.equal(ev, wanted[0], index + " event type") - t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") - if (wanted[2]) { - t.equivalent(result[2], wanted[2], "metadata values") - } - index ++ - }) - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js deleted file mode 100644 index a00ff7fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js +++ /dev/null @@ -1,20 +0,0 @@ -// clean up the fixtures - -var tap = require("tap") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js deleted file mode 100644 index da99ffef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; -var path = require('path'); -var tmpdir = require('os').tmpdir(); -var uuid = require('uuid'); - -module.exports = function (ext) { - return path.join(tmpdir, uuid.v4() + (ext || '')); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml deleted file mode 100644 index b6d42c3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md deleted file mode 100644 index f039427f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md +++ /dev/null @@ -1,2 +0,0 @@ -Copyright (c) 2010-2012 Robert Kieffer -MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md deleted file mode 100644 index d2adba18..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md +++ /dev/null @@ -1,204 +0,0 @@ -# uuid [![Build Status](https://secure.travis-ci.org/shtylman/node-uuid.png?branch=master)](http://travis-ci.org/shtylman/node-uuid) # - -[![browser support](http://ci.testling.com/shtylman/node-uuid.png)](http://ci.testling.com/shtylman/node-uuid) - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Cryptographically strong random # generation on supporting platforms -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) - -## Getting Started - -Install it in your browser: - -```html -<script src="uuid.js"></script> -``` - -Or in node.js: - -``` -npm install uuid -``` - -```javascript -var uuid = require('uuid'); - -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include <stdio.h> -#include <unistd.h> -#include <sys/time.h> -#include <uuid/uuid.h> - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js deleted file mode 100644 index 3de34151..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js +++ /dev/null @@ -1,62 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../'), - uuidjs = require('uuid-js'), - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js deleted file mode 100644 index bdc9eb46..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js +++ /dev/null @@ -1,102 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -var log = console.log; - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json deleted file mode 100644 index 731b282b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "uuid", - "version": "1.4.1", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "main": "./uuid.js", - "devDependencies": { - "mocha": "1.8.0" - }, - "scripts": { - "test": "mocha test/test.js" - }, - "browser": { - "./rng.js": "./rng-browser.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/shtylman/node-uuid.git" - }, - "testling": { - "browsers": [ - "ie6..latest", - "firefox/3.6..latest", - "chrome/22..latest", - "safari/5.1..latest" - ], - "harness": "mocha-tdd", - "files": "test/*.js" - }, - "readme": "# uuid [![Build Status](https://secure.travis-ci.org/shtylman/node-uuid.png?branch=master)](http://travis-ci.org/shtylman/node-uuid) #\n\n[![browser support](http://ci.testling.com/shtylman/node-uuid.png)](http://ci.testling.com/shtylman/node-uuid)\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src=\"uuid.js\"></script>\n```\n\nOr in node.js:\n\n```\nnpm install uuid\n```\n\n```javascript\nvar uuid = require('uuid');\n\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-uuid/issues" - }, - "homepage": "https://github.com/shtylman/node-uuid", - "_id": "uuid@1.4.1", - "_from": "uuid@~1.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js deleted file mode 100644 index 57b58d4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js +++ /dev/null @@ -1,31 +0,0 @@ - -var rng; - -if (global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; -} - -if (!rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; -} - -module.exports = rng; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js deleted file mode 100644 index 3977f798..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js +++ /dev/null @@ -1,4 +0,0 @@ -var rb = require('crypto').randomBytes; -module.exports = function() { - return rb(16); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts deleted file mode 100644 index e2bfcc5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---ui qunit diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js deleted file mode 100644 index 4c9872ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js +++ /dev/null @@ -1,105 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - test(name, function() { - // avoid .map for older browsers - for (var i=0 ; i<ids.length ; ++i) { - ids[i] = ids[i].split('-').reverse().join('-'); - } - ids = ids.sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); - }); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -test('msec', function() { - assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' - ); -}); - -test('exception thrown when > 10k ids created in 1ms', function() { - // Verify throw if too many ids created - var thrown = false; - try { - uuid.v1({msecs: TIME, nsecs: 10000}); - } catch (e) { - thrown = true; - } - assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); -}); - -test('clock regression by msec', function() { - // Verify clock regression bumps clockseq - var uidt = uuid.v1({msecs: TIME}); - var uidtb = uuid.v1({msecs: TIME - 1}); - assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' - ); -}); - -test('clock regression by nsec', function() { - // Verify clock regression bumps clockseq - var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); - var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); - assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' - ); -}); - -test('explicit options product expected id', function() { - // Verify explicit options produce expected id - var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] - }); - assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); -}); - -test('ids spanning 1ms boundary are 100ns apart', function() { - // Verify adjacent ids across a msec boundary are 1 time unit apart - var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); - var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - - var before = u0.split('-')[0], after = u1.split('-')[0]; - var dt = parseInt(after, 16) - parseInt(before, 16); - assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); -}); - -test('parse/unparse', function() { - var id = '00112233445566778899aabbccddeeff'; - assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); - assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js deleted file mode 100644 index d0062fb4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js +++ /dev/null @@ -1,187 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -// Unique ID creation requires a high quality random # generator. We feature -// detect to determine the best RNG source, normalizing to a function that -// returns 128-bits of randomness, since that's what's usually required -var _rng = require('./rng'); - -// Buffer class to use -var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - -// Maps for number <-> hex string conversion -var _byteToHex = []; -var _hexToByte = {}; -for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; -} - -// **`parse()` - Parse a UUID into it's component bytes** -function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; -} - -// **`unparse()` - Convert UUID byte array (ala parse()) into a string** -function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; -} - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -// random #'s we need to init node and clockseq -var _seedBytes = _rng(); - -// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) -var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] -]; - -// Per 4.2.2, randomize (14 bit) clockseq -var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - -// Previous uuid creation time -var _lastMSecs = 0, _lastNSecs = 0; - -// See https://github.com/broofa/node-uuid for API details -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); -} - -// **`v4()` - Generate random UUID** - -// See https://github.com/broofa/node-uuid for API details -function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); -} - -// Export public API -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; -uuid.parse = parse; -uuid.unparse = unparse; -uuid.BufferClass = BufferClass; - -module.exports = uuid; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json deleted file mode 100644 index ae2ae248..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "tempfile", - "version": "0.1.2", - "description": "Get a random temp file path", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/tempfile" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "tmp", - "temp", - "temporary", - "tempfile", - "file", - "path", - "random", - "rand" - ], - "dependencies": { - "uuid": "~1.4.0" - }, - "devDependencies": { - "mocha": "*" - }, - "readme": "# tempfile [![Build Status](https://travis-ci.org/sindresorhus/tempfile.png?branch=master)](http://travis-ci.org/sindresorhus/tempfile)\n\n> Get a random temp file path\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/tempfile)\n\n```\nnpm install --save tempfile\n```\n\n\n## Example\n\n```js\nvar tempfile = require('tempfile');\ntempfile('.png');\n//=> /var/folders/_1/tk89k8215ts0rg0kmb096nj80000gn/T/4049f192-43e7-43b2-98d9-094e6760861b.png\n```\n\n## API\n\n### tempfile(extension)\n\n#### extension\n\nType: `String`\n\nOptionally supply an extension to append to the path.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/tempfile/issues" - }, - "homepage": "https://github.com/sindresorhus/tempfile", - "_id": "tempfile@0.1.2", - "_from": "tempfile@~0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md deleted file mode 100644 index 672a0ac6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md +++ /dev/null @@ -1,36 +0,0 @@ -# tempfile [![Build Status](https://travis-ci.org/sindresorhus/tempfile.png?branch=master)](http://travis-ci.org/sindresorhus/tempfile) - -> Get a random temp file path - - -## Install - -Install with [npm](https://npmjs.org/package/tempfile) - -``` -npm install --save tempfile -``` - - -## Example - -```js -var tempfile = require('tempfile'); -tempfile('.png'); -//=> /var/folders/_1/tk89k8215ts0rg0kmb096nj80000gn/T/4049f192-43e7-43b2-98d9-094e6760861b.png -``` - -## API - -### tempfile(extension) - -#### extension - -Type: `String` - -Optionally supply an extension to append to the path. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json deleted file mode 100644 index f24aab87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "decompress", - "version": "0.1.6", - "description": "Easily extract zip, tar and tar.gz archives", - "keywords": [ - "extract", - "zip", - "tar", - "tar.gz" - ], - "homepage": "https://github.com/kevva/decompress", - "bugs": { - "url": "https://github.com/kevva/decompress/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/decompress.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "decompress.js", - "files": [ - "decompress.js" - ], - "dependencies": { - "adm-zip": "~0.4.3", - "mkdirp": "~0.3.5", - "mout": "~0.6.0", - "rimraf": "~2.2.2", - "stream-combiner": "~0.0.2", - "tar": "~0.1.18", - "tempfile": "~0.1.2" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# decompress [![Build Status](https://secure.travis-ci.org/kevva/decompress.png?branch=master)](http://travis-ci.org/kevva/decompress)\n\nEasily extract `.zip`, `.tar` and `.tar.gz` archives. Based on the extract \nutility in [Bower](https://github.com/bower/bower).\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/decompress): `npm install decompress`\n\n## Examples\n\nYou'll only need to pass a type into `ext` and it'll figure the rest out for \nyou.\n\n```js\nvar decompress = require('decompress');\nvar fs = require('fs');\n\nvar src = fs.createReadStream('foo.tar.gz');\nvar dest = decompress.extract({ ext: '.tar.gz' });\n\nsrc.pipe(dest);\n```\n\n## API\n\n### .extract(opts)\n\nExtract an archive using the `ext` option to determine which extractor to use. \nIf no `path` is specified it'll extract it to your current location.\n\n### .canExtract(src, mime)\n\nDetermine if a file can be extracted or not by checking the file extension \nand/or the MIME type.\n\n```js\ndecompress.canExtract('foo.zip');\n// => true\n\ndecompress.canExtract('application/zip');\n// => true\n```\n\n## Options\n\n### `ext`\n\nType: `String` \nDefault: `''`\n\nString that can be a file name, URL, MIME type etc.\n\n### `path`\n\nType: `String` \nDefault: `process.cwd()`\n\nPath to extract the archive to. If no `path` is defined it'll extract it to your \ncurrent location.\n\n### strip\n\nType: `Number` \nDefault: `0`\n\nEquivalent to `--strip-components` for tar.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "decompress@0.1.6", - "_from": "decompress@~0.1.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js deleted file mode 100644 index a43b4363..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js +++ /dev/null @@ -1,72 +0,0 @@ -/*! - each-async - Async concurrent iterator (async forEach) - https://github.com/sindresorhus/each-async - by Sindre Sorhus - MIT License -*/ -(function () { - 'use strict'; - - function once(fn) { - var called = false; - - if (typeof fn !== 'function') { - throw new TypeError; - } - - return function () { - if (called) { - throw new Error('Callback already called.'); - } - called = true; - fn.apply(this, arguments); - } - } - - function each(arr, next, cb) { - var failed = false; - var count = 0; - - cb = cb || function () {}; - - if (!Array.isArray(arr)) { - throw new TypeError('First argument must be an array'); - } - - if (typeof next !== 'function') { - throw new TypeError('Second argument must be a function'); - } - - var len = arr.length; - - if (!len) { - return cb(); - } - - function callback(err) { - if (failed) { - return; - } - - if (err !== undefined && err !== null) { - failed = true; - return cb(err); - } - - if (++count === len) { - return cb(); - } - } - - for (var i = 0; i < len; i++) { - next(arr[i], i, once(callback)); - } - } - - if (typeof module !== 'undefined' && module.exports) { - module.exports = each; - } else { - window.eachAsync = each; - } -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json deleted file mode 100644 index 53336b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "each-async", - "version": "0.1.2", - "description": "Async concurrent iterator", - "license": "MIT", - "main": "each-async.js", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/each-async" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "each-async.js" - ], - "keywords": [ - "each", - "async", - "asynchronous", - "iteration", - "iterate", - "loop", - "foreach", - "parallel", - "concurrent", - "array", - "flow", - "control flow" - ], - "devDependencies": { - "mocha": "*" - }, - "readme": "# each-async [![Build Status](https://secure.travis-ci.org/sindresorhus/each-async.png?branch=master)](http://travis-ci.org/sindresorhus/each-async)\n\n> Async concurrent iterator (async forEach)\n\nLike [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny.\n\nI often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`.\n\nAsync iteration is one of the most used async control flow patterns.\n\n\n## Install\n\nDownload [manually](https://github.com/sindresorhus/each-async/releases) or with a package-manager.\n\n#### [npm](https://npmjs.org/package/each-async)\n\n```\nnpm install --save each-async\n```\n\n#### [Bower](http://bower.io)\n\n```\nbower install --save each-async\n```\n\n#### [Component](https://github.com/component/component)\n\n```\ncomponent install sindresorhus/each-async\n```\n\n\n## Examples\n\n### Node.js\n\n```js\neachAsync(['foo','bar','baz'], function (item, index, done) {\n\tconsole.log(item, index);\n\tdone();\n}, function (error) {\n\tconsole.log('finished');\n});\n//=> foo 0\n//=> bar 1\n//=> baz 2\n//=> finished\n```\n\n\n## API\n\n### eachAsync(array, callback, finishedCallback)\n\n#### array\n\nThe array you want to iterate.\n\n#### callback(item, index, done)\n\nA function which is called for each item in the array with the following arguments:\n\n- `item`: the current item in the array\n- `index`: the current index\n- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration.\n\nNote that order is not guaranteed since each item is handled concurrently.\n\n#### finishedCallback(error)\n\nA function which is called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/each-async/issues" - }, - "homepage": "https://github.com/sindresorhus/each-async", - "_id": "each-async@0.1.2", - "_from": "each-async@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md deleted file mode 100644 index e5e5bb14..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md +++ /dev/null @@ -1,78 +0,0 @@ -# each-async [![Build Status](https://secure.travis-ci.org/sindresorhus/each-async.png?branch=master)](http://travis-ci.org/sindresorhus/each-async) - -> Async concurrent iterator (async forEach) - -Like [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny. - -I often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`. - -Async iteration is one of the most used async control flow patterns. - - -## Install - -Download [manually](https://github.com/sindresorhus/each-async/releases) or with a package-manager. - -#### [npm](https://npmjs.org/package/each-async) - -``` -npm install --save each-async -``` - -#### [Bower](http://bower.io) - -``` -bower install --save each-async -``` - -#### [Component](https://github.com/component/component) - -``` -component install sindresorhus/each-async -``` - - -## Examples - -### Node.js - -```js -eachAsync(['foo','bar','baz'], function (item, index, done) { - console.log(item, index); - done(); -}, function (error) { - console.log('finished'); -}); -//=> foo 0 -//=> bar 1 -//=> baz 2 -//=> finished -``` - - -## API - -### eachAsync(array, callback, finishedCallback) - -#### array - -The array you want to iterate. - -#### callback(item, index, done) - -A function which is called for each item in the array with the following arguments: - -- `item`: the current item in the array -- `index`: the current index -- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration. - -Note that order is not guaranteed since each item is handled concurrently. - -#### finishedCallback(error) - -A function which is called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore deleted file mode 100644 index 80e59ef5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -tests -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml deleted file mode 100644 index 0bce8152..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.10 - -env: - - OPTIONALS=Y - - OPTIONALS=N - -install: - - if [[ "$OPTIONALS" == "Y" ]]; then npm install; fi - - if [[ "$OPTIONALS" == "N" ]]; then npm install --no-optional; fi diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md deleted file mode 100644 index 5c0c081f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md +++ /dev/null @@ -1,366 +0,0 @@ -# Request -- Simplified HTTP client - -[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/) - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```javascript -var request = require('request'); -request('http://www.google.com', function (error, response, body) { - if (!error && response.statusCode == 200) { - console.log(body) // Print the google web page. - } -}) -``` - -## Streaming - -You can stream any response to a file stream. - -```javascript -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```javascript -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```javascript -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Now let’s get fancy. - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - var x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```javascript -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```javascript -var r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - -URL-encoded forms are simple. - -```javascript -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -``` - -For `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you. - -```javascript -var r = request.post('http://service.com/upload') -var form = r.form() -form.append('my_field', 'my_value') -form.append('my_buffer', new Buffer([1, 2, 3])) -form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png')) -form.append('remote_file', request('http://google.com/doodle.png')) -``` - -## HTTP Authentication - -```javascript -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -``` - -If passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`. - -`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method). - -Digest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail. - -## OAuth Signing - -```javascript -// Twitter OAuth -var qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - var access_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: access_token.oauth_token - , verifier: access_token.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - var perm_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_token.oauth_token - , token_secret: perm_token.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json?' - , params = - { screen_name: perm_token.screen_name - , user_id: perm_token.user_id - } - ; - url += qs.stringify(params) - request.get({url:url, oauth:oauth, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -### Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```javascript -var request = require('request'); - -var options = { - url: 'https://api.github.com/repos/mikeal/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - var info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -### request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -* `qs` - object containing querystring values to be appended to the `uri` -* `method` - http method (default: `"GET"`) -* `headers` - http headers (default: `{}`) -* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`. -* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request). -* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above. -* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below. -* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`) -* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -* `maxRedirects` - the maximum number of redirects to follow (default: `10`) -* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. -* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node's default `maxSockets`) -* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool. -* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request -* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above. -* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section) -* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services) -* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. -* `localAddress` - Local interface to bind for network connections. - - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - -### request.defaults(options) - -This method returns a wrapper around the normal request API that defaults to whatever options you pass in to it. - -### request.put - -Same as `request()`, but defaults to `method: "PUT"`. - -```javascript -request.put(url) -``` - -### request.patch - -Same as `request()`, but defaults to `method: "PATCH"`. - -```javascript -request.patch(url) -``` - -### request.post - -Same as `request()`, but defaults to `method: "POST"`. - -```javascript -request.post(url) -``` - -### request.head - -Same as request() but defaults to `method: "HEAD"`. - -```javascript -request.head(url) -``` - -### request.del - -Same as `request()`, but defaults to `method: "DELETE"`. - -```javascript -request.del(url) -``` - -### request.get - -Same as `request()` (for uniformity). - -```javascript -request.get(url) -``` -### request.cookie - -Function that creates a new cookie. - -```javascript -request.cookie('cookie_string_here') -``` -### request.jar - -Function that creates a new cookie jar. - -```javascript -request.jar() -``` - - -## Examples: - -```javascript - var request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`). - -```javascript -var request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```javascript -var j = request.jar() -var request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` -OR - -Note that `setCookie` requires at least three parameters, and the last is required to be a callback. - -```javascript -var j = request.jar() -var cookie = request.cookie('your_cookie_here') -j.setCookie(cookie, uri, function (err, cookie){}) -request({url: 'http://www.google.com', jar: j}, function () { - request('http://images.google.com') -}) -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js deleted file mode 100644 index 6a847f6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js +++ /dev/null @@ -1,7 +0,0 @@ -var request = require('request') - , dns = require('dns') - ; - -function wrap (fn) { - var -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js deleted file mode 100755 index 465e5ae3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -var optional = require('./lib/optional') - , cookie = optional('tough-cookie') - , Cookie = cookie && cookie.Cookie - , CookieJar = cookie && cookie.CookieJar - , cookieJar = CookieJar && new CookieJar - - , copy = require('./lib/copy') - , Request = require('./request') - ; - - - -// organize params for patch, post, put, head, del -function initParams(uri, options, callback) { - if ((typeof options === 'function') && !callback) callback = options - if (options && typeof options === 'object') { - options.uri = uri - } else if (typeof uri === 'string') { - options = {uri:uri} - } else { - options = uri - uri = options.uri - } - return { uri: uri, options: options, callback: callback } -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.') - if ((typeof options === 'function') && !callback) callback = options - if (options && typeof options === 'object') { - options.uri = uri - } else if (typeof uri === 'string') { - options = {uri:uri} - } else { - options = uri - } - - options = copy(options) - - if (callback) options.callback = callback - var r = new Request(options) - return r -} - -module.exports = request - -request.Request = Request; - -request.debug = process.env.NODE_DEBUG && /request/.test(process.env.NODE_DEBUG) - -request.initParams = initParams - -request.defaults = function (options, requester) { - var def = function (method) { - var d = function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - for (var i in options) { - if (params.options[i] === undefined) params.options[i] = options[i] - } - if(typeof requester === 'function') { - if(method === request) { - method = requester - } else { - params.options._requester = requester - } - } - return method(params.options, params.callback) - } - return d - } - var de = def(request) - de.get = def(request.get) - de.patch = def(request.patch) - de.post = def(request.post) - de.put = def(request.put) - de.head = def(request.head) - de.del = def(request.del) - de.cookie = def(request.cookie) - de.jar = request.jar - return de -} - -function requester(params) { - if(typeof params.options._requester === 'function') { - return params.options._requester - } else { - return request - } -} - -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - for (var option in optionsArg) { - options[option] = optionsArg[option] - } - } - if (agentOptions) options.agentOptions = agentOptions - options.forever = true - return request.defaults(options) -} - -request.get = request -request.post = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'POST' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.put = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PUT' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.patch = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PATCH' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.head = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'HEAD' - if (params.options.body || - params.options.requestBodyStream || - (params.options.json && typeof params.options.json !== 'boolean') || - params.options.multipart) { - throw new Error("HTTP HEAD requests MUST NOT include a request body.") - } - - return requester(params)(params.uri || null, params.options, params.callback) -} -request.del = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'DELETE' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.jar = function () { - return new CookieJar -} -request.cookie = function (str) { - if (str && str.uri) str = str.uri - if (typeof str !== 'string') throw new Error("The cookie function only accepts STRING as param") - return new Cookie(str) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js deleted file mode 100644 index 56831ff8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js deleted file mode 100644 index fa27b24b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js +++ /dev/null @@ -1,7 +0,0 @@ -var util = require('util') - -module.exports = -function debug () { - if (/\brequest\b/.test(process.env.NODE_DEBUG)) - console.error('REQUEST %s', util.format.apply(util, arguments)) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js deleted file mode 100644 index 28e07ea5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js +++ /dev/null @@ -1,34 +0,0 @@ -// Safe toJSON -module.exports = -function getSafe (self, uuid) { - if (typeof self === 'object' || typeof self === 'function') var safe = {} - if (Array.isArray(self)) var safe = [] - - var recurse = [] - - Object.defineProperty(self, uuid, {}) - - var attrs = Object.keys(self).filter(function (i) { - if (i === uuid) return false - if ( (typeof self[i] !== 'object' && typeof self[i] !== 'function') || self[i] === null) return true - return !(Object.getOwnPropertyDescriptor(self[i], uuid)) - }) - - - for (var i=0;i<attrs.length;i++) { - if ( (typeof self[attrs[i]] !== 'object' && typeof self[attrs[i]] !== 'function') || - self[attrs[i]] === null - ) { - safe[attrs[i]] = self[attrs[i]] - } else { - recurse.push(attrs[i]) - Object.defineProperty(self[attrs[i]], uuid, {}) - } - } - - for (var i=0;i<recurse.length;i++) { - safe[recurse[i]] = getSafe(self[recurse[i]], uuid) - } - - return safe -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js deleted file mode 100644 index 0c4fe853..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function(module) { - try { - return require(module); - } catch (e) {} -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md deleted file mode 100644 index 763564e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -aws-sign -======== - -AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js deleted file mode 100644 index 576e49dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js +++ /dev/null @@ -1,202 +0,0 @@ - -/*! - * knox - auth - * Copyright(c) 2010 LearnBoost <dev@learnboost.com> - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , parse = require('url').parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS <key>:<signature>" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * <verb>\n - * <md5>\n - * <content-type>\n - * <date>\n - * [headers\n] - * <resource> - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.queryStringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * <date>\n - * <resource> - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json deleted file mode 100644 index 891450ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "aws-sign2", - "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.", - "version": "0.5.0", - "repository": { - "url": "https://github.com/mikeal/aws-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "aws-sign\n========\n\nAWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/aws-sign/issues" - }, - "homepage": "https://github.com/mikeal/aws-sign", - "_id": "aws-sign2@0.5.0", - "_from": "aws-sign2@~0.5.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md deleted file mode 100644 index 9d5b6634..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -forever-agent -============= - -HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js deleted file mode 100644 index 1e8efcdf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js +++ /dev/null @@ -1,119 +0,0 @@ -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = require('util') - , Agent = require('http').Agent - , net = require('net') - , tls = require('tls') - , AgentSSL = require('https').Agent - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = host + ':' + port - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = host + ':' + port - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json deleted file mode 100644 index d326e4c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "forever-agent", - "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.", - "version": "0.5.2", - "repository": { - "url": "https://github.com/mikeal/forever-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "forever-agent\n=============\n\nHTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/forever-agent/issues" - }, - "homepage": "https://github.com/mikeal/forever-agent", - "_id": "forever-agent@0.5.2", - "_from": "forever-agent@~0.5.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License deleted file mode 100644 index c7ff12a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md deleted file mode 100644 index dc73c463..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md +++ /dev/null @@ -1,163 +0,0 @@ -# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data) - -A module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface -[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions - -## Install - -``` -npm install form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's request stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); // for node-0.10.x -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', - contentType: 'image/jpg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing] - -## TODO - -- Add new streams (0.10) support and try really hard not to break it for 0.8.x. - -## License - -Form-Data is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js deleted file mode 100644 index d1064748..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,325 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var mime = require('mime'); -var async = require('async'); - -module.exports = FormData; -function FormData() { - this._overheadLength = 0; - this._valueLength = 0; - this._lengthRetrievers = []; - - CombinedStream.call(this); -} -util.inherits(FormData, CombinedStream); - -FormData.LINE_BREAK = '\r\n'; - -FormData.prototype.append = function(field, value, options) { - options = options || {}; - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') value = ''+value; - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(field, value, options); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - + FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) - this._lengthRetrievers.push(function(next) { - - if (value.hasOwnProperty('fd')) { - fs.stat(value.path, function(err, stat) { - if (err) { - next(err); - return; - } - - next(null, stat.size); - }); - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - next(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - next(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - next('Unknown stream'); - } - }); -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - var boundary = this.getBoundary(); - var header = ''; - - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (options.header != null) { - header = options.header; - } else { - header += '--' + boundary + FormData.LINE_BREAK + - 'Content-Disposition: form-data; name="' + field + '"'; - - // fs- and request- streams have path property - // or use custom filename and/or contentType - // TODO: Use request's response mime-type - if (options.filename || value.path) { - header += - '; filename="' + path.basename(options.filename || value.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + (options.contentType || mime.lookup(options.filename || value.path)); - - // http response has not - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - header += - '; filename="' + path.basename(value.client._httpMessage.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + value.headers['content-type']; - } - - header += FormData.LINE_BREAK + FormData.LINE_BREAK; - } - - return header; -}; - -FormData.prototype._multiPartFooter = function(field, value, options) { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--'; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (var header in userHeaders) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - - return formHeaders; -} - -FormData.prototype.getCustomHeaders = function(contentType) { - contentType = contentType ? contentType : 'multipart/form-data'; - - var formHeaders = { - 'content-type': contentType + '; boundary=' + this.getBoundary(), - 'content-length': this.getLengthSync() - }; - - return formHeaders; -} - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function(debug) { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/felixge/node-form-data/issues/40 - if (this._lengthRetrievers.length) { - // Some async length retrivers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._lengthRetrievers.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - async.parallel(this._lengthRetrievers, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - - var request - , options - , defaults = { - method : 'post', - headers: this.getHeaders() - }; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - params = parseUrl(params); - - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname - }, defaults); - } - else // use custom params - { - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // https if specified, fallback to http in any other case - if (params.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - - // TODO: Add chunked encoding when no length (if err) - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (this.error) return; - - this.error = err; - this.pause(); - this.emit('error', err); -}; - -/* - * Santa's little helpers - */ - -// populates missing values -function populate(dst, src) { - for (var prop in src) { - if (!dst[prop]) dst[prop] = src[prop]; - } - return dst; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore deleted file mode 100644 index aba34f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -*.un~ -/node_modules -/test/tmp diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md deleted file mode 100644 index 1a9999eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,132 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = true - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = 2 * 1024 * 1024 - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = 0 - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 32849fd1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,185 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - stream.on('data', this._checkDataSize.bind(this)); - - stream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)) - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 2fedb26c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.un~ -/node_modules/* diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md deleted file mode 100644 index 5cb5b35e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,154 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index 7c10d482..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,99 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -DelayedStream.prototype.__defineGetter__('readable', function() { - return this.source.readable; -}); - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json deleted file mode 100644 index 1628b4b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "version": "0.0.5", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - }, - "readme": "# delayed-stream\n\nBuffers events from a stream until you are ready to handle them.\n\n## Installation\n\n``` bash\nnpm install delayed-stream\n```\n\n## Usage\n\nThe following example shows how to write a http echo server that delays its\nresponse by 1000 ms.\n\n``` javascript\nvar DelayedStream = require('delayed-stream');\nvar http = require('http');\n\nhttp.createServer(function(req, res) {\n var delayed = DelayedStream.create(req);\n\n setTimeout(function() {\n res.writeHead(200);\n delayed.pipe(res);\n }, 1000);\n});\n```\n\nIf you are not using `Stream#pipe`, you can also manually release the buffered\nevents by calling `delayedStream.resume()`:\n\n``` javascript\nvar delayed = DelayedStream.create(req);\n\nsetTimeout(function() {\n // Emit all buffered events and resume underlaying source\n delayed.resume();\n}, 1000);\n```\n\n## Implementation\n\nIn order to use this meta stream properly, here are a few things you should\nknow about the implementation.\n\n### Event Buffering / Proxying\n\nAll events of the `source` stream are hijacked by overwriting the `source.emit`\nmethod. Until node implements a catch-all event listener, this is the only way.\n\nHowever, delayed-stream still continues to emit all events it captures on the\n`source`, regardless of whether you have released the delayed stream yet or\nnot.\n\nUpon creation, delayed-stream captures all `source` events and stores them in\nan internal event buffer. Once `delayedStream.release()` is called, all\nbuffered events are emitted on the `delayedStream`, and the event buffer is\ncleared. After that, delayed-stream merely acts as a proxy for the underlaying\nsource.\n\n### Error handling\n\nError events on `source` are buffered / proxied just like any other events.\nHowever, `delayedStream.create` attaches a no-op `'error'` listener to the\n`source`. This way you only have to handle errors on the `delayedStream`\nobject, rather than in two places.\n\n### Buffer limits\n\ndelayed-stream provides a `maxDataSize` property that can be used to limit\nthe amount of data being buffered. In order to protect you from bad `source`\nstreams that don't react to `source.pause()`, this feature is enabled by\ndefault.\n\n## API\n\n### DelayedStream.create(source, [options])\n\nReturns a new `delayedStream`. Available options are:\n\n* `pauseStream`\n* `maxDataSize`\n\nThe description for those properties can be found below.\n\n### delayedStream.source\n\nThe `source` stream managed by this object. This is useful if you are\npassing your `delayedStream` around, and you still want to access properties\non the `source` object.\n\n### delayedStream.pauseStream = true\n\nWhether to pause the underlaying `source` when calling\n`DelayedStream.create()`. Modifying this property afterwards has no effect.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature. You can also modify this property during runtime.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature.\n\n### delayedStream.dataSize = 0\n\nThe amount of data buffered so far.\n\n### delayedStream.readable\n\nAn ECMA5 getter that returns the value of `source.readable`.\n\n### delayedStream.resume()\n\nIf the `delayedStream` has not been released so far, `delayedStream.release()`\nis called.\n\nIn either case, `source.resume()` is called.\n\n### delayedStream.pause()\n\nCalls `source.pause()`.\n\n### delayedStream.pipe(dest)\n\nCalls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.\n\n### delayedStream.release()\n\nEmits and clears all events that have been buffered up so far. This does not\nresume the underlaying source, use `delayedStream.resume()` instead.\n\n## License\n\ndelayed-stream is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-delayed-stream/issues" - }, - "_id": "delayed-stream@0.0.5", - "_from": "delayed-stream@0.0.5", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js deleted file mode 100644 index 4d71b8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js +++ /dev/null @@ -1,6 +0,0 @@ -var common = module.exports; - -common.DelayedStream = require('..'); -common.assert = require('assert'); -common.fake = require('fake'); -common.PORT = 49252; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js deleted file mode 100644 index 9ecad5b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var DelayedStream = common.DelayedStream; -var http = require('http'); - -var UPLOAD = new Buffer(10 * 1024 * 1024); - -var server = http.createServer(function(req, res) { - var delayed = DelayedStream.create(req, {maxDataSize: UPLOAD.length}); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 10); -}); -server.listen(common.PORT, function() { - var request = http.request({ - method: 'POST', - port: common.PORT, - }); - - request.write(UPLOAD); - request.end(); - - request.on('response', function(res) { - var received = 0; - res - .on('data', function(chunk) { - received += chunk.length; - }) - .on('end', function() { - assert.equal(received, UPLOAD.length); - server.close(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js deleted file mode 100644 index 6f417f3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js +++ /dev/null @@ -1,21 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testAutoPause() { - var source = new Stream(); - - fake.expect(source, 'pause', 1); - var delayedStream = DelayedStream.create(source); - fake.verify(); -})(); - -(function testDisableAutoPause() { - var source = new Stream(); - fake.expect(source, 'pause', 0); - - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js deleted file mode 100644 index b50c3978..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js +++ /dev/null @@ -1,14 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(source, 'pause'); - delayedStream.pause(); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js deleted file mode 100644 index fc4047e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js +++ /dev/null @@ -1,48 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // delayedStream must not emit until we resume - fake.expect(delayedStream, 'emit', 0); - - // but our original source must emit - var params = []; - source.on('foo', function(param) { - params.push(param); - }); - - source.emit('foo', 1); - source.emit('foo', 2); - - // Make sure delayedStream did not emit, and source did - assert.deepEqual(params, [1, 2]); - fake.verify(); - - // After resume, delayedStream must playback all events - fake - .stub(delayedStream, 'emit') - .times(Infinity) - .withArg(1, 'newListener'); - fake.expect(delayedStream, 'emit', ['foo', 1]); - fake.expect(delayedStream, 'emit', ['foo', 2]); - fake.expect(source, 'resume'); - - delayedStream.resume(); - fake.verify(); - - // Calling resume again will delegate to source - fake.expect(source, 'resume'); - delayedStream.resume(); - fake.verify(); - - // Emitting more events directly leads to them being emitted - fake.expect(delayedStream, 'emit', ['foo', 3]); - source.emit('foo', 3); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js deleted file mode 100644 index a9d35e72..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js +++ /dev/null @@ -1,15 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testHandleSourceErrors() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // We deal with this by attaching a no-op listener to 'error' on the source - // when creating a new DelayedStream. This way error events on the source - // won't throw. - source.emit('error', new Error('something went wrong')); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 7638a2bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,18 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testMaxDataSize() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {maxDataSize: 1024, pauseStream: false}); - - source.emit('data', new Buffer(1024)); - - fake - .expect(delayedStream, 'emit') - .withArg(1, 'error'); - source.emit('data', new Buffer(1)); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js deleted file mode 100644 index 7d312ab1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testPipeReleases() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(delayedStream, 'resume'); - delayedStream.pipe(new Stream()); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js deleted file mode 100644 index d436163b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testProxyReadableProperty() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - source.readable = fake.value('source.readable'); - assert.strictEqual(delayedStream.readable, source.readable); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js deleted file mode 100755 index 0bb8e822..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json deleted file mode 100644 index 0dd41416..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "0.0.4", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "engines": { - "node": "*" - }, - "dependencies": { - "delayed-stream": "0.0.5" - }, - "devDependencies": { - "far": "0.0.1" - }, - "readme": "# combined-stream\n\nA stream that emits multiple other streams one after another.\n\n## Installation\n\n``` bash\nnpm install combined-stream\n```\n\n## Usage\n\nHere is a simple example that shows how you can use combined-stream to combine\ntwo files into one:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(fs.createReadStream('file1.txt'));\ncombinedStream.append(fs.createReadStream('file2.txt'));\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\nWhile the example above works great, it will pause all source streams until\nthey are needed. If you don't want that to happen, you can set `pauseStreams`\nto `false`:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create({pauseStreams: false});\ncombinedStream.append(fs.createReadStream('file1.txt'));\ncombinedStream.append(fs.createReadStream('file2.txt'));\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\nHowever, what if you don't have all the source streams yet, or you don't want\nto allocate the resources (file descriptors, memory, etc.) for them right away?\nWell, in that case you can simply provide a callback that supplies the stream\nby calling a `next()` function:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(function(next) {\n next(fs.createReadStream('file1.txt'));\n});\ncombinedStream.append(function(next) {\n next(fs.createReadStream('file2.txt'));\n});\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\n## API\n\n### CombinedStream.create([options])\n\nReturns a new combined stream object. Available options are:\n\n* `maxDataSize`\n* `pauseStreams`\n\nThe effect of those options is described below.\n\n### combinedStream.pauseStreams = true\n\nWhether to apply back pressure to the underlaying streams. If set to `false`,\nthe underlaying streams will never be paused. If set to `true`, the\nunderlaying streams will be paused right after being appended, as well as when\n`delayedStream.pipe()` wants to throttle.\n\n### combinedStream.maxDataSize = 2 * 1024 * 1024\n\nThe maximum amount of bytes (or characters) to buffer for all source streams.\nIf this value is exceeded, `combinedStream` emits an `'error'` event.\n\n### combinedStream.dataSize = 0\n\nThe amount of bytes (or characters) currently buffered by `combinedStream`.\n\n### combinedStream.append(stream)\n\nAppends the given `stream` to the combinedStream object. If `pauseStreams` is\nset to `true, this stream will also be paused right away.\n\n`streams` can also be a function that takes one parameter called `next`. `next`\nis a function that must be invoked in order to provide the `next` stream, see\nexample above.\n\nRegardless of how the `stream` is appended, combined-stream always attaches an\n`'error'` listener to it, so you don't have to do that manually.\n\nSpecial case: `stream` can also be a String or Buffer.\n\n### combinedStream.write(data)\n\nYou should not call this, `combinedStream` takes care of piping the appended\nstreams into itself for you.\n\n### combinedStream.resume()\n\nCauses `combinedStream` to start drain the streams it manages. The function is\nidempotent, and also emits a `'resume'` event each time which usually goes to\nthe stream that is currently being drained.\n\n### combinedStream.pause();\n\nIf `combinedStream.pauseStreams` is set to `false`, this does nothing.\nOtherwise a `'pause'` event is emitted, this goes to the stream that is\ncurrently being drained, so you can use it to apply back pressure.\n\n### combinedStream.end();\n\nSets `combinedStream.writable` to false, emits an `'end'` event, and removes\nall streams from the queue.\n\n### combinedStream.destroy();\n\nSame as `combinedStream.end()`, except it emits a `'close'` event instead of\n`'end'`.\n\n## License\n\ncombined-stream is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "_id": "combined-stream@0.0.4", - "_from": "combined-stream@~0.0.4" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js deleted file mode 100644 index 81543485..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js +++ /dev/null @@ -1,23 +0,0 @@ -var common = module.exports; - -var path = require('path'); -var fs = require('fs'); -var root = path.join(__dirname, '..'); - -common.dir = { - fixture: root + '/test/fixture', - tmp: root + '/test/tmp', -}; - -// Create tmp directory if it does not exist -// Not using fs.exists so as to be node 0.6.x compatible -try { - fs.statSync(common.dir.tmp); -} -catch (e) { - // Dir does not exist - fs.mkdirSync(common.dir.tmp); -} - -common.CombinedStream = require(root); -common.assert = require('assert'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt deleted file mode 100644 index 50e0218d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt +++ /dev/null @@ -1,256 +0,0 @@ -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt deleted file mode 100644 index da1d821f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt +++ /dev/null @@ -1,256 +0,0 @@ -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js deleted file mode 100644 index 44ecabab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js +++ /dev/null @@ -1,27 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(function(next) { - next(fs.createReadStream(FILE1)); - }); - combinedStream.append(function(next) { - next(fs.createReadStream(FILE2)); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('end', function() { - var written = fs.readFileSync(tmpFile, 'utf8'); - assert.strictEqual(written, EXPECTED); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js deleted file mode 100644 index e3fbd184..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js +++ /dev/null @@ -1,34 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; - -(function testDataSizeGetter() { - var combinedStream = CombinedStream.create(); - - assert.strictEqual(combinedStream.dataSize, 0); - - // Test one stream - combinedStream._streams.push({dataSize: 10}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 10); - - // Test two streams - combinedStream._streams.push({dataSize: 23}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); - - // Test currentStream - combinedStream._currentStream = {dataSize: 20}; - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 53); - - // Test currentStream without dataSize - combinedStream._currentStream = {}; - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); - - // Test stream function - combinedStream._streams.push(function() {}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js deleted file mode 100644 index c678575c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var BUFFER = new Buffer('Bacon is delicious'); -var FILE2 = common.dir.fixture + '/file2.txt'; -var STRING = 'The € kicks the $\'s ass!'; - -var EXPECTED = - fs.readFileSync(FILE1) - + BUFFER - + fs.readFileSync(FILE2) - + STRING; -var GOT; - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(BUFFER); - combinedStream.append(fs.createReadStream(FILE2)); - combinedStream.append(function(next) { - next(STRING); - }); - - var tmpFile = common.dir.tmp + '/combined-file1-buffer-file2-string.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('close', function() { - GOT = fs.readFileSync(tmpFile, 'utf8'); - }); -})(); - -process.on('exit', function() { - assert.strictEqual(GOT, EXPECTED); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js deleted file mode 100644 index 263cfdf7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js +++ /dev/null @@ -1,35 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); -var GOT; - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var stream1 = combinedStream._streams[0]; - var stream2 = combinedStream._streams[1]; - - stream1.on('end', function() { - assert.equal(stream2.dataSize, 0); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('close', function() { - GOT = fs.readFileSync(tmpFile, 'utf8'); - }); -})(); - -process.on('exit', function() { - console.error(GOT.length, EXPECTED.length); - assert.strictEqual(GOT, EXPECTED); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js deleted file mode 100644 index c3d288d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js +++ /dev/null @@ -1,39 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var util = require('util'); -var Stream = require('stream').Stream; - -var s = CombinedStream.create(); - - -function StringStream(){ - this.writable=true; - this.str="" -} -util.inherits(StringStream,Stream); - -StringStream.prototype.write=function(chunk,encoding){ - this.str+=chunk.toString(); - this.emit('data',chunk); -} - -StringStream.prototype.end=function(chunk,encoding){ - this.emit('end'); -} - -StringStream.prototype.toString=function(){ - return this.str; -} - - -s.append("foo."); -s.append(""); -s.append("bar"); - -var ss = new StringStream(); - -s.pipe(ss); -s.resume(); - -assert.equal(ss.toString(),"foo.bar"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js deleted file mode 100644 index aefa36e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js +++ /dev/null @@ -1,17 +0,0 @@ -var fs = require('fs'); -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var FILE1 = common.dir.fixture + '/file1.txt'; -var fileStream = fs.createReadStream(FILE1); - -var foo = function(){}; - -(function testIsStreamLike() { - assert(! CombinedStream.isStreamLike(true)); - assert(! CombinedStream.isStreamLike("I am a string")); - assert(! CombinedStream.isStreamLike(7)); - assert(! CombinedStream.isStreamLike(foo)); - - assert(CombinedStream.isStreamLike(fileStream)); -})(); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 25f47a47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,24 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create({pauseStreams: false, maxDataSize: 20736}); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var gotErr = null; - combinedStream.on('error', function(err) { - gotErr = err; - }); - - process.on('exit', function() { - assert.ok(gotErr); - assert.ok(gotErr.message.match(/bytes/)); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js deleted file mode 100644 index 30a3a6f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js +++ /dev/null @@ -1,30 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create({pauseStreams: false}); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var stream1 = combinedStream._streams[0]; - var stream2 = combinedStream._streams[1]; - - stream1.on('end', function() { - assert.ok(stream2.dataSize > 0); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('end', function() { - var written = fs.readFileSync(tmpFile, 'utf8'); - assert.strictEqual(written, EXPECTED); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js deleted file mode 100755 index 0bb8e822..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json deleted file mode 100644 index 8e5d3256..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "form-data", - "description": "A module to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "version": "0.1.2", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-form-data.git" - }, - "main": "./lib/form_data", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.6" - }, - "dependencies": { - "combined-stream": "~0.0.4", - "mime": "~1.2.11", - "async": "~0.2.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/felixge/node-form-data/master/License" - } - ], - "devDependencies": { - "fake": "~0.2.2", - "far": "~0.0.7", - "formidable": "~1.0.14", - "request": "~2.27.0" - }, - "readme": "# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data)\n\nA module to create readable ```\"multipart/form-data\"``` streams. Can be used to submit forms and file uploads to other web applications.\n\nThe API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].\n\n[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface\n[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions\n\n## Install\n\n```\nnpm install form-data\n```\n\n## Usage\n\nIn this example we are constructing a form with 3 fields that contain a string,\na buffer and a file stream.\n\n``` javascript\nvar FormData = require('form-data');\nvar fs = require('fs');\n\nvar form = new FormData();\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_file', fs.createReadStream('/foo/bar.jpg'));\n```\n\nAlso you can use http-response stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar http = require('http');\n\nvar form = new FormData();\n\nhttp.request('http://nodejs.org/images/logo.png', function(response) {\n form.append('my_field', 'my value');\n form.append('my_buffer', new Buffer(10));\n form.append('my_logo', response);\n});\n```\n\nOr @mikeal's request stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar request = require('request');\n\nvar form = new FormData();\n\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_logo', request('http://nodejs.org/images/logo.png'));\n```\n\nIn order to submit this form to a web application, call ```submit(url, [callback])``` method:\n\n``` javascript\nform.submit('http://example.org/', function(err, res) {\n // res – response object (http.IncomingMessage) //\n res.resume(); // for node-0.10.x\n});\n\n```\n\nFor more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.\n\n### Alternative submission methods\n\nYou can use node's http client interface:\n\n``` javascript\nvar http = require('http');\n\nvar request = http.request({\n method: 'post',\n host: 'example.org',\n path: '/upload',\n headers: form.getHeaders()\n});\n\nform.pipe(request);\n\nrequest.on('response', function(res) {\n console.log(res.statusCode);\n});\n```\n\nOr if you would prefer the `'Content-Length'` header to be set for you:\n\n``` javascript\nform.submit('example.org/upload', function(err, res) {\n console.log(res.statusCode);\n});\n```\n\nTo use custom headers and pre-known length in parts:\n\n``` javascript\nvar CRLF = '\\r\\n';\nvar form = new FormData();\n\nvar options = {\n header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF,\n knownLength: 1\n};\n\nform.append('my_buffer', buffer, options);\n\nform.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n});\n```\n\nForm-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide \"file\"-related information manually:\n\n``` javascript\nsomeModule.stream(function(err, stdout, stderr) {\n if (err) throw err;\n\n var form = new FormData();\n\n form.append('file', stdout, {\n filename: 'unicycle.jpg',\n contentType: 'image/jpg',\n knownLength: 19806\n });\n\n form.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n });\n});\n```\n\nFor edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:\n\n``` javascript\nform.submit({\n host: 'example.com',\n path: '/probably.php?extra=params',\n auth: 'username:password'\n}, function(err, res) {\n console.log(res.statusCode);\n});\n```\n\n## Notes\n\n- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.\n- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]\n\n## TODO\n\n- Add new streams (0.10) support and try really hard not to break it for 0.8.x.\n\n## License\n\nForm-Data is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-form-data/issues" - }, - "homepage": "https://github.com/felixge/node-form-data", - "_id": "form-data@0.1.2", - "_from": "form-data@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile deleted file mode 100755 index 5f339bf3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md deleted file mode 100755 index 010bac6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md +++ /dev/null @@ -1,627 +0,0 @@ -![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png) - -<img align="right" src="https://raw.github.com/hueniverse/hawk/master/images/logo.png" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial -HTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz). - -Current version: **1.0** - -[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk) - -# Table of Content - -- [**Introduction**](#introduction) - - [Replay Protection](#replay-protection) - - [Usage Example](#usage-example) - - [Protocol Example](#protocol-example) - - [Payload Validation](#payload-validation) - - [Response Payload Validation](#response-payload-validation) - - [Browser Support and Considerations](#browser-support-and-considerations) -<p></p> -- [**Single URI Authorization**](#single-uri-authorization) - - [Usage Example](#bewit-usage-example) -<p></p> -- [**Security Considerations**](#security-considerations) - - [MAC Keys Transmission](#mac-keys-transmission) - - [Confidentiality of Requests](#confidentiality-of-requests) - - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers) - - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials) - - [Entropy of Keys](#entropy-of-keys) - - [Coverage Limitations](#coverage-limitations) - - [Future Time Manipulation](#future-time-manipulation) - - [Client Clock Poisoning](#client-clock-poisoning) - - [Bewit Limitations](#bewit-limitations) - - [Host Header Forgery](#host-header-forgery) -<p></p> -- [**Frequently Asked Questions**](#frequently-asked-questions) -<p></p> -- [**Acknowledgements**](#acknowledgements) - -# Introduction - -**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with -partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, -and optionally the request payload. - -Similar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of -client credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme, -the key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is -included in its place. - -However, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of -replay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less -"chattiness" (interaction with the server). - -Also unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because -the client and server must both have access to the key material in the clear. - -The primary design goals of this scheme are to: -* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources, -* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where - to send an authenticated request), and -* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client - failure to validate the server's identity as part of its TLS handshake. - -In addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using -a query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk). - -The **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server, -which is beyond the scope of this module. Typically, the shared credentials are established via an initial -TLS-protected phase or derived from some other shared confidential information available to both the client -and the server. - - -## Replay Protection - -Without replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more -than once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when -making requests. This gives the server enough information to prevent replay attacks. - -The nonce is generated by the client, and is a string unique across all requests with the same timestamp and -key identifier combination. - -The timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards -are rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks. -By default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in -practice translates to a maximum of 2 minutes as the skew can be positive or negative). - -Using a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client -clock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types -(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response -to a bad timestamp. - -There is no expectation that the client will adjust its system clock to match the server (in fact, this would be a -potential attack vector). Instead, the client only uses the server's time to calculate an offset used only -for communications with that particular server. The protocol rewards clients with synchronized clocks by reducing -the number of round trips required to authenticate the first request. - - -## Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - // Authenticate incoming request - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - // Prepare response - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { 'Content-Type': 'text/plain' }; - - // Generate Server-Authorization response header - - var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] }); - headers['Server-Authorization'] = header; - - // Send the response back - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -// Start server - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Client code: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Request options - -var requestOptions = { - uri: 'http://example.com:8000/resource/1?b=1&a=2', - method: 'GET', - headers: {} -}; - -// Generate Authorization request header - -var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' }); -requestOptions.headers.Authorization = header.field; - -// Send authenticated request - -Request(requestOptions, function (error, response, body) { - - // Authenticate the server's response - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - - // Output results - - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); -}); -``` - -**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local -machine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method. - -```javascript -Hawk.sntp.start(); -``` - - -## Protocol Example - -The client attempts to access a protected resource without authentication, sending the following HTTP request to -the resource server: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -``` - -The resource server returns an authentication challenge. - -``` -HTTP/1.1 401 Unauthorized -WWW-Authenticate: Hawk -``` - -The client has previously obtained a set of **Hawk** credentials for accessing resources on the "http://example.com/" -server. The **Hawk** credentials issued to the client include the following attributes: - -* Key identifier: dh37fgj492je -* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn -* Algorithm: sha256 - -The client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1, -1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline -character): - -``` -hawk.1.header -1353832234 -j4h3g2 -GET -/resource/1?b=1&a=2 -example.com -8000 - -some-app-ext-data - -``` - -The request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string. -The result is base64-encoded to produce the request MAC: - -``` -6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE= -``` - -The client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using -the HTTP `Authorization` request header field: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=" -``` - -The server validates the request by calculating the request MAC again based on the request received and verifies the validity -and scope of the **Hawk** credentials. If valid, the server responds with the requested resource. - - -### Payload Validation - -**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash -using the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character): -* `hawk.1.payload` -* the content-type in lowercase, without any parameters (e.g. `application/json`) -* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability) - -For example: - -* Payload: `Thank you for flying Hawk` -* Content Type: `text/plain` -* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=` - -Results in the following input to the payload hash function (newline terminated values): - -``` -hawk.1.payload -text/plain -Thank you for flying Hawk - -``` - -Which produces the following hash value: - -``` -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -``` - -The client constructs the normalized request string (newline terminated values): - -``` -hawk.1.header -1353832234 -j4h3g2 -POST -/resource/1?a=1&b=2 -example.com -8000 -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -some-app-ext-data - -``` - -Then calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data, -and request MAC, with the request using the HTTP `Authorization` request header field: - -``` -POST /resource/1?a=1&b=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=" -``` - -It is up to the server if and when it validates the payload for any given request, based solely on it's security policy -and the nature of the data included. - -If the payload is available at the time of authentication, the server uses the hash value provided by the client to construct -the normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value -with the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash. - -However, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed -at a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value -provided by the client after validating the MAC. - -It is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value -included in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided -by the client, the payload may be modified by an attacker. - - -## Response Payload Validation - -**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the -client to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header -as a response header using the exact same syntax as the `Authorization` request header field. - -The header is contructed using the same process as the client's request header. The server uses the same credentials and other -artifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with -new values based on the server response. The rest as identical to those used by the client. - -The result MAC digest is included with the optional `hash` and `ext` values: - -``` -Server-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific" -``` - - -## Browser Support and Considerations - -A browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js). - -**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client. -Therefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value -_"WWW-Authenticate, Server-Authorization"_ on each response from your server. As explained in the -[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers -can safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a -["simple response header"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the -Hawk client from authenticating the requests.You can read more about the why and how in this -[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server) - - -# Single URI Authorization - -There are cases in which limited and short-term access to a protected resource is granted to a third party which does not -have access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk** -provides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains -the necessary credentials to authenticate the request. - -Because of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests -and for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same -credentials as the client to maintain clear traceability as to who issued which credentials. - -In order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within -the granted access timeframe. - - -## Bewit Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' }); - res.end(!err ? 'Access granted' : 'Shoosh!'); - }); -}; - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Bewit code generation: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Generate bewit - -var duration = 60 * 5; // 5 Minutes -var bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' }); -var uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit; -``` - - -# Security Considerations - -The greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use. -Implementers are strongly encouraged to assess how this module addresses their security requirements. This section includes -an incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server. -Many of the protections provided in **Hawk** depends on whether and how they are used. - -### MAC Keys Transmission - -**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used -to obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS. - -### Confidentiality of Requests - -While **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request -confidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should -carefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms -to protect sensitive resources. - -### Spoofing by Counterfeit Servers - -**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server -may choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to -the server to determine when such measure is included, to up to the client to enforce that policy. - -A hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise -incorrect responses. Service providers should consider such attacks when developing services using this protocol, and should -require transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue. - -### Plaintext Storage of Credentials - -The **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC, -the server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which -store only a one-way hash of user credentials. - -If an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able -to perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized -access. - -### Entropy of Keys - -Unless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request -MAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to -assign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk** -credentials are valid. - -For example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force -attack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the -longest key reasonable. - -It is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high -quality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit -patterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use -cryptographically secure PRNGs to avoid these problems. - -### Coverage Limitations - -The request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers -which can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence -or value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the -`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC. - -The response authentication, when performed, only covers the response payload, content-type, and the request information -provided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or -any other response header field (e.g. Location) which can affect the client's behaviour. - -### Future Time Manipulation - -The protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its -current time when an invalid timestamp is received. - -If an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause -the client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will -not likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then -be able to replay the request at the correct time without detection. - -The client must only use the time information provided by the server if: -* it was delivered over a TLS connection and the server identity has been verified, or -* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified. - -### Client Clock Poisoning - -When receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use -the time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with -that particular server. - -### Bewit Limitations - -Special care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot -be revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with -access to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET -requests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private -and sensitive information. - -### Host Header Forgery - -Hawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port` -options are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and -use that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server -implementors must manually verify that the host header received matches their expectation (or use the options mentioned above). - -# Frequently Asked Questions - -### Where is the protocol specification? - -If you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source -project instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about -something? Open an issue! - -### Is it done? - -At if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental -and is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions -and suggestions. - -### Where can I find **Hawk** implementations in other languages? - -**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other -platforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk), -[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list -is maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another -port. A cross-platform test-suite is in the works. - -### Why isn't the algorithm part of the challenge or dynamically negotiated? - -The algorithm used is closely related to the key issued as different algorithms require different key sizes (and other -requirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm -together as part of the issued credentials. - -### Why is Host and Content-Type the only headers covered by the request MAC? - -It is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no -well-established way to normalize them. Many platforms change the case of header field names and values. The only -straight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request, -an approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information, -and introduces other security issues because firewalls will not be aware of these "hidden" headers. In addition, any information -repeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere. - -### Why not just use HTTP Digest? - -Digest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send -a protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile -where extra round-trip are costly. - -### Why bother with all this nonce and timestamp business? - -**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp -and nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses -it by requiring the client to sync its clock, but provides it with tools to accomplish it. - -In general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected -system where the clients are implemented using best practices and are under the control of the server. Instead of dropping -replay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers -with the ability to decide how to enforce their security policy without impacting the client's implementation. - -### What are `app` and `dlg` in the authorization header and normalized mac string? - -The original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which -this module is specifically designed for, and a delegated access mode which is being developed separately in -[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`. -This provides binding between the credentials and the application in a way that prevents an attacker from tricking an application -to use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the -application the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly, -but with the additional security of delegated credentials. - -### What is the purpose of the static strings used in each normalized MAC input? - -When calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being -used or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request, -response, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol -creates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it -can create an exploit opportunity for cases where the nonce is similar in format to a timestamp. - -### Does **Hawk** have anything to do with OAuth? - -Short answer: no. - -**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent -incompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it -to authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard -at work to produce more garbage. - -**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case -of delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz). - - -# Acknowledgements - -**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal -co-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification. - -Special thanks to Ben Laurie for his always insightful feedback and advice. - -The **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com). diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js deleted file mode 100755 index 8c063f6c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js +++ /dev/null @@ -1,78 +0,0 @@ -// Load modules - -var Http = require('http'); -var Request = require('request'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = { - credentials: { - dh37fgj492je: { - id: 'dh37fgj492je', // Required by Hawk.client.header - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - } - } -}; - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - return callback(null, internals.credentials[id]); -}; - - -// Create HTTP server - -var handler = function (req, res) { - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { - 'Content-Type': 'text/plain', - 'Server-Authorization': Hawk.server.header(credentials, artifacts, { payload: payload, contentType: 'text/plain' }) - }; - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -Http.createServer(handler).listen(8000, '127.0.0.1'); - - -// Send unauthenticated request - -Request('http://127.0.0.1:8000/resource/1?b=1&a=2', function (error, response, body) { - - console.log(response.statusCode + ': ' + body); -}); - - -// Send authenticated request - -credentialsFunc('dh37fgj492je', function (err, credentials) { - - var header = Hawk.client.header('http://127.0.0.1:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'and welcome!' }); - var options = { - uri: 'http://127.0.0.1:8000/resource/1?b=1&a=2', - method: 'GET', - headers: { - authorization: header.field - } - }; - - Request(options, function (error, response, body) { - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); - process.exit(0); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png deleted file mode 100755 index a0e15cda0144a7d7ed222e74a2ea4afbab32555c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6945 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 B50U@? diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png deleted file mode 100755 index b8ff5901718a8a5529d25602a4a581d2f68d67cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71732 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 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js deleted file mode 100755 index 27494f23..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js +++ /dev/null @@ -1,485 +0,0 @@ -/* - HTTP Hawk Authentication Scheme - Copyright (c) 2012-2013, Eran Hammer <eran@hueniverse.com> - MIT Licensed -*/ - - -// Declare namespace - -var hawk = {}; - - -// Export if used as a module - -if (typeof module !== "undefined" && module.exports) { - module.exports = hawk; -} - -hawk.client = { - - // Generate an Authorization header for a given request - - /* - uri: 'http://example.com/resource?a=b' - method: HTTP verb (e.g. 'GET', 'POST') - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - timestamp: Date.now() / 1000, // A pre-calculated timestamp in seconds - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash - app: '24s23423f34dx', // Oz application id - dlg: '234sz34tww3sd' // Oz delegated-by application id - } - */ - - header: function (uri, method, options) { - - var result = { - field: '', - artifacts: {} - }; - - // Validate inputs - - if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') || - !method || typeof method !== 'string' || - !options || typeof options !== 'object') { - - return result; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((hawk.utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return result; - } - - if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return result; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = hawk.utils.parseUri(uri); - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || hawk.utils.randomString(6), - method: method, - resource: uri.relative, - host: uri.hostname, - port: uri.port, - hash: options.hash, - ext: options.ext, - app: options.app, - dlg: options.dlg - }; - - result.artifacts = artifacts; - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = hawk.crypto.calculateMac('header', credentials, artifacts); - - // Construct header - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + hawk.utils.escapeHeaderAttribute(artifacts.ext) : '') + - '", mac="' + mac + '"'; - - if (artifacts.app) { - header += ', app="' + artifacts.app + - (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'; - } - - result.field = header; - - return result; - }, - - - // Validate server response - - /* - request: object created via 'new XMLHttpRequest()' after response received - artifacts: object recieved from header().artifacts - options: { - payload: optional payload received - required: specifies if a Server-Authorization header is required. Defaults to 'false' - } - */ - - authenticate: function (request, credentials, artifacts, options) { - - options = options || {}; - - if (request.getResponseHeader('www-authenticate')) { - - // Parse HTTP WWW-Authenticate header - - var attributes = hawk.utils.parseAuthorizationHeader(request.getResponseHeader('www-authenticate'), ['ts', 'tsm', 'error']); - if (!attributes) { - return false; - } - - if (attributes.ts) { - var tsm = hawk.crypto.calculateTsMac(attributes.ts, credentials); - if (tsm !== attributes.tsm) { - return false; - } - - hawk.utils.setNtpOffset(attributes.ts - Math.floor(Date.now() / 1000)); // Keep offset at 1 second precision - } - } - - // Parse HTTP Server-Authorization header - - if (!request.getResponseHeader('server-authorization') && - !options.required) { - - return true; - } - - var attributes = hawk.utils.parseAuthorizationHeader(request.getResponseHeader('server-authorization'), ['mac', 'ext', 'hash']); - if (!attributes) { - return false; - } - - var modArtifacts = { - ts: artifacts.ts, - nonce: artifacts.nonce, - method: artifacts.method, - resource: artifacts.resource, - host: artifacts.host, - port: artifacts.port, - hash: attributes.hash, - ext: attributes.ext, - app: artifacts.app, - dlg: artifacts.dlg - }; - - var mac = hawk.crypto.calculateMac('response', credentials, modArtifacts); - if (mac !== attributes.mac) { - return false; - } - - if (!options.hasOwnProperty('payload')) { - return true; - } - - if (!attributes.hash) { - return false; - } - - var calculatedHash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.getResponseHeader('content-type')); - return (calculatedHash === attributes.hash); - }, - - message: function (host, port, message, options) { - - // Validate inputs - - if (!host || typeof host !== 'string' || - !port || typeof port !== 'number' || - message === null || message === undefined || typeof message !== 'string' || - !options || typeof options !== 'object') { - - return null; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((hawk.utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return null; - } - - if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return null; - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || hawk.utils.randomString(6), - host: host, - port: port, - hash: hawk.crypto.calculatePayloadHash(message, credentials.algorithm) - }; - - // Construct authorization - - var result = { - id: credentials.id, - ts: artifacts.ts, - nonce: artifacts.nonce, - hash: artifacts.hash, - mac: hawk.crypto.calculateMac('message', credentials, artifacts) - }; - - return result; - } -}; - - -hawk.crypto = { - - headerVersion: '1', - - algorithms: ['sha1', 'sha256'], - - calculateMac: function (type, credentials, options) { - - var normalized = hawk.crypto.generateNormalizedString(type, options); - - var hmac = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()](normalized, credentials.key); - return hmac.toString(CryptoJS.enc.Base64); - }, - - generateNormalizedString: function (type, options) { - - var normalized = 'hawk.' + hawk.crypto.headerVersion + '.' + type + '\n' + - options.ts + '\n' + - options.nonce + '\n' + - (options.method || '').toUpperCase() + '\n' + - (options.resource || '') + '\n' + - options.host.toLowerCase() + '\n' + - options.port + '\n' + - (options.hash || '') + '\n'; - - if (options.ext) { - normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n'); - } - - normalized += '\n'; - - if (options.app) { - normalized += options.app + '\n' + - (options.dlg || '') + '\n'; - } - - return normalized; - }, - - calculatePayloadHash: function (payload, algorithm, contentType) { - - var hash = CryptoJS.algo[algorithm.toUpperCase()].create(); - hash.update('hawk.' + hawk.crypto.headerVersion + '.payload\n'); - hash.update(hawk.utils.parseContentType(contentType) + '\n'); - hash.update(payload || ''); - hash.update('\n'); - return hash.finalize().toString(CryptoJS.enc.Base64); - }, - - calculateTsMac: function (ts, credentials) { - - var hash = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()]('hawk.' + hawk.crypto.headerVersion + '.ts\n' + ts + '\n', credentials.key); - return hash.toString(CryptoJS.enc.Base64); - } -}; - - -hawk.utils = { - - storage: { // localStorage compatible interface - _cache: {}, - setItem: function (key, value) { - - hawk.utils.storage._cache[key] = value; - }, - getItem: function (key) { - - return hawk.utils.storage._cache[key]; - } - }, - - setStorage: function (storage) { - - var ntpOffset = hawk.utils.getNtpOffset() || 0; - hawk.utils.storage = storage; - hawk.utils.setNtpOffset(ntpOffset); - }, - - setNtpOffset: function (offset) { - - hawk.utils.storage.setItem('hawk_ntp_offset', offset); - }, - - getNtpOffset: function () { - - return parseInt(hawk.utils.storage.getItem('hawk_ntp_offset') || '0', 10); - }, - - now: function () { - - return Date.now() + hawk.utils.getNtpOffset(); - }, - - escapeHeaderAttribute: function (attribute) { - - return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); - }, - - parseContentType: function (header) { - - if (!header) { - return ''; - } - - return header.split(';')[0].trim().toLowerCase(); - }, - - parseAuthorizationHeader: function (header, keys) { - - if (!header) { - return null; - } - - var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something] - if (!headerParts) { - return null; - } - - var scheme = headerParts[1]; - if (scheme.toLowerCase() !== 'hawk') { - return null; - } - - var attributesString = headerParts[2]; - if (!attributesString) { - return null; - } - - var attributes = {}; - var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) { - - // Check valid attribute names - - if (keys.indexOf($1) === -1) { - return; - } - - // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9 - - if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) { - return; - } - - // Check for duplicates - - if (attributes.hasOwnProperty($1)) { - return; - } - - attributes[$1] = $2; - return ''; - }); - - if (verify !== '') { - return null; - } - - return attributes; - }, - - randomString: function (size) { - - var randomSource = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - var len = randomSource.length; - - var result = []; - for (var i = 0; i < size; ++i) { - result[i] = randomSource[Math.floor(Math.random() * len)]; - } - - return result.join(''); - }, - - parseUri: function (input) { - - // Based on: parseURI 1.2.2 - // http://blog.stevenlevithan.com/archives/parseuri - // (c) Steven Levithan <stevenlevithan.com> - // MIT License - - var keys = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'hostname', 'port', 'resource', 'relative', 'pathname', 'directory', 'file', 'query', 'fragment']; - - var uriRegex = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?(((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?)(?:#(.*))?)/; - var uriByNumber = uriRegex.exec(input); - var uri = {}; - - var i = 15; - while (i--) { - uri[keys[i]] = uriByNumber[i] || ''; - } - - if (uri.port === null || - uri.port === '') { - - uri.port = (uri.protocol.toLowerCase() === 'http' ? '80' : (uri.protocol.toLowerCase() === 'https' ? '443' : '')); - } - - return uri; - } -}; - - -// Based on: Crypto-JS v3.1.2 -// Copyright (c) 2009-2013, Jeff Mott. All rights reserved. -// http://code.google.com/p/crypto-js/ -// http://code.google.com/p/crypto-js/wiki/License - -var CryptoJS=CryptoJS||function(h,r){var k={},l=k.lib={},n=function(){},f=l.Base={extend:function(a){n.prototype=this;var b=new n;a&&b.mixIn(a);b.hasOwnProperty("init")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},j=l.WordArray=f.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=r?b:4*a.length},toString:function(a){return(a||s).stringify(this)},concat:function(a){var b=this.words,d=a.words,c=this.sigBytes;a=a.sigBytes;this.clamp();if(c%4)for(var e=0;e<a;e++)b[c+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((c+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)b[c+e>>>2]=d[e>>>2];else b.push.apply(b,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d<a;d+=4)b.push(4294967296*h.random()|0);return new j.init(b,a)}}),m=k.enc={},s=m.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++){var e=b[c>>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c+=2)d[c>>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return new j.init(d,b/2)}},p=m.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++)d.push(String.fromCharCode(b[c>>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c++)d[c>>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return new j.init(d,b)}},t=m.Utf8={stringify:function(a){try{return decodeURIComponent(escape(p.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return p.parse(unescape(encodeURIComponent(a)))}},q=l.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new j.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=t.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,f=c/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;c=h.min(4*a,c);if(a){for(var g=0;g<a;g+=e)this._doProcessBlock(d,g);g=d.splice(0,a);b.sigBytes-=c}return new j.init(g,c)},clone:function(){var a=f.clone.call(this);a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:f.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,d){return(new a.init(d)).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return(new u.HMAC.init(a,d)).finalize(b)}}});var u=k.algo={};return k}(Math); -(function () { var k = CryptoJS, b = k.lib, m = b.WordArray, l = b.Hasher, d = [], b = k.algo.SHA1 = l.extend({ _doReset: function () { this._hash = new m.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (n, p) { for (var a = this._hash.words, e = a[0], f = a[1], h = a[2], j = a[3], b = a[4], c = 0; 80 > c; c++) { if (16 > c) d[c] = n[p + c] | 0; else { var g = d[c - 3] ^ d[c - 8] ^ d[c - 14] ^ d[c - 16]; d[c] = g << 1 | g >>> 31 } g = (e << 5 | e >>> 27) + b + d[c]; g = 20 > c ? g + ((f & h | ~f & j) + 1518500249) : 40 > c ? g + ((f ^ h ^ j) + 1859775393) : 60 > c ? g + ((f & h | f & j | h & j) - 1894007588) : g + ((f ^ h ^ j) - 899497514); b = j; j = h; h = f << 30 | f >>> 2; f = e; e = g } a[0] = a[0] + e | 0; a[1] = a[1] + f | 0; a[2] = a[2] + h | 0; a[3] = a[3] + j | 0; a[4] = a[4] + b | 0 }, _doFinalize: function () { var b = this._data, d = b.words, a = 8 * this._nDataBytes, e = 8 * b.sigBytes; d[e >>> 5] |= 128 << 24 - e % 32; d[(e + 64 >>> 9 << 4) + 14] = Math.floor(a / 4294967296); d[(e + 64 >>> 9 << 4) + 15] = a; b.sigBytes = 4 * d.length; this._process(); return this._hash }, clone: function () { var b = l.clone.call(this); b._hash = this._hash.clone(); return b } }); k.SHA1 = l._createHelper(b); k.HmacSHA1 = l._createHmacHelper(b) })(); -(function (k) { for (var g = CryptoJS, h = g.lib, v = h.WordArray, j = h.Hasher, h = g.algo, s = [], t = [], u = function (q) { return 4294967296 * (q - (q | 0)) | 0 }, l = 2, b = 0; 64 > b;) { var d; a: { d = l; for (var w = k.sqrt(d), r = 2; r <= w; r++) if (!(d % r)) { d = !1; break a } d = !0 } d && (8 > b && (s[b] = u(k.pow(l, 0.5))), t[b] = u(k.pow(l, 1 / 3)), b++); l++ } var n = [], h = h.SHA256 = j.extend({ _doReset: function () { this._hash = new v.init(s.slice(0)) }, _doProcessBlock: function (q, h) { for (var a = this._hash.words, c = a[0], d = a[1], b = a[2], k = a[3], f = a[4], g = a[5], j = a[6], l = a[7], e = 0; 64 > e; e++) { if (16 > e) n[e] = q[h + e] | 0; else { var m = n[e - 15], p = n[e - 2]; n[e] = ((m << 25 | m >>> 7) ^ (m << 14 | m >>> 18) ^ m >>> 3) + n[e - 7] + ((p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10) + n[e - 16] } m = l + ((f << 26 | f >>> 6) ^ (f << 21 | f >>> 11) ^ (f << 7 | f >>> 25)) + (f & g ^ ~f & j) + t[e] + n[e]; p = ((c << 30 | c >>> 2) ^ (c << 19 | c >>> 13) ^ (c << 10 | c >>> 22)) + (c & d ^ c & b ^ d & b); l = j; j = g; g = f; f = k + m | 0; k = b; b = d; d = c; c = m + p | 0 } a[0] = a[0] + c | 0; a[1] = a[1] + d | 0; a[2] = a[2] + b | 0; a[3] = a[3] + k | 0; a[4] = a[4] + f | 0; a[5] = a[5] + g | 0; a[6] = a[6] + j | 0; a[7] = a[7] + l | 0 }, _doFinalize: function () { var d = this._data, b = d.words, a = 8 * this._nDataBytes, c = 8 * d.sigBytes; b[c >>> 5] |= 128 << 24 - c % 32; b[(c + 64 >>> 9 << 4) + 14] = k.floor(a / 4294967296); b[(c + 64 >>> 9 << 4) + 15] = a; d.sigBytes = 4 * b.length; this._process(); return this._hash }, clone: function () { var b = j.clone.call(this); b._hash = this._hash.clone(); return b } }); g.SHA256 = j._createHelper(h); g.HmacSHA256 = j._createHmacHelper(h) })(Math); -(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;"string"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d<c;d++)h[d]^=1549556828,j[d]^=909522486;f.sigBytes=g.sigBytes=e;this.reset()},reset:function(){var a=this._hasher;a.reset();a.update(this._iKey)},update:function(a){this._hasher.update(a);return this},finalize:function(a){var b=this._hasher;a=b.finalize(a);b.reset();return b.finalize(this._oKey.clone().concat(a))}})})(); -(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js deleted file mode 100755 index 41984582..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js +++ /dev/null @@ -1,367 +0,0 @@ -// Load modules - -var Url = require('url'); -var Hoek = require('hoek'); -var Cryptiles = require('cryptiles'); -var Crypto = require('./crypto'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// Generate an Authorization header for a given request - -/* - uri: 'http://example.com/resource?a=b' or object from Url.parse() - method: HTTP verb (e.g. 'GET', 'POST') - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - timestamp: Date.now(), // A pre-calculated timestamp - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash - app: '24s23423f34dx', // Oz application id - dlg: '234sz34tww3sd' // Oz delegated-by application id - } -*/ - -exports.header = function (uri, method, options) { - - var result = { - field: '', - artifacts: {} - }; - - // Validate inputs - - if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') || - !method || typeof method !== 'string' || - !options || typeof options !== 'object') { - - return result; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return result; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return result; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = Url.parse(uri); - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || Cryptiles.randomString(6), - method: method, - resource: uri.pathname + (uri.search || ''), // Maintain trailing '?' - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - hash: options.hash, - ext: options.ext, - app: options.app, - dlg: options.dlg - }; - - result.artifacts = artifacts; - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = Crypto.calculateMac('header', credentials, artifacts); - - // Construct header - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + Utils.escapeHeaderAttribute(artifacts.ext) : '') + - '", mac="' + mac + '"'; - - if (artifacts.app) { - header += ', app="' + artifacts.app + - (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'; - } - - result.field = header; - - return result; -}; - - -// Validate server response - -/* - res: node's response object - artifacts: object recieved from header().artifacts - options: { - payload: optional payload received - required: specifies if a Server-Authorization header is required. Defaults to 'false' - } -*/ - -exports.authenticate = function (res, credentials, artifacts, options) { - - artifacts = Hoek.clone(artifacts); - options = options || {}; - - if (res.headers['www-authenticate']) { - - // Parse HTTP WWW-Authenticate header - - var attributes = Utils.parseAuthorizationHeader(res.headers['www-authenticate'], ['ts', 'tsm', 'error']); - if (attributes instanceof Error) { - return false; - } - - if (attributes.ts) { - var tsm = Crypto.calculateTsMac(attributes.ts, credentials); - if (tsm !== attributes.tsm) { - return false; - } - } - } - - // Parse HTTP Server-Authorization header - - if (!res.headers['server-authorization'] && - !options.required) { - - return true; - } - - var attributes = Utils.parseAuthorizationHeader(res.headers['server-authorization'], ['mac', 'ext', 'hash']); - if (attributes instanceof Error) { - return false; - } - - artifacts.ext = attributes.ext; - artifacts.hash = attributes.hash; - - var mac = Crypto.calculateMac('response', credentials, artifacts); - if (mac !== attributes.mac) { - return false; - } - - if (!options.hasOwnProperty('payload')) { - return true; - } - - if (!attributes.hash) { - return false; - } - - var calculatedHash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, res.headers['content-type']); - return (calculatedHash === attributes.hash); -}; - - -// Generate a bewit value for a given URI - -/* - * credentials is an object with the following keys: 'id, 'key', 'algorithm'. - * options is an object with the following optional keys: 'ext', 'localtimeOffsetMsec' - */ -/* - uri: 'http://example.com/resource?a=b' or object from Url.parse() - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - ttlSec: 60 * 60, // TTL in seconds - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - localtimeOffsetMsec: 400 // Time offset to sync with server time - }; -*/ - -exports.getBewit = function (uri, options) { - - // Validate inputs - - if (!uri || - (typeof uri !== 'string' && typeof uri !== 'object') || - !options || - typeof options !== 'object' || - !options.ttlSec) { - - return ''; - } - - options.ext = (options.ext === null || options.ext === undefined ? '' : options.ext); // Zero is valid value - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - return ''; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return ''; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = Url.parse(uri); - } - - // Calculate signature - - var exp = Math.floor(now / 1000) + options.ttlSec; - var mac = Crypto.calculateMac('bewit', credentials, { - ts: exp, - nonce: '', - method: 'GET', - resource: uri.pathname + (uri.search || ''), // Maintain trailing '?' - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - ext: options.ext - }); - - // Construct bewit: id\exp\mac\ext - - var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + options.ext; - return Utils.base64urlEncode(bewit); -}; - - -// Generate an authorization string for a message - -/* - host: 'example.com', - port: 8000, - message: '{"some":"payload"}', // UTF-8 encoded string for body hash generation - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - timestamp: Date.now(), // A pre-calculated timestamp - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - } -*/ - -exports.message = function (host, port, message, options) { - - // Validate inputs - - if (!host || typeof host !== 'string' || - !port || typeof port !== 'number' || - message === null || message === undefined || typeof message !== 'string' || - !options || typeof options !== 'object') { - - return null; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return null; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return null; - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || Cryptiles.randomString(6), - host: host, - port: port, - hash: Crypto.calculatePayloadHash(message, credentials.algorithm) - }; - - // Construct authorization - - var result = { - id: credentials.id, - ts: artifacts.ts, - nonce: artifacts.nonce, - hash: artifacts.hash, - mac: Crypto.calculateMac('message', credentials, artifacts) - }; - - return result; -}; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js deleted file mode 100755 index 150340a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js +++ /dev/null @@ -1,111 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Url = require('url'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// MAC normalization format version - -exports.headerVersion = '1'; // Prevent comparison of mac values generated with different normalized string formats - - -// Supported HMAC algorithms - -exports.algorithms = ['sha1', 'sha256']; - - -// Calculate the request MAC - -/* - type: 'header', // 'header', 'bewit', 'response' - credentials: { - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - options: { - method: 'GET', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8080, - ts: 1357718381034, - nonce: 'd3d345f', - hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=', - ext: 'app-specific-data', - app: 'hf48hd83qwkj', // Application id (Oz) - dlg: 'd8djwekds9cj' // Delegated by application id (Oz), requires options.app - } -*/ - -exports.calculateMac = function (type, credentials, options) { - - var normalized = exports.generateNormalizedString(type, options); - - var hmac = Crypto.createHmac(credentials.algorithm, credentials.key).update(normalized); - var digest = hmac.digest('base64'); - return digest; -}; - - -exports.generateNormalizedString = function (type, options) { - - var normalized = 'hawk.' + exports.headerVersion + '.' + type + '\n' + - options.ts + '\n' + - options.nonce + '\n' + - (options.method || '').toUpperCase() + '\n' + - (options.resource || '') + '\n' + - options.host.toLowerCase() + '\n' + - options.port + '\n' + - (options.hash || '') + '\n'; - - if (options.ext) { - normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n'); - } - - normalized += '\n'; - - if (options.app) { - normalized += options.app + '\n' + - (options.dlg || '') + '\n'; - } - - return normalized; -}; - - -exports.calculatePayloadHash = function (payload, algorithm, contentType) { - - var hash = exports.initializePayloadHash(algorithm, contentType); - hash.update(payload || ''); - return exports.finalizePayloadHash(hash); -}; - - -exports.initializePayloadHash = function (algorithm, contentType) { - - var hash = Crypto.createHash(algorithm); - hash.update('hawk.' + exports.headerVersion + '.payload\n'); - hash.update(Utils.parseContentType(contentType) + '\n'); - return hash; -}; - - -exports.finalizePayloadHash = function (hash) { - - hash.update('\n'); - return hash.digest('base64'); -}; - - -exports.calculateTsMac = function (ts, credentials) { - - var hmac = Crypto.createHmac(credentials.algorithm, credentials.key); - hmac.update('hawk.' + exports.headerVersion + '.ts\n' + ts + '\n'); - return hmac.digest('base64'); -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js deleted file mode 100755 index 1d713cb6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Export sub-modules - -exports.error = exports.Error = require('boom'); -exports.sntp = require('sntp'); -exports.server = require('./server'); -exports.client = require('./client'); -exports.crypto = require('./crypto'); -exports.utils = require('./utils'); - -exports.uri = { - authenticate: exports.server.authenticateBewit, - getBewit: exports.client.getBewit -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js deleted file mode 100755 index 478c47b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js +++ /dev/null @@ -1,524 +0,0 @@ -// Load modules - -var Boom = require('boom'); -var Hoek = require('hoek'); -var Cryptiles = require('cryptiles'); -var Crypto = require('./crypto'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// Hawk authentication - -/* - req: node's HTTP request object or an object as follows: - - var request = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="' - }; - - credentialsFunc: required function to lookup the set of Hawk credentials based on the provided credentials id. - The credentials include the MAC key, MAC algorithm, and other attributes (such as username) - needed by the application. This function is the equivalent of verifying the username and - password in Basic authentication. - - var credentialsFunc = function (id, callback) { - - // Lookup credentials in database - db.lookup(id, function (err, item) { - - if (err || !item) { - return callback(err); - } - - var credentials = { - // Required - key: item.key, - algorithm: item.algorithm, - // Application specific - user: item.user - }; - - return callback(null, credentials); - }); - }; - - options: { - - hostHeaderName: optional header field name, used to override the default 'Host' header when used - behind a cache of a proxy. Apache2 changes the value of the 'Host' header while preserving - the original (which is what the module must verify) in the 'x-forwarded-host' header field. - Only used when passed a node Http.ServerRequest object. - - nonceFunc: optional nonce validation function. The function signature is function(nonce, ts, callback) - where 'callback' must be called using the signature function(err). - - timestampSkewSec: optional number of seconds of permitted clock skew for incoming timestamps. Defaults to 60 seconds. - Provides a +/- skew which means actual allowed window is double the number of seconds. - - localtimeOffsetMsec: optional local clock time offset express in a number of milliseconds (positive or negative). - Defaults to 0. - - payload: optional payload for validation. The client calculates the hash value and includes it via the 'hash' - header attribute. The server always ensures the value provided has been included in the request - MAC. When this option is provided, it validates the hash value itself. Validation is done by calculating - a hash value over the entire payload (assuming it has already be normalized to the same format and - encoding used by the client to calculate the hash on request). If the payload is not available at the time - of authentication, the authenticatePayload() method can be used by passing it the credentials and - attributes.hash returned in the authenticate callback. - - host: optional host name override. Only used when passed a node request object. - port: optional port override. Only used when passed a node request object. - } - - callback: function (err, credentials, artifacts) { } - */ - -exports.authenticate = function (req, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Default options - - options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation - options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); // Measure now before any other processing - - // Convert node Http request object to a request configuration object - - var request = Utils.parseRequest(req, options); - if (request instanceof Error) { - return callback(Boom.badRequest(request.message)); - } - - // Parse HTTP Authorization header - - var attributes = Utils.parseAuthorizationHeader(request.authorization); - if (attributes instanceof Error) { - return callback(attributes); - } - - // Construct artifacts container - - var artifacts = { - method: request.method, - host: request.host, - port: request.port, - resource: request.url, - ts: attributes.ts, - nonce: attributes.nonce, - hash: attributes.hash, - ext: attributes.ext, - app: attributes.app, - dlg: attributes.dlg, - mac: attributes.mac, - id: attributes.id - }; - - // Verify required header attributes - - if (!attributes.id || - !attributes.ts || - !attributes.nonce || - !attributes.mac) { - - return callback(Boom.badRequest('Missing attributes'), null, artifacts); - } - - // Fetch Hawk credentials - - credentialsFunc(attributes.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null, artifacts); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, artifacts); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials, artifacts); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials, artifacts); - } - - // Calculate MAC - - var mac = Crypto.calculateMac('header', credentials, artifacts); - if (!Cryptiles.fixedTimeComparison(mac, attributes.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, artifacts); - } - - // Check payload hash - - if (options.payload !== null && - options.payload !== undefined) { // '' is valid - - if (!attributes.hash) { - return callback(Boom.unauthorized('Missing required payload hash', 'Hawk'), credentials, artifacts); - } - - var hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.contentType); - if (!Cryptiles.fixedTimeComparison(hash, attributes.hash)) { - return callback(Boom.unauthorized('Bad payload hash', 'Hawk'), credentials, artifacts); - } - } - - // Check nonce - - options.nonceFunc(attributes.nonce, attributes.ts, function (err) { - - if (err) { - return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials, artifacts); - } - - // Check timestamp staleness - - if (Math.abs((attributes.ts * 1000) - now) > (options.timestampSkewSec * 1000)) { - var fresh = Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000); // Get fresh now - var tsm = Crypto.calculateTsMac(fresh, credentials); - return callback(Boom.unauthorized('Stale timestamp', 'Hawk', { ts: fresh, tsm: tsm }), credentials, artifacts); - } - - // Successful authentication - - return callback(null, credentials, artifacts); - }); - }); -}; - - -// Authenticate payload hash - used when payload cannot be provided during authenticate() - -/* - payload: raw request payload - credentials: from authenticate callback - artifacts: from authenticate callback - contentType: req.headers['content-type'] -*/ - -exports.authenticatePayload = function (payload, credentials, artifacts, contentType) { - - var calculatedHash = Crypto.calculatePayloadHash(payload, credentials.algorithm, contentType); - return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash); -}; - - -// Generate a Server-Authorization header for a given response - -/* - credentials: {}, // Object received from authenticate() - artifacts: {} // Object received from authenticate(); 'mac', 'hash', and 'ext' - ignored - options: { - ext: 'application-specific', // Application specific data sent via the ext attribute - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=' // Pre-calculated payload hash - } -*/ - -exports.header = function (credentials, artifacts, options) { - - // Prepare inputs - - options = options || {}; - - if (!artifacts || - typeof artifacts !== 'object' || - typeof options !== 'object') { - - return ''; - } - - artifacts = Hoek.clone(artifacts); - delete artifacts.mac; - artifacts.hash = options.hash; - artifacts.ext = options.ext; - - // Validate credentials - - if (!credentials || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return ''; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return ''; - } - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = Crypto.calculateMac('response', credentials, artifacts); - - // Construct header - - var header = 'Hawk mac="' + mac + '"' + - (artifacts.hash ? ', hash="' + artifacts.hash + '"' : ''); - - if (artifacts.ext !== null && - artifacts.ext !== undefined && - artifacts.ext !== '') { // Other falsey values allowed - - header += ', ext="' + Utils.escapeHeaderAttribute(artifacts.ext) + '"'; - } - - return header; -}; - - -/* - * Arguments and options are the same as authenticate() with the exception that the only supported options are: - * 'hostHeaderName', 'localtimeOffsetMsec', 'host', 'port' - */ - -exports.authenticateBewit = function (req, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); - - // Convert node Http request object to a request configuration object - - var request = Utils.parseRequest(req, options); - if (request instanceof Error) { - return callback(Boom.badRequest(request.message)); - } - - // Extract bewit - - // 1 2 3 4 - var resource = request.url.match(/^(\/.*)([\?&])bewit\=([^&$]*)(?:&(.+))?$/); - if (!resource) { - return callback(Boom.unauthorized(null, 'Hawk')); - } - - // Bewit not empty - - if (!resource[3]) { - return callback(Boom.unauthorized('Empty bewit', 'Hawk')); - } - - // Verify method is GET - - if (request.method !== 'GET' && - request.method !== 'HEAD') { - - return callback(Boom.unauthorized('Invalid method', 'Hawk')); - } - - // No other authentication - - if (request.authorization) { - return callback(Boom.badRequest('Multiple authentications', 'Hawk')); - } - - // Parse bewit - - var bewitString = Utils.base64urlDecode(resource[3]); - if (bewitString instanceof Error) { - return callback(Boom.badRequest('Invalid bewit encoding')); - } - - // Bewit format: id\exp\mac\ext ('\' is used because it is a reserved header attribute character) - - var bewitParts = bewitString.split('\\'); - if (!bewitParts || - bewitParts.length !== 4) { - - return callback(Boom.badRequest('Invalid bewit structure')); - } - - var bewit = { - id: bewitParts[0], - exp: parseInt(bewitParts[1], 10), - mac: bewitParts[2], - ext: bewitParts[3] || '' - }; - - if (!bewit.id || - !bewit.exp || - !bewit.mac) { - - return callback(Boom.badRequest('Missing bewit attributes')); - } - - // Construct URL without bewit - - var url = resource[1]; - if (resource[4]) { - url += resource[2] + resource[4]; - } - - // Check expiration - - if (bewit.exp * 1000 <= now) { - return callback(Boom.unauthorized('Access expired', 'Hawk'), null, bewit); - } - - // Fetch Hawk credentials - - credentialsFunc(bewit.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null, bewit.ext); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, bewit); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials, bewit); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials, bewit); - } - - // Calculate MAC - - var mac = Crypto.calculateMac('bewit', credentials, { - ts: bewit.exp, - nonce: '', - method: 'GET', - resource: url, - host: request.host, - port: request.port, - ext: bewit.ext - }); - - if (!Cryptiles.fixedTimeComparison(mac, bewit.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, bewit); - } - - // Successful authentication - - return callback(null, credentials, bewit); - }); -}; - - -/* - * options are the same as authenticate() with the exception that the only supported options are: - * 'nonceFunc', 'timestampSkewSec', 'localtimeOffsetMsec' - */ - -exports.authenticateMessage = function (host, port, message, authorization, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Default options - - options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation - options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); // Measure now before any other processing - - // Validate authorization - - if (!authorization.id || - !authorization.ts || - !authorization.nonce || - !authorization.hash || - !authorization.mac) { - - return callback(Boom.badRequest('Invalid authorization')) - } - - // Fetch Hawk credentials - - credentialsFunc(authorization.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk')); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials); - } - - // Construct artifacts container - - var artifacts = { - ts: authorization.ts, - nonce: authorization.nonce, - host: host, - port: port, - hash: authorization.hash - }; - - // Calculate MAC - - var mac = Crypto.calculateMac('message', credentials, artifacts); - if (!Cryptiles.fixedTimeComparison(mac, authorization.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials); - } - - // Check payload hash - - var hash = Crypto.calculatePayloadHash(message, credentials.algorithm); - if (!Cryptiles.fixedTimeComparison(hash, authorization.hash)) { - return callback(Boom.unauthorized('Bad message hash', 'Hawk'), credentials); - } - - // Check nonce - - options.nonceFunc(authorization.nonce, authorization.ts, function (err) { - - if (err) { - return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials); - } - - // Check timestamp staleness - - if (Math.abs((authorization.ts * 1000) - now) > (options.timestampSkewSec * 1000)) { - return callback(Boom.unauthorized('Stale timestamp'), credentials); - } - - // Successful authentication - - return callback(null, credentials); - }); - }); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js deleted file mode 100755 index c8938fe8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js +++ /dev/null @@ -1,183 +0,0 @@ -// Load modules - -var Hoek = require('hoek'); -var Sntp = require('sntp'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Import Hoek Utilities - -internals.import = function () { - - for (var i in Hoek) { - if (Hoek.hasOwnProperty(i)) { - exports[i] = Hoek[i]; - } - } -}; - -internals.import(); - - -// Hawk version - -exports.version = function () { - - return exports.loadPackage(__dirname + '/..').version; -}; - - -// Extract host and port from request - -exports.parseHost = function (req, hostHeaderName) { - - hostHeaderName = (hostHeaderName ? hostHeaderName.toLowerCase() : 'host'); - var hostHeader = req.headers[hostHeaderName]; - if (!hostHeader) { - return null; - } - - var hostHeaderRegex; - if (hostHeader[0] === '[') { - hostHeaderRegex = /^(?:(?:\r\n)?\s)*(\[[^\]]+\])(?::(\d+))?(?:(?:\r\n)?\s)*$/; // IPv6 - } - else { - hostHeaderRegex = /^(?:(?:\r\n)?\s)*([^:]+)(?::(\d+))?(?:(?:\r\n)?\s)*$/; // IPv4, hostname - } - - var hostParts = hostHeader.match(hostHeaderRegex); - - if (!hostParts || - hostParts.length !== 3 || - !hostParts[1]) { - - return null; - } - - return { - name: hostParts[1], - port: (hostParts[2] ? hostParts[2] : (req.connection && req.connection.encrypted ? 443 : 80)) - }; -}; - - -// Parse Content-Type header content - -exports.parseContentType = function (header) { - - if (!header) { - return ''; - } - - return header.split(';')[0].trim().toLowerCase(); -}; - - -// Convert node's to request configuration object - -exports.parseRequest = function (req, options) { - - if (!req.headers) { - return req; - } - - // Obtain host and port information - - if (!options.host || !options.port) { - var host = exports.parseHost(req, options.hostHeaderName); - if (!host) { - return new Error('Invalid Host header'); - } - } - - var request = { - method: req.method, - url: req.url, - host: options.host || host.name, - port: options.port || host.port, - authorization: req.headers.authorization, - contentType: req.headers['content-type'] || '' - }; - - return request; -}; - - -exports.now = function () { - - return Sntp.now(); -}; - - -// Parse Hawk HTTP Authorization header - -exports.parseAuthorizationHeader = function (header, keys) { - - keys = keys || ['id', 'ts', 'nonce', 'hash', 'ext', 'mac', 'app', 'dlg']; - - if (!header) { - return Boom.unauthorized(null, 'Hawk'); - } - - var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something] - if (!headerParts) { - return Boom.badRequest('Invalid header syntax'); - } - - var scheme = headerParts[1]; - if (scheme.toLowerCase() !== 'hawk') { - return Boom.unauthorized(null, 'Hawk'); - } - - var attributesString = headerParts[2]; - if (!attributesString) { - return Boom.badRequest('Invalid header syntax'); - } - - var attributes = {}; - var errorMessage = ''; - var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) { - - // Check valid attribute names - - if (keys.indexOf($1) === -1) { - errorMessage = 'Unknown attribute: ' + $1; - return; - } - - // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9 - - if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) { - errorMessage = 'Bad attribute value: ' + $1; - return; - } - - // Check for duplicates - - if (attributes.hasOwnProperty($1)) { - errorMessage = 'Duplicate attribute: ' + $1; - return; - } - - attributes[$1] = $2; - return ''; - }); - - if (verify !== '') { - return Boom.badRequest(errorMessage || 'Bad header format'); - } - - return attributes; -}; - - -exports.unauthorized = function (message) { - - return Boom.unauthorized(message, 'Hawk'); -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE deleted file mode 100755 index 911b97ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Walmart. -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 Walmart 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 WALMART 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile deleted file mode 100755 index 884ec6db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md deleted file mode 100755 index 1970b1c4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md +++ /dev/null @@ -1,6 +0,0 @@ -<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a> -![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png) - -HTTP-friendly error objects - -[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png deleted file mode 100755 index 373bc13455bc0a71a6a4538158aee59c6994b761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29479 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 QhhSjjq?9Eq#J`37AMgo!6951J diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js deleted file mode 100755 index 0bbeed95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js +++ /dev/null @@ -1,207 +0,0 @@ -// Load modules - -var Http = require('http'); -var NodeUtil = require('util'); -var Hoek = require('hoek'); - - -// Declare internals - -var internals = {}; - - -exports = module.exports = internals.Boom = function (/* (new Error) or (code, message) */) { - - var self = this; - - Hoek.assert(this.constructor === internals.Boom, 'Error must be instantiated using new'); - - Error.call(this); - this.isBoom = true; - - this.response = { - code: 0, - payload: {}, - headers: {} - // type: 'content-type' - }; - - if (arguments[0] instanceof Error) { - - // Error - - var error = arguments[0]; - - this.data = error; - this.response.code = error.code || 500; - if (error.message) { - this.message = error.message; - } - } - else { - - // code, message - - var code = arguments[0]; - var message = arguments[1]; - - Hoek.assert(!isNaN(parseFloat(code)) && isFinite(code) && code >= 400, 'First argument must be a number (400+)'); - - this.response.code = code; - if (message) { - this.message = message; - } - } - - // Response format - - this.reformat(); - - return this; -}; - -NodeUtil.inherits(internals.Boom, Error); - - -internals.Boom.prototype.reformat = function () { - - this.response.payload.code = this.response.code; - this.response.payload.error = Http.STATUS_CODES[this.response.code] || 'Unknown'; - if (this.message) { - this.response.payload.message = Hoek.escapeHtml(this.message); // Prevent XSS from error message - } -}; - - -// Utilities - -internals.Boom.badRequest = function (message) { - - return new internals.Boom(400, message); -}; - - -internals.Boom.unauthorized = function (message, scheme, attributes) { // Or function (message, wwwAuthenticate[]) - - var err = new internals.Boom(401, message); - - if (!scheme) { - return err; - } - - var wwwAuthenticate = ''; - - if (typeof scheme === 'string') { - - // function (message, scheme, attributes) - - wwwAuthenticate = scheme; - if (attributes) { - var names = Object.keys(attributes); - for (var i = 0, il = names.length; i < il; ++i) { - if (i) { - wwwAuthenticate += ','; - } - - var value = attributes[names[i]]; - if (value === null || - value === undefined) { // Value can be zero - - value = ''; - } - wwwAuthenticate += ' ' + names[i] + '="' + Hoek.escapeHeaderAttribute(value.toString()) + '"'; - } - } - - if (message) { - if (attributes) { - wwwAuthenticate += ','; - } - wwwAuthenticate += ' error="' + Hoek.escapeHeaderAttribute(message) + '"'; - } - else { - err.isMissing = true; - } - } - else { - - // function (message, wwwAuthenticate[]) - - var wwwArray = scheme; - for (var i = 0, il = wwwArray.length; i < il; ++i) { - if (i) { - wwwAuthenticate += ', '; - } - - wwwAuthenticate += wwwArray[i]; - } - } - - err.response.headers['WWW-Authenticate'] = wwwAuthenticate; - - return err; -}; - - -internals.Boom.clientTimeout = function (message) { - - return new internals.Boom(408, message); -}; - - -internals.Boom.serverTimeout = function (message) { - - return new internals.Boom(503, message); -}; - - -internals.Boom.forbidden = function (message) { - - return new internals.Boom(403, message); -}; - - -internals.Boom.notFound = function (message) { - - return new internals.Boom(404, message); -}; - - -internals.Boom.internal = function (message, data) { - - var err = new internals.Boom(500, message); - - if (data && data.stack) { - err.trace = data.stack.split('\n'); - err.outterTrace = Hoek.displayStack(1); - } - else { - err.trace = Hoek.displayStack(1); - } - - err.data = data; - err.response.payload.message = 'An internal server error occurred'; // Hide actual error from user - - return err; -}; - - -internals.Boom.passThrough = function (code, payload, contentType, headers) { - - var err = new internals.Boom(500, 'Pass-through'); // 500 code is only used to initialize - - err.data = { - code: code, - payload: payload, - type: contentType - }; - - err.response.code = code; - err.response.type = contentType; - err.response.headers = headers; - err.response.payload = payload; - - return err; -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json deleted file mode 100755 index c57a11a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "boom", - "description": "HTTP-friendly error objects", - "version": "0.4.2", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/spumko/boom" - }, - "main": "index", - "keywords": [ - "error", - "http" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/spumko/boom/raw/master/LICENSE" - } - ], - "readme": "<a href=\"https://github.com/spumko\"><img src=\"https://raw.github.com/spumko/spumko/master/images/from.png\" align=\"right\" /></a>\n![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png)\n\nHTTP-friendly error objects\n\n[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/spumko/boom/issues" - }, - "homepage": "https://github.com/spumko/boom", - "_id": "boom@0.4.2", - "_from": "boom@0.4.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js deleted file mode 100755 index a20c1c34..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js +++ /dev/null @@ -1,245 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Boom = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Boom', function () { - - it('returns an error with info when constructed using another error', function (done) { - - var error = new Error('ka-boom'); - error.xyz = 123; - var err = new Boom(error); - expect(err.data.xyz).to.equal(123); - expect(err.message).to.equal('ka-boom'); - expect(err.response).to.deep.equal({ - code: 500, - payload: { - code: 500, - error: 'Internal Server Error', - message: 'ka-boom' - }, - headers: {} - }); - done(); - }); - - describe('#isBoom', function () { - - it('returns true for Boom object', function (done) { - - expect(Boom.badRequest().isBoom).to.equal(true); - done(); - }); - - it('returns false for Error object', function (done) { - - expect(new Error().isBoom).to.not.exist; - done(); - }); - }); - - describe('#badRequest', function () { - - it('returns a 400 error code', function (done) { - - expect(Boom.badRequest().response.code).to.equal(400); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.badRequest('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#unauthorized', function () { - - it('returns a 401 error code', function (done) { - - var err = Boom.unauthorized(); - expect(err.response.code).to.equal(401); - expect(err.response.headers).to.deep.equal({}); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.unauthorized('my message').message).to.equal('my message'); - done(); - }); - - it('returns a WWW-Authenticate header when passed a scheme', function (done) { - - var err = Boom.unauthorized('boom', 'Test'); - expect(err.response.code).to.equal(401); - expect(err.response.headers['WWW-Authenticate']).to.equal('Test error="boom"'); - done(); - }); - - it('returns a WWW-Authenticate header when passed a scheme and attributes', function (done) { - - var err = Boom.unauthorized('boom', 'Test', { a: 1, b: 'something', c: null, d: 0 }); - expect(err.response.code).to.equal(401); - expect(err.response.headers['WWW-Authenticate']).to.equal('Test a="1", b="something", c="", d="0", error="boom"'); - done(); - }); - - it('sets the isMissing flag when error message is empty', function (done) { - - var err = Boom.unauthorized('', 'Basic'); - expect(err.isMissing).to.equal(true); - done(); - }); - - it('does not set the isMissing flag when error message is not empty', function (done) { - - var err = Boom.unauthorized('message', 'Basic'); - expect(err.isMissing).to.equal(undefined); - done(); - }); - - it('sets a WWW-Authenticate when passed as an array', function (done) { - - var err = Boom.unauthorized('message', ['Basic', 'Example e="1"', 'Another x="3", y="4"']); - expect(err.response.headers['WWW-Authenticate']).to.equal('Basic, Example e="1", Another x="3", y="4"'); - done(); - }); - }); - - describe('#clientTimeout', function () { - - it('returns a 408 error code', function (done) { - - expect(Boom.clientTimeout().response.code).to.equal(408); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.clientTimeout('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#serverTimeout', function () { - - it('returns a 503 error code', function (done) { - - expect(Boom.serverTimeout().response.code).to.equal(503); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.serverTimeout('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#forbidden', function () { - - it('returns a 403 error code', function (done) { - - expect(Boom.forbidden().response.code).to.equal(403); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.forbidden('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#notFound', function () { - - it('returns a 404 error code', function (done) { - - expect(Boom.notFound().response.code).to.equal(404); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.notFound('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#internal', function () { - - it('returns a 500 error code', function (done) { - - expect(Boom.internal().response.code).to.equal(500); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - var err = Boom.internal('my message'); - expect(err.message).to.equal('my message'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - - it('passes data on the callback if its passed in', function (done) { - - expect(Boom.internal('my message', { my: 'data' }).data.my).to.equal('data'); - done(); - }); - - it('uses passed in stack if its available', function (done) { - - var error = new Error(); - error.stack = 'my stack line\nmy second stack line'; - expect(Boom.internal('my message', error).trace[0]).to.equal('my stack line'); - done(); - }); - }); - - describe('#passThrough', function () { - - it('returns a pass-through error', function (done) { - - var err = Boom.passThrough(499, { a: 1 }, 'application/text', { 'X-Test': 'Boom' }); - expect(err.response.code).to.equal(499); - expect(err.message).to.equal('Pass-through'); - expect(err.response).to.deep.equal({ - code: 499, - payload: { a: 1 }, - headers: { 'X-Test': 'Boom' }, - type: 'application/text' - }); - done(); - }); - }); - - describe('#reformat', function () { - - it('encodes any HTML markup in the response payload', function (done) { - - var boom = new Boom(new Error('<script>alert(1)</script>')); - expect(boom.response.payload.message).to.not.contain('<script>'); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore deleted file mode 100644 index b3bb5176..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml deleted file mode 100755 index 40ca59ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile deleted file mode 100755 index 9e7138c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @./node_modules/.bin/lab -test-cov: - @./node_modules/.bin/lab -r threshold -t 100 -test-cov-html: - @./node_modules/.bin/lab -r html -o coverage.html -complexity: - @./node_modules/.bin/cr -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md deleted file mode 100644 index 6a900a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md +++ /dev/null @@ -1,6 +0,0 @@ -cryptiles -========= - -General purpose crypto utilities - -[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js deleted file mode 100755 index dcf2bc38..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js +++ /dev/null @@ -1,68 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Generate a cryptographically strong pseudo-random data - -exports.randomString = function (size) { - - var buffer = exports.randomBits((size + 1) * 6); - if (buffer instanceof Error) { - return buffer; - } - - var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); - return string.slice(0, size); -}; - - -exports.randomBits = function (bits) { - - if (!bits || - bits < 0) { - - return Boom.internal('Invalid random bits count'); - } - - var bytes = Math.ceil(bits / 8); - try { - return Crypto.randomBytes(bytes); - } - catch (err) { - return Boom.internal('Failed generating random bits: ' + err.message); - } -}; - - -// Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match) - -exports.fixedTimeComparison = function (a, b) { - - if (typeof a !== 'string' || - typeof b !== 'string') { - - return false; - } - - var mismatch = (a.length === b.length ? 0 : 1); - if (mismatch) { - b = a; - } - - for (var i = 0, il = a.length; i < il; ++i) { - var ac = a.charCodeAt(i); - var bc = b.charCodeAt(i); - mismatch += (ac === bc ? 0 : 1); - } - - return (mismatch === 0); -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json deleted file mode 100755 index cc1f7393..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "cryptiles", - "description": "General purpose crypto utilities", - "version": "0.2.2", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/cryptiles" - }, - "main": "index", - "keywords": [ - "cryptography", - "security", - "utilites" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "boom": "0.4.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/cryptiles/raw/master/LICENSE" - } - ], - "readme": "cryptiles\n=========\n\nGeneral purpose crypto utilities\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/cryptiles/issues" - }, - "homepage": "https://github.com/hueniverse/cryptiles", - "_id": "cryptiles@0.2.2", - "_from": "cryptiles@0.2.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js deleted file mode 100755 index 58aaa70b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js +++ /dev/null @@ -1,101 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Cryptiles = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Cryptiles', function () { - - describe('#randomString', function () { - - it('should generate the right length string', function (done) { - - for (var i = 1; i <= 1000; ++i) { - expect(Cryptiles.randomString(i).length).to.equal(i); - } - - done(); - }); - - it('returns an error on invalid bits size', function (done) { - - expect(Cryptiles.randomString(99999999999999999999).message).to.equal('Failed generating random bits: Argument #1 must be number > 0'); - done(); - }); - }); - - describe('#randomBits', function () { - - it('returns an error on invalid input', function (done) { - - expect(Cryptiles.randomBits(0).message).to.equal('Invalid random bits count'); - done(); - }); - }); - - describe('#fixedTimeComparison', function () { - - var a = Cryptiles.randomString(50000); - var b = Cryptiles.randomString(150000); - - it('should take the same amount of time comparing different string sizes', function (done) { - - var now = Date.now(); - Cryptiles.fixedTimeComparison(b, a); - var t1 = Date.now() - now; - - now = Date.now(); - Cryptiles.fixedTimeComparison(b, b); - var t2 = Date.now() - now; - - expect(t2 - t1).to.be.within(-20, 20); - done(); - }); - - it('should return true for equal strings', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a)).to.equal(true); - done(); - }); - - it('should return false for different strings (size, a < b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a + 'x')).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a > b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a)).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a = b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a + 'y')).to.equal(false); - done(); - }); - - it('should return false when not a string', function (done) { - - expect(Cryptiles.fixedTimeComparison('x', null)).to.equal(false); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore deleted file mode 100644 index 9966e5e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml deleted file mode 100755 index 40ca59ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE deleted file mode 100755 index 394adcff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -Copyright (c) 2011-2013, Walmart. -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 Walmart 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 WALMART BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - * * * - - -Portions of this project were initially based on Postmile, Copyright (c) 2011, Yahoo Inc. -Postmile is published at https://github.com/yahoo/postmile and its licensing terms are -published at https://github.com/yahoo/postmile/blob/master/LICENSE. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile deleted file mode 100755 index e605d6c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md deleted file mode 100755 index ac64e2fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md +++ /dev/null @@ -1,436 +0,0 @@ -<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a> -![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png) - -General purpose node utilities - -[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek) - -# Table of Contents - -* [Introduction](#introduction "Introduction") -* [Object](#object "Object") - * [clone](#cloneobj "clone") - * [merge](#mergetarget-source-isnulloverride-ismergearrays "merge") - * [applyToDefaults](#applytodefaultsdefaults-options "applyToDefaults") - * [unique](#uniquearray-key "unique") - * [mapToObject](#maptoobjectarray-key "mapToObject") - * [intersect](#intersectarray1-array2 "intersect") - * [matchKeys](#matchkeysobj-keys "matchKeys") - * [flatten](#flattenarray-target "flatten") - * [removeKeys](#removekeysobject-keys "removeKeys") - * [reach](#reachobj-chain "reach") - * [inheritAsync](#inheritasyncself-obj-keys "inheritAsync") - * [rename](#renameobj-from-to "rename") -* [Timer](#timer "Timer") -* [Binary Encoding/Decoding](#binary "Binary Encoding/Decoding") - * [base64urlEncode](#binary64urlEncodevalue "binary64urlEncode") - * [base64urlDecode](#binary64urlDecodevalue "binary64urlDecode") -* [Escaping Characters](#escaped "Escaping Characters") - * [escapeHtml](#escapeHtmlstring "escapeHtml") - * [escapeHeaderAttribute](#escapeHeaderAttributeattribute "escapeHeaderAttribute") - * [escapeRegex](#escapeRegexstring "escapeRegex") -* [Errors](#errors "Errors") - * [assert](#assertmessage "assert") - * [abort](#abortmessage "abort") - * [displayStack](#displayStackslice "displayStack") - * [callStack](#callStackslice "callStack") - * [toss](#tosscondition "toss") -* [Load files](#load-files "Load Files") - * [loadPackage](#loadPackagedir "loadpackage") - * [loadDirModules](#loadDirModulespath-excludefiles-target "loaddirmodules") - - - -# Introduction - -The *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. - -For example, to use Hoek to set configuration with default options: -```javascript -var Hoek = require('hoek'); - -var default = {url : "www.github.com", port : "8000", debug : true} - -var config = Hoek.applyToDefaults(default, {port : "3000", admin : true}); - -// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true } -``` - -Under each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require('hoek') is omitted for brevity. - -## Object - -Hoek provides several helpful methods for objects and arrays. - -### clone(obj) - -This method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). - -```javascript - -var nestedObj = { - w: /^something$/ig, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date() - }, - y: 'y', - z: new Date() - }; - -var copy = Hoek.clone(nestedObj); - -copy.x.b = 100; - -console.log(copy.y) // results in 'y' -console.log(nestedObj.x.b) // results in 123456 -console.log(copy.x.b) // results in 100 -``` - -### merge(target, source, isNullOverride, isMergeArrays) -isNullOverride, isMergeArrays default to true - -Merge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied - - -```javascript - -var target = {a: 1, b : 2} -var source = {a: 0, c: 5} -var source2 = {a: null, c: 5} - -var targetArray = [1, 2, 3]; -var sourceArray = [4, 5]; - -var newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5} -newTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5} -newTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5} - -newTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5] -newTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5] - - - - -``` - -### applyToDefaults(defaults, options) - -Apply options to a copy of the defaults - -```javascript - -var defaults = {host: "localhost", port: 8000}; -var options = {port: 8080}; - -var config = Hoek.applyToDefaults(defaults, options); // results in {host: "localhost", port: 8080}; - - -``` - -### unique(array, key) - -Remove duplicate items from Array - -```javascript - -var array = [1, 2, 2, 3, 3, 4, 5, 6]; - -var newArray = Hoek.unique(array); // results in [1,2,3,4,5,6]; - -array = [{id: 1}, {id: 1}, {id: 2}]; - -newArray = Hoek.unique(array, "id") // results in [{id: 1}, {id: 2}] - -``` - -### mapToObject(array, key) - -Convert an Array into an Object - -```javascript - -var array = [1,2,3]; -var newObject = Hoek.mapToObject(array); // results in [{"1": true}, {"2": true}, {"3": true}] - -array = [{id: 1}, {id: 2}]; -newObject = Hoek.mapToObject(array, "id") // results in [{"id": 1}, {"id": 2}] - -``` -### intersect(array1, array2) - -Find the common unique items in two arrays - -```javascript - -var array1 = [1, 2, 3]; -var array2 = [1, 4, 5]; - -var newArray = Hoek.intersect(array1, array2) // results in [1] - -``` - -### matchKeys(obj, keys) - -Find which keys are present - -```javascript - -var obj = {a: 1, b: 2, c: 3}; -var keys = ["a", "e"]; - -Hoek.matchKeys(obj, keys) // returns ["a"] - -``` - -### flatten(array, target) - -Flatten an array - -```javascript - -var array = [1, 2, 3]; -var target = [4, 5]; - -var flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3]; - -``` - -### removeKeys(object, keys) - -Remove keys - -```javascript - -var object = {a: 1, b: 2, c: 3, d: 4}; - -var keys = ["a", "b"]; - -Hoek.removeKeys(object, keys) // object is now {c: 3, d: 4} - -``` - -### reach(obj, chain) - -Converts an object key chain string to reference - -```javascript - -var chain = 'a.b.c'; -var obj = {a : {b : { c : 1}}}; - -Hoek.reach(obj, chain) // returns 1 - -``` - -### inheritAsync(self, obj, keys) - -Inherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors - -```javascript - -var targetFunc = function () { }; - -var proto = { - a: function () { - return 'a!'; - }, - b: function () { - return 'b!'; - }, - c: function () { - throw new Error('c!'); - } - }; - -var keys = ['a', 'c']; - -Hoek.inheritAsync(targetFunc, proto, ['a', 'c']); - -var target = new targetFunc(); - -target.a(function(err, result){console.log(result)} // returns 'a!' - -target.c(function(err, result){console.log(result)} // returns undefined - -target.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method 'b' - -``` - -### rename(obj, from, to) - -Rename a key of an object - -```javascript - -var obj = {a : 1, b : 2}; - -Hoek.rename(obj, "a", "c"); // obj is now {c : 1, b : 2} - -``` - - -# Timer - -A Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. - -```javascript - - -example : - - -var timerObj = new Hoek.Timer(); -console.log("Time is now: " + timerObj.ts) -console.log("Elapsed time from initialization: " + timerObj.elapsed() + 'milliseconds') - -``` - -# Binary Encoding/Decoding - -### base64urlEncode(value) - -Encodes value in Base64 or URL encoding - -### base64urlDecode(value) - -Decodes data in Base64 or URL encoding. -# Escaping Characters - -Hoek provides convenient methods for escaping html characters. The escaped characters are as followed: - -```javascript - -internals.htmlEscaped = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' -}; - -``` - -### escapeHtml(string) - -```javascript - -var string = '<html> hey </html>'; -var escapedString = Hoek.escapeHtml(string); // returns <html> hey </html> - -``` - -### escapeHeaderAttribute(attribute) - -Escape attribute value for use in HTTP header - -```javascript - -var a = Hoek.escapeHeaderAttribute('I said "go w\\o me"'); //returns I said \"go w\\o me\" - - -``` - - -### escapeRegex(string) - -Escape string for Regex construction - -```javascript - -var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); // returns 4\^f\$s\.4\*5\+\-_\?%\=#\!\:@\|~\\\/`"\(>\)\[<\]d\{\}s\, - - - -``` - -# Errors - -### assert(message) - -```javascript - -var a = 1, b =2; - -Hoek.assert(a === b, 'a should equal b'); // ABORT: a should equal b - -``` - -### abort(message) - -First checks if process.env.NODE_ENV === 'test', and if so, throws error message. Otherwise, -displays most recent stack and then exits process. - - - -### displayStack(slice) - -Displays the trace stack - -```javascript - -var stack = Hoek.displayStack(); -console.log(stack) // returns something like: - -[ 'null (/Users/user/Desktop/hoek/test.js:4:18)', - 'Module._compile (module.js:449:26)', - 'Module._extensions..js (module.js:467:10)', - 'Module.load (module.js:356:32)', - 'Module._load (module.js:312:12)', - 'Module.runMain (module.js:492:10)', - 'startup.processNextTick.process._tickCallback (node.js:244:9)' ] - -``` - -### callStack(slice) - -Returns a trace stack array. - -```javascript - -var stack = Hoek.callStack(); -console.log(stack) // returns something like: - -[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ], - [ 'module.js', 449, 26, 'Module._compile', false ], - [ 'module.js', 467, 10, 'Module._extensions..js', false ], - [ 'module.js', 356, 32, 'Module.load', false ], - [ 'module.js', 312, 12, 'Module._load', false ], - [ 'module.js', 492, 10, 'Module.runMain', false ], - [ 'node.js', - 244, - 9, - 'startup.processNextTick.process._tickCallback', - false ] ] - - -``` - -### toss(condition) - -toss(condition /*, [message], callback */) - -Return an error as first argument of a callback - - -# Load Files - -### loadPackage(dir) - -Load and parse package.json process root or given directory - -```javascript - -var pack = Hoek.loadPackage(); // pack.name === 'hoek' - -``` - -### loadDirModules(path, excludeFiles, target) - -Loads modules from a given path; option to exclude files (array). - - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png deleted file mode 100755 index 6ccfcb12be76a7a8331428c87337b20b901e869c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37939 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 T*vZ8J00000NkvXXu0mjfKFT-e diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js deleted file mode 100755 index 666b3dc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js +++ /dev/null @@ -1,132 +0,0 @@ -// Declare internals - -var internals = {}; - - -exports.escapeJavaScript = function (input) { - - if (!input) { - return ''; - } - - var escaped = ''; - - for (var i = 0, il = input.length; i < il; ++i) { - - var charCode = input.charCodeAt(i); - - if (internals.isSafe(charCode)) { - escaped += input[i]; - } - else { - escaped += internals.escapeJavaScriptChar(charCode); - } - } - - return escaped; -}; - - -exports.escapeHtml = function (input) { - - if (!input) { - return ''; - } - - var escaped = ''; - - for (var i = 0, il = input.length; i < il; ++i) { - - var charCode = input.charCodeAt(i); - - if (internals.isSafe(charCode)) { - escaped += input[i]; - } - else { - escaped += internals.escapeHtmlChar(charCode); - } - } - - return escaped; -}; - - -internals.escapeJavaScriptChar = function (charCode) { - - if (charCode >= 256) { - return '\\u' + internals.padLeft('' + charCode, 4); - } - - var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex'); - return '\\x' + internals.padLeft(hexValue, 2); -}; - - -internals.escapeHtmlChar = function (charCode) { - - var namedEscape = internals.namedHtml[charCode]; - if (typeof namedEscape !== 'undefined') { - return namedEscape; - } - - if (charCode >= 256) { - return '&#' + charCode + ';'; - } - - var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex'); - return '&#x' + internals.padLeft(hexValue, 2) + ';'; -}; - - -internals.padLeft = function (str, len) { - - while (str.length < len) { - str = '0' + str; - } - - return str; -}; - - -internals.isSafe = function (charCode) { - - return (typeof internals.safeCharCodes[charCode] !== 'undefined'); -}; - - -internals.namedHtml = { - '38': '&', - '60': '<', - '62': '>', - '34': '"', - '160': ' ', - '162': '¢', - '163': '£', - '164': '¤', - '169': '©', - '174': '®' -}; - - -internals.safeCharCodes = (function () { - - var safe = {}; - - for (var i = 32; i < 123; ++i) { - - if ((i >= 97 && i <= 122) || // a-z - (i >= 65 && i <= 90) || // A-Z - (i >= 48 && i <= 57) || // 0-9 - i === 32 || // space - i === 46 || // . - i === 44 || // , - i === 45 || // - - i === 58 || // : - i === 95) { // _ - - safe[i] = null; - } - } - - return safe; -}()); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js deleted file mode 100755 index 806260d2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js +++ /dev/null @@ -1,585 +0,0 @@ -// Load modules - -var Fs = require('fs'); -var Escape = require('./escape'); - - -// Declare internals - -var internals = {}; - - -// Clone object or array - -exports.clone = function (obj, seen) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - seen = seen || { orig: [], copy: [] }; - - var lookup = seen.orig.indexOf(obj); - if (lookup !== -1) { - return seen.copy[lookup]; - } - - var newObj = (obj instanceof Array) ? [] : {}; - - seen.orig.push(obj); - seen.copy.push(newObj); - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (obj[i] instanceof Buffer) { - newObj[i] = new Buffer(obj[i]); - } - else if (obj[i] instanceof Date) { - newObj[i] = new Date(obj[i].getTime()); - } - else if (obj[i] instanceof RegExp) { - var flags = '' + (obj[i].global ? 'g' : '') + (obj[i].ignoreCase ? 'i' : '') + (obj[i].multiline ? 'm' : ''); - newObj[i] = new RegExp(obj[i].source, flags); - } - else { - newObj[i] = exports.clone(obj[i], seen); - } - } - } - - return newObj; -}; - - -// Merge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied - -exports.merge = function (target, source, isNullOverride /* = true */, isMergeArrays /* = true */) { - - exports.assert(target && typeof target == 'object', 'Invalid target value: must be an object'); - exports.assert(source === null || source === undefined || typeof source === 'object', 'Invalid source value: must be null, undefined, or an object'); - - if (!source) { - return target; - } - - if (source instanceof Array) { - exports.assert(target instanceof Array, 'Cannot merge array onto an object'); - if (isMergeArrays === false) { // isMergeArrays defaults to true - target.length = 0; // Must not change target assignment - } - - for (var i = 0, il = source.length; i < il; ++i) { - target.push(source[i]); - } - - return target; - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - if (value && - typeof value === 'object') { - - if (!target[key] || - typeof target[key] !== 'object') { - - target[key] = exports.clone(value); - } - else { - exports.merge(target[key], source[key], isNullOverride, isMergeArrays); - } - } - else { - if (value !== null && value !== undefined) { // Explicit to preserve empty strings - target[key] = value; - } - else if (isNullOverride !== false) { // Defaults to true - target[key] = value; - } - } - } - - return target; -}; - - -// Apply options to a copy of the defaults - -exports.applyToDefaults = function (defaults, options) { - - exports.assert(defaults && typeof defaults == 'object', 'Invalid defaults value: must be an object'); - exports.assert(!options || options === true || typeof options === 'object', 'Invalid options value: must be true, falsy or an object'); - - if (!options) { // If no options, return null - return null; - } - - var copy = exports.clone(defaults); - - if (options === true) { // If options is set to true, use defaults - return copy; - } - - return exports.merge(copy, options, false, false); -}; - - -// Remove duplicate items from array - -exports.unique = function (array, key) { - - var index = {}; - var result = []; - - for (var i = 0, il = array.length; i < il; ++i) { - var id = (key ? array[i][key] : array[i]); - if (index[id] !== true) { - - result.push(array[i]); - index[id] = true; - } - } - - return result; -}; - - -// Convert array into object - -exports.mapToObject = function (array, key) { - - if (!array) { - return null; - } - - var obj = {}; - for (var i = 0, il = array.length; i < il; ++i) { - if (key) { - if (array[i][key]) { - obj[array[i][key]] = true; - } - } - else { - obj[array[i]] = true; - } - } - - return obj; -}; - - -// Find the common unique items in two arrays - -exports.intersect = function (array1, array2, justFirst) { - - if (!array1 || !array2) { - return []; - } - - var common = []; - var hash = (array1 instanceof Array ? exports.mapToObject(array1) : array1); - var found = {}; - for (var i = 0, il = array2.length; i < il; ++i) { - if (hash[array2[i]] && !found[array2[i]]) { - if (justFirst) { - return array2[i]; - } - - common.push(array2[i]); - found[array2[i]] = true; - } - } - - return (justFirst ? null : common); -}; - - -// Find which keys are present - -exports.matchKeys = function (obj, keys) { - - var matched = []; - for (var i = 0, il = keys.length; i < il; ++i) { - if (obj.hasOwnProperty(keys[i])) { - matched.push(keys[i]); - } - } - return matched; -}; - - -// Flatten array - -exports.flatten = function (array, target) { - - var result = target || []; - - for (var i = 0, il = array.length; i < il; ++i) { - if (Array.isArray(array[i])) { - exports.flatten(array[i], result); - } - else { - result.push(array[i]); - } - } - - return result; -}; - - -// Remove keys - -exports.removeKeys = function (object, keys) { - - for (var i = 0, il = keys.length; i < il; i++) { - delete object[keys[i]]; - } -}; - - -// Convert an object key chain string ('a.b.c') to reference (object[a][b][c]) - -exports.reach = function (obj, chain) { - - var path = chain.split('.'); - var ref = obj; - for (var i = 0, il = path.length; i < il; ++i) { - if (ref) { - ref = ref[path[i]]; - } - } - - return ref; -}; - - -// Inherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors - -exports.inheritAsync = function (self, obj, keys) { - - keys = keys || null; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (keys instanceof Array && - keys.indexOf(i) < 0) { - - continue; - } - - self.prototype[i] = (function (fn) { - - return function (next) { - - var result = null; - try { - result = fn(); - } - catch (err) { - return next(err); - } - - return next(null, result); - }; - })(obj[i]); - } - } -}; - - -exports.formatStack = function (stack) { - - var trace = []; - for (var i = 0, il = stack.length; i < il; ++i) { - var item = stack[i]; - trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]); - } - - return trace; -}; - - -exports.formatTrace = function (trace) { - - var display = []; - - for (var i = 0, il = trace.length; i < il; ++i) { - var row = trace[i]; - display.push((row[4] ? 'new ' : '') + row[3] + ' (' + row[0] + ':' + row[1] + ':' + row[2] + ')'); - } - - return display; -}; - - -exports.callStack = function (slice) { - - // http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi - - var v8 = Error.prepareStackTrace; - Error.prepareStackTrace = function (err, stack) { - - return stack; - }; - - var capture = {}; - Error.captureStackTrace(capture, arguments.callee); - var stack = capture.stack; - - Error.prepareStackTrace = v8; - - var trace = exports.formatStack(stack); - - if (slice) { - return trace.slice(slice); - } - - return trace; -}; - - -exports.displayStack = function (slice) { - - var trace = exports.callStack(slice === undefined ? 1 : slice + 1); - - return exports.formatTrace(trace); -}; - - -exports.abortThrow = false; - - -exports.abort = function (message, hideStack) { - - if (process.env.NODE_ENV === 'test' || exports.abortThrow === true) { - throw new Error(message || 'Unknown error'); - } - - var stack = ''; - if (!hideStack) { - stack = exports.displayStack(1).join('\n\t'); - } - console.log('ABORT: ' + message + '\n\t' + stack); - process.exit(1); -}; - - -exports.assert = function (condition /*, msg1, msg2, msg3 */) { - - if (condition) { - return; - } - - var msgs = Array.prototype.slice.call(arguments, 1); - msgs = msgs.map(function (msg) { - - return typeof msg === 'string' ? msg : msg instanceof Error ? msg.message : JSON.stringify(msg); - }); - throw new Error(msgs.join(' ') || 'Unknown error'); -}; - - -exports.loadDirModules = function (path, excludeFiles, target) { // target(filename, name, capName) - - var exclude = {}; - for (var i = 0, il = excludeFiles.length; i < il; ++i) { - exclude[excludeFiles[i] + '.js'] = true; - } - - var files = Fs.readdirSync(path); - for (i = 0, il = files.length; i < il; ++i) { - var filename = files[i]; - if (/\.js$/.test(filename) && - !exclude[filename]) { - - var name = filename.substr(0, filename.lastIndexOf('.')); - var capName = name.charAt(0).toUpperCase() + name.substr(1).toLowerCase(); - - if (typeof target !== 'function') { - target[capName] = require(path + '/' + name); - } - else { - target(path + '/' + name, name, capName); - } - } - } -}; - - -exports.rename = function (obj, from, to) { - - obj[to] = obj[from]; - delete obj[from]; -}; - - -exports.Timer = function () { - - this.reset(); -}; - - -exports.Timer.prototype.reset = function () { - - this.ts = Date.now(); -}; - - -exports.Timer.prototype.elapsed = function () { - - return Date.now() - this.ts; -}; - - -// Load and parse package.json process root or given directory - -exports.loadPackage = function (dir) { - - var result = {}; - var filepath = (dir || process.env.PWD) + '/package.json'; - if (Fs.existsSync(filepath)) { - try { - result = JSON.parse(Fs.readFileSync(filepath)); - } - catch (e) { } - } - - return result; -}; - - -// Escape string for Regex construction - -exports.escapeRegex = function (string) { - - // Escape ^$.*+-?=!:|\/()[]{}, - return string.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, '\\$&'); -}; - - -// Return an error as first argument of a callback - -exports.toss = function (condition /*, [message], next */) { - - var message = (arguments.length === 3 ? arguments[1] : ''); - var next = (arguments.length === 3 ? arguments[2] : arguments[1]); - - var err = (message instanceof Error ? message : (message ? new Error(message) : (condition instanceof Error ? condition : new Error()))); - - if (condition instanceof Error || - !condition) { - - return next(err); - } -}; - - -// Base64url (RFC 4648) encode - -exports.base64urlEncode = function (value) { - - return (new Buffer(value, 'binary')).toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); -}; - - -// Base64url (RFC 4648) decode - -exports.base64urlDecode = function (encoded) { - - if (encoded && - !encoded.match(/^[\w\-]*$/)) { - - return new Error('Invalid character'); - } - - try { - return (new Buffer(encoded.replace(/-/g, '+').replace(/:/g, '/'), 'base64')).toString('binary'); - } - catch (err) { - return err; - } -}; - - -// Escape attribute value for use in HTTP header - -exports.escapeHeaderAttribute = function (attribute) { - - // Allowed value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \, " - - exports.assert(attribute.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/), 'Bad attribute value (' + attribute + ')'); - - return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); // Escape quotes and slash -}; - - -exports.escapeHtml = function (string) { - - return Escape.escapeHtml(string); -}; - - -exports.escapeJavaScript = function (string) { - - return Escape.escapeJavaScript(string); -}; - - -/* -var event = { - timestamp: now.getTime(), - tags: ['tag'], - data: { some: 'data' } -}; -*/ - -exports.consoleFunc = console.log; - -exports.printEvent = function (event) { - - var pad = function (value) { - - return (value < 10 ? '0' : '') + value; - }; - - var now = new Date(event.timestamp); - var timestring = (now.getYear() - 100).toString() + - pad(now.getMonth() + 1) + - pad(now.getDate()) + - '/' + - pad(now.getHours()) + - pad(now.getMinutes()) + - pad(now.getSeconds()) + - '.' + - now.getMilliseconds(); - - var data = event.data; - if (typeof event.data !== 'string') { - try { - data = JSON.stringify(event.data); - } - catch (e) { - data = 'JSON Error: ' + e.message; - } - } - - var output = timestring + ', ' + event.tags[0] + ', ' + data; - exports.consoleFunc(output); -}; - - -exports.nextTick = function (callback) { - - return function () { - - var args = arguments; - process.nextTick(function () { - - callback.apply(null, args); - }); - }; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json deleted file mode 100755 index e18f1485..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "hoek", - "description": "General purpose node utilities", - "version": "0.9.1", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [ - { - "name": "Van Nguyen", - "email": "the.gol.effect@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/spumko/hoek" - }, - "main": "index", - "keywords": [ - "utilities" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": {}, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/spumko/hoek/raw/master/LICENSE" - } - ], - "readme": "<a href=\"https://github.com/spumko\"><img src=\"https://raw.github.com/spumko/spumko/master/images/from.png\" align=\"right\" /></a>\r\n![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png)\r\n\r\nGeneral purpose node utilities\r\n\r\n[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek)\r\n\r\n# Table of Contents\r\n\r\n* [Introduction](#introduction \"Introduction\")\r\n* [Object](#object \"Object\")\r\n * [clone](#cloneobj \"clone\")\r\n * [merge](#mergetarget-source-isnulloverride-ismergearrays \"merge\")\r\n * [applyToDefaults](#applytodefaultsdefaults-options \"applyToDefaults\")\r\n * [unique](#uniquearray-key \"unique\")\r\n * [mapToObject](#maptoobjectarray-key \"mapToObject\")\r\n * [intersect](#intersectarray1-array2 \"intersect\")\r\n * [matchKeys](#matchkeysobj-keys \"matchKeys\")\r\n * [flatten](#flattenarray-target \"flatten\")\r\n * [removeKeys](#removekeysobject-keys \"removeKeys\")\r\n * [reach](#reachobj-chain \"reach\")\r\n * [inheritAsync](#inheritasyncself-obj-keys \"inheritAsync\")\r\n * [rename](#renameobj-from-to \"rename\")\r\n* [Timer](#timer \"Timer\")\r\n* [Binary Encoding/Decoding](#binary \"Binary Encoding/Decoding\")\r\n * [base64urlEncode](#binary64urlEncodevalue \"binary64urlEncode\")\r\n * [base64urlDecode](#binary64urlDecodevalue \"binary64urlDecode\")\r\n* [Escaping Characters](#escaped \"Escaping Characters\")\r\n * [escapeHtml](#escapeHtmlstring \"escapeHtml\")\r\n * [escapeHeaderAttribute](#escapeHeaderAttributeattribute \"escapeHeaderAttribute\")\r\n * [escapeRegex](#escapeRegexstring \"escapeRegex\")\r\n* [Errors](#errors \"Errors\")\r\n * [assert](#assertmessage \"assert\")\r\n * [abort](#abortmessage \"abort\")\r\n * [displayStack](#displayStackslice \"displayStack\")\r\n * [callStack](#callStackslice \"callStack\")\r\n * [toss](#tosscondition \"toss\")\r\n* [Load files](#load-files \"Load Files\")\r\n * [loadPackage](#loadPackagedir \"loadpackage\")\r\n * [loadDirModules](#loadDirModulespath-excludefiles-target \"loaddirmodules\")\r\n\r\n\r\n\r\n# Introduction\r\n\r\nThe *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. \r\n\r\nFor example, to use Hoek to set configuration with default options:\r\n```javascript\r\nvar Hoek = require('hoek');\r\n\r\nvar default = {url : \"www.github.com\", port : \"8000\", debug : true}\r\n\r\nvar config = Hoek.applyToDefaults(default, {port : \"3000\", admin : true});\r\n\r\n// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true }\r\n```\r\n\r\nUnder each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require('hoek') is omitted for brevity.\r\n\r\n## Object\r\n\r\nHoek provides several helpful methods for objects and arrays.\r\n\r\n### clone(obj)\r\n\r\nThis method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). \r\n\r\n```javascript\r\n\r\nvar nestedObj = {\r\n w: /^something$/ig,\r\n x: {\r\n a: [1, 2, 3],\r\n b: 123456,\r\n c: new Date()\r\n },\r\n y: 'y',\r\n z: new Date()\r\n };\r\n\r\nvar copy = Hoek.clone(nestedObj);\r\n\r\ncopy.x.b = 100;\r\n\r\nconsole.log(copy.y) // results in 'y'\r\nconsole.log(nestedObj.x.b) // results in 123456\r\nconsole.log(copy.x.b) // results in 100\r\n```\r\n\r\n### merge(target, source, isNullOverride, isMergeArrays)\r\nisNullOverride, isMergeArrays default to true\r\n\r\nMerge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied\r\n\r\n\r\n```javascript\r\n\r\nvar target = {a: 1, b : 2}\r\nvar source = {a: 0, c: 5}\r\nvar source2 = {a: null, c: 5}\r\n\r\nvar targetArray = [1, 2, 3];\r\nvar sourceArray = [4, 5];\r\n\r\nvar newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5}\r\n\r\nnewTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5]\r\nnewTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5]\r\n\r\n\r\n\r\n\r\n```\r\n\r\n### applyToDefaults(defaults, options)\r\n\r\nApply options to a copy of the defaults\r\n\r\n```javascript\r\n\r\nvar defaults = {host: \"localhost\", port: 8000};\r\nvar options = {port: 8080};\r\n\r\nvar config = Hoek.applyToDefaults(defaults, options); // results in {host: \"localhost\", port: 8080};\r\n\r\n\r\n```\r\n\r\n### unique(array, key)\r\n\r\nRemove duplicate items from Array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 2, 3, 3, 4, 5, 6];\r\n\r\nvar newArray = Hoek.unique(array); // results in [1,2,3,4,5,6];\r\n\r\narray = [{id: 1}, {id: 1}, {id: 2}];\r\n\r\nnewArray = Hoek.unique(array, \"id\") // results in [{id: 1}, {id: 2}]\r\n\r\n```\r\n\r\n### mapToObject(array, key)\r\n\r\nConvert an Array into an Object\r\n\r\n```javascript\r\n\r\nvar array = [1,2,3];\r\nvar newObject = Hoek.mapToObject(array); // results in [{\"1\": true}, {\"2\": true}, {\"3\": true}]\r\n\r\narray = [{id: 1}, {id: 2}];\r\nnewObject = Hoek.mapToObject(array, \"id\") // results in [{\"id\": 1}, {\"id\": 2}]\r\n\r\n```\r\n### intersect(array1, array2)\r\n\r\nFind the common unique items in two arrays\r\n\r\n```javascript\r\n\r\nvar array1 = [1, 2, 3];\r\nvar array2 = [1, 4, 5];\r\n\r\nvar newArray = Hoek.intersect(array1, array2) // results in [1]\r\n\r\n```\r\n\r\n### matchKeys(obj, keys) \r\n\r\nFind which keys are present\r\n\r\n```javascript\r\n\r\nvar obj = {a: 1, b: 2, c: 3};\r\nvar keys = [\"a\", \"e\"];\r\n\r\nHoek.matchKeys(obj, keys) // returns [\"a\"]\r\n\r\n```\r\n\r\n### flatten(array, target)\r\n\r\nFlatten an array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 3];\r\nvar target = [4, 5]; \r\n\r\nvar flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3];\r\n\r\n```\r\n\r\n### removeKeys(object, keys)\r\n\r\nRemove keys\r\n\r\n```javascript\r\n\r\nvar object = {a: 1, b: 2, c: 3, d: 4};\r\n\r\nvar keys = [\"a\", \"b\"];\r\n\r\nHoek.removeKeys(object, keys) // object is now {c: 3, d: 4}\r\n\r\n```\r\n\r\n### reach(obj, chain)\r\n\r\nConverts an object key chain string to reference\r\n\r\n```javascript\r\n\r\nvar chain = 'a.b.c';\r\nvar obj = {a : {b : { c : 1}}};\r\n\r\nHoek.reach(obj, chain) // returns 1\r\n\r\n```\r\n\r\n### inheritAsync(self, obj, keys) \r\n\r\nInherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors\r\n\r\n```javascript\r\n\r\nvar targetFunc = function () { };\r\n\r\nvar proto = {\r\n a: function () {\r\n return 'a!';\r\n },\r\n b: function () {\r\n return 'b!';\r\n },\r\n c: function () {\r\n throw new Error('c!');\r\n }\r\n };\r\n\r\nvar keys = ['a', 'c'];\r\n\r\nHoek.inheritAsync(targetFunc, proto, ['a', 'c']);\r\n\r\nvar target = new targetFunc();\r\n\r\ntarget.a(function(err, result){console.log(result)} // returns 'a!' \r\n\r\ntarget.c(function(err, result){console.log(result)} // returns undefined\r\n\r\ntarget.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method 'b'\r\n\r\n```\r\n\r\n### rename(obj, from, to)\r\n\r\nRename a key of an object\r\n\r\n```javascript\r\n\r\nvar obj = {a : 1, b : 2};\r\n\r\nHoek.rename(obj, \"a\", \"c\"); // obj is now {c : 1, b : 2}\r\n\r\n```\r\n\r\n\r\n# Timer\r\n\r\nA Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.\r\n\r\n```javascript\r\n\r\n\r\nexample : \r\n\r\n\r\nvar timerObj = new Hoek.Timer();\r\nconsole.log(\"Time is now: \" + timerObj.ts)\r\nconsole.log(\"Elapsed time from initialization: \" + timerObj.elapsed() + 'milliseconds')\r\n\r\n```\r\n\r\n# Binary Encoding/Decoding\r\n\r\n### base64urlEncode(value)\r\n\r\nEncodes value in Base64 or URL encoding\r\n\r\n### base64urlDecode(value)\r\n\r\nDecodes data in Base64 or URL encoding.\r\n# Escaping Characters\r\n\r\nHoek provides convenient methods for escaping html characters. The escaped characters are as followed:\r\n\r\n```javascript\r\n\r\ninternals.htmlEscaped = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n};\r\n\r\n```\r\n\r\n### escapeHtml(string)\r\n\r\n```javascript\r\n\r\nvar string = '<html> hey </html>';\r\nvar escapedString = Hoek.escapeHtml(string); // returns <html> hey </html>\r\n\r\n```\r\n\r\n### escapeHeaderAttribute(attribute)\r\n\r\nEscape attribute value for use in HTTP header\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeHeaderAttribute('I said \"go w\\\\o me\"'); //returns I said \\\"go w\\\\o me\\\"\r\n\r\n\r\n```\r\n\r\n\r\n### escapeRegex(string)\r\n\r\nEscape string for Regex construction\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\\\/`\"(>)[<]d{}s,'); // returns 4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`\"\\(>\\)\\[<\\]d\\{\\}s\\,\r\n\r\n\r\n\r\n```\r\n\r\n# Errors\r\n\r\n### assert(message)\r\n\r\n```javascript\r\n\r\nvar a = 1, b =2;\r\n\r\nHoek.assert(a === b, 'a should equal b'); // ABORT: a should equal b\r\n\r\n```\r\n\r\n### abort(message)\r\n\r\nFirst checks if process.env.NODE_ENV === 'test', and if so, throws error message. Otherwise,\r\ndisplays most recent stack and then exits process.\r\n\r\n\r\n\r\n### displayStack(slice)\r\n\r\nDisplays the trace stack\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.displayStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ 'null (/Users/user/Desktop/hoek/test.js:4:18)',\r\n 'Module._compile (module.js:449:26)',\r\n 'Module._extensions..js (module.js:467:10)',\r\n 'Module.load (module.js:356:32)',\r\n 'Module._load (module.js:312:12)',\r\n 'Module.runMain (module.js:492:10)',\r\n 'startup.processNextTick.process._tickCallback (node.js:244:9)' ]\r\n\r\n```\r\n\r\n### callStack(slice)\r\n\r\nReturns a trace stack array.\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.callStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ],\r\n [ 'module.js', 449, 26, 'Module._compile', false ],\r\n [ 'module.js', 467, 10, 'Module._extensions..js', false ],\r\n [ 'module.js', 356, 32, 'Module.load', false ],\r\n [ 'module.js', 312, 12, 'Module._load', false ],\r\n [ 'module.js', 492, 10, 'Module.runMain', false ],\r\n [ 'node.js',\r\n 244,\r\n 9,\r\n 'startup.processNextTick.process._tickCallback',\r\n false ] ]\r\n\r\n\r\n```\r\n\r\n### toss(condition)\r\n\r\ntoss(condition /*, [message], callback */)\r\n\r\nReturn an error as first argument of a callback\r\n\r\n\r\n# Load Files\r\n\r\n### loadPackage(dir)\r\n\r\nLoad and parse package.json process root or given directory\r\n\r\n```javascript\r\n\r\nvar pack = Hoek.loadPackage(); // pack.name === 'hoek'\r\n\r\n```\r\n\r\n### loadDirModules(path, excludeFiles, target) \r\n\r\nLoads modules from a given path; option to exclude files (array).\r\n\r\n\r\n\r\n\r\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/spumko/hoek/issues" - }, - "homepage": "https://github.com/spumko/hoek", - "_id": "hoek@0.9.1", - "_from": "hoek@0.9.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js deleted file mode 100644 index 4dddd77d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js +++ /dev/null @@ -1,86 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hoek', function () { - - describe('#escapeJavaScript', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeJavaScript('<script>alert(1)</script>'); - expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e'); - done(); - }); - - it('encodes \' characters', function (done) { - - var encoded = Hoek.escapeJavaScript('something(\'param\')'); - expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29'); - done(); - }); - - it('encodes large unicode characters with the correct padding', function (done) { - - var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('\\u0500\\u1000'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeJavaScript(null); - expect(encoded).to.equal(''); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeHtml('<script>alert(1)</script>'); - expect(encoded).to.equal('<script>alert(1)</script>'); - done(); - }); - - it('encodes < and > as named characters', function (done) { - - var encoded = Hoek.escapeHtml('<script><>'); - expect(encoded).to.equal('<script><>'); - done(); - }); - - it('encodes large unicode characters', function (done) { - - var encoded = Hoek.escapeHtml(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('ǴϨ'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeHtml(null); - expect(encoded).to.equal(''); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js deleted file mode 100755 index c40e3ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js +++ /dev/null @@ -1,1078 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hoek', function () { - - var nestedObj = { - v: [7,8,9], - w: /^something$/igm, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - d: /hi/igm, - e: /hello/ - }, - y: 'y', - z: new Date() - }; - - var dupsArray = [nestedObj, { z: 'z' }, nestedObj]; - var reducedDupsArray = [nestedObj, { z: 'z' }]; - - describe('#clone', function () { - - it('should clone a nested object', function (done) { - - var a = nestedObj; - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - expect(a.z.getTime()).to.equal(b.z.getTime()); - done(); - }); - - it('should clone a null object', function (done) { - - var b = Hoek.clone(null); - - expect(b).to.equal(null); - done(); - }); - - it('should not convert undefined properties to null', function (done) { - - var obj = { something: undefined }; - var b = Hoek.clone(obj); - - expect(typeof b.something).to.equal('undefined'); - done(); - }); - - it('should not throw on circular reference', function (done) { - - var a = {}; - a.x = a; - - var test = (function () { - - var b = Hoek.clone(a); - }); - - expect(test).to.not.throw(); - done(); - }); - - it('should properly clone circular reference', function (done) { - - var x = { - 'z': new Date() - }; - x.y = x; - - var b = Hoek.clone(x); - expect(Object.keys(b.y)).to.deep.equal(Object.keys(x)) - expect(b.z).to.not.equal(x.z); - expect(b.y).to.not.equal(x.y); - expect(b.y.z).to.not.equal(x.y.z); - expect(b.y).to.equal(b); - expect(b.y.y.y.y).to.equal(b); - done(); - }); - - it('should properly clone deeply nested object', function (done) { - - var a = { - x: { - y: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - d: /hi/igm, - e: /hello/ - }, - } - }; - - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - expect(a.x.y.c.getTime()).to.equal(b.x.y.c.getTime()); - done(); - }); - - it('should properly clone arrays', function (done) { - - var a = [1,2,3]; - - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - done(); - }); - - it('should perform actual copy for shallow keys (no pass by reference)', function (done) { - - var x = Hoek.clone(nestedObj); - var y = Hoek.clone(nestedObj); - - // Date - expect(x.z).to.not.equal(nestedObj.z); - expect(x.z).to.not.equal(y.z); - - // Regex - expect(x.w).to.not.equal(nestedObj.w); - expect(x.w).to.not.equal(y.w); - - // Array - expect(x.v).to.not.equal(nestedObj.v); - expect(x.v).to.not.equal(y.v); - - // Immutable(s) - x.y = 5; - expect(x.y).to.not.equal(nestedObj.y); - expect(x.y).to.not.equal(y.y); - - done(); - }); - - it('should perform actual copy for deep keys (no pass by reference)', function (done) { - - var x = Hoek.clone(nestedObj); - var y = Hoek.clone(nestedObj); - - expect(x.x.c).to.not.equal(nestedObj.x.c); - expect(x.x.c).to.not.equal(y.x.c); - - expect(x.x.c.getTime()).to.equal(nestedObj.x.c.getTime()); - expect(x.x.c.getTime()).to.equal(y.x.c.getTime()); - done(); - }); - - it('copies functions with properties', function (done) { - - var a = { - x: function () { return 1; }, - y: {} - }; - a.x.z = 'string in function'; - a.x.v = function () { return 2; }; - a.y.u = a.x; - - var b = Hoek.clone(a); - expect(b.x()).to.equal(1); - expect(b.x.v()).to.equal(2); - expect(b.y.u).to.equal(b.x); - expect(b.x.z).to.equal('string in function'); - done(); - }); - - it('should copy a buffer', function(done){ - var tls = { - key: new Buffer([1,2,3,4,5]), - cert: new Buffer([1,2,3,4,5,6,10]) - } - - copiedTls = Hoek.clone(tls); - expect(Buffer.isBuffer(copiedTls.key)).to.equal(true); - expect(JSON.stringify(copiedTls.key)).to.equal(JSON.stringify(tls.key)) - expect(Buffer.isBuffer(copiedTls.cert)).to.equal(true); - expect(JSON.stringify(copiedTls.cert)).to.equal(JSON.stringify(tls.cert)) - done(); - }); - }); - - describe('#merge', function () { - - it('does not throw if source is null', function (done) { - - var a = {}; - var b = null; - var c = null; - - expect(function () { - - c = Hoek.merge(a, b); - }).to.not.throw(); - - expect(c).to.equal(a); - done(); - }); - - it('does not throw if source is undefined', function (done) { - - var a = {}; - var b = undefined; - var c = null; - - expect(function () { - - c = Hoek.merge(a, b); - }).to.not.throw(); - - expect(c).to.equal(a); - done(); - }); - - it('throws if source is not an object', function (done) { - - expect(function () { - - var a = {}; - var b = 0; - - Hoek.merge(a, b); - }).to.throw('Invalid source value: must be null, undefined, or an object'); - done(); - }); - - it('throws if target is not an object', function (done) { - - expect(function () { - - var a = 0; - var b = {}; - - Hoek.merge(a, b); - }).to.throw('Invalid target value: must be an object'); - done(); - }); - - it('throws if target is not an array and source is', function (done) { - - expect(function () { - - var a = {}; - var b = [1, 2]; - - Hoek.merge(a, b); - }).to.throw('Cannot merge array onto an object'); - done(); - }); - - it('returns the same object when merging arrays', function (done) { - - var a = []; - var b = [1, 2]; - - expect(Hoek.merge(a, b)).to.equal(a); - done(); - }); - - it('should combine an empty object with a non-empty object', function (done) { - - var a = {}; - var b = nestedObj; - - var c = Hoek.merge(a, b); - expect(a).to.deep.equal(b); - expect(c).to.deep.equal(b); - done(); - }); - - it('should override values in target', function (done) { - - var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' }; - var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' }; - - var c = Hoek.merge(a, b); - expect(c.x).to.equal(null); - expect(c.y).to.equal(2); - expect(c.z).to.equal(4); - expect(c.v).to.equal(0); - expect(c.m).to.equal('123'); - expect(c.t).to.deep.equal({ u: 6 }); - done(); - }); - - it('should override values in target (flip)', function (done) { - - var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' }; - var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' }; - - var d = Hoek.merge(b, a); - expect(d.x).to.equal(1); - expect(d.y).to.equal(2); - expect(d.z).to.equal(3); - expect(d.v).to.equal(5); - expect(d.m).to.equal('abc'); - expect(d.t).to.deep.equal('test'); - done(); - }); - }); - - describe('#applyToDefaults', function () { - - var defaults = { - a: 1, - b: 2, - c: { - d: 3, - e: [5, 6] - }, - f: 6, - g: 'test' - }; - - it('should return null if options is false', function (done) { - - var result = Hoek.applyToDefaults(defaults, false); - expect(result).to.equal(null); - done(); - }); - - it('should return a copy of defaults if options is true', function (done) { - - var result = Hoek.applyToDefaults(defaults, true); - expect(result).to.deep.equal(result); - done(); - }); - - it('should apply object to defaults', function (done) { - - var obj = { - a: null, - c: { - e: [4] - }, - f: 0, - g: { - h: 5 - } - }; - - var result = Hoek.applyToDefaults(defaults, obj); - expect(result.c.e).to.deep.equal([4]); - expect(result.a).to.equal(1); - expect(result.b).to.equal(2); - expect(result.f).to.equal(0); - expect(result.g).to.deep.equal({ h: 5 }); - done(); - }); - }); - - describe('#unique', function () { - - it('should ensure uniqueness within array of objects based on subkey', function (done) { - - var a = Hoek.unique(dupsArray, 'x'); - expect(a).to.deep.equal(reducedDupsArray); - done(); - }); - - it('removes duplicated without key', function (done) { - - expect(Hoek.unique([1, 2, 3, 4, 2, 1, 5])).to.deep.equal([1, 2, 3, 4, 5]); - done(); - }); - }); - - describe('#mapToObject', function () { - - it('should return null on null array', function (done) { - - var a = Hoek.mapToObject(null); - expect(a).to.equal(null); - done(); - }); - - it('should convert basic array to existential object', function (done) { - - var keys = [1, 2, 3, 4]; - var a = Hoek.mapToObject(keys); - for (var i in keys) { - expect(a[keys[i]]).to.equal(true); - } - done(); - }); - - it('should convert array of objects to existential object', function (done) { - - var keys = [{ x: 1 }, { x: 2 }, { x: 3 }]; - var subkey = 'x'; - var a = Hoek.mapToObject(keys, subkey); - for (var i in keys) { - expect(a[keys[i][subkey]]).to.equal(true); - } - done(); - }); - }); - - describe('#intersect', function () { - - it('should return the common objects of two arrays', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(array1, array2); - expect(common.length).to.equal(2); - done(); - }); - - it('should return just the first common object of two arrays', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(array1, array2, true); - expect(common).to.equal(5); - done(); - }); - - it('should return an empty array if either input is null', function (done) { - - expect(Hoek.intersect([1], null).length).to.equal(0); - expect(Hoek.intersect(null, [1]).length).to.equal(0); - done(); - }); - - it('should return the common objects of object and array', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(Hoek.mapToObject(array1), array2); - expect(common.length).to.equal(2); - done(); - }); - }); - - describe('#matchKeys', function () { - - it('should match the existing object keys', function (done) { - - var obj = { - a: 1, - b: 2, - c: 3, - d: null - }; - - expect(Hoek.matchKeys(obj, ['b', 'c', 'd', 'e'])).to.deep.equal(['b', 'c', 'd']); - done(); - }); - }); - - describe('#flatten', function () { - - it('should return a flat array', function (done) { - - var result = Hoek.flatten([1, 2, [3, 4, [5, 6], [7], 8], [9], [10, [11, 12]], 13]); - expect(result.length).to.equal(13); - expect(result).to.deep.equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]); - done(); - }); - }); - - describe('#removeKeys', function () { - - var objWithHiddenKeys = { - location: { - name: 'San Bruno' - }, - company: { - name: '@WalmartLabs' - } - }; - - it('should delete params with definition\'s hide set to true', function (done) { - - var a = Hoek.removeKeys(objWithHiddenKeys, ['location']); - expect(objWithHiddenKeys.location).to.not.exist; - expect(objWithHiddenKeys.company).to.exist; - done(); - }); - }); - - describe('#reach', function () { - - var obj = { - a: { - b: { - c: { - d: 1, - e: 2 - }, - f: 'hello' - }, - g: { - h: 3 - } - }, - i: function () { } - }; - - it('returns a valid member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d')).to.equal(1); - done(); - }); - - it('returns null on null object', function (done) { - - expect(Hoek.reach(null, 'a.b.c.d')).to.not.exist; - done(); - }); - - it('returns null on missing member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d.x')).to.not.exist; - done(); - }); - - it('returns null on invalid member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d-.x')).to.not.exist; - done(); - }); - - it('returns function member', function (done) { - - expect(typeof Hoek.reach(obj, 'i')).to.equal('function'); - done(); - }); - }); - - describe('#inheritAsync', function () { - - it('should inherit selected methods and wrap in async call', function (done) { - - var proto = { - a: function () { - return 'a!'; - }, - b: function () { - return 'b!'; - }, - c: function () { - throw new Error('c!'); - } - }; - - var targetFunc = function () { }; - targetFunc.prototype.c = function () { - - return 'oops'; - }; - - Hoek.inheritAsync(targetFunc, proto, ['a', 'c']); - var target = new targetFunc(); - - expect(typeof target.a).to.equal('function'); - expect(typeof target.c).to.equal('function'); - expect(target.b).to.not.exist; - - target.a(function (err, result) { - - expect(err).to.not.exist; - expect(result).to.equal('a!'); - - target.c(function (err, result) { - - expect(result).to.not.exist; - expect(err.message).to.equal('c!'); - done(); - }); - }); - }); - }); - - describe('#callStack', function () { - - it('should return the full call stack', function (done) { - - var stack = Hoek.callStack(); - expect(stack[0][0]).to.contain('index.js'); - expect(stack[0][2]).to.equal(30); - done(); - }); - }); - - describe('#displayStack ', function () { - - it('should return the full call stack for display', function (done) { - - var stack = Hoek.displayStack(); - expect(stack[0]).to.contain('test/index.js:'); - done(); - }); - - it('should include constructor functions correctly', function (done) { - - var Something = function (next) { - - next(); - }; - - var something = new Something(function () { - - var stack = Hoek.displayStack(); - expect(stack[1]).to.contain('new Something'); - done(); - }); - }); - }); - - describe('#abort', function () { - - it('should exit process when not in test mode', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - - process.env.NODE_ENV = 'nottatest'; - process.stdout.write = function () { }; - process.exit = function (state) { - - process.exit = exit; - process.env.NODE_ENV = env; - process.stdout.write = write; - - expect(state).to.equal(1); - done(); - }; - - Hoek.abort('Boom'); - }); - - it('should throw when not in test mode and abortThrow is true', function (done) { - - var env = process.env.NODE_ENV; - process.env.NODE_ENV = 'nottatest'; - Hoek.abortThrow = true; - - var fn = function () { - - Hoek.abort('my error message'); - }; - - expect(fn).to.throw('my error message'); - Hoek.abortThrow = false; - process.env.NODE_ENV = env; - - done(); - }); - - - it('should respect hideStack argument', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - var output = ''; - - process.exit = function () { }; - process.env.NODE_ENV = ''; - process.stdout.write = function (message) { - - output = message; - }; - - Hoek.abort('my error message', true); - - process.env.NODE_ENV = env; - process.stdout.write = write; - process.exit = exit; - - expect(output).to.equal('ABORT: my error message\n\t\n'); - - done(); - }); - - it('should default to showing stack', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - var output = ''; - - process.exit = function () { }; - process.env.NODE_ENV = ''; - process.stdout.write = function (message) { - - output = message; - }; - - Hoek.abort('my error message'); - - process.env.NODE_ENV = env; - process.stdout.write = write; - process.exit = exit; - - expect(output).to.contain('index.js'); - - done(); - }); - }); - - describe('#assert', function () { - - it('should throw an Error when using assert in a test', function (done) { - - var fn = function () { - - Hoek.assert(false, 'my error message'); - }; - - expect(fn).to.throw('my error message'); - done(); - }); - - it('should throw an Error when using assert in a test with no message', function (done) { - - var fn = function () { - - Hoek.assert(false); - }; - - expect(fn).to.throw('Unknown error'); - done(); - }); - - it('should throw an Error when using assert in a test with multipart message', function (done) { - - var fn = function () { - - Hoek.assert(false, 'This', 'is', 'my message'); - }; - - expect(fn).to.throw('This is my message'); - done(); - }); - - it('should throw an Error when using assert in a test with object message', function (done) { - - var fn = function () { - - Hoek.assert(false, 'This', 'is', { spinal: 'tap' }); - }; - - expect(fn).to.throw('This is {"spinal":"tap"}'); - done(); - }); - - it('should throw an Error when using assert in a test with error object message', function (done) { - - var fn = function () { - - Hoek.assert(false, new Error('This is spinal tap')); - }; - - expect(fn).to.throw('This is spinal tap'); - done(); - }); - }); - - describe('#loadDirModules', function () { - - it('should load modules from directory', function (done) { - - var target = {}; - Hoek.loadDirModules(__dirname + '/modules', ['test2'], target); - expect(target.Test1.x).to.equal(1); - expect(target.Test2).to.not.exist; - expect(target.Test3.z).to.equal(3); - done(); - }); - - it('should list modules from directory into function', function (done) { - - var target = {}; - Hoek.loadDirModules(__dirname + '/modules', ['test2'], function (path, name, capName) { - - target[name] = capName; - }); - - expect(target.test1).to.equal('Test1'); - expect(target.test2).to.not.exist; - expect(target.test3).to.equal('Test3'); - done(); - }); - }); - - describe('#rename', function () { - - it('should rename object key', function (done) { - - var a = { b: 'c' }; - Hoek.rename(a, 'b', 'x'); - expect(a.b).to.not.exist; - expect(a.x).to.equal('c'); - done(); - }); - }); - - describe('Timer', function () { - - it('should return time elapsed', function (done) { - - var timer = new Hoek.Timer(); - setTimeout(function () { - - expect(timer.elapsed()).to.be.above(9); - done(); - }, 12); - }); - }); - - describe('#loadPackage', function () { - - it('should', function (done) { - - var pack = Hoek.loadPackage(); - expect(pack.name).to.equal('hoek'); - done(); - }); - }); - - describe('#escapeRegex', function () { - - it('should escape all special regular expression characters', function (done) { - - var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); - expect(a).to.equal('4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`"\\(>\\)\\[<\\]d\\{\\}s\\,'); - done(); - }); - }); - - describe('#toss', function () { - - it('should call callback with new error', function (done) { - - var callback = function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('bug'); - done(); - }; - - Hoek.toss(true, 'feature', callback); - Hoek.toss(false, 'bug', callback); - }); - - it('should call callback with new error and no message', function (done) { - - Hoek.toss(false, function (err) { - - expect(err).to.exist; - expect(err.message).to.equal(''); - done(); - }); - }); - - it('should call callback with error condition', function (done) { - - Hoek.toss(new Error('boom'), function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - - it('should call callback with new error using message with error condition', function (done) { - - Hoek.toss(new Error('ka'), 'boom', function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - - it('should call callback with new error using passed error with error condition', function (done) { - - Hoek.toss(new Error('ka'), new Error('boom'), function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - }); - - describe('Base64Url', function () { - - var base64str = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w'; - var str = unescape('%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29*+%2C-./0123456789%3A%3B%3C%3D%3E%3F@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF'); - - describe('#base64urlEncode', function () { - - it('should base64 URL-safe a string', function (done) { - - expect(Hoek.base64urlEncode(str)).to.equal(base64str); - done(); - }); - }); - - describe('#base64urlDecode', function () { - - it('should un-base64 URL-safe a string', function (done) { - - expect(Hoek.base64urlDecode(base64str)).to.equal(str); - done(); - }); - - it('should return error on undefined input', function (done) { - - expect(Hoek.base64urlDecode().message).to.exist; - done(); - }); - - it('should return error on invalid input', function (done) { - - expect(Hoek.base64urlDecode('*').message).to.exist; - done(); - }); - }); - }); - - describe('#escapeHeaderAttribute', function () { - - it('should not alter ascii values', function (done) { - - var a = Hoek.escapeHeaderAttribute('My Value'); - expect(a).to.equal('My Value'); - done(); - }); - - it('should escape all special HTTP header attribute characters', function (done) { - - var a = Hoek.escapeHeaderAttribute('I said go!!!#"' + String.fromCharCode(92)); - expect(a).to.equal('I said go!!!#\\"\\\\'); - done(); - }); - - it('should throw on large unicode characters', function (done) { - - var fn = function () { - - Hoek.escapeHeaderAttribute('this is a test' + String.fromCharCode(500) + String.fromCharCode(300)); - }; - - expect(fn).to.throw(Error); - done(); - }); - - it('should throw on CRLF to prevent response splitting', function (done) { - - var fn = function () { - - Hoek.escapeHeaderAttribute('this is a test\r\n'); - }; - - expect(fn).to.throw(Error); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('should escape all special HTML characters', function (done) { - - var a = Hoek.escapeHtml('&<>"\'`'); - expect(a).to.equal('&<>"'`'); - done(); - }); - - it('should return empty string on falsy input', function (done) { - - var a = Hoek.escapeHtml(''); - expect(a).to.equal(''); - done(); - }); - - it('should return unchanged string on no reserved input', function (done) { - - var a = Hoek.escapeHtml('abc'); - expect(a).to.equal('abc'); - done(); - }); - }); - - describe('#printEvent', function () { - - it('outputs event as string', function (done) { - - var event = { - timestamp: (new Date(2013, 1, 1, 6, 30, 45, 123)).getTime(), - tags: ['a', 'b', 'c'], - data: { some: 'data' } - }; - - Hoek.consoleFunc = function (string) { - - Hoek.consoleFunc = console.log; - expect(string).to.equal('130201/063045.123, a, {"some":"data"}'); - done(); - }; - - Hoek.printEvent(event); - }); - - it('outputs JSON error', function (done) { - - var event = { - timestamp: (new Date(2013, 1, 1, 6, 30, 45, 123)).getTime(), - tags: ['a', 'b', 'c'], - data: { some: 'data' } - }; - - event.data.a = event.data; - - Hoek.consoleFunc = function (string) { - - Hoek.consoleFunc = console.log; - expect(string).to.equal('130201/063045.123, a, JSON Error: Converting circular structure to JSON'); - done(); - }; - - Hoek.printEvent(event); - }); - }); - - describe('#nextTick', function () { - - it('calls the provided callback on nextTick', function (done) { - - var a = 0; - - var inc = function (step, next) { - - a += step; - next(); - }; - - var ticked = Hoek.nextTick(inc); - - ticked(5, function () { - - expect(a).to.equal(6); - done(); - }); - - expect(a).to.equal(0); - inc(1, function () { - - expect(a).to.equal(1); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js deleted file mode 100755 index 3f41e601..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js +++ /dev/null @@ -1 +0,0 @@ -exports.x = 1; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js deleted file mode 100755 index 38556b27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js +++ /dev/null @@ -1 +0,0 @@ -exports.y = 2; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js deleted file mode 100755 index 436b860b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js +++ /dev/null @@ -1 +0,0 @@ -exports.z = 3; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile deleted file mode 100755 index 9e7138c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @./node_modules/.bin/lab -test-cov: - @./node_modules/.bin/lab -r threshold -t 100 -test-cov-html: - @./node_modules/.bin/lab -r html -o coverage.html -complexity: - @./node_modules/.bin/cr -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md deleted file mode 100755 index 98a6e025..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# sntp - -An SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time -along with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset -to the local time. - -[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp) - -# Usage - -```javascript -var Sntp = require('sntp'); - -// All options are optional - -var options = { - host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org - port: 123, // Defaults to 123 (NTP) - resolveReference: true, // Default to false (not resolving) - timeout: 1000 // Defaults to zero (no timeout) -}; - -// Request server time - -Sntp.time(options, function (err, time) { - - if (err) { - console.log('Failed: ' + err.message); - process.exit(1); - } - - console.log('Local clock is off by: ' + time.t + ' milliseconds'); - process.exit(0); -}); -``` - -If an application needs to maintain continuous time synchronization, the module provides a stateful method for -querying the current offset only when the last one is too old (defaults to daily). - -```javascript -// Request offset once - -Sntp.offset(function (err, offset) { - - console.log(offset); // New (served fresh) - - // Request offset again - - Sntp.offset(function (err, offset) { - - console.log(offset); // Identical (served from cache) - }); -}); -``` - -To set a background offset refresh, start the interval and use the provided now() method. If for any reason the -client fails to obtain an up-to-date offset, the current system clock is used. - -```javascript -var before = Sntp.now(); // System time without offset - -Sntp.start(function () { - - var now = Sntp.now(); // With offset - Sntp.stop(); -}); -``` - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js deleted file mode 100755 index 0303f6dc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js +++ /dev/null @@ -1,16 +0,0 @@ -var Sntp = require('../lib'); - -// Request offset once - -Sntp.offset(function (err, offset) { - - console.log(offset); // New (served fresh) - - // Request offset again - - Sntp.offset(function (err, offset) { - - console.log(offset); // Identical (served from cache) - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js deleted file mode 100755 index bd70d0e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js +++ /dev/null @@ -1,25 +0,0 @@ -var Sntp = require('../lib'); - -// All options are optional - -var options = { - host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org - port: 123, // Defaults to 123 (NTP) - resolveReference: true, // Default to false (not resolving) - timeout: 1000 // Defaults to zero (no timeout) -}; - -// Request server time - -Sntp.time(options, function (err, time) { - - if (err) { - console.log('Failed: ' + err.message); - process.exit(1); - } - - console.log(time); - console.log('Local clock is off by: ' + time.t + ' milliseconds'); - process.exit(0); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js deleted file mode 100755 index e492cd93..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js +++ /dev/null @@ -1,409 +0,0 @@ -// Load modules - -var Dgram = require('dgram'); -var Dns = require('dns'); -var Hoek = require('hoek'); - - -// Declare internals - -var internals = {}; - - -exports.time = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - var settings = Hoek.clone(options); - settings.host = settings.host || 'pool.ntp.org'; - settings.port = settings.port || 123; - settings.resolveReference = settings.resolveReference || false; - - // Declare variables used by callback - - var timeoutId = 0; - var sent = 0; - - // Ensure callback is only called once - - var isFinished = false; - var finish = function (err, result) { - - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = 0; - } - - if (!isFinished) { - isFinished = true; - socket.removeAllListeners(); - socket.close(); - return callback(err, result); - } - }; - - // Create UDP socket - - var socket = Dgram.createSocket('udp4'); - - socket.once('error', function (err) { - - return finish(err); - }); - - // Listen to incoming messages - - socket.on('message', function (buffer, rinfo) { - - var received = Date.now(); - - var message = new internals.NtpMessage(buffer); - if (!message.isValid) { - return finish(new Error('Invalid server response'), message); - } - - if (message.originateTimestamp !== sent) { - return finish(new Error('Wrong originate timestamp'), message); - } - - // Timestamp Name ID When Generated - // ------------------------------------------------------------ - // Originate Timestamp T1 time request sent by client - // Receive Timestamp T2 time request received by server - // Transmit Timestamp T3 time reply sent by server - // Destination Timestamp T4 time reply received by client - // - // The roundtrip delay d and system clock offset t are defined as: - // - // d = (T4 - T1) - (T3 - T2) t = ((T2 - T1) + (T3 - T4)) / 2 - - var T1 = message.originateTimestamp; - var T2 = message.receiveTimestamp; - var T3 = message.transmitTimestamp; - var T4 = received; - - message.d = (T4 - T1) - (T3 - T2); - message.t = ((T2 - T1) + (T3 - T4)) / 2; - message.receivedLocally = received; - - if (!settings.resolveReference || - message.stratum !== 'secondary') { - - return finish(null, message); - } - - // Resolve reference IP address - - Dns.reverse(message.referenceId, function (err, domains) { - - if (!err) { - message.referenceHost = domains[0]; - } - - return finish(null, message); - }); - }); - - // Set timeout - - if (settings.timeout) { - timeoutId = setTimeout(function () { - - timeoutId = 0; - return finish(new Error('Timeout')); - }, settings.timeout); - } - - // Construct NTP message - - var message = new Buffer(48); - for (var i = 0; i < 48; i++) { // Zero message - message[i] = 0; - } - - message[0] = (0 << 6) + (4 << 3) + (3 << 0) // Set version number to 4 and Mode to 3 (client) - sent = Date.now(); - internals.fromMsecs(sent, message, 40); // Set transmit timestamp (returns as originate) - - // Send NTP request - - socket.send(message, 0, message.length, settings.port, settings.host, function (err, bytes) { - - if (err || - bytes !== 48) { - - return finish(err || new Error('Could not send entire message')); - } - }); -}; - - -internals.NtpMessage = function (buffer) { - - this.isValid = false; - - // Validate - - if (buffer.length !== 48) { - return; - } - - // Leap indicator - - var li = (buffer[0] >> 6); - switch (li) { - case 0: this.leapIndicator = 'no-warning'; break; - case 1: this.leapIndicator = 'last-minute-61'; break; - case 2: this.leapIndicator = 'last-minute-59'; break; - case 3: this.leapIndicator = 'alarm'; break; - } - - // Version - - var vn = ((buffer[0] & 0x38) >> 3); - this.version = vn; - - // Mode - - var mode = (buffer[0] & 0x7); - switch (mode) { - case 1: this.mode = 'symmetric-active'; break; - case 2: this.mode = 'symmetric-passive'; break; - case 3: this.mode = 'client'; break; - case 4: this.mode = 'server'; break; - case 5: this.mode = 'broadcast'; break; - case 0: - case 6: - case 7: this.mode = 'reserved'; break; - } - - // Stratum - - var stratum = buffer[1]; - if (stratum === 0) { - this.stratum = 'death'; - } - else if (stratum === 1) { - this.stratum = 'primary'; - } - else if (stratum <= 15) { - this.stratum = 'secondary'; - } - else { - this.stratum = 'reserved'; - } - - // Poll interval (msec) - - this.pollInterval = Math.round(Math.pow(2, buffer[2])) * 1000; - - // Precision (msecs) - - this.precision = Math.pow(2, buffer[3]) * 1000; - - // Root delay (msecs) - - var rootDelay = 256 * (256 * (256 * buffer[4] + buffer[5]) + buffer[6]) + buffer[7]; - this.rootDelay = 1000 * (rootDelay / 0x10000); - - // Root dispersion (msecs) - - this.rootDispersion = ((buffer[8] << 8) + buffer[9] + ((buffer[10] << 8) + buffer[11]) / Math.pow(2, 16)) * 1000; - - // Reference identifier - - this.referenceId = ''; - switch (this.stratum) { - case 'death': - case 'primary': - this.referenceId = String.fromCharCode(buffer[12]) + String.fromCharCode(buffer[13]) + String.fromCharCode(buffer[14]) + String.fromCharCode(buffer[15]); - break; - case 'secondary': - this.referenceId = '' + buffer[12] + '.' + buffer[13] + '.' + buffer[14] + '.' + buffer[15]; - break; - } - - // Reference timestamp - - this.referenceTimestamp = internals.toMsecs(buffer, 16); - - // Originate timestamp - - this.originateTimestamp = internals.toMsecs(buffer, 24); - - // Receive timestamp - - this.receiveTimestamp = internals.toMsecs(buffer, 32); - - // Transmit timestamp - - this.transmitTimestamp = internals.toMsecs(buffer, 40); - - // Validate - - if (this.version === 4 && - this.stratum !== 'reserved' && - this.mode === 'server' && - this.originateTimestamp && - this.receiveTimestamp && - this.transmitTimestamp) { - - this.isValid = true; - } - - return this; -}; - - -internals.toMsecs = function (buffer, offset) { - - var seconds = 0; - var fraction = 0; - - for (var i = 0; i < 4; ++i) { - seconds = (seconds * 256) + buffer[offset + i]; - } - - for (i = 4; i < 8; ++i) { - fraction = (fraction * 256) + buffer[offset + i]; - } - - return ((seconds - 2208988800 + (fraction / Math.pow(2, 32))) * 1000); -}; - - -internals.fromMsecs = function (ts, buffer, offset) { - - var seconds = Math.floor(ts / 1000) + 2208988800; - var fraction = Math.round((ts % 1000) / 1000 * Math.pow(2, 32)); - - buffer[offset + 0] = (seconds & 0xFF000000) >> 24; - buffer[offset + 1] = (seconds & 0x00FF0000) >> 16; - buffer[offset + 2] = (seconds & 0x0000FF00) >> 8; - buffer[offset + 3] = (seconds & 0x000000FF); - - buffer[offset + 4] = (fraction & 0xFF000000) >> 24; - buffer[offset + 5] = (fraction & 0x00FF0000) >> 16; - buffer[offset + 6] = (fraction & 0x0000FF00) >> 8; - buffer[offset + 7] = (fraction & 0x000000FF); -}; - - -// Offset singleton - -internals.last = { - offset: 0, - expires: 0, - host: '', - port: 0 -}; - - -exports.offset = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - var now = Date.now(); - var clockSyncRefresh = options.clockSyncRefresh || 24 * 60 * 60 * 1000; // Daily - - if (internals.last.offset && - internals.last.host === options.host && - internals.last.port === options.port && - now < internals.last.expires) { - - process.nextTick(function () { - - callback(null, internals.last.offset); - }); - - return; - } - - exports.time(options, function (err, time) { - - if (err) { - return callback(err, 0); - } - - internals.last = { - offset: Math.round(time.t), - expires: now + clockSyncRefresh, - host: options.host, - port: options.port - }; - - return callback(null, internals.last.offset); - }); -}; - - -// Now singleton - -internals.now = { - intervalId: 0 -}; - - -exports.start = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - if (internals.now.intervalId) { - process.nextTick(function () { - - callback(); - }); - - return; - } - - exports.offset(options, function (err, offset) { - - internals.now.intervalId = setInterval(function () { - - exports.offset(options, function () { }); - }, options.clockSyncRefresh || 24 * 60 * 60 * 1000); // Daily - - return callback(); - }); -}; - - -exports.stop = function () { - - if (!internals.now.intervalId) { - return; - } - - clearInterval(internals.now.intervalId); - internals.now.intervalId = 0; -}; - - -exports.isLive = function () { - - return !!internals.now.intervalId; -}; - - -exports.now = function () { - - var now = Date.now(); - if (!exports.isLive() || - now >= internals.last.expires) { - - return now; - } - - return now + internals.last.offset; -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json deleted file mode 100755 index 4c4b2f57..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "sntp", - "description": "SNTP Client", - "version": "0.2.4", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/sntp" - }, - "main": "index", - "keywords": [ - "sntp", - "ntp", - "time" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/sntp/raw/master/LICENSE" - } - ], - "readme": "# sntp\n\nAn SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time\nalong with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset\nto the local time.\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp)\n\n# Usage\n\n```javascript\nvar Sntp = require('sntp');\n\n// All options are optional\n\nvar options = {\n host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org\n port: 123, // Defaults to 123 (NTP)\n resolveReference: true, // Default to false (not resolving)\n timeout: 1000 // Defaults to zero (no timeout)\n};\n\n// Request server time\n\nSntp.time(options, function (err, time) {\n\n if (err) {\n console.log('Failed: ' + err.message);\n process.exit(1);\n }\n\n console.log('Local clock is off by: ' + time.t + ' milliseconds');\n process.exit(0);\n});\n```\n\nIf an application needs to maintain continuous time synchronization, the module provides a stateful method for\nquerying the current offset only when the last one is too old (defaults to daily).\n\n```javascript\n// Request offset once\n\nSntp.offset(function (err, offset) {\n\n console.log(offset); // New (served fresh)\n\n // Request offset again\n\n Sntp.offset(function (err, offset) {\n\n console.log(offset); // Identical (served from cache)\n });\n});\n```\n\nTo set a background offset refresh, start the interval and use the provided now() method. If for any reason the\nclient fails to obtain an up-to-date offset, the current system clock is used.\n\n```javascript\nvar before = Sntp.now(); // System time without offset\n\nSntp.start(function () {\n\n var now = Sntp.now(); // With offset\n Sntp.stop();\n});\n```\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/sntp/issues" - }, - "homepage": "https://github.com/hueniverse/sntp", - "_id": "sntp@0.2.4", - "_from": "sntp@0.2.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js deleted file mode 100755 index 38a55346..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js +++ /dev/null @@ -1,359 +0,0 @@ -// Load modules - -var Dgram = require('dgram'); -var Lab = require('lab'); -var Sntp = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('SNTP', function () { - - describe('#time', function () { - - it('returns consistent result over multiple tries', function (done) { - - Sntp.time(function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - var t1 = time.t; - - Sntp.time(function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - var t2 = time.t; - expect(Math.abs(t1 - t2)).is.below(200); - done(); - }); - }); - }); - - it('resolves reference IP', function (done) { - - Sntp.time({ host: 'ntp.exnet.com', resolveReference: true }, function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - expect(time.referenceHost).to.exist; - done(); - }); - }); - - it('times out on no response', function (done) { - - Sntp.time({ port: 124, timeout: 100 }, function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('Timeout'); - done(); - }); - }); - - it('errors on error event', function (done) { - - var orig = Dgram.createSocket; - Dgram.createSocket = function (type) { - - Dgram.createSocket = orig; - var socket = Dgram.createSocket(type); - process.nextTick(function () { socket.emit('error', new Error('Fake')) }); - return socket; - }; - - Sntp.time(function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('Fake'); - done(); - }); - }); - - it('times out on invalid host', function (done) { - - Sntp.time({ host: 'error', timeout: 10000 }, function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('getaddrinfo ENOTFOUND'); - done(); - }); - }); - - it('fails on bad response buffer size', function (done) { - - var server = Dgram.createSocket('udp4'); - server.on('message', function (message, remote) { - var message = new Buffer(10); - server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) { - - server.close(); - }); - }); - - server.bind(49123); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid server response'); - done(); - }); - }); - - var messup = function (bytes) { - - var server = Dgram.createSocket('udp4'); - server.on('message', function (message, remote) { - - var message = new Buffer([ - 0x24, 0x01, 0x00, 0xe3, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x41, 0x43, 0x54, 0x53, - 0xd4, 0xa8, 0x2d, 0xc7, - 0x1c, 0x5d, 0x49, 0x1b, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x67, 0xef, 0x9d, 0xb2, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x71, 0xed, 0xb5, 0xfb, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x71, 0xee, 0x6c, 0xc5 - ]); - - for (var i = 0, il = bytes.length; i < il; ++i) { - message[bytes[i][0]] = bytes[i][1]; - } - - server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) { - - server.close(); - }); - }); - - server.bind(49123); - }; - - it('fails on bad version', function (done) { - - messup([[0, (0 << 6) + (3 << 3) + (4 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.version).to.equal(3); - expect(err.message).to.equal('Invalid server response'); - done(); - }); - }); - - it('fails on bad originate timestamp and alarm li', function (done) { - - messup([[0, (3 << 6) + (4 << 3) + (4 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(err.message).to.equal('Wrong originate timestamp'); - expect(time.leapIndicator).to.equal('alarm'); - done(); - }); - }); - - it('returns time with death stratum and last61 li', function (done) { - - messup([[0, (1 << 6) + (4 << 3) + (4 << 0)], [1, 0]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(time.stratum).to.equal('death'); - expect(time.leapIndicator).to.equal('last-minute-61'); - done(); - }); - }); - - it('returns time with reserved stratum and last59 li', function (done) { - - messup([[0, (2 << 6) + (4 << 3) + (4 << 0)], [1, 0x1f]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(time.stratum).to.equal('reserved'); - expect(time.leapIndicator).to.equal('last-minute-59'); - done(); - }); - }); - - it('fails on bad mode (symmetric-active)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (1 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('symmetric-active'); - done(); - }); - }); - - it('fails on bad mode (symmetric-passive)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (2 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('symmetric-passive'); - done(); - }); - }); - - it('fails on bad mode (client)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (3 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('client'); - done(); - }); - }); - - it('fails on bad mode (broadcast)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (5 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('broadcast'); - done(); - }); - }); - - it('fails on bad mode (reserved)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (6 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('reserved'); - done(); - }); - }); - }); - - describe('#offset', function () { - - it('gets the current offset', function (done) { - - Sntp.offset(function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.not.equal(0); - done(); - }); - }); - - it('gets the current offset from cache', function (done) { - - Sntp.offset(function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.not.equal(0); - var offset1 = offset; - Sntp.offset({}, function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.equal(offset1); - done(); - }); - }); - }); - - it('fails getting the current offset on invalid server', function (done) { - - Sntp.offset({ host: 'error' }, function (err, offset) { - - expect(err).to.exist; - expect(offset).to.equal(0); - done(); - }); - }); - }); - - describe('#now', function () { - - it('starts auto-sync, gets now, then stops', function (done) { - - Sntp.stop(); - - var before = Sntp.now(); - expect(before).to.equal(Date.now()); - - Sntp.start(function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - Sntp.stop(); - - done(); - }); - }); - - it('starts twice', function (done) { - - Sntp.start(function () { - - Sntp.start(function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - Sntp.stop(); - - done(); - }); - }); - }); - - it('starts auto-sync, gets now, waits, gets again after timeout', function (done) { - - Sntp.stop(); - - var before = Sntp.now(); - expect(before).to.equal(Date.now()); - - Sntp.start({ clockSyncRefresh: 100 }, function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - expect(now).to.equal(Sntp.now()); - - setTimeout(function () { - - expect(Sntp.now()).to.not.equal(now); - Sntp.stop(); - done(); - }, 110); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json deleted file mode 100755 index 16feb783..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "hawk", - "description": "HTTP Hawk Authentication Scheme", - "version": "1.0.0", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/hawk" - }, - "main": "index", - "keywords": [ - "http", - "authentication", - "scheme", - "hawk" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x", - "boom": "0.4.x", - "cryptiles": "0.2.x", - "sntp": "0.2.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x", - "localStorage": "1.0.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/hawk/raw/master/LICENSE" - } - ], - "readme": "![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png)\n\n<img align=\"right\" src=\"https://raw.github.com/hueniverse/hawk/master/images/logo.png\" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial\nHTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz).\n\nCurrent version: **1.0**\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk)\n\n# Table of Content\n\n- [**Introduction**](#introduction)\n - [Replay Protection](#replay-protection)\n - [Usage Example](#usage-example)\n - [Protocol Example](#protocol-example)\n - [Payload Validation](#payload-validation)\n - [Response Payload Validation](#response-payload-validation)\n - [Browser Support and Considerations](#browser-support-and-considerations)\n<p></p>\n- [**Single URI Authorization**](#single-uri-authorization)\n - [Usage Example](#bewit-usage-example)\n<p></p>\n- [**Security Considerations**](#security-considerations)\n - [MAC Keys Transmission](#mac-keys-transmission)\n - [Confidentiality of Requests](#confidentiality-of-requests)\n - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers)\n - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials)\n - [Entropy of Keys](#entropy-of-keys)\n - [Coverage Limitations](#coverage-limitations)\n - [Future Time Manipulation](#future-time-manipulation)\n - [Client Clock Poisoning](#client-clock-poisoning)\n - [Bewit Limitations](#bewit-limitations)\n - [Host Header Forgery](#host-header-forgery)\n<p></p>\n- [**Frequently Asked Questions**](#frequently-asked-questions)\n<p></p>\n- [**Acknowledgements**](#acknowledgements)\n\n# Introduction\n\n**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with\npartial cryptographic verification of the request and response, covering the HTTP method, request URI, host,\nand optionally the request payload.\n\nSimilar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of\nclient credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme,\nthe key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is\nincluded in its place.\n\nHowever, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of\nreplay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less\n\"chattiness\" (interaction with the server).\n\nAlso unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because\nthe client and server must both have access to the key material in the clear.\n\nThe primary design goals of this scheme are to:\n* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources,\n* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where\n to send an authenticated request), and\n* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client\n failure to validate the server's identity as part of its TLS handshake.\n\nIn addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using\na query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).\n\nThe **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server,\nwhich is beyond the scope of this module. Typically, the shared credentials are established via an initial\nTLS-protected phase or derived from some other shared confidential information available to both the client\nand the server.\n\n\n## Replay Protection\n\nWithout replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more \nthan once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when \nmaking requests. This gives the server enough information to prevent replay attacks.\n\nThe nonce is generated by the client, and is a string unique across all requests with the same timestamp and\nkey identifier combination. \n\nThe timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards\nare rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks.\nBy default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in\npractice translates to a maximum of 2 minutes as the skew can be positive or negative).\n\nUsing a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client\nclock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types\n(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response\nto a bad timestamp.\n\nThere is no expectation that the client will adjust its system clock to match the server (in fact, this would be a\npotential attack vector). Instead, the client only uses the server's time to calculate an offset used only\nfor communications with that particular server. The protocol rewards clients with synchronized clocks by reducing\nthe number of round trips required to authenticate the first request.\n\n\n## Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256',\n user: 'Steve'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n // Authenticate incoming request\n\n Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {\n\n // Prepare response\n\n var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');\n var headers = { 'Content-Type': 'text/plain' };\n\n // Generate Server-Authorization response header\n\n var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] });\n headers['Server-Authorization'] = header;\n\n // Send the response back\n\n res.writeHead(!err ? 200 : 401, headers);\n res.end(payload);\n });\n};\n\n// Start server\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nClient code:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Request options\n\nvar requestOptions = {\n uri: 'http://example.com:8000/resource/1?b=1&a=2',\n method: 'GET',\n headers: {}\n};\n\n// Generate Authorization request header\n\nvar header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' });\nrequestOptions.headers.Authorization = header.field;\n\n// Send authenticated request\n\nRequest(requestOptions, function (error, response, body) {\n\n // Authenticate the server's response\n\n var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });\n\n // Output results\n\n console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));\n});\n```\n\n**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local\nmachine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method.\n\n```javascript\nHawk.sntp.start();\n```\n\n\n## Protocol Example\n\nThe client attempts to access a protected resource without authentication, sending the following HTTP request to\nthe resource server:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\n```\n\nThe resource server returns an authentication challenge.\n\n```\nHTTP/1.1 401 Unauthorized\nWWW-Authenticate: Hawk\n```\n\nThe client has previously obtained a set of **Hawk** credentials for accessing resources on the \"http://example.com/\"\nserver. The **Hawk** credentials issued to the client include the following attributes:\n\n* Key identifier: dh37fgj492je\n* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\n* Algorithm: sha256\n\nThe client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1,\n1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline\ncharacter):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nGET\n/resource/1?b=1&a=2\nexample.com\n8000\n\nsome-app-ext-data\n\n```\n\nThe request MAC is calculated using HMAC with the specified hash algorithm \"sha256\" and the key over the normalized request string.\nThe result is base64-encoded to produce the request MAC:\n\n```\n6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\n```\n\nThe client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using\nthe HTTP `Authorization` request header field:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", ext=\"some-app-ext-data\", mac=\"6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\"\n```\n\nThe server validates the request by calculating the request MAC again based on the request received and verifies the validity\nand scope of the **Hawk** credentials. If valid, the server responds with the requested resource.\n\n\n### Payload Validation\n\n**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash\nusing the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):\n* `hawk.1.payload`\n* the content-type in lowercase, without any parameters (e.g. `application/json`)\n* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability)\n\nFor example:\n\n* Payload: `Thank you for flying Hawk`\n* Content Type: `text/plain`\n* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=`\n\nResults in the following input to the payload hash function (newline terminated values):\n\n```\nhawk.1.payload\ntext/plain\nThank you for flying Hawk\n\n```\n\nWhich produces the following hash value:\n\n```\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\n```\n\nThe client constructs the normalized request string (newline terminated values):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource/1?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n\n```\n\nThen calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data,\nand request MAC, with the request using the HTTP `Authorization` request header field:\n\n```\nPOST /resource/1?a=1&b=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", hash=\"Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\", ext=\"some-app-ext-data\", mac=\"aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=\"\n```\n\nIt is up to the server if and when it validates the payload for any given request, based solely on it's security policy\nand the nature of the data included.\n\nIf the payload is available at the time of authentication, the server uses the hash value provided by the client to construct\nthe normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value\nwith the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.\n\nHowever, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed\nat a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value\nprovided by the client after validating the MAC.\n\nIt is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value\nincluded in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided\nby the client, the payload may be modified by an attacker.\n\n\n## Response Payload Validation\n\n**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the\nclient to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header\nas a response header using the exact same syntax as the `Authorization` request header field.\n\nThe header is contructed using the same process as the client's request header. The server uses the same credentials and other\nartifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with\nnew values based on the server response. The rest as identical to those used by the client.\n\nThe result MAC digest is included with the optional `hash` and `ext` values:\n\n```\nServer-Authorization: Hawk mac=\"XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\", ext=\"response-specific\"\n```\n\n\n## Browser Support and Considerations\n\nA browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js).\n\n**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client.\nTherefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value\n_\"WWW-Authenticate, Server-Authorization\"_ on each response from your server. As explained in the\n[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers\ncan safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a\n[\"simple response header\"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the\nHawk client from authenticating the requests.You can read more about the why and how in this\n[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server)\n\n\n# Single URI Authorization\n\nThere are cases in which limited and short-term access to a protected resource is granted to a third party which does not\nhave access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk**\nprovides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains\nthe necessary credentials to authenticate the request.\n\nBecause of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests\nand for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same\ncredentials as the client to maintain clear traceability as to who issued which credentials.\n\nIn order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within\nthe granted access timeframe. \n\n\n## Bewit Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {\n\n res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' });\n res.end(!err ? 'Access granted' : 'Shoosh!');\n });\n};\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nBewit code generation:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Generate bewit\n\nvar duration = 60 * 5; // 5 Minutes\nvar bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' });\nvar uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit;\n```\n\n\n# Security Considerations\n\nThe greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use.\nImplementers are strongly encouraged to assess how this module addresses their security requirements. This section includes\nan incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server.\nMany of the protections provided in **Hawk** depends on whether and how they are used.\n\n### MAC Keys Transmission\n\n**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used\nto obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.\n\n### Confidentiality of Requests\n\nWhile **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request\nconfidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should\ncarefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms\nto protect sensitive resources.\n\n### Spoofing by Counterfeit Servers\n\n**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server\nmay choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to\nthe server to determine when such measure is included, to up to the client to enforce that policy.\n\nA hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise\nincorrect responses. Service providers should consider such attacks when developing services using this protocol, and should\nrequire transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.\n\n### Plaintext Storage of Credentials\n\nThe **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC,\nthe server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which\nstore only a one-way hash of user credentials.\n\nIf an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able\nto perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized\naccess.\n\n### Entropy of Keys\n\nUnless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request\nMAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to\nassign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk**\ncredentials are valid.\n\nFor example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force\nattack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the\nlongest key reasonable.\n\nIt is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high\nquality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit\npatterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use\ncryptographically secure PRNGs to avoid these problems.\n\n### Coverage Limitations\n\nThe request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers\nwhich can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence\nor value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the\n`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC.\n\nThe response authentication, when performed, only covers the response payload, content-type, and the request information \nprovided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or\nany other response header field (e.g. Location) which can affect the client's behaviour.\n\n### Future Time Manipulation\n\nThe protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its\ncurrent time when an invalid timestamp is received.\n\nIf an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause\nthe client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will\nnot likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then\nbe able to replay the request at the correct time without detection.\n\nThe client must only use the time information provided by the server if:\n* it was delivered over a TLS connection and the server identity has been verified, or\n* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified.\n\n### Client Clock Poisoning\n\nWhen receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use\nthe time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with\nthat particular server.\n\n### Bewit Limitations\n\nSpecial care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot\nbe revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with\naccess to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET\nrequests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private\nand sensitive information.\n\n### Host Header Forgery\n\nHawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port`\noptions are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and\nuse that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server\nimplementors must manually verify that the host header received matches their expectation (or use the options mentioned above).\n\n# Frequently Asked Questions\n\n### Where is the protocol specification?\n\nIf you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source\nproject instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about\nsomething? Open an issue!\n\n### Is it done?\n\nAt if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental\nand is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions\nand suggestions.\n\n### Where can I find **Hawk** implementations in other languages?\n\n**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other\nplatforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk),\n[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list\nis maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another\nport. A cross-platform test-suite is in the works.\n\n### Why isn't the algorithm part of the challenge or dynamically negotiated?\n\nThe algorithm used is closely related to the key issued as different algorithms require different key sizes (and other\nrequirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm\ntogether as part of the issued credentials.\n\n### Why is Host and Content-Type the only headers covered by the request MAC?\n\nIt is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no\nwell-established way to normalize them. Many platforms change the case of header field names and values. The only\nstraight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request,\nan approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information,\nand introduces other security issues because firewalls will not be aware of these \"hidden\" headers. In addition, any information\nrepeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.\n\n### Why not just use HTTP Digest?\n\nDigest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send\na protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile\nwhere extra round-trip are costly.\n\n### Why bother with all this nonce and timestamp business?\n\n**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp\nand nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses\nit by requiring the client to sync its clock, but provides it with tools to accomplish it.\n\nIn general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected\nsystem where the clients are implemented using best practices and are under the control of the server. Instead of dropping\nreplay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers\nwith the ability to decide how to enforce their security policy without impacting the client's implementation.\n\n### What are `app` and `dlg` in the authorization header and normalized mac string?\n\nThe original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which\nthis module is specifically designed for, and a delegated access mode which is being developed separately in\n[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`.\nThis provides binding between the credentials and the application in a way that prevents an attacker from tricking an application\nto use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the\napplication the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly,\nbut with the additional security of delegated credentials.\n\n### What is the purpose of the static strings used in each normalized MAC input?\n\nWhen calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being\nused or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request,\nresponse, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol\ncreates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it\ncan create an exploit opportunity for cases where the nonce is similar in format to a timestamp.\n\n### Does **Hawk** have anything to do with OAuth?\n\nShort answer: no.\n\n**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent\nincompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it\nto authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard\nat work to produce more garbage.\n\n**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case\nof delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz).\n\n\n# Acknowledgements\n\n**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal\nco-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.\n\nSpecial thanks to Ben Laurie for his always insightful feedback and advice.\n\nThe **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com).\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/hawk/issues" - }, - "homepage": "https://github.com/hueniverse/hawk", - "_id": "hawk@1.0.0", - "_from": "hawk@~1.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js deleted file mode 100755 index b25a10fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js +++ /dev/null @@ -1,771 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); -var Browser = require('../lib/browser'); -var LocalStorage = require('localStorage'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Browser', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a header then successfully parse it (configuration)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (node request)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' }); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header options)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header with stale ts and successfully authenticate on second call', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - Browser.utils.setNtpOffset(60 * 60 * 1000); - var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }); - req.authorization = header.field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - - var res = { - headers: { - 'www-authenticate': err.response.headers['WWW-Authenticate'] - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000); - expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true); - expect(Browser.utils.getNtpOffset()).to.equal(0); - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - }); - - it('should generate a header with stale ts and successfully authenticate on second call (manual localStorage)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - Browser.utils.setStorage(LocalStorage) - - Browser.utils.setNtpOffset(60 * 60 * 1000); - var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }); - req.authorization = header.field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - - var res = { - headers: { - 'www-authenticate': err.response.headers['WWW-Authenticate'] - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(parseInt(LocalStorage.getItem('hawk_ntp_offset'))).to.equal(60 * 60 * 1000); - expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000); - expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true); - expect(Browser.utils.getNtpOffset()).to.equal(0); - expect(parseInt(LocalStorage.getItem('hawk_ntp_offset'))).to.equal(0); - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - }); - - it('should generate a header then fails to parse it (missing server header hash)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (with hash)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it then validate payload', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true; - expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false; - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app, dlg)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - expect(artifacts.dlg).to.equal('23434szr3q4d'); - done(); - }); - }); - }); - - it('should generate a header then fail authentication due to bad hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad payload hash'); - done(); - }); - }); - }); - - it('should generate a header for one resource then fail to authenticate another', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - req.url = '/something/else'; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(credentials).to.exist; - done(); - }); - }); - }); - - describe('client', function () { - - describe('#header', function () { - - it('should return a valid authorization header (sha1)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha1' - }; - - var header = Browser.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="'); - done(); - }); - - it('should return a valid authorization header (sha256)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="'); - done(); - }); - - it('should return a valid authorization header (no ext)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="'); - done(); - }); - - it('should return an empty authorization header on missing options', function (done) { - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST').field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - }); - - describe('#authenticate', function () { - - it('should return false on invalid header', function (done) { - - var res = { - headers: { - 'server-authorization': 'Hawk mac="abc", bad="xyz"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should return false on invalid mac', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(false); - done(); - }); - - it('should return true on ignoring hash', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var res = { - headers: { - 'www-authenticate': 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - var res = { - headers: { - 'www-authenticate': 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, credentials)).to.equal(false); - done(); - }); - }); - - describe('#message', function () { - it('should generate an authorization then successfully parse it', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should fail on missing host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Browser.client.message(null, 8080, 'some message', { credentials: credentials }); - expect(auth).to.not.exist; - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var auth = Browser.client.message('example.com', 8080, 'some message', {}); - expect(auth).to.not.exist; - done(); - }); - - it('should fail on invalid algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var creds = Hoek.clone(credentials); - creds.algorithm = 'blah'; - var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: creds }); - expect(auth).to.not.exist; - done(); - }); - }); - }); - }); - - describe('#parseAuthorizationHeader', function (done) { - - it('returns null on missing header', function (done) { - - expect(Browser.utils.parseAuthorizationHeader()).to.equal(null); - done(); - }); - - it('returns null on bad header syntax (structure)', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk')).to.equal(null); - done(); - }); - - it('returns null on bad header syntax (parts)', function (done) { - - expect(Browser.utils.parseAuthorizationHeader(' ')).to.equal(null); - done(); - }); - - it('returns null on bad scheme name', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Basic asdasd')).to.equal(null); - done(); - }); - - it('returns null on bad attribute value', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk test="\t"', ['test'])).to.equal(null); - done(); - }); - - it('returns null on duplicated attribute', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk test="a", test="b"', ['test'])).to.equal(null); - done(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js deleted file mode 100755 index bcc4222a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js +++ /dev/null @@ -1,206 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('client', function () { - - describe('#header', function () { - - it('should return a valid authorization header (sha1)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha1' - }; - - var header = Hawk.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="'); - done(); - }); - - it('should return a valid authorization header (sha256)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="'); - done(); - }); - - it('should return a valid authorization header (no ext)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="'); - done(); - }); - - it('should return an empty authorization header on missing options', function (done) { - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST').field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - }); - - describe('#authenticate', function () { - - it('should return false on invalid header', function (done) { - - var res = { - headers: { - 'server-authorization': 'Hawk mac="abc", bad="xyz"' - } - }; - - expect(Hawk.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should return false on invalid mac', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(false); - done(); - }); - - it('should return true on ignoring hash', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var header = 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"'; - expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, {})).to.equal(false); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - var header = 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"'; - expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, credentials)).to.equal(false); - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js deleted file mode 100755 index b62c2177..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js +++ /dev/null @@ -1,86 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Crypto', function () { - - describe('#generateNormalizedString', function () { - - it('should return a valid normalized string', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080 - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\n\n'); - - done(); - }); - - it('should return a valid normalized string (ext)', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080, - ext: 'this is some app data' - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\nthis is some app data\n'); - - done(); - }); - - it('should return a valid normalized string (payload + ext)', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080, - hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=', - ext: 'this is some app data' - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\nU4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=\nthis is some app data\n'); - - done(); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js deleted file mode 100755 index ba837388..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js +++ /dev/null @@ -1,316 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a header then successfully parse it (configuration)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header(Url.parse('http://example.com:8080/resource/4?filter=a'), req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (node request)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' }); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header options)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then fails to parse it (missing server header hash)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (with hash)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it then validate payload', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true; - expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false; - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app, dlg)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - expect(artifacts.dlg).to.equal('23434szr3q4d'); - done(); - }); - }); - }); - - it('should generate a header then fail authentication due to bad hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad payload hash'); - done(); - }); - }); - }); - - it('should generate a header for one resource then fail to authenticate another', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - req.url = '/something/else'; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(credentials).to.exist; - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js deleted file mode 100755 index 04b91d41..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js +++ /dev/null @@ -1,246 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate an authorization then successfully parse it', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should fail authorization on mismatching host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example1.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - it('should fail authorization on stale timestamp', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - done(); - }); - }); - }); - - it('should fail authorization on invalid authorization', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - delete auth.id; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid authorization'); - done(); - }); - }); - }); - - it('should fail authorization on bad hash', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message1', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Bad message hash'); - done(); - }); - }); - }); - - it('should fail authorization on nonce error', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { nonceFunc: function (nonce, ts, callback) { callback (new Error('kaboom')); } }, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid nonce'); - done(); - }); - }); - }); - - it('should fail authorization on credentials error', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(new Error('kablooey')); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('kablooey'); - done(); - }); - }); - }); - - it('should fail authorization on missing credentials', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown credentials'); - done(); - }); - }); - }); - - it('should fail authorization on invalid credentials', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(null, {}); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - done(); - }); - }); - }); - - it('should fail authorization on invalid credentials algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(null, { key: '123', algorithm: '456' }); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - done(); - }); - }); - }); - - it('should fail on missing host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message(null, 8080, 'some message', { credentials: credentials }); - expect(auth).to.not.exist; - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', {}); - expect(auth).to.not.exist; - done(); - }); - - it('should fail on invalid algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var creds = Hoek.clone(credentials); - creds.algorithm = 'blah'; - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: creds }); - expect(auth).to.not.exist; - done(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js deleted file mode 100755 index f39e033d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js +++ /dev/null @@ -1,98 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('README', function () { - - describe('core', function () { - - var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' - }; - - var options = { - credentials: credentials, - timestamp: 1353832234, - nonce: 'j4h3g2', - ext: 'some-app-ext-data' - }; - - it('should generate a header protocol example', function (done) { - - var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', options).field; - - expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="'); - done(); - }); - - it('should generate a normalized string protocol example', function (done) { - - var normalized = Hawk.crypto.generateNormalizedString('header', { - credentials: credentials, - ts: options.timestamp, - nonce: options.nonce, - method: 'GET', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8000, - ext: options.ext - }); - - expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nGET\n/resource?a=1&b=2\nexample.com\n8000\n\nsome-app-ext-data\n'); - done(); - }); - - var payloadOptions = Hoek.clone(options); - payloadOptions.payload = 'Thank you for flying Hawk'; - payloadOptions.contentType = 'text/plain'; - - it('should generate a header protocol example (with payload)', function (done) { - - var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'POST', payloadOptions).field; - - expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="'); - done(); - }); - - it('should generate a normalized string protocol example (with payload)', function (done) { - - var normalized = Hawk.crypto.generateNormalizedString('header', { - credentials: credentials, - ts: options.timestamp, - nonce: options.nonce, - method: 'POST', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8000, - hash: Hawk.crypto.calculatePayloadHash(payloadOptions.payload, credentials.algorithm, payloadOptions.contentType), - ext: options.ext - }); - - expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n'); - done(); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js deleted file mode 100755 index 3e92427a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js +++ /dev/null @@ -1,686 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('server', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - describe('#authenticate', function () { - - it('should parse a valid authentication header (sha1)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (sha256)', function (done) { - - var req = { - method: 'GET', - url: '/resource/1?b=1&a=2', - host: 'example.com', - port: 8000, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (host override)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example1.com:8080', - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (host port override)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example1.com:80', - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', port: 8080, localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (POST with payload)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123456", ts="1357926341", nonce="1AwuJD", hash="qAiXIVv+yjDATneWxZP2YCTa9aHRgQdnH9b3Wc+o3dg=", ext="some-app-data", mac="UeYcj5UoTVaAWXNvJfLVia7kU3VabxCqrccXP8sUGC4="' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1357926341000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should fail on missing hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/1?b=1&a=2', - host: 'example.com', - port: 8000, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { payload: 'body', localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing required payload hash'); - done(); - }); - }); - - it('should fail on a stale timestamp', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123456", ts="1362337299", nonce="UzmxSs", ext="some-app-data", mac="wnNUxchvvryMH2RxckTdZ/gY3ijzvccx4keVvELC61w="' - }; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Stale timestamp'); - var header = err.response.headers['WWW-Authenticate']; - var ts = header.match(/^Hawk ts\=\"(\d+)\"\, tsm\=\"([^\"]+)\"\, error=\"Stale timestamp\"$/); - var now = Hawk.utils.now(); - expect(parseInt(ts[1], 10) * 1000).to.be.within(now - 1000, now + 1000); - - var res = { - headers: { - 'www-authenticate': header - } - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - - it('should fail on a replay', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="bXx7a7p1h9QYQNZ8x7QhvDQym8ACgab4m3lVSFn4DBw=", ext="hello"' - }; - - var memoryCache = {}; - var options = { - localtimeOffsetMsec: 1353788437000 - Hawk.utils.now(), - nonceFunc: function (nonce, ts, callback) { - - if (memoryCache[nonce]) { - return callback(new Error()); - } - - memoryCache[nonce] = true; - return callback(); - } - }; - - Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - - Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid nonce'); - done(); - }); - }); - }); - - it('should fail on an invalid authentication header: wrong scheme', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Basic asdasdasdasd' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.not.exist; - done(); - }); - }); - - it('should fail on an invalid authentication header: no scheme', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: '!@#' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid header syntax'); - done(); - }); - }); - - it('should fail on an missing authorization header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.isMissing).to.equal(true); - done(); - }); - }); - - it('should fail on an missing host header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (id)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (ts)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (nonce)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (mac)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an unknown authorization attribute', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", x="3", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown attribute: x'); - done(); - }); - }); - - it('should fail on an bad authorization header format', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123\\", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad header format'); - done(); - }); - }); - - it('should fail on an bad authorization attribute value', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="\t", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad attribute value: id'); - done(); - }); - }); - - it('should fail on an empty authorization attribute value', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad attribute value: id'); - done(); - }); - }); - - it('should fail on duplicated authorization attribute key', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", id="456", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Duplicate attribute: id'); - done(); - }); - }); - - it('should fail on an invalid authorization header format', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid header syntax'); - done(); - }); - }); - - it('should fail on an bad host header (missing host)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: ':8080', - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on an bad host header (pad port)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:something', - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on credentialsFunc error', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - return callback(new Error('Unknown user')); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown user'); - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - return callback(null, null); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown credentials'); - done(); - }); - }); - - it('should fail on invalid credentials', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - }); - - it('should fail on unknown credentials algorithm', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'hmac-sha-0', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - }); - - it('should fail on unknown bad mac', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcU4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - describe('#header', function () { - - it('should return an empty authorization header on missing options', function (done) { - - var header = Hawk.server.header(); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on missing credentials', function (done) { - - var header = Hawk.server.header(null, {}); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q' - }; - - var header = Hawk.server.header(credentials); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var artifacts = { - id: '123456' - }; - - var credentials = { - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Hawk.server.header(credentials, artifacts); - expect(header).to.equal(''); - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js deleted file mode 100755 index 44ffd7fb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js +++ /dev/null @@ -1,456 +0,0 @@ -// Load modules - -var Http = require('http'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Uri', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a bewit then successfully authenticate it', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 80 - }; - - credentialsFunc('123456', function (err, credentials) { - - var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100, ext: 'some-app-data' }); - req.url += '&bewit=' + bewit; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a bewit then successfully authenticate it (no ext)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 80 - }; - - credentialsFunc('123456', function (err, credentials) { - - var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100 }); - req.url += '&bewit=' + bewit; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should successfully authenticate a request (last param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should successfully authenticate a request (first param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ&a=1&b=2', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should successfully authenticate a request (only param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should fail on multiple authentication', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080, - authorization: 'Basic asdasdasdasd' - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Multiple authentications'); - done(); - }); - }); - - it('should fail on method other than GET', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - var exp = Math.floor(Hawk.utils.now() / 1000) + 60; - var ext = 'some-app-data'; - var mac = Hawk.crypto.calculateMac('bewit', credentials, { - timestamp: exp, - nonce: '', - method: req.method, - resource: req.url, - host: req.host, - port: req.port, - ext: ext - }); - - var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + ext; - - req.url += '&bewit=' + Hawk.utils.base64urlEncode(bewit); - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid method'); - done(); - }); - }); - }); - - it('should fail on invalid host header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - headers: { - host: 'example.com:something' - } - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on empty bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Empty bewit'); - expect(err.isMissing).to.not.exist; - done(); - }); - }); - - it('should fail on invalid bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=*', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid bewit encoding'); - expect(err.isMissing).to.not.exist; - done(); - }); - }); - - it('should fail on missing bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.not.exist; - expect(err.isMissing).to.equal(true); - done(); - }); - }); - - it('should fail on invalid bewit structure', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=abc', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid bewit structure'); - done(); - }); - }); - - it('should fail on empty bewit attribute', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=YVxcY1xk', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing bewit attributes'); - done(); - }); - }); - - it('should fail on expired access', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDEzNTY0MTg1ODNcWk1wZlMwWU5KNHV0WHpOMmRucTRydEk3NXNXTjFjeWVITTcrL0tNZFdVQT1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Access expired'); - done(); - }); - }); - - it('should fail on credentials function error', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(Hawk.error.badRequest('Boom')); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Boom'); - done(); - }); - }); - - it('should fail on null credentials function response', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, null); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown credentials'); - done(); - }); - }); - - it('should fail on invalid credentials function response', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, {}); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - done(); - }); - }); - - it('should fail on invalid credentials function response (unknown algorithm)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'xxx' }); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - done(); - }); - }); - - it('should fail on expired access', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'sha256' }); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - describe('#getBewit', function () { - - it('should return a valid bewit value', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' }); - expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdca3NjeHdOUjJ0SnBQMVQxekRMTlBiQjVVaUtJVTl0T1NKWFRVZEc3WDloOD1ceGFuZHlhbmR6'); - done(); - }); - - it('should return an empty bewit on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' }); - expect(bewit).to.equal(''); - done(); - }); - - it('should return an empty bewit on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, ext: 'xandyandz' }); - expect(bewit).to.equal(''); - done(); - }); - - it('should return an empty bewit on missing options', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow'); - expect(bewit).to.equal(''); - done(); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js deleted file mode 100755 index 0f5fef77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js +++ /dev/null @@ -1,120 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hawk = require('../lib'); -var Package = require('../package.json'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Utils', function () { - - describe('#parseHost', function () { - - it('returns port 80 for non tls node request', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com', - 'content-type': 'text/plain;x=y' - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(80); - done(); - }); - - it('returns port 443 for non tls node request', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443); - done(); - }); - - it('returns port 443 for non tls node request (IPv6)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: '[123:123:123]', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443); - done(); - }); - - it('parses IPv6 headers', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: '[123:123:123]:8000', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - var host = Hawk.utils.parseHost(req, 'Host'); - expect(host.port).to.equal('8000'); - expect(host.name).to.equal('[123:123:123]'); - done(); - }); - }); - - describe('#version', function () { - - it('returns the correct package version number', function (done) { - - expect(Hawk.utils.version()).to.equal(Package.version); - done(); - }); - }); - - describe('#unauthorized', function () { - - it('returns a hawk 401', function (done) { - - expect(Hawk.utils.unauthorized('kaboom').response.headers['WWW-Authenticate']).to.equal('Hawk error="kaboom"'); - done(); - }); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el deleted file mode 100644 index 3bc9235f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el +++ /dev/null @@ -1,6 +0,0 @@ -((nil . ((indent-tabs-mode . nil) - (tab-width . 8) - (fill-column . 80))) - (js-mode . ((js-indent-level . 2) - (indent-tabs-mode . nil) - ))) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore deleted file mode 100644 index c143fb3a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -.gitmodules -deps -docs -Makefile -node_modules -test -tools \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE deleted file mode 100644 index f6d947d2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md deleted file mode 100644 index 0c707149..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# node-http-signature - -node-http-signature is a node.js library that has client and server components -for Joyent's [HTTP Signature Scheme](http_signing.md). - -## Usage - -Note the example below signs a request with the same key/cert used to start an -HTTP server. This is almost certainly not what you actaully want, but is just -used to illustrate the API calls; you will need to provide your own key -management in addition to this library. - -### Client - - var fs = require('fs'); - var https = require('https'); - var httpSignature = require('http-signature'); - - var key = fs.readFileSync('./key.pem', 'ascii'); - - var options = { - host: 'localhost', - port: 8443, - path: '/', - method: 'GET', - headers: {} - }; - - // Adds a 'Date' header in, signs it, and adds the - // 'Authorization' header in. - var req = https.request(options, function(res) { - console.log(res.statusCode); - }); - - - httpSignature.sign(req, { - key: key, - keyId: './cert.pem' - }); - - req.end(); - -### Server - - var fs = require('fs'); - var https = require('https'); - var httpSignature = require('http-signature'); - - var options = { - key: fs.readFileSync('./key.pem'), - cert: fs.readFileSync('./cert.pem') - }; - - https.createServer(options, function (req, res) { - var rc = 200; - var parsed = httpSignature.parseRequest(req); - var pub = fs.readFileSync(parsed.keyId, 'ascii'); - if (!httpSignature.verifySignature(parsed, pub)) - rc = 401; - - res.writeHead(rc); - res.end(); - }).listen(8443); - -## Installation - - npm install http-signature - -## License - -MIT. - -## Bugs - -See <https://github.com/joyent/node-http-signature/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md deleted file mode 100644 index ba7321da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md +++ /dev/null @@ -1,296 +0,0 @@ -# Abstract - -This document describes a way to add origin authentication, message integrity, -and replay resistance to HTTP REST requests. It is intended to be used over -the HTTPS protocol. - -# Copyright Notice - -Copyright (c) 2011 Joyent, Inc. and the persons identified as document authors. -All rights reserved. - -Code Components extracted from this document must include MIT License text. - -# Introduction - -This protocol is intended to provide a standard way for clients to sign HTTP -requests. RFC2617 (HTTP Authentication) defines Basic and Digest authentication -mechanisms, and RFC5246 (TLS 1.2) defines client-auth, both of which are widely -employed on the Internet today. However, it is common place that the burdens of -PKI prevent web service operators from deploying that methodoloy, and so many -fall back to Basic authentication, which has poor security characteristics. - -Additionally, OAuth provides a fully-specified alternative for authorization -of web service requests, but is not (always) ideal for machine to machine -communication, as the key acquisition steps (generally) imply a fixed -infrastructure that may not make sense to a service provider (e.g., symmetric -keys). - -Several web service providers have invented their own schemes for signing -HTTP requests, but to date, none have been placed in the public domain as a -standard. This document serves that purpose. There are no techniques in this -proposal that are novel beyond previous art, however, this aims to be a simple -mechanism for signing these requests. - -# Signature Authentication Scheme - -The "signature" authentication scheme is based on the model that the client must -authenticate itself with a digital signature produced by either a private -asymmetric key (e.g., RSA) or a shared symmetric key (e.g., HMAC). The scheme -is parameterized enough such that it is not bound to any particular key type or -signing algorithm. However, it does explicitly assume that clients can send an -HTTP `Date` header. - -## Authorization Header - -The client is expected to send an Authorization header (as defined in RFC 2617) -with the following parameterization: - - credentials := "Signature" params - params := 1#(keyId | algorithm | [headers] | [ext] | signature) - digitalSignature := plain-string - - keyId := "keyId" "=" <"> plain-string <"> - algorithm := "algorithm" "=" <"> plain-string <"> - headers := "headers" "=" <"> 1#headers-value <"> - ext := "ext" "=" <"> plain-string <"> - signature := "signature" "=" <"> plain-string <"> - - headers-value := plain-string - plain-string = 1*( %x20-21 / %x23-5B / %x5D-7E ) - -### Signature Parameters - -#### keyId - -REQUIRED. The `keyId` field is an opaque string that the server can use to look -up the component they need to validate the signature. It could be an SSH key -fingerprint, an LDAP DN, etc. Management of keys and assignment of `keyId` is -out of scope for this document. - -#### algorithm - -REQUIRED. The `algorithm` parameter is used if the client and server agree on a -non-standard digital signature algorithm. The full list of supported signature -mechanisms is listed below. - -#### headers - -OPTIONAL. The `headers` parameter is used to specify the list of HTTP headers -used to sign the request. If specified, it should be a quoted list of HTTP -header names, separated by a single space character. By default, only one -HTTP header is signed, which is the `Date` header. Note that the list MUST be -specified in the order the values are concatenated together during signing. To -include the HTTP request line in the signature calculation, use the special -`request-line` value. While this is overloading the definition of `headers` in -HTTP linguism, the request-line is defined in RFC 2616, and as the outlier from -headers in useful signature calculation, it is deemed simpler to simply use -`request-line` than to add a separate parameter for it. - -#### extensions - -OPTIONAL. The `extensions` parameter is used to include additional information -which is covered by the request. The content and format of the string is out of -scope for this document, and expected to be specified by implementors. - -#### signature - -REQUIRED. The `signature` parameter is a `Base64` encoded digital signature -generated by the client. The client uses the `algorithm` and `headers` request -parameters to form a canonicalized `signing string`. This `signing string` is -then signed with the key associated with `keyId` and the algorithm -corresponding to `algorithm`. The `signature` parameter is then set to the -`Base64` encoding of the signature. - -### Signing String Composition - -In order to generate the string that is signed with a key, the client MUST take -the values of each HTTP header specified by `headers` in the order they appear. - -1. If the header name is not `request-line` then append the lowercased header - name followed with an ASCII colon `:` and an ASCII space ` `. -2. If the header name is `request-line` then appened the HTTP request line, - otherwise append the header value. -3. If value is not the last value then append an ASCII newline `\n`. The string - MUST NOT include a trailing ASCII newline. - -# Example Requests - -All requests refer to the following request (body ommitted): - - POST /foo HTTP/1.1 - Host: example.org - Date: Tue, 07 Jun 2011 20:51:35 GMT - Content-Type: application/json - Content-MD5: h0auK8hnYJKmHTLhKtMTkQ== - Content-Length: 123 - -The "rsa-key-1" keyId refers to a private key known to the client and a public -key known to the server. The "hmac-key-1" keyId refers to key known to the -client and server. - -## Default parameterization - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",signature="Base64(RSA-SHA256(signing string))" - -The client would compose the signing string as: - - date: Tue, 07 Jun 2011 20:51:35 GMT - -## Header List - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",headers="request-line date content-type content-md5",signature="Base64(RSA-SHA256(signing string))" - -The client would compose the signing string as (`+ "\n"` inserted for -readability): - - POST /foo HTTP/1.1 + "\n" - date: Tue, 07 Jun 2011 20:51:35 GMT + "\n" - content-type: application/json + "\n" - content-md5: h0auK8hnYJKmHTLhKtMTkQ== - -## Algorithm - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="hmac-key-1",algorithm="hmac-sha1",signature="Base64(HMAC-SHA1(signing string))" - -The client would compose the signing string as: - - date: Tue, 07 Jun 2011 20:51:35 GMT - -# Signing Algorithms - -Currently supported algorithm names are: - -* rsa-sha1 -* rsa-sha256 -* rsa-sha512 -* dsa-sha1 -* hmac-sha1 -* hmac-sha256 -* hmac-sha512 - -# Security Considerations - -## Default Parameters - -Note the default parameterization of the `Signature` scheme is only safe if all -requests are carried over a secure transport (i.e., TLS). Sending the default -scheme over a non-secure transport will leave the request vulnerable to -spoofing, tampering, replay/repudiaton, and integrity violations (if using the -STRIDE threat-modeling methodology). - -## Insecure Transports - -If sending the request over plain HTTP, service providers SHOULD require clients -to sign ALL HTTP headers, and the `request-line`. Additionally, service -providers SHOULD require `Content-MD5` calculations to be performed to ensure -against any tampering from clients. - -## Nonces - -Nonces are out of scope for this document simply because many service providers -fail to implement them correctly, or do not adopt security specfiications -because of the infrastructure complexity. Given the `header` parameterization, -a service provider is fully enabled to add nonce semantics into this scheme by -using something like an `x-request-nonce` header, and ensuring it is signed -with the `Date` header. - -## Clock Skew - -As the default scheme is to sign the `Date` header, service providers SHOULD -protect against logged replay attacks by enforcing a clock skew. The server -SHOULD be synchronized with NTP, and the recommendation in this specification -is to allow 300s of clock skew (in either direction). - -## Required Headers to Sign - -It is out of scope for this document to dictate what headers a service provider -will want to enforce, but service providers SHOULD at minimum include the -`Date` header. - -# References - -## Normative References - -* [RFC2616] Hypertext Transfer Protocol -- HTTP/1.1 -* [RFC2617] HTTP Authentication: Basic and Digest Access Authentication -* [RFC5246] The Transport Layer Security (TLS) Protocol Version 1.2 - -## Informative References - - Name: Mark Cavage (editor) - Company: Joyent, Inc. - Email: mark.cavage@joyent.com - URI: http://www.joyent.com - -# Appendix A - Test Values - -The following test data uses the RSA (2048b) keys, which we will refer -to as `keyId=Test` in the following samples: - - -----BEGIN PUBLIC KEY----- - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCFENGw33yGihy92pDjZQhl0C3 - 6rPJj+CvfSC8+q28hxA161QFNUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6 - Z4UMR7EOcpfdUE9Hf3m/hs+FUR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJw - oYi+1hqp1fIekaxsyQIDAQAB - -----END PUBLIC KEY----- - - -----BEGIN RSA PRIVATE KEY----- - MIICXgIBAAKBgQDCFENGw33yGihy92pDjZQhl0C36rPJj+CvfSC8+q28hxA161QF - NUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6Z4UMR7EOcpfdUE9Hf3m/hs+F - UR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJwoYi+1hqp1fIekaxsyQIDAQAB - AoGBAJR8ZkCUvx5kzv+utdl7T5MnordT1TvoXXJGXK7ZZ+UuvMNUCdN2QPc4sBiA - QWvLw1cSKt5DsKZ8UETpYPy8pPYnnDEz2dDYiaew9+xEpubyeW2oH4Zx71wqBtOK - kqwrXa/pzdpiucRRjk6vE6YY7EBBs/g7uanVpGibOVAEsqH1AkEA7DkjVH28WDUg - f1nqvfn2Kj6CT7nIcE3jGJsZZ7zlZmBmHFDONMLUrXR/Zm3pR5m0tCmBqa5RK95u - 412jt1dPIwJBANJT3v8pnkth48bQo/fKel6uEYyboRtA5/uHuHkZ6FQF7OUkGogc - mSJluOdc5t6hI1VsLn0QZEjQZMEOWr+wKSMCQQCC4kXJEsHAve77oP6HtG/IiEn7 - kpyUXRNvFsDE0czpJJBvL/aRFUJxuRK91jhjC68sA7NsKMGg5OXb5I5Jj36xAkEA - gIT7aFOYBFwGgQAQkWNKLvySgKbAZRTeLBacpHMuQdl1DfdntvAyqpAZ0lY0RKmW - G6aFKaqQfOXKCyWoUiVknQJAXrlgySFci/2ueKlIE1QqIiLSZ8V8OlpFLRnb1pzI - 7U1yQXnTAEFYM560yJlzUpOb1V4cScGd365tiSMvxLOvTA== - -----END RSA PRIVATE KEY----- - -And all examples use this request: - - POST /foo?param=value&pet=dog HTTP/1.1 - Host: example.com - Date: Thu, 05 Jan 2012 21:31:40 GMT - Content-Type: application/json - Content-MD5: Sd/dVLAcvNLSq16eXua5uQ== - Content-Length: 18 - - {"hello": "world"} - -### Default - -The string to sign would be: - - date: Thu, 05 Jan 2012 21:31:40 GMT - -The Authorization header would be: - - Authorization: Signature keyId="Test",algorithm="rsa-sha256",signature="JldXnt8W9t643M2Sce10gqCh/+E7QIYLiI+bSjnFBGCti7s+mPPvOjVb72sbd1FjeOUwPTDpKbrQQORrm+xBYfAwCxF3LBSSzORvyJ5nRFCFxfJ3nlQD6Kdxhw8wrVZX5nSem4A/W3C8qH5uhFTRwF4ruRjh+ENHWuovPgO/HGQ=" - -### All Headers - -Parameterized to include all headers, the string to sign would be (`+ "\n"` -inserted for readability): - - POST /foo?param=value&pet=dog HTTP/1.1 + "\n" - host: example.com + "\n" - date: Thu, 05 Jan 2012 21:31:40 GMT + "\n" - content-type: application/json + "\n" - content-md5: Sd/dVLAcvNLSq16eXua5uQ== + "\n" - content-length: 18 - -The Authorization header would be: - - Authorization: Signature keyId="Test",algorithm="rsa-sha256",headers="request-line host date content-type content-md5 content-length",signature="Gm7W/r+e90REDpWytALMrft4MqZxCmslOTOvwJX17ViEBA5E65QqvWI0vIH3l/vSsGiaMVmuUgzYsJLYMLcm5dGrv1+a+0fCoUdVKPZWHyImQEqpLkopVwqEH67LVECFBqFTAKlQgBn676zrfXQbb+b/VebAsNUtvQMe6cTjnDY=" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js deleted file mode 100644 index 3ac70b77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2011 Joyent, Inc. All rights reserved. - -var parser = require('./parser'); -var signer = require('./signer'); -var verify = require('./verify'); -var util = require('./util'); - - - -///--- API - -module.exports = { - - parse: parser.parseRequest, - parseRequest: parser.parseRequest, - - sign: signer.signRequest, - signRequest: signer.signRequest, - - sshKeyToPEM: util.sshKeyToPEM, - sshKeyFingerprint: util.fingerprint, - - verify: verify.verifySignature, - verifySignature: verify.verifySignature -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js deleted file mode 100644 index fd9ac102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js +++ /dev/null @@ -1,304 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var util = require('util'); - - - -///--- Globals - -var Algorithms = { - 'rsa-sha1': true, - 'rsa-sha256': true, - 'rsa-sha512': true, - 'dsa-sha1': true, - 'hmac-sha1': true, - 'hmac-sha256': true, - 'hmac-sha512': true -}; - -var State = { - New: 0, - Params: 1 -}; - -var ParamsState = { - Name: 0, - Quote: 1, - Value: 2, - Comma: 3 -}; - - - -///--- Specific Errors - -function HttpSignatureError(message, caller) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, caller || HttpSignatureError); - - this.message = message; - this.name = caller.name; -} -util.inherits(HttpSignatureError, Error); - -function ExpiredRequestError(message) { - HttpSignatureError.call(this, message, ExpiredRequestError); -} -util.inherits(ExpiredRequestError, HttpSignatureError); - - -function InvalidHeaderError(message) { - HttpSignatureError.call(this, message, InvalidHeaderError); -} -util.inherits(InvalidHeaderError, HttpSignatureError); - - -function InvalidParamsError(message) { - HttpSignatureError.call(this, message, InvalidParamsError); -} -util.inherits(InvalidParamsError, HttpSignatureError); - - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - - - -///--- Exported API - -module.exports = { - - /** - * Parses the 'Authorization' header out of an http.ServerRequest object. - * - * Note that this API will fully validate the Authorization header, and throw - * on any error. It will not however check the signature, or the keyId format - * as those are specific to your environment. You can use the options object - * to pass in extra constraints. - * - * As a response object you can expect this: - * - * { - * "scheme": "Signature", - * "params": { - * "keyId": "foo", - * "algorithm": "rsa-sha256", - * "headers": [ - * "date" or "x-date", - * "content-md5" - * ], - * "signature": "base64" - * }, - * "signingString": "ready to be passed to crypto.verify()" - * } - * - * @param {Object} request an http.ServerRequest. - * @param {Object} options an optional options object with: - * - clockSkew: allowed clock skew in seconds (default 300). - * - headers: required header names (def: date or x-date) - * - algorithms: algorithms to support (default: all). - * @return {Object} parsed out object (see above). - * @throws {TypeError} on invalid input. - * @throws {InvalidHeaderError} on an invalid Authorization header error. - * @throws {InvalidParamsError} if the params in the scheme are invalid. - * @throws {MissingHeaderError} if the params indicate a header not present, - * either in the request headers from the params, - * or not in the params from a required header - * in options. - * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew. - */ - parseRequest: function parseRequest(request, options) { - assert.object(request, 'request'); - assert.object(request.headers, 'request.headers'); - if (options === undefined) { - options = {}; - } - if (options.headers === undefined) { - options.headers = [request.headers['x-date'] ? 'x-date' : 'date']; - } - assert.object(options, 'options'); - assert.arrayOfString(options.headers, 'options.headers'); - assert.optionalNumber(options.clockSkew, 'options.clockSkew'); - - if (!request.headers.authorization) - throw new MissingHeaderError('no authorization header present in ' + - 'the request'); - - options.clockSkew = options.clockSkew || 300; - - - var i = 0; - var state = State.New; - var substate = ParamsState.Name; - var tmpName = ''; - var tmpValue = ''; - - var parsed = { - scheme: '', - params: {}, - signingString: '', - - get algorithm() { - return this.params.algorithm.toUpperCase(); - }, - - get keyId() { - return this.params.keyId; - } - - }; - - var authz = request.headers.authorization; - for (i = 0; i < authz.length; i++) { - var c = authz.charAt(i); - - switch (Number(state)) { - - case State.New: - if (c !== ' ') parsed.scheme += c; - else state = State.Params; - break; - - case State.Params: - switch (Number(substate)) { - - case ParamsState.Name: - var code = c.charCodeAt(0); - // restricted name of A-Z / a-z - if ((code >= 0x41 && code <= 0x5a) || // A-Z - (code >= 0x61 && code <= 0x7a)) { // a-z - tmpName += c; - } else if (c === '=') { - if (tmpName.length === 0) - throw new InvalidHeaderError('bad param format'); - substate = ParamsState.Quote; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Quote: - if (c === '"') { - tmpValue = ''; - substate = ParamsState.Value; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Value: - if (c === '"') { - parsed.params[tmpName] = tmpValue; - substate = ParamsState.Comma; - } else { - tmpValue += c; - } - break; - - case ParamsState.Comma: - if (c === ',') { - tmpName = ''; - substate = ParamsState.Name; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - default: - throw new Error('Invalid substate'); - } - break; - - default: - throw new Error('Invalid substate'); - } - - } - - if (!parsed.params.headers || parsed.params.headers === '') { - if (request.headers['x-date']) { - parsed.params.headers = ['x-date']; - } else { - parsed.params.headers = ['date']; - } - } else { - parsed.params.headers = parsed.params.headers.split(' '); - } - - // Minimally validate the parsed object - if (!parsed.scheme || parsed.scheme !== 'Signature') - throw new InvalidHeaderError('scheme was not "Signature"'); - - if (!parsed.params.keyId) - throw new InvalidHeaderError('keyId was not specified'); - - if (!parsed.params.algorithm) - throw new InvalidHeaderError('algorithm was not specified'); - - if (!parsed.params.signature) - throw new InvalidHeaderError('signature was not specified'); - - // Check the algorithm against the official list - parsed.params.algorithm = parsed.params.algorithm.toLowerCase(); - if (!Algorithms[parsed.params.algorithm]) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not supported'); - - // Build the signingString - for (i = 0; i < parsed.params.headers.length; i++) { - var h = parsed.params.headers[i].toLowerCase(); - parsed.params.headers[i] = h; - - if (h !== 'request-line') { - var value = request.headers[h]; - if (!value) - throw new MissingHeaderError(h + ' was not in the request'); - parsed.signingString += h + ': ' + value; - } else { - parsed.signingString += - request.method + ' ' + request.url + ' HTTP/' + request.httpVersion; - } - - if ((i + 1) < parsed.params.headers.length) - parsed.signingString += '\n'; - } - - // Check against the constraints - var date; - if (request.headers.date || request.headers['x-date']) { - if (request.headers['x-date']) { - date = new Date(request.headers['x-date']); - } else { - date = new Date(request.headers.date); - } - var now = new Date(); - var skew = Math.abs(now.getTime() - date.getTime()); - - if (skew > options.clockSkew * 1000) { - throw new ExpiredRequestError('clock skew of ' + - (skew / 1000) + - 's was greater than ' + - options.clockSkew + 's'); - } - } - - options.headers.forEach(function (hdr) { - // Remember that we already checked any headers in the params - // were in the request, so if this passes we're good. - if (parsed.params.headers.indexOf(hdr) < 0) - throw new MissingHeaderError(hdr + ' was not a signed header'); - }); - - if (options.algorithms) { - if (options.algorithms.indexOf(parsed.params.algorithm) === -1) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not a supported algorithm'); - } - - return parsed; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js deleted file mode 100644 index 8095f0d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); -var http = require('http'); - -var sprintf = require('util').format; - - - -///--- Globals - -var Algorithms = { - 'rsa-sha1': true, - 'rsa-sha256': true, - 'rsa-sha512': true, - 'dsa-sha1': true, - 'hmac-sha1': true, - 'hmac-sha256': true, - 'hmac-sha512': true -}; - -var Authorization = - 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"'; - - - -///--- Specific Errors - -function MissingHeaderError(message) { - this.name = 'MissingHeaderError'; - this.message = message; - this.stack = (new Error()).stack; -} -MissingHeaderError.prototype = new Error(); - - -function InvalidAlgorithmError(message) { - this.name = 'InvalidAlgorithmError'; - this.message = message; - this.stack = (new Error()).stack; -} -InvalidAlgorithmError.prototype = new Error(); - - - -///--- Internal Functions - -function _pad(val) { - if (parseInt(val, 10) < 10) { - val = '0' + val; - } - return val; -} - - -function _rfc1123() { - var date = new Date(); - - var months = ['Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec']; - var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - return days[date.getUTCDay()] + ', ' + - _pad(date.getUTCDate()) + ' ' + - months[date.getUTCMonth()] + ' ' + - date.getUTCFullYear() + ' ' + - _pad(date.getUTCHours()) + ':' + - _pad(date.getUTCMinutes()) + ':' + - _pad(date.getUTCSeconds()) + - ' GMT'; -} - - - -///--- Exported API - -module.exports = { - - /** - * Adds an 'Authorization' header to an http.ClientRequest object. - * - * Note that this API will add a Date header if it's not already set. Any - * other headers in the options.headers array MUST be present, or this - * will throw. - * - * You shouldn't need to check the return type; it's just there if you want - * to be pedantic. - * - * @param {Object} request an instance of http.ClientRequest. - * @param {Object} options signing parameters object: - * - {String} keyId required. - * - {String} key required (either a PEM or HMAC key). - * - {Array} headers optional; defaults to ['date']. - * - {String} algorithm optional; defaults to 'rsa-sha256'. - * - {String} httpVersion optional; defaults to '1.1'. - * @return {Boolean} true if Authorization (and optionally Date) were added. - * @throws {TypeError} on bad parameter types (input). - * @throws {InvalidAlgorithmError} if algorithm was bad. - * @throws {MissingHeaderError} if a header to be signed was specified but - * was not present. - */ - signRequest: function signRequest(request, options) { - assert.object(request, 'request'); - assert.object(options, 'options'); - assert.optionalString(options.algorithm, 'options.algorithm'); - assert.string(options.keyId, 'options.keyId'); - assert.optionalArrayOfString(options.headers, 'options.headers'); - assert.optionalString(options.httpVersion, 'options.httpVersion'); - - if (!request.getHeader('Date')) - request.setHeader('Date', _rfc1123()); - if (!options.headers) - options.headers = ['date']; - if (!options.algorithm) - options.algorithm = 'rsa-sha256'; - if (!options.httpVersion) - options.httpVersion = '1.1'; - - options.algorithm = options.algorithm.toLowerCase(); - - if (!Algorithms[options.algorithm]) - throw new InvalidAlgorithmError(options.algorithm + ' is not supported'); - - var i; - var stringToSign = ''; - for (i = 0; i < options.headers.length; i++) { - if (typeof (options.headers[i]) !== 'string') - throw new TypeError('options.headers must be an array of Strings'); - - var h = options.headers[i].toLowerCase(); - - if (h !== 'request-line') { - var value = request.getHeader(h); - if (!value) { - throw new MissingHeaderError(h + ' was not in the request'); - } - stringToSign += h + ': ' + value; - } else { - value = - stringToSign += - request.method + ' ' + request.path + ' HTTP/' + options.httpVersion; - } - - if ((i + 1) < options.headers.length) - stringToSign += '\n'; - } - - var alg = options.algorithm.match(/(hmac|rsa)-(\w+)/); - var signature; - if (alg[1] === 'hmac') { - var hmac = crypto.createHmac(alg[2].toUpperCase(), options.key); - hmac.update(stringToSign); - signature = hmac.digest('base64'); - } else { - var signer = crypto.createSign(options.algorithm.toUpperCase()); - signer.update(stringToSign); - signature = signer.sign(options.key, 'base64'); - } - - request.setHeader('Authorization', sprintf(Authorization, - options.keyId, - options.algorithm, - options.headers.join(' '), - signature)); - - return true; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js deleted file mode 100644 index 30bbf045..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); - -var asn1 = require('asn1'); -var ctype = require('ctype'); - - - -///--- Helpers - -function readNext(buffer, offset) { - var len = ctype.ruint32(buffer, 'big', offset); - offset += 4; - - var newOffset = offset + len; - - return { - data: buffer.slice(offset, newOffset), - offset: newOffset - }; -} - - -function writeInt(writer, buffer) { - writer.writeByte(0x02); // ASN1.Integer - writer.writeLength(buffer.length); - - for (var i = 0; i < buffer.length; i++) - writer.writeByte(buffer[i]); - - return writer; -} - - -function rsaToPEM(key) { - var buffer; - var der; - var exponent; - var i; - var modulus; - var newKey = ''; - var offset = 0; - var type; - var tmp; - - try { - buffer = new Buffer(key.split(' ')[1], 'base64'); - - tmp = readNext(buffer, offset); - type = tmp.data.toString(); - offset = tmp.offset; - - if (type !== 'ssh-rsa') - throw new Error('Invalid ssh key type: ' + type); - - tmp = readNext(buffer, offset); - exponent = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - modulus = tmp.data; - } catch (e) { - throw new Error('Invalid ssh key: ' + key); - } - - // DER is a subset of BER - der = new asn1.BerWriter(); - - der.startSequence(); - - der.startSequence(); - der.writeOID('1.2.840.113549.1.1.1'); - der.writeNull(); - der.endSequence(); - - der.startSequence(0x03); // bit string - der.writeByte(0x00); - - // Actual key - der.startSequence(); - writeInt(der, modulus); - writeInt(der, exponent); - der.endSequence(); - - // bit string - der.endSequence(); - - der.endSequence(); - - tmp = der.buffer.toString('base64'); - for (i = 0; i < tmp.length; i++) { - if ((i % 64) === 0) - newKey += '\n'; - newKey += tmp.charAt(i); - } - - if (!/\\n$/.test(newKey)) - newKey += '\n'; - - return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n'; -} - - -function dsaToPEM(key) { - var buffer; - var offset = 0; - var tmp; - var der; - var newKey = ''; - - var type; - var p; - var q; - var g; - var y; - - try { - buffer = new Buffer(key.split(' ')[1], 'base64'); - - tmp = readNext(buffer, offset); - type = tmp.data.toString(); - offset = tmp.offset; - - /* JSSTYLED */ - if (!/^ssh-ds[as].*/.test(type)) - throw new Error('Invalid ssh key type: ' + type); - - tmp = readNext(buffer, offset); - p = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - q = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - g = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - y = tmp.data; - } catch (e) { - console.log(e.stack); - throw new Error('Invalid ssh key: ' + key); - } - - // DER is a subset of BER - der = new asn1.BerWriter(); - - der.startSequence(); - - der.startSequence(); - der.writeOID('1.2.840.10040.4.1'); - - der.startSequence(); - writeInt(der, p); - writeInt(der, q); - writeInt(der, g); - der.endSequence(); - - der.endSequence(); - - der.startSequence(0x03); // bit string - der.writeByte(0x00); - writeInt(der, y); - der.endSequence(); - - der.endSequence(); - - tmp = der.buffer.toString('base64'); - for (var i = 0; i < tmp.length; i++) { - if ((i % 64) === 0) - newKey += '\n'; - newKey += tmp.charAt(i); - } - - if (!/\\n$/.test(newKey)) - newKey += '\n'; - - return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n'; -} - - -///--- API - -module.exports = { - - /** - * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. - * - * The intent of this module is to interoperate with OpenSSL only, - * specifically the node crypto module's `verify` method. - * - * @param {String} key an OpenSSH public key. - * @return {String} PEM encoded form of the RSA public key. - * @throws {TypeError} on bad input. - * @throws {Error} on invalid ssh key formatted data. - */ - sshKeyToPEM: function sshKeyToPEM(key) { - assert.string(key, 'ssh_key'); - - /* JSSTYLED */ - if (/^ssh-rsa.*/.test(key)) - return rsaToPEM(key); - - /* JSSTYLED */ - if (/^ssh-ds[as].*/.test(key)) - return dsaToPEM(key); - - throw new Error('Only RSA and DSA public keys are allowed'); - }, - - - /** - * Generates an OpenSSH fingerprint from an ssh public key. - * - * @param {String} key an OpenSSH public key. - * @return {String} key fingerprint. - * @throws {TypeError} on bad input. - * @throws {Error} if what you passed doesn't look like an ssh public key. - */ - fingerprint: function fingerprint(key) { - assert.string(key, 'ssh_key'); - - var pieces = key.split(' '); - if (!pieces || !pieces.length || pieces.length < 2) - throw new Error('invalid ssh key'); - - var data = new Buffer(pieces[1], 'base64'); - - var hash = crypto.createHash('md5'); - hash.update(data); - var digest = hash.digest('hex'); - - var fp = ''; - for (var i = 0; i < digest.length; i++) { - if (i && i % 2 === 0) - fp += ':'; - - fp += digest[i]; - } - - return fp; - } - - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js deleted file mode 100644 index 5bf95896..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); - - - -///--- Exported API - -module.exports = { - - /** - * Simply wraps up the node crypto operations for you, and returns - * true or false. You are expected to pass in an object that was - * returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} key either an RSA private key PEM or HMAC secret. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - */ - verifySignature: function verifySignature(parsedSignature, key) { - assert.object(parsedSignature, 'parsedSignature'); - assert.string(key, 'key'); - - var alg = parsedSignature.algorithm.match(/(HMAC|RSA|DSA)-(\w+)/); - if (!alg || alg.length !== 3) - throw new TypeError('parsedSignature: unsupported algorithm ' + - parsedSignature.algorithm); - - if (alg[1] === 'HMAC') { - var hmac = crypto.createHmac(alg[2].toUpperCase(), key); - hmac.update(parsedSignature.signingString); - return (hmac.digest('base64') === parsedSignature.params.signature); - } else { - var verify = crypto.createVerify(alg[0]); - verify.update(parsedSignature.signingString); - return verify.verify(key, parsedSignature.params.signature, 'base64'); - } - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore deleted file mode 100644 index eb03e3e1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -*.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE deleted file mode 100644 index 9b5dcdb7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Mark Cavage, All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md deleted file mode 100644 index 7cebf7a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md +++ /dev/null @@ -1,50 +0,0 @@ -node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. -Currently BER encoding is supported; at some point I'll likely have to do DER. - -## Usage - -Mostly, if you're *actually* needing to read and write ASN.1, you probably don't -need this readme to explain what and why. If you have no idea what ASN.1 is, -see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -The source is pretty much self-explanatory, and has read/write methods for the -common types out there. - -### Decoding - -The following reads an ASN.1 sequence with a boolean. - - var Ber = require('asn1').Ber; - - var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - - reader.readSequence(); - console.log('Sequence len: ' + reader.length); - if (reader.peek() === Ber.Boolean) - console.log(reader.readBoolean()); - -### Encoding - -The following generates the same payload as above. - - var Ber = require('asn1').Ber; - - var writer = new Ber.Writer(); - - writer.startSequence(); - writer.writeBoolean(true); - writer.endSequence(); - - console.log(writer.buffer); - -## Installation - - npm install asn1 - -## License - -MIT. - -## Bugs - -See <https://github.com/mcavage/node-asn1/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js deleted file mode 100644 index ff21d4fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function(msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js deleted file mode 100644 index 4fb90aea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var errors = require('./errors'); -var types = require('./types'); - -var Reader = require('./reader'); -var Writer = require('./writer'); - - -///--- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js deleted file mode 100644 index bd3357a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var assert = require('assert'); - -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -///--- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; - - var self = this; - this.__defineGetter__('length', function() { return self._len; }); - this.__defineGetter__('offset', function() { return self._offset; }); - this.__defineGetter__('remain', function() { - return self._size - self._offset; - }); - this.__defineGetter__('buffer', function() { - return self._buf.slice(self._offset); - }); -} - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function(peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function() { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function(offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) == 0x80) { - lenB &= 0x7f; - - if (lenB == 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function(tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function() { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function() { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function() { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function(tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function(tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - var values = []; - var value = 0; - - for (var i = 0; i < this.length; i++) { - var byte = this._buf[this._offset++] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) == 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function(tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset++]; - var value = 0; - - value = fb & 0x7F; - for (var i = 1; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) == 0x80) - value = -value; - - return value; -}; - - - -///--- Exported API - -module.exports = Reader; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js deleted file mode 100644 index 8aea0001..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js deleted file mode 100644 index 7b445cc6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var assert = require('assert'); -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -///--- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof(from), 'object'); - assert.ok(to); - assert.equal(typeof(to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function(key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -///--- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = new Buffer(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; - - var self = this; - this.__defineGetter__('buffer', function() { - if (self._seq.length) - throw new InvalidAsn1Error(self._seq.length + ' unended sequence(s)'); - - return self._buf.slice(0, self._offset); - }); -} - - -Writer.prototype.writeByte = function(b) { - if (typeof(b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function() { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function(b, tag) { - if (typeof(b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof(tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof(s) + ')'); - if (typeof(tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function(buf, tag) { - if (typeof(tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function(strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function(s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof(tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function(b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function(b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function(len) { - if (typeof(len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw new InvalidAsn1ERror('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function(tag) { - if (typeof(tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function() { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw new InvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function(start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function(len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = new Buffer(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -///--- Exported API - -module.exports = Writer; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js deleted file mode 100644 index d1766e7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = require('./ber/index'); - - - -///--- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json deleted file mode 100644 index 79f0b054..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "contributors": [ - { - "name": "David Gwynne", - "email": "loki@animata.net" - }, - { - "name": "Yunong Xiao", - "email": "yunong@joyent.com" - } - ], - "name": "asn1", - "description": "Contains parsers and serializers for ASN.1 (currently BER only)", - "version": "0.1.11", - "repository": { - "type": "git", - "url": "git://github.com/mcavage/node-asn1.git" - }, - "main": "lib/index.js", - "engines": { - "node": ">=0.4.9" - }, - "dependencies": {}, - "devDependencies": { - "tap": "0.1.4" - }, - "scripts": { - "pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi", - "test": "./node_modules/.bin/tap ./tst" - }, - "readme": "node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.\nCurrently BER encoding is supported; at some point I'll likely have to do DER.\n\n## Usage\n\nMostly, if you're *actually* needing to read and write ASN.1, you probably don't\nneed this readme to explain what and why. If you have no idea what ASN.1 is,\nsee this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nThe source is pretty much self-explanatory, and has read/write methods for the\ncommon types out there.\n\n### Decoding\n\nThe following reads an ASN.1 sequence with a boolean.\n\n var Ber = require('asn1').Ber;\n\n var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));\n\n reader.readSequence();\n console.log('Sequence len: ' + reader.length);\n if (reader.peek() === Ber.Boolean)\n console.log(reader.readBoolean());\n\n### Encoding\n\nThe following generates the same payload as above.\n\n var Ber = require('asn1').Ber;\n\n var writer = new Ber.Writer();\n\n writer.startSequence();\n writer.writeBoolean(true);\n writer.endSequence();\n\n console.log(writer.buffer);\n\n## Installation\n\n npm install asn1\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-asn1/issues>.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mcavage/node-asn1/issues" - }, - "homepage": "https://github.com/mcavage/node-asn1", - "_id": "asn1@0.1.11", - "_from": "asn1@0.1.11" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js deleted file mode 100644 index 0b78b474..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var test = require('tap').test; - - - -///--- Globals - -var BerReader; - - - -///--- Tests - -test('load library', function(t) { - BerReader = require('../../lib/index').BerReader; - t.ok(BerReader); - try { - new BerReader(); - t.fail('Should have thrown'); - } catch (e) { - t.ok(e instanceof TypeError, 'Should have been a type error'); - } - t.end(); -}); - - -test('read byte', function(t) { - var reader = new BerReader(new Buffer([0xde])); - t.ok(reader); - t.equal(reader.readByte(), 0xde, 'wrong value'); - t.end(); -}); - - -test('read 1 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x01, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x03, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read 2 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede, 'wrong value'); - t.equal(reader.length, 0x02, 'wrong length'); - t.end(); -}); - - -test('read 3 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede03, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.end(); -}); - - -test('read 4 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede0301, 'wrong value'); - t.equal(reader.length, 0x04, 'wrong length'); - t.end(); -}); - - -test('read boolean true', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read boolean false', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0x00])); - t.ok(reader); - t.equal(reader.readBoolean(), false, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read enumeration', function(t) { - var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20])); - t.ok(reader); - t.equal(reader.readEnumeration(), 0x20, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read string', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var buf = new Buffer(dn.length + 2); - buf[0] = 0x04; - buf[1] = Buffer.byteLength(dn); - buf.write(dn, 2); - var reader = new BerReader(buf); - t.ok(reader); - t.equal(reader.readString(), dn, 'wrong value'); - t.equal(reader.length, dn.length, 'wrong length'); - t.end(); -}); - - -test('read sequence', function(t) { - var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readSequence(), 0x30, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('anonymous LDAPv3 bind', function(t) { - var BIND = new Buffer(14); - BIND[0] = 0x30; // Sequence - BIND[1] = 12; // len - BIND[2] = 0x02; // ASN.1 Integer - BIND[3] = 1; // len - BIND[4] = 0x04; // msgid (make up 4) - BIND[5] = 0x60; // Bind Request - BIND[6] = 7; // len - BIND[7] = 0x02; // ASN.1 Integer - BIND[8] = 1; // len - BIND[9] = 0x03; // v3 - BIND[10] = 0x04; // String (bind dn) - BIND[11] = 0; // len - BIND[12] = 0x80; // ContextSpecific (choice) - BIND[13] = 0; // simple bind - - // Start testing ^^ - var ber = new BerReader(BIND); - t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence'); - t.equal(ber.length, 12, 'Message length should be 12'); - t.equal(ber.readInt(), 4, 'Message id should have been 4'); - t.equal(ber.readSequence(), 96, 'Bind Request should have been 96'); - t.equal(ber.length, 7, 'Bind length should have been 7'); - t.equal(ber.readInt(), 3, 'LDAP version should have been 3'); - t.equal(ber.readString(), '', 'Bind DN should have been empty'); - t.equal(ber.length, 0, 'string length should have been 0'); - t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)'); - t.equal(ber.readByte(), 0, 'Should have been simple bind'); - t.equal(null, ber.readByte(), 'Should be out of data'); - t.end(); -}); - - -test('long string', function(t) { - var buf = new Buffer(256); - var o; - var s = - '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' + - 'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' + - 'Teena Vradmin\'s description.'; - buf[0] = 0x04; - buf[1] = 0x81; - buf[2] = 0x94; - buf.write(s, 3); - var ber = new BerReader(buf.slice(0, 3 + s.length)); - t.equal(ber.readString(), s); - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js deleted file mode 100644 index add0b9fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var test = require('tap').test; -var sys = require('sys'); - -///--- Globals - -var BerWriter; - -var BerReader; - - -///--- Tests - -test('load library', function(t) { - BerWriter = require('../../lib/index').BerWriter; - t.ok(BerWriter); - t.ok(new BerWriter()); - t.end(); -}); - - -test('write byte', function(t) { - var writer = new BerWriter(); - - writer.writeByte(0xC2); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 1, 'Wrong length'); - t.equal(ber[0], 0xC2, 'value wrong'); - - t.end(); -}); - - -test('write 1 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7f); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]); - t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]); - t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]); - - t.end(); -}); - - -test('write 2 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 4, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x02, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xfe, 'value wrong (byte 2)'); - - t.end(); -}); - - -test('write 3 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 5, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x03, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xfe, 'value wrong (byte 3)'); - - t.end(); -}); - - -test('write 4 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffffe); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 6, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x04, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xff, 'value wrong (byte 3)'); - t.equal(ber[5], 0xfe, 'value wrong (byte 4)'); - - t.end(); -}); - - -test('write boolean', function(t) { - var writer = new BerWriter(); - - writer.writeBoolean(true); - writer.writeBoolean(false); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 6, 'Wrong length'); - t.equal(ber[0], 0x01, 'tag wrong'); - t.equal(ber[1], 0x01, 'length wrong'); - t.equal(ber[2], 0xff, 'value wrong'); - t.equal(ber[3], 0x01, 'tag wrong'); - t.equal(ber[4], 0x01, 'length wrong'); - t.equal(ber[5], 0x00, 'value wrong'); - - t.end(); -}); - - -test('write string', function(t) { - var writer = new BerWriter(); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - -test('write buffer', function(t) { - var writer = new BerWriter(); - // write some stuff to start with - writer.writeString('hello world'); - var ber = writer.buffer; - var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01, - 0xff, 0x01, 0x01, 0xff]); - writer.writeBuffer(buf.slice(2, buf.length), 0x04); - ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 26, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[13], buf[0], 'wrong tag'); - t.equal(ber[14], buf[1], 'wrong length'); - for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) { - t.equal(ber[i], buf[j], 'buffer contents not identical'); - } - t.end(); -}); - -test('write string array', function(t) { - var writer = new BerWriter(); - writer.writeStringArray(['hello world', 'fubar!']); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 21, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - - t.equal(ber[13], 0x04, 'wrong tag'); - t.equal(ber[14], 6, 'wrong length'); - t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value'); - - t.end(); -}); - - -test('resize internal buffer', function(t) { - var writer = new BerWriter({size: 2}); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - console.log(ber); - t.equal(ber.length, 15, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 13, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('nested sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 30, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 28, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[15], 0x30, 'wrong tag'); - t.equal(ber[16], 13, 'wrong length'); - t.equal(ber[17], 0x04, 'wrong tag'); - t.equal(ber[18], 11, 'wrong length'); - t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('LDAP bind message', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var writer = new BerWriter(); - writer.startSequence(); - writer.writeInt(3); // msgid = 3 - writer.startSequence(0x60); // ldap bind - writer.writeInt(3); // ldap v3 - writer.writeString(dn); - writer.writeByte(0x80); - writer.writeByte(0x00); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 35, 'wrong length (buffer)'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 33, 'wrong length'); - t.equal(ber[2], 0x02, 'wrong tag'); - t.equal(ber[3], 1, 'wrong length'); - t.equal(ber[4], 0x03, 'wrong value'); - t.equal(ber[5], 0x60, 'wrong tag'); - t.equal(ber[6], 28, 'wrong length'); - t.equal(ber[7], 0x02, 'wrong tag'); - t.equal(ber[8], 1, 'wrong length'); - t.equal(ber[9], 0x03, 'wrong value'); - t.equal(ber[10], 0x04, 'wrong tag'); - t.equal(ber[11], dn.length, 'wrong length'); - t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value'); - t.equal(ber[33], 0x80, 'wrong tag'); - t.equal(ber[34], 0x00, 'wrong len'); - - t.end(); -}); - - -test('Write OID', function(t) { - var oid = '1.2.840.113549.1.1.1'; - var writer = new BerWriter(); - writer.writeOID(oid); - - var ber = writer.buffer; - t.ok(ber); - console.log(require('util').inspect(ber)); - console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x01, 0x01]))); - - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md deleted file mode 100644 index c0c3a530..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# node-assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object.<anonymous> (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - - function test(foo) { - assert.string(foo, 'foo'); - } - -There you go. You can check that arrays are of a homogenous type with `Arrayof$Type`: - - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - - assert.optionalString(foo, 'foo'); - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. - -The complete list of APIs is: - -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.object -* assert.string -* assert.arrayOfBool -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfObject -* assert.arrayOfString -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalObject -* assert.optionalString -* assert.optionalArrayOfBool -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -## Bugs - -See <https://github.com/mcavage/node-assert-plus/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js deleted file mode 100644 index 70583f12..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - - -///--- Globals - -var NDEBUG = process.env.NODE_NDEBUG || false; - - - -///--- Messages - -var ARRAY_TYPE_REQUIRED = '%s ([%s]) required'; -var TYPE_REQUIRED = '%s (%s) is required'; - - - -///--- Internal - -function capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function uncapitalize(str) { - return (str.charAt(0).toLowerCase() + str.slice(1)); -} - -function _() { - return (util.format.apply(util, arguments)); -} - - -function _assert(arg, type, name, stackFunc) { - if (!NDEBUG) { - name = name || type; - stackFunc = stackFunc || _assert.caller; - var t = typeof (arg); - - if (t !== type) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: t, - expected: type, - operator: '===', - stackStartFunction: stackFunc - }); - } - } -} - - - -///--- API - -function array(arr, type, name) { - if (!NDEBUG) { - name = name || type; - - if (!Array.isArray(arr)) { - throw new assert.AssertionError({ - message: _(ARRAY_TYPE_REQUIRED, name, type), - actual: typeof (arr), - expected: 'array', - operator: 'Array.isArray', - stackStartFunction: array.caller - }); - } - - for (var i = 0; i < arr.length; i++) { - _assert(arr[i], type, name, array); - } - } -} - - -function bool(arg, name) { - _assert(arg, 'boolean', name, bool); -} - - -function buffer(arg, name) { - if (!Buffer.isBuffer(arg)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: typeof (arg), - expected: 'buffer', - operator: 'Buffer.isBuffer', - stackStartFunction: buffer - }); - } -} - - -function func(arg, name) { - _assert(arg, 'function', name); -} - - -function number(arg, name) { - _assert(arg, 'number', name); -} - - -function object(arg, name) { - _assert(arg, 'object', name); -} - - -function stream(arg, name) { - if (!(arg instanceof Stream)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: typeof (arg), - expected: 'Stream', - operator: 'instanceof', - stackStartFunction: buffer - }); - } -} - - -function string(arg, name) { - _assert(arg, 'string', name); -} - - - -///--- Exports - -module.exports = { - bool: bool, - buffer: buffer, - func: func, - number: number, - object: object, - stream: stream, - string: string -}; - - -Object.keys(module.exports).forEach(function (k) { - if (k === 'buffer') - return; - - var name = 'arrayOf' + capitalize(k); - - if (k === 'bool') - k = 'boolean'; - if (k === 'func') - k = 'function'; - module.exports[name] = function (arg, name) { - array(arg, k, name); - }; -}); - -Object.keys(module.exports).forEach(function (k) { - var _name = 'optional' + capitalize(k); - var s = uncapitalize(k.replace('arrayOf', '')); - if (s === 'bool') - s = 'boolean'; - if (s === 'func') - s = 'function'; - - if (k.indexOf('arrayOf') !== -1) { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - array(arg, s, name); - } - }; - } else { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - _assert(arg, s, name); - } - }; - } -}); - - -// Reexport built-in assertions -Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - module.exports[k] = assert[k]; - return; - } - - module.exports[k] = function () { - if (!NDEBUG) { - assert[k].apply(assert[k], arguments); - } - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json deleted file mode 100644 index cf78c1bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "name": "assert-plus", - "description": "Extra assertions on top of node's assert module", - "version": "0.1.2", - "main": "./assert.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": ">=0.6" - }, - "readme": "# node-assert-plus\n\nThis library is a super small wrapper over node's assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks\nlike this:\n\n var assert = require('assert-plus');\n\n function fooAccount(options, callback) {\n\t assert.object(options, 'options');\n\t\tassert.number(options.id, 'options.id);\n\t\tassert.bool(options.isManager, 'options.isManager');\n\t\tassert.string(options.name, 'options.name');\n\t\tassert.arrayOfString(options.email, 'options.email');\n\t\tassert.func(callback, 'callback');\n\n // Do stuff\n\t\tcallback(null, {});\n }\n\n# API\n\nAll methods that *aren't* part of node's core assert API are simply assumed to\ntake an argument, and then a string 'name' that's not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n\tat test (/home/mark/work/foo/foo.js:3:9)\n\tat Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)\n\tat Module._compile (module.js:446:26)\n\tat Object..js (module.js:464:10)\n\tat Module.load (module.js:353:31)\n\tat Function._load (module.js:311:12)\n\tat Array.0 (module.js:484:10)\n\tat EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n function test(foo) {\n\t assert.string(foo, 'foo');\n }\n\nThere you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:\n\n function test(foo) {\n\t assert.arrayOfString(foo, 'foo');\n }\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n assert.optionalString(foo, 'foo');\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don't want to pay `typeof ()` taxes to v8 in\nproduction.\n\nThe complete list of APIs is:\n\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.object\n* assert.string\n* assert.arrayOfBool\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-assert-plus/issues>.\n", - "readmeFilename": "README.md", - "_id": "assert-plus@0.1.2", - "_from": "assert-plus@0.1.2", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG deleted file mode 100644 index 078c03ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG +++ /dev/null @@ -1,71 +0,0 @@ -This contains tickets fixed in each version release in reverse chronological -order. There is one ticket per line. Each commits message has the tickets fixed -in it. The commit message also has the corresponding github issue. i.e. CTYPE-42 -would be issue 42. Each issue can be found at: -https://github.com/rmustacc/node-ctype/issues/%d. - -CTYPE v0.5.2 -CTYPE-46 Release 0.5.2 -CTYPE-45 error in setEndian logic - -v0.5.1 -CTYPE-44 Release 0.5.1 -Contributed by Terin Stock: -CTYPE-41 CTypeParser.writeStruct should return its offset -Contributed by Terin Stock: -CTYPE-42 int64_t returns wrong size - -v0.5.0 -CTYPE-40 Release 0.5.0 -CTYPE-39 want > 0.6 engine support - -v0.4.0 -CTYPE-37 Release v0.4.0 -CTYPE-6 want additional entry point for write -CTYPE-20 Add 64-bit int support into core parser -CTYPE-31 Fix bounds errors node/2129 -CTYPE-33 Update copyright holders -CTYPE-34 ctf.js confuses sign bit. -CTYPE-35 Make the README more useful for getting started -CTYPE-36 want manual page on ctio functions - -v0.3.1 -CTYPE-29 Release 0.3.1 -CTYPE-28 Want v0.6 npm support - -v0.3.0 -CTYPE-27 Release v0.3.0 -CTYPE-26 Want alternate default char behavior - -v0.2.1 -CTYPE-25 Release v0.2.1 -CTYPE-24 Writing structs is busted - -v0.2.0: -CTYPE-23 Release v0.2.0 -CTYPE-21 Add support for CTF JSON data -CTYPE-22 Add Javascriptlint profile -CTYPE-15 Pull in ctio updates from node/master - -v0.1.0: -CTYPE-18 Bump version to v0.1.0 -CTYPE-17 Fix nested structures -CTYPE-16 Remove extraneous logging -CTYPE-14 toAbs64 and toApprox64 are not exported - -v0.0.3: -CTYPE-12 Bump version to v0.0.3 -CTYPE-11 fix typo in wuint64 -CTYPE-10 Integrate jsstyle - -v0.0.2: -CTYPE-8 dump npm version to v0.0.2 -CTYPE-9 want changelog -CTYPE-7 fix typo in detypes. - -v0.0.1: -CTYPE-5 Missing from NPM registry -CTYPE-4 int16_t calls wrong read function -CTYPE-3 API example types are missing quotes as strings -CTYPE-2 doc missing 64-bit functions -CTYPE-1 Need license diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE deleted file mode 100644 index 22ced3e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The following license applies to all files unless the file is specified below. -Each file specified below has its license information embedded in it: - -tools/jsstyle - -Copyright 2011, Robert Mustacchi. All rights reserved. -Copyright 2011, Joyent, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README deleted file mode 100644 index 4efd7ee5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README +++ /dev/null @@ -1,82 +0,0 @@ -Node-CType is a way to read and write binary data in structured and easy to use -format. Its name comes from the C header file. - -To get started, simply clone the repository or use npm to install it. Once it is -there, simply require it. - -git clone git://github.com/rmustacc/node-ctype -npm install ctype -var mod_ctype = require('ctype') - - -There are two APIs that you can use, depending on what abstraction you'd like. -The low level API let's you read and write individual integers and floats from -buffers. The higher level API let's you read and write structures of these. To -illustrate this, let's looks look at how we would read and write a binary -encoded x,y point. - -In C we would define this structure as follows: - -typedef struct point { - uint16_t p_x; - uint16_t p_y; -} point_t; - -To read a binary encoded point from a Buffer, we first need to create a CType -parser (where we specify the endian and other options) and add the typedef. - -var parser = new mod_ctype.Parser({ endian: 'big' }); -parser.typedef('point_t', [ - { x: { type: 'uint16_t' } }, - { y: { type: 'uint16_t' } } -]); - -From here, given a buffer buf and an offset into it, we can read a point. - -var out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0); -console.log(out); -{ point: { x: 23, y: 42 } } - -Another way to get the same information would be to use the low level methods. -Note that these require you to manually deal with the offset. Here's how we'd -get the same values of x and y from the buffer. - -var x = mod_ctype.ruint16(buf, 'big', 0); -var y = mod_ctype.ruint16(buf, 'big', 2); -console.log(x + ', ' + y); -23, 42 - -The true power of this API comes from the ability to define and nest typedefs, -just as you would in C. By default, the following types are defined by default. -Note that they return a Number, unless indicated otherwise. - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (either returns a buffer with that character or a uint8_t) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - - -ctf2json integration: - -Node-CType supports consuming the output of ctf2json. Once you read in a JSON file, -all you have to do to add all the definitions it contains is: - -var data, parser; -data = JSON.parse(parsedJSONData); -parser = mod_ctype.parseCTF(data, { endian: 'big' }); - -For more documentation, see the file README.old. Full documentation is in the -process of being rewritten as a series of manual pages which will be available -in the repository and online for viewing. - -To read the ctio manual page simple run, from the root of the workspace: - -man -Mman -s 3ctype ctio diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old deleted file mode 100644 index 9326b725..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old +++ /dev/null @@ -1,298 +0,0 @@ -This library provides a way to read and write binary data. - -Node CType is a way to read and write binary data in structured and easy to use -formats. It's name comes from the header file, though it does not share as much -with it as it perhaps should. - -There are two levels of the API. One is the raw API which everything is built on -top of, while the other provides a much nicer abstraction and is built entirely -by using the lower level API. The hope is that the low level API is both clear -and useful. The low level API gets it's names from stdint.h (a rather -appropriate source). The lower level API is presented at the end of this -document. - -Standard CType API - -The CType interface is presented as a parser object that controls the -endianness combined with a series of methods to change that value, parse and -write out buffers, and a way to provide typedefs. Standard Types - -The CType parser supports the following basic types which return Numbers except -as indicated: - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (returns a buffer with just that single character) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - -Specifying Structs - -The CType parser also supports the notion of structs. A struct is an array of -JSON objects that defines an order of keys which have types and values. One -would build a struct to represent a point (x,y) as follows: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -] - -When this is passed into the read routine, it would read the first two bytes -(as defined by int16_t) to determine the Number to use for X, and then it would -read the next two bytes to determine the value of Y. When read this could -return something like: - -{ - x: 42, - y: -23 -} - -When someone wants to write values, we use the same format as above, but with -additional value field: - -[ - { x: { type: 'int16_t', value: 42 }}, - { y: { type: 'int16_t', value: -23 }} -] - -Now, the structure above may be optionally annotated with offsets. This tells -us to rather than read continuously we should read the given value at the -specified offset. If an offset is provided, it is is effectively the equivalent -of lseek(offset, SEEK_SET). Thus, subsequent values will be read from that -offset and incremented by the appropriate value. As an example: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t', offset: 20 }}, - { z: { type: 'int16_t' }} -] - -We would read x from the first starting offset given to us, for the sake of -example, let's assume that's 0. After reading x, the next offset to read from -would be 2; however, y specifies an offset, thus we jump directly to that -offset and read y from byte 20. We would then read z from byte 22. - -The same offsets may be used when writing values. - -Typedef - -The basic set of types while covers the basics, is somewhat limiting. To make -this richer, there is functionality to typedef something like in C. One can use -typedef to add a new name to an existing type or to define a name to refer to a -struct. Thus the following are all examples of a typedef: - -typedef('size_t', 'uint32_t'); -typedef('ssize_t', 'int32_t'); -typedef('point_t', [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -]); - -Once something has been typedef'd it can be used in any of the definitions -previously shown. - -One cannot remove a typedef once created, this is analogous to C. - -The set of defined types can be printed with lstypes. The format of this output -is subject to change, but likely will look something like: - -> lstypes(); -{ - size_t: 'uint32_t', - ssize_t: 'int32_t', - point_t: [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} - ] -} - -Specifying arrays - -Arrays can be specified by appending []s to a type. Arrays must have the size -specified. The size must be specified and it can be done in one of two ways: - - * An explicit non-zero integer size - * A name of a previously declared variable in the struct whose value is a - number. - -Note, that when using the name of a variable, it should be the string name for -the key. This is only valid inside structs and the value must be declared -before the value with the array. The following are examples: - -[ - { ip_addr4: { type: 'uint8_t[4]' }}, - { len: { type: 'uint32_t' }}, - { data: { type: 'uint8_t[len]' }} -] - -Arrays are permitted in typedefs; however, they must have a declared integer -size. The following are examples of valid and invalid arrays: - -typedef('path', 'char[1024]'); /* Good */ -typedef('path', 'char[len]'); /* Bad! */ - -64 bit values: - -Unfortunately Javascript represents values with a double, so you lose precision -and the ability to represent Integers roughly beyond 2^53. To alleviate this, I -propose the following for returning 64 bit integers when read: - -value[2]: Each entry is a 32 bit number which can be reconstructed to the -original by the following formula: - -value[0] << 32 + value[1] (Note this will not work in Javascript) - -CTF JSON data: - -node-ctype can also handle JSON data that mathces the format described in the -documentation of the tool ctf2json. Given the JSON data which specifies type -information, it will transform that into a parser that understands all of the -types defined inside of it. This is useful for more complicated structures that -have a lot of typedefs. - -Interface overview - -The following is the header-file like interface to the parser object: - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -function CTypeParser(conf); - -/* - * Parses the CTF JSON data and creates a parser that understands all of those - * types. - * - * data Parsed JSON data that maches that CTF JSON - * specification. - * - * conf The configuration object to create a new CTypeParser - * from. - */ -CTypeParser parseCTF(data, conf); - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -Object CTypeParser.readData(<Type Definition>, buffer, offset); - -/* - * This is the second half of what we were born to do, write out the data - * itself. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - */ -void CTypeParser.writeData(<Type Definition>, buffer, offset); - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -void CTypeParser.prototype.typedef(name, value); - -Object CTypeParser.prototype.lstypes(); - -/* - * Get the endian value for the current parser - */ -String CTypeParser.prototype.getEndian(); - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -void CTypeParser.protoype.setEndian(String); - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -Number function toAbs64(val) - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -Number function toApprox64(val) - -Low Level API - -The following function are provided at the low level: - -Read unsigned integers from a buffer: -Number ruint8(buffer, endian, offset); -Number ruint16(buffer, endian, offset); -Number ruint32(buffer, endian, offset); -Number[] ruint64(buffer, endian, offset); - -Read signed integers from a buffer: -Number rsint8(buffer, endian, offset); -Number rsint16(buffer, endian, offset); -Number rsint32(buffer, endian, offset); -Number[] rsint64(buffer, endian, offset); - -Read floating point numbers from a buffer: -Number rfloat(buffer, endian, offset); /* IEEE-754 Single precision */ -Number rdouble(buffer, endian, offset); /* IEEE-754 Double precision */ - -Write unsigned integers to a buffer: -void wuint8(Number, endian, buffer, offset); -void wuint16(Number, endian, buffer, offset); -void wuint32(Number, endian, buffer, offset); -void wuint64(Number[], endian, buffer, offset); - -Write signed integers from a buffer: -void wsint8(Number, endian, buffer, offset); -void wsint16(Number, endian, buffer, offset); -void wsint32(Number, endian, buffer, offset); -void wsint64(Number[], endian, buffer offset); - -Write floating point numbers from a buffer: -void wfloat(Number, buffer, endian, offset); /* IEEE-754 Single precision */ -void wdouble(Number, buffer, endian, offset); /* IEEE-754 Double precision */ - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js deleted file mode 100644 index 66d5f735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js +++ /dev/null @@ -1,245 +0,0 @@ -/* - * ctf.js - * - * Understand and parse all of the different JSON formats of CTF data and - * translate that into a series of node-ctype friendly pieces. The reason for - * the abstraction is to handle different changes in the file format. - * - * We have to be careful here that we don't end up using a name that is already - * a built in type. - */ -var mod_assert = require('assert'); -var ASSERT = mod_assert.ok; - -var ctf_versions = [ '1.0' ]; -var ctf_entries = [ 'integer', 'float', 'typedef', 'struct' ]; -var ctf_deftypes = [ 'int8_t', 'uint8_t', 'int16_t', 'uint16_t', 'int32_t', - 'uint32_t', 'float', 'double' ]; - -function ctfParseInteger(entry, ctype) -{ - var name, sign, len, type; - - name = entry['name']; - if (!('signed' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'signed value')); - - - if (!('length' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'length value')); - - sign = entry['integer']['signed']; - len = entry['integer']['length']; - type = null; - - if (sign && len == 1) - type = 'int8_t'; - else if (len == 1) - type = 'uint8_t'; - else if (sign && len == 2) - type = 'int16_t'; - else if (len == 2) - type = 'uint16_t'; - else if (sign && len == 4) - type = 'int32_t'; - else if (len == 4) - type = 'uint32_t'; - else if (sign && len == 8) - type = 'int64_t'; - else if (len == 8) - type = 'uint64_t'; - - if (type === null) - throw (new Error('Malformed CTF JSON: integer has ' + - 'unsupported length and sign - ' + len + '/' + sign)); - - /* - * This means that this is the same as one of our built in types. If - * that's the case defining it would be an error. So instead of trying - * to typedef it, we'll return here. - */ - if (name == type) - return; - - if (name == 'char') { - ASSERT(type == 'int8_t'); - return; - } - - ctype.typedef(name, type); -} - -function ctfParseFloat(entry, ctype) -{ - var name, len; - - name = entry['name']; - if (!('length' in entry['float'])) - throw (new Error('Malformed CTF JSON: float missing ' + - 'length value')); - - len = entry['float']['length']; - if (len != 4 && len != 8) - throw (new Error('Malformed CTF JSON: float has invalid ' + - 'length value')); - - if (len == 4) { - if (name == 'float') - return; - ctype.typedef(name, 'float'); - } else if (len == 8) { - if (name == 'double') - return; - ctype.typedef(name, 'double'); - } -} - -function ctfParseTypedef(entry, ctype) -{ - var name, type, ii; - - name = entry['name']; - if (typeof (entry['typedef']) != 'string') - throw (new Error('Malformed CTF JSON: typedef value in not ' + - 'a string')); - - type = entry['typedef']; - - /* - * We need to ensure that we're not looking at type that's one of our - * built in types. Traditionally in C a uint32_t would be a typedef to - * some kind of integer. However, those size types are built ins. - */ - for (ii = 0; ii < ctf_deftypes.length; ii++) { - if (name == ctf_deftypes[ii]) - return; - } - - ctype.typedef(name, type); -} - -function ctfParseStruct(entry, ctype) -{ - var name, type, ii, val, index, member, push; - - member = []; - if (!Array.isArray(entry['struct'])) - throw (new Error('Malformed CTF JSON: struct value is not ' + - 'an array')); - - for (ii = 0; ii < entry['struct'].length; ii++) { - val = entry['struct'][ii]; - if (!('name' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing name')); - - if (!('type' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing type')); - - if (typeof (val['name']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'name isn\'t a string')); - - if (typeof (val['type']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'type isn\'t a string')); - - /* - * CTF version 2 specifies array names as <type> [<num>] where - * as node-ctype does this as <type>[<num>]. - */ - name = val['name']; - type = val['type']; - index = type.indexOf(' ['); - if (index != -1) { - type = type.substring(0, index) + - type.substring(index + 1, type.length); - } - push = {}; - push[name] = { 'type': type }; - member.push(push); - } - - name = entry['name']; - ctype.typedef(name, member); -} - -function ctfParseEntry(entry, ctype) -{ - var ii, found; - - if (!('name' in entry)) - throw (new Error('Malformed CTF JSON: entry missing "name" ' + - 'section')); - - for (ii = 0; ii < ctf_entries.length; ii++) { - if (ctf_entries[ii] in entry) - found++; - } - - if (found === 0) - throw (new Error('Malformed CTF JSON: found no entries')); - - if (found >= 2) - throw (new Error('Malformed CTF JSON: found more than one ' + - 'entry')); - - if ('integer' in entry) { - ctfParseInteger(entry, ctype); - return; - } - - if ('float' in entry) { - ctfParseFloat(entry, ctype); - return; - } - - if ('typedef' in entry) { - ctfParseTypedef(entry, ctype); - return; - } - - if ('struct' in entry) { - ctfParseStruct(entry, ctype); - return; - } - - ASSERT(false, 'shouldn\'t reach here'); -} - -function ctfParseJson(json, ctype) -{ - var version, ii; - - ASSERT(json); - ASSERT(ctype); - if (!('metadata' in json)) - throw (new Error('Invalid CTF JSON: missing metadata section')); - - if (!('ctf2json_version' in json['metadata'])) - throw (new Error('Invalid CTF JSON: missing ctf2json_version')); - - version = json['metadata']['ctf2json_version']; - for (ii = 0; ii < ctf_versions.length; ii++) { - if (ctf_versions[ii] == version) - break; - } - - if (ii == ctf_versions.length) - throw (new Error('Unsuported ctf2json_version: ' + version)); - - if (!('data' in json)) - throw (new Error('Invalid CTF JSON: missing data section')); - - if (!Array.isArray(json['data'])) - throw (new Error('Malformed CTF JSON: data section is not ' + - 'an array')); - - for (ii = 0; ii < json['data'].length; ii++) - ctfParseEntry(json['data'][ii], ctype); -} - -exports.ctfParseJson = ctfParseJson; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js deleted file mode 100644 index 62c5d7b2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js +++ /dev/null @@ -1,1485 +0,0 @@ -/* - * rm - Feb 2011 - * ctio.js: - * - * A simple way to read and write simple ctypes. Of course, as you'll find the - * code isn't as simple as it might appear. The following types are currently - * supported in big and little endian formats: - * - * uint8_t int8_t - * uint16_t int16_t - * uint32_t int32_t - * float (single precision IEEE 754) - * double (double precision IEEE 754) - * - * This is designed to work in Node and v8. It may in fact work in other - * Javascript interpreters (that'd be pretty neat), but it hasn't been tested. - * If you find that it does in fact work, that's pretty cool. Try and pass word - * back to the original author. - * - * Note to the reader: If you're tabstop isn't set to 8, parts of this may look - * weird. - */ - -/* - * Numbers in Javascript have a secret: all numbers must be represented with an - * IEEE-754 double. The double has a mantissa with a length of 52 bits with an - * implicit one. Thus the range of integers that can be represented is limited - * to the size of the mantissa, this makes reading and writing 64-bit integers - * difficult, but far from impossible. - * - * Another side effect of this representation is what happens when you use the - * bitwise operators, i.e. shift left, shift right, and, or, etc. In Javascript, - * each operand and the result is cast to a signed 32-bit number. However, in - * the case of >>> the values are cast to an unsigned number. - */ - -/* - * A reminder on endian related issues: - * - * Big Endian: MSB -> First byte - * Little Endian: MSB->Last byte - */ -var mod_assert = require('assert'); - -/* - * An 8 bit unsigned integer involves doing no significant work. - */ -function ruint8(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (buffer[offset]); -} - -/* - * For 16 bit unsigned numbers we can do all the casting that we want to do. - */ -function rgint16(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset] << 8; - val |= buffer[offset+1]; - } else { - val = buffer[offset]; - val |= buffer[offset+1] << 8; - } - - return (val); - -} - -function ruint16(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint16(buffer, endian, offset)); -} - -/* - * Because most bitshifting is done using signed numbers, if we would go into - * the realm where we use that 32nd bit, we'll end up going into the negative - * range. i.e.: - * > 200 << 24 - * -939524096 - * - * Not the value you'd expect. To work around this, we end up having to do some - * abuse of the JavaScript standard. in this case, we know that a >>> shift is - * defined to cast our value to an *unsigned* 32-bit number. Because of that, we - * use that instead to save us some additional math, though it does feel a - * little weird and it isn't obvious as to why you woul dwant to do this at - * first. - */ -function rgint32(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset+1] << 16; - val |= buffer[offset+2] << 8; - val |= buffer[offset+3]; - val = val + (buffer[offset] << 24 >>> 0); - } else { - val = buffer[offset+2] << 16; - val |= buffer[offset+1] << 8; - val |= buffer[offset]; - val = val + (buffer[offset + 3] << 24 >>> 0); - } - - return (val); -} - -function ruint32(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint32(buffer, endian, offset)); -} - -/* - * Reads a 64-bit unsigned number. The astue observer will note that this - * doesn't quite work. Javascript has chosen to only have numbers that can be - * represented by a double. A double only has 52 bits of mantissa with an - * implicit 1, thus we have up to 53 bits to represent an integer. However, 2^53 - * doesn't quite give us what we want. Isn't 53 bits enough for anyone? What - * could you have possibly wanted to represent that was larger than that? Oh, - * maybe a size? You mean we bypassed the 4 GB limit on file sizes, when did - * that happen? - * - * To get around this egregious language issue, we're going to instead construct - * an array of two 32 bit unsigned integers. Where arr[0] << 32 + arr[1] would - * give the actual number. However, note that the above code probably won't - * produce the desired results because of the way Javascript numbers are - * doubles. - */ -function rgint64(buffer, endian, offset) -{ - var val = new Array(2); - - if (endian == 'big') { - val[0] = ruint32(buffer, endian, offset); - val[1] = ruint32(buffer, endian, offset+4); - } else { - val[0] = ruint32(buffer, endian, offset+4); - val[1] = ruint32(buffer, endian, offset); - } - - return (val); -} - -function ruint64(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint64(buffer, endian, offset)); -} - - -/* - * Signed integer types, yay team! A reminder on how two's complement actually - * works. The first bit is the signed bit, i.e. tells us whether or not the - * number should be positive or negative. If the two's complement value is - * positive, then we're done, as it's equivalent to the unsigned representation. - * - * Now if the number is positive, you're pretty much done, you can just leverage - * the unsigned translations and return those. Unfortunately, negative numbers - * aren't quite that straightforward. - * - * At first glance, one might be inclined to use the traditional formula to - * translate binary numbers between the positive and negative values in two's - * complement. (Though it doesn't quite work for the most negative value) - * Mainly: - * - invert all the bits - * - add one to the result - * - * Of course, this doesn't quite work in Javascript. Take for example the value - * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of - * course, Javascript will do the following: - * - * > ~0xff80 - * -65409 - * - * Whoh there, Javascript, that's not quite right. But wait, according to - * Javascript that's perfectly correct. When Javascript ends up seeing the - * constant 0xff80, it has no notion that it is actually a signed number. It - * assumes that we've input the unsigned value 0xff80. Thus, when it does the - * binary negation, it casts it into a signed value, (positive 0xff80). Then - * when you perform binary negation on that, it turns it into a negative number. - * - * Instead, we're going to have to use the following general formula, that works - * in a rather Javascript friendly way. I'm glad we don't support this kind of - * weird numbering scheme in the kernel. - * - * (BIT-MAX - (unsigned)val + 1) * -1 - * - * The astute observer, may think that this doesn't make sense for 8-bit numbers - * (really it isn't necessary for them). However, when you get 16-bit numbers, - * you do. Let's go back to our prior example and see how this will look: - * - * (0xffff - 0xff80 + 1) * -1 - * (0x007f + 1) * -1 - * (0x0080) * -1 - * - * Doing it this way ends up allowing us to treat it appropriately in - * Javascript. Sigh, that's really quite ugly for what should just be a few bit - * shifts, ~ and &. - */ - -/* - * Endianness doesn't matter for 8-bit signed values. We could in fact optimize - * this case because the more traditional methods work, but for consistency, - * we'll keep doing this the same way. - */ -function rsint8(buffer, endian, offset) -{ - var neg; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - neg = buffer[offset] & 0x80; - if (!neg) - return (buffer[offset]); - - return ((0xff - buffer[offset] + 1) * -1); -} - -/* - * The 16-bit version requires a bit more effort. In this case, we can leverage - * our unsigned code to generate the value we want to return. - */ -function rsint16(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint16(buffer, endian, offset); - neg = val & 0x8000; - if (!neg) - return (val); - - return ((0xffff - val + 1) * -1); -} - -/* - * We really shouldn't leverage our 32-bit code here and instead utilize the - * fact that we know that since these are signed numbers, we can do all the - * shifting and binary anding to generate the 32-bit number. But, for - * consistency we'll do the same. If we want to do otherwise, we should instead - * make the 32 bit unsigned code do the optimization. But as long as there - * aren't floats secretly under the hood for that, we /should/ be okay. - */ -function rsint32(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint32(buffer, endian, offset); - neg = val & 0x80000000; - if (!neg) - return (val); - - return ((0xffffffff - val + 1) * -1); -} - -/* - * The signed version of this code suffers from all of the same problems of the - * other 64 bit version. - */ -function rsint64(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint64(buffer, endian, offset); - neg = val[0] & 0x80000000; - - if (!neg) - return (val); - - val[0] = (0xffffffff - val[0]) * -1; - val[1] = (0xffffffff - val[1] + 1) * -1; - - /* - * If we had the key 0x8000000000000000, that would leave the lower 32 - * bits as 0xffffffff, however, since we're goint to add one, that would - * actually leave the lower 32-bits as 0x100000000, which would break - * our ability to write back a value that we received. To work around - * this, if we actually get that value, we're going to bump the upper - * portion by 1 and set this to zero. - */ - mod_assert.ok(val[1] <= 0x100000000); - if (val[1] == -0x100000000) { - val[1] = 0; - val[0]--; - } - - return (val); -} - -/* - * We now move onto IEEE 754: The traditional form for floating point numbers - * and what is secretly hiding at the heart of everything in this. I really hope - * that someone is actually using this, as otherwise, this effort is probably - * going to be more wasted. - * - * One might be tempted to use parseFloat here, but that wouldn't work at all - * for several reasons. Mostly due to the way floats actually work, and - * parseFloat only actually works in base 10. I don't see base 10 anywhere near - * this file. - * - * In this case we'll implement the single and double precision versions. The - * quadruple precision, while probably useful, wouldn't really be accepted by - * Javascript, so let's not even waste our time. - * - * So let's review how this format looks like. A single precision value is 32 - * bits and has three parts: - * - Sign bit - * - Exponent (Using bias notation) - * - Mantissa - * - * |s|eeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmm| - * 31| 30-23 | 22 - 0 | - * - * The exponent is stored in a biased input. The bias in this case 127. - * Therefore, our exponent is equal to the 8-bit value - 127. - * - * By default, a number is normalized in IEEE, that means that the mantissa has - * an implicit one that we don't see. So really the value stored is 1.m. - * However, if the exponent is all zeros, then instead we have to shift - * everything to the right one and there is no more implicit one. - * - * Special values: - * - Positive Infinity: - * Sign: 0 - * Exponent: All 1s - * Mantissa: 0 - * - Negative Infinity: - * Sign: 1 - * Exponent: All 1s - * Mantissa: 0 - * - NaN: - * Sign: * - * Exponent: All 1s - * Mantissa: non-zero - * - Zero: - * Sign: * - * Exponent: All 0s - * Mantissa: 0 - * - * In the case of zero, the sign bit determines whether we get a positive or - * negative zero. However, since Javascript cannot determine the difference - * between the two: i.e. -0 == 0, we just always return 0. - * - */ -function rfloat(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val; - var bias = 127; - var maxexp = 0xff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - } else { - bytes[3] = buffer[offset]; - bytes[2] = buffer[offset+1]; - bytes[1] = buffer[offset+2]; - bytes[0] = buffer[offset+3]; - } - - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 1; - exponent |= (bytes[1] & 0x80) >>> 7; - mantissa = (bytes[1] & 0x7f) << 16; - mantissa |= bytes[2] << 8; - mantissa |= bytes[3]; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -23)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Doubles in IEEE 754 are like their brothers except for a few changes and - * increases in size: - * - The exponent is now 11 bits - * - The mantissa is now 52 bits - * - The bias is now 1023 - * - * |s|eeeeeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm| - * 63| 62 - 52 | 51 - 0 | - * 63| 62 - 52 | 51 - 0 | - * - * While the size has increased a fair amount, we're going to end up keeping the - * same general formula for calculating the final value. As a reminder, this - * formula is: - * - * (-1)^s * (n + m) * 2^(e-b) - * - * Where: - * s is the sign bit - * n is (exponent > 0) ? 1 : 0 -- Determines whether we're normalized - * or not - * m is the mantissa - * e is the exponent specified - * b is the bias for the exponent - * - */ -function rdouble(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val, lowmant; - var bias = 1023; - var maxexp = 0x7ff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - bytes[4] = buffer[offset+4]; - bytes[5] = buffer[offset+5]; - bytes[6] = buffer[offset+6]; - bytes[7] = buffer[offset+7]; - } else { - bytes[7] = buffer[offset]; - bytes[6] = buffer[offset+1]; - bytes[5] = buffer[offset+2]; - bytes[4] = buffer[offset+3]; - bytes[3] = buffer[offset+4]; - bytes[2] = buffer[offset+5]; - bytes[1] = buffer[offset+6]; - bytes[0] = buffer[offset+7]; - } - - /* - * We can construct the exponent and mantissa the same way as we did in - * the case of a float, just increase the range of the exponent. - */ - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 4; - exponent |= (bytes[1] & 0xf0) >>> 4; - - /* - * This is going to be ugly but then again, we're dealing with IEEE 754. - * This could probably be done as a node add on in a few lines of C++, - * but oh we'll, we've made it this far so let's be native the rest of - * the way... - * - * What we're going to do is break the mantissa into two parts, the - * lower 24 bits and the upper 28 bits. We'll multiply the upper 28 bits - * by the appropriate power and then add in the lower 24-bits. Not - * really that great. It's pretty much a giant kludge to deal with - * Javascript eccentricities around numbers. - */ - lowmant = bytes[7]; - lowmant |= bytes[6] << 8; - lowmant |= bytes[5] << 16; - mantissa = bytes[4]; - mantissa |= bytes[3] << 8; - mantissa |= bytes[2] << 16; - mantissa |= (bytes[1] & 0x0f) << 24; - mantissa *= Math.pow(2, 24); /* Equivalent to << 24, but JS compat */ - mantissa += lowmant; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -52)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Now that we have gone through the pain of reading the individual types, we're - * probably going to want some way to write these back. None of this is going to - * be good. But since we have Javascript numbers this should certainly be more - * interesting. Though we can constrain this end a little bit more in what is - * valid. For now, let's go back to our friends the unsigned value. - */ - -/* - * Unsigned numbers seem deceptively easy. Here are the general steps and rules - * that we are going to take: - * - If the number is negative, throw an Error - * - Truncate any floating point portion - * - Take the modulus of the number in our base - * - Write it out to the buffer in the endian format requested at the offset - */ - -/* - * We have to make sure that the value is a valid integer. This means that it is - * non-negative. It has no fractional component and that it does not exceed the - * maximum allowed value. - * - * value The number to check for validity - * - * max The maximum value - */ -function prepuint(value, max) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value < 0) - throw (new Error('specified a negative value for writing an ' + - 'unsigned value')); - - if (value > max) - throw (new Error('value is larger than maximum value for ' + - 'type')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * 8-bit version, classy. We can ignore endianness which is good. - */ -function wuint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xff); - buffer[offset] = val; -} - -/* - * Pretty much the same as the 8-bit version, just this time we need to worry - * about endian related issues. - */ -function wgint16(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val & 0xff00) >>> 8; - buffer[offset+1] = val & 0x00ff; - } else { - buffer[offset+1] = (val & 0xff00) >>> 8; - buffer[offset] = val & 0x00ff; - } -} - -function wuint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffff); - wgint16(val, endian, buffer, offset); -} - -/* - * The 32-bit version is going to have to be a little different unfortunately. - * We can't quite bitshift to get the largest byte, because that would end up - * getting us caught by the signed values. - * - * And yes, we do want to subtract out the lower part by default. This means - * that when we do the division, it will be treated as a bit shift and we won't - * end up generating a floating point value. If we did generate a floating point - * value we'd have to truncate it intelligently, this saves us that problem and - * may even be somewhat faster under the hood. - */ -function wgint32(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val - (val & 0x00ffffff)) / Math.pow(2, 24); - buffer[offset+1] = (val >>> 16) & 0xff; - buffer[offset+2] = (val >>> 8) & 0xff; - buffer[offset+3] = val & 0xff; - } else { - buffer[offset+3] = (val - (val & 0x00ffffff)) / - Math.pow(2, 24); - buffer[offset+2] = (val >>> 16) & 0xff; - buffer[offset+1] = (val >>> 8) & 0xff; - buffer[offset] = val & 0xff; - } -} - -function wuint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffffffff); - wgint32(val, endian, buffer, offset); -} - -/* - * Unlike the other versions, we expect the value to be in the form of two - * arrays where value[0] << 32 + value[1] would result in the value that we - * want. - */ -function wgint64(value, endian, buffer, offset) -{ - if (endian == 'big') { - wgint32(value[0], endian, buffer, offset); - wgint32(value[1], endian, buffer, offset+4); - } else { - wgint32(value[0], endian, buffer, offset+4); - wgint32(value[1], endian, buffer, offset); - } -} - -function wuint64(value, endian, buffer, offset) -{ - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - prepuint(value[0], 0xffffffff); - prepuint(value[1], 0xffffffff); - wgint64(value, endian, buffer, offset); -} - -/* - * We now move onto our friends in the signed number category. Unlike unsigned - * numbers, we're going to have to worry a bit more about how we put values into - * arrays. Since we are only worrying about signed 32-bit values, we're in - * slightly better shape. Unfortunately, we really can't do our favorite binary - * & in this system. It really seems to do the wrong thing. For example: - * - * > -32 & 0xff - * 224 - * - * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of - * this aren't treated as a signed number. Ultimately a bad thing. - * - * What we're going to want to do is basically create the unsigned equivalent of - * our representation and pass that off to the wuint* functions. To do that - * we're going to do the following: - * - * - if the value is positive - * we can pass it directly off to the equivalent wuint - * - if the value is negative - * we do the following computation: - * mb + val + 1, where - * mb is the maximum unsigned value in that byte size - * val is the Javascript negative integer - * - * - * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If - * you do out the computations: - * - * 0xffff - 128 + 1 - * 0xffff - 127 - * 0xff80 - * - * You can then encode this value as the signed version. This is really rather - * hacky, but it should work and get the job done which is our goal here. - * - * Thus the overall flow is: - * - Truncate the floating point part of the number - * - We don't have to take the modulus, because the unsigned versions will - * take care of that for us. And we don't have to worry about that - * potentially causing bad things to happen because of sign extension - * - Pass it off to the appropriate unsigned version, potentially modifying - * the negative portions as necessary. - */ - -/* - * A series of checks to make sure we actually have a signed 32-bit number - */ -function prepsint(value, max, min) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value > max) - throw (new Error('value larger than maximum allowed value')); - - if (value < min) - throw (new Error('value smaller than minimum allowed value')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * The 8-bit version of the signed value. Overall, fairly straightforward. - */ -function wsint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7f, -0x80); - if (val >= 0) - wuint8(val, endian, buffer, offset); - else - wuint8(0xff + val + 1, endian, buffer, offset); -} - -/* - * The 16-bit version of the signed value. Also, fairly straightforward. - */ -function wsint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fff, -0x8000); - if (val >= 0) - wgint16(val, endian, buffer, offset); - else - wgint16(0xffff + val + 1, endian, buffer, offset); - -} - -/* - * We can do this relatively easily by leveraging the code used for 32-bit - * unsigned code. - */ -function wsint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fffffff, -0x80000000); - if (val >= 0) - wgint32(val, endian, buffer, offset); - else - wgint32(0xffffffff + val + 1, endian, buffer, offset); -} - -/* - * The signed 64 bit integer should by in the same format as when received. - * Mainly it should ensure that the value is an array of two integers where - * value[0] << 32 + value[1] is the desired number. Furthermore, the two values - * need to be equal. - */ -function wsint64(value, endian, buffer, offset) -{ - var vzpos, vopos; - var vals = new Array(2); - - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* - * We need to make sure that we have the same sign on both values. The - * hokiest way to to do this is to multiply the number by +inf. If we do - * this, we'll get either +/-inf depending on the sign of the value. - * Once we have this, we can compare it to +inf to see if the number is - * positive or not. - */ - vzpos = (value[0] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - vopos = (value[1] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - - /* - * If either of these is zero, then we don't actually need this check. - */ - if (value[0] != 0 && value[1] != 0 && vzpos != vopos) - throw (new Error('Both entries in the array must have ' + - 'the same sign')); - - /* - * Doing verification for a signed 64-bit integer is actually a big - * trickier than it appears. We can't quite use our standard techniques - * because we need to compare both sets of values. The first value is - * pretty straightforward. If the first value is beond the extremes than - * we error out. However, the valid range of the second value varies - * based on the first one. If the first value is negative, and *not* the - * largest negative value, than it can be any integer within the range [ - * 0, 0xffffffff ]. If it is the largest negative number, it must be - * zero. - * - * If the first number is positive, than it doesn't matter what the - * value is. We just simply have to make sure we have a valid positive - * integer. - */ - if (vzpos) { - prepuint(value[0], 0x7fffffff); - prepuint(value[1], 0xffffffff); - } else { - prepsint(value[0], 0, -0x80000000); - prepsint(value[1], 0, -0xffffffff); - if (value[0] == -0x80000000 && value[1] != 0) - throw (new Error('value smaller than minimum ' + - 'allowed value')); - } - - /* Fix negative numbers */ - if (value[0] < 0 || value[1] < 0) { - vals[0] = 0xffffffff - Math.abs(value[0]); - vals[1] = 0x100000000 - Math.abs(value[1]); - if (vals[1] == 0x100000000) { - vals[1] = 0; - vals[0]++; - } - } else { - vals[0] = value[0]; - vals[1] = value[1]; - } - wgint64(vals, endian, buffer, offset); -} - -/* - * Now we are moving onto the weirder of these, the float and double. For this - * we're going to just have to do something that's pretty weird. First off, we - * have no way to get at the underlying float representation, at least not - * easily. But that doesn't mean we can't figure it out, we just have to use our - * heads. - * - * One might propose to use Number.toString(2). Of course, this is not really - * that good, because the ECMAScript 262 v3 Standard says the following Section - * 15.7.4.2-Number.prototype.toString (radix): - * - * If radix is an integer from 2 to 36, but not 10, the result is a string, the - * choice of which is implementation-dependent. - * - * Well that doesn't really help us one bit now does it? We could use the - * standard base 10 version of the string, but that's just going to create more - * errors as we end up trying to convert it back to a binary value. So, really - * this just means we have to be non-lazy and parse the structure intelligently. - * - * First off, we can do the basic checks: NaN, positive and negative infinity. - * - * Now that those are done we can work backwards to generate the mantissa and - * exponent. - * - * The first thing we need to do is determine the sign bit, easy to do, check - * whether the value is less than 0. And convert the number to its absolute - * value representation. Next, we need to determine if the value is less than - * one or greater than or equal to one and from there determine what power was - * used to get there. What follows is now specific to floats, though the general - * ideas behind this will hold for doubles as well, but the exact numbers - * involved will change. - * - * Once we have that power we can determine the exponent and the mantissa. Call - * the value that has the number of bits to reach the power ebits. In the - * general case they have the following values: - * - * exponent 127 + ebits - * mantissa value * 2^(23 - ebits) & 0x7fffff - * - * In the case where the value of ebits is <= -127 we are now in the case where - * we no longer have normalized numbers. In this case the values take on the - * following values: - * - * exponent 0 - * mantissa value * 2^149 & 0x7fffff - * - * Once we have the values for the sign, mantissa, and exponent. We reconstruct - * the four bytes as follows: - * - * byte0 sign bit and seven most significant bits from the exp - * sign << 7 | (exponent & 0xfe) >>> 1 - * - * byte1 lsb from the exponent and 7 top bits from the mantissa - * (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16 - * - * byte2 bits 8-15 (zero indexing) from mantissa - * mantissa & 0xff00 >> 8 - * - * byte3 bits 0-7 from mantissa - * mantissa & 0xff - * - * Once we have this we have to assign them into the buffer in proper endian - * order. - */ - -/* - * Compute the log base 2 of the value. Now, someone who remembers basic - * properties of logarithms will point out that we could use the change of base - * formula for logs, and in fact that would be astute, because that's what we'll - * do for now. It feels cleaner, albeit it may be less efficient than just - * iterating and dividing by 2. We may want to come back and revisit that some - * day. - */ -function log2(value) -{ - return (Math.log(value) / Math.log(2)); -} - -/* - * Helper to determine the exponent of the number we're looking at. - */ -function intexp(value) -{ - return (Math.floor(log2(value))); -} - -/* - * Helper to determine the exponent of the fractional part of the value. - */ -function fracexp(value) -{ - return (Math.floor(log2(value))); -} - -function wfloat(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0xff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0xff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0xff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* Time to deal with the issues surrounding normalization */ - if (ebits <= -127) { - exponent = 0; - mantissa = (value * Math.pow(2, 149)) & 0x7fffff; - } else { - exponent = 127 + ebits; - mantissa = value * Math.pow(2, 23 - ebits); - mantissa &= 0x7fffff; - } - } - - bytes[0] = sign << 7 | (exponent & 0xfe) >>> 1; - bytes[1] = (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16; - bytes[2] = (mantissa & 0x00ff00) >>> 8; - bytes[3] = mantissa & 0x0000ff; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - } else { - buffer[offset] = bytes[3]; - buffer[offset+1] = bytes[2]; - buffer[offset+2] = bytes[1]; - buffer[offset+3] = bytes[0]; - } -} - -/* - * Now we move onto doubles. Doubles are similar to floats in pretty much all - * ways except that the processing isn't quite as straightforward because we - * can't always use shifting, i.e. we have > 32 bit values. - * - * We're going to proceed in an identical fashion to floats and utilize the same - * helper functions. All that really is changing are the specific values that we - * use to do the calculations. Thus, to review we have to do the following. - * - * First get the sign bit and convert the value to its absolute value - * representation. Next, we determine the number of bits that we used to get to - * the value, branching whether the value is greater than or less than 1. Once - * we have that value which we will again call ebits, we have to do the - * following in the general case: - * - * exponent 1023 + ebits - * mantissa [value * 2^(52 - ebits)] % 2^52 - * - * In the case where the value of ebits <= -1023 we no longer use normalized - * numbers, thus like with floats we have to do slightly different processing: - * - * exponent 0 - * mantissa [value * 2^1074] % 2^52 - * - * Once we have determined the sign, exponent and mantissa we can construct the - * bytes as follows: - * - * byte0 sign bit and seven most significant bits form the exp - * sign << 7 | (exponent & 0x7f0) >>> 4 - * - * byte1 Remaining 4 bits from the exponent and the four most - * significant bits from the mantissa 48-51 - * (exponent & 0x00f) << 4 | mantissa >>> 48 - * - * byte2 Bits 40-47 from the mantissa - * (mantissa >>> 40) & 0xff - * - * byte3 Bits 32-39 from the mantissa - * (mantissa >>> 32) & 0xff - * - * byte4 Bits 24-31 from the mantissa - * (mantissa >>> 24) & 0xff - * - * byte5 Bits 16-23 from the Mantissa - * (mantissa >>> 16) & 0xff - * - * byte6 Bits 8-15 from the mantissa - * (mantissa >>> 8) & 0xff - * - * byte7 Bits 0-7 from the mantissa - * mantissa & 0xff - * - * Now we can't quite do the right shifting that we want in bytes 1 - 3, because - * we'll have extended too far and we'll lose those values when we try and do - * the shift. Instead we have to use an alternate approach. To try and stay out - * of floating point, what we'll do is say that mantissa -= bytes[4-7] and then - * divide by 2^32. Once we've done that we can use binary arithmetic. Oof, - * that's ugly, but it seems to avoid using floating point (just based on how v8 - * seems to be optimizing for base 2 arithmetic). - */ -function wdouble(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0x7ff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0x7ff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0x7ff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* - * This is a total hack to determine a denormalized value. - * Unfortunately, we sometimes do not get a proper value for - * ebits, i.e. we lose the values that would get rounded off. - * - * - * The astute observer may wonder why we would be - * multiplying by two Math.pows rather than just summing - * them. Well, that's to get around a small bug in the - * way v8 seems to implement the function. On occasion - * doing: - * - * foo * Math.pow(2, 1023 + 51) - * - * Causes us to overflow to infinity, where as doing: - * - * foo * Math.pow(2, 1023) * Math.pow(2, 51) - * - * Does not cause us to overflow. Go figure. - * - */ - if (value <= 2.225073858507201e-308 || ebits <= -1023) { - exponent = 0; - mantissa = value * Math.pow(2, 1023) * Math.pow(2, 51); - mantissa %= Math.pow(2, 52); - } else { - /* - * We might have gotten fucked by our floating point - * logarithm magic. This is rather crappy, but that's - * our luck. If we just had a log base 2 or access to - * the stupid underlying representation this would have - * been much easier and we wouldn't have such stupid - * kludges or hacks. - */ - if (ebits > 1023) - ebits = 1023; - exponent = 1023 + ebits; - mantissa = value * Math.pow(2, -ebits); - mantissa *= Math.pow(2, 52); - mantissa %= Math.pow(2, 52); - } - } - - /* Fill the bytes in backwards to deal with the size issues */ - bytes[7] = mantissa & 0xff; - bytes[6] = (mantissa >>> 8) & 0xff; - bytes[5] = (mantissa >>> 16) & 0xff; - mantissa = (mantissa - (mantissa & 0xffffff)) / Math.pow(2, 24); - bytes[4] = mantissa & 0xff; - bytes[3] = (mantissa >>> 8) & 0xff; - bytes[2] = (mantissa >>> 16) & 0xff; - bytes[1] = (exponent & 0x00f) << 4 | mantissa >>> 24; - bytes[0] = (sign << 7) | (exponent & 0x7f0) >>> 4; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - buffer[offset+4] = bytes[4]; - buffer[offset+5] = bytes[5]; - buffer[offset+6] = bytes[6]; - buffer[offset+7] = bytes[7]; - } else { - buffer[offset+7] = bytes[0]; - buffer[offset+6] = bytes[1]; - buffer[offset+5] = bytes[2]; - buffer[offset+4] = bytes[3]; - buffer[offset+3] = bytes[4]; - buffer[offset+2] = bytes[5]; - buffer[offset+1] = bytes[6]; - buffer[offset] = bytes[7]; - } -} - -/* - * Actually export our work above. One might argue that we shouldn't expose - * these interfaces and just force people to use the higher level abstractions - * around this work. However, unlike say other libraries we've come across, this - * interface has several properties: it makes sense, it's simple, and it's - * useful. - */ -exports.ruint8 = ruint8; -exports.ruint16 = ruint16; -exports.ruint32 = ruint32; -exports.ruint64 = ruint64; -exports.wuint8 = wuint8; -exports.wuint16 = wuint16; -exports.wuint32 = wuint32; -exports.wuint64 = wuint64; - -exports.rsint8 = rsint8; -exports.rsint16 = rsint16; -exports.rsint32 = rsint32; -exports.rsint64 = rsint64; -exports.wsint8 = wsint8; -exports.wsint16 = wsint16; -exports.wsint32 = wsint32; -exports.wsint64 = wsint64; - -exports.rfloat = rfloat; -exports.rdouble = rdouble; -exports.wfloat = wfloat; -exports.wdouble = wdouble; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js deleted file mode 100644 index 7d2f4a5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js +++ /dev/null @@ -1,944 +0,0 @@ -/* - * rm - Feb 2011 - * ctype.js - * - * This module provides a simple abstraction towards reading and writing - * different types of binary data. It is designed to use ctio.js and provide a - * richer and more expressive API on top of it. - * - * By default we support the following as built in basic types: - * int8_t - * int16_t - * int32_t - * uint8_t - * uint16_t - * uint32_t - * uint64_t - * float - * double - * char - * char[] - * - * Each type is returned as a Number, with the exception of char and char[] - * which are returned as Node Buffers. A char is considered a uint8_t. - * - * Requests to read and write data are specified as an array of JSON objects. - * This is also the same way that one declares structs. Even if just a single - * value is requested, it must be done as a struct. The array order determines - * the order that we try and read values. Each entry has the following format - * with values marked with a * being optional. - * - * { key: { type: /type/, value*: /value/, offset*: /offset/ } - * - * If offset is defined, we lseek(offset, SEEK_SET) before reading the next - * value. Value is defined when we're writing out data, otherwise it's ignored. - * - */ - -var mod_ctf = require('./ctf.js'); -var mod_ctio = require('./ctio.js'); -var mod_assert = require('assert'); - -/* - * This is the set of basic types that we support. - * - * read The function to call to read in a value from a buffer - * - * write The function to call to write a value to a buffer - * - */ -var deftypes = { - 'uint8_t': { read: ctReadUint8, write: ctWriteUint8 }, - 'uint16_t': { read: ctReadUint16, write: ctWriteUint16 }, - 'uint32_t': { read: ctReadUint32, write: ctWriteUint32 }, - 'uint64_t': { read: ctReadUint64, write: ctWriteUint64 }, - 'int8_t': { read: ctReadSint8, write: ctWriteSint8 }, - 'int16_t': { read: ctReadSint16, write: ctWriteSint16 }, - 'int32_t': { read: ctReadSint32, write: ctWriteSint32 }, - 'int64_t': { read: ctReadSint64, write: ctWriteSint64 }, - 'float': { read: ctReadFloat, write: ctWriteFloat }, - 'double': { read: ctReadDouble, write: ctWriteDouble }, - 'char': { read: ctReadChar, write: ctWriteChar }, - 'char[]': { read: ctReadCharArray, write: ctWriteCharArray } -}; - -/* - * The following are wrappers around the CType IO low level API. They encode - * knowledge about the size and return something in the expected format. - */ -function ctReadUint8(endian, buffer, offset) -{ - var val = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadUint16(endian, buffer, offset) -{ - var val = mod_ctio.ruint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadUint32(endian, buffer, offset) -{ - var val = mod_ctio.ruint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadUint64(endian, buffer, offset) -{ - var val = mod_ctio.ruint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadSint8(endian, buffer, offset) -{ - var val = mod_ctio.rsint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadSint16(endian, buffer, offset) -{ - var val = mod_ctio.rsint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadSint32(endian, buffer, offset) -{ - var val = mod_ctio.rsint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadSint64(endian, buffer, offset) -{ - var val = mod_ctio.rsint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadFloat(endian, buffer, offset) -{ - var val = mod_ctio.rfloat(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadDouble(endian, buffer, offset) -{ - var val = mod_ctio.rdouble(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -/* - * Reads a single character into a node buffer - */ -function ctReadChar(endian, buffer, offset) -{ - var res = new Buffer(1); - res[0] = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: res, size: 1 }); -} - -function ctReadCharArray(length, endian, buffer, offset) -{ - var ii; - var res = new Buffer(length); - - for (ii = 0; ii < length; ii++) - res[ii] = mod_ctio.ruint8(buffer, endian, offset + ii); - - return ({ value: res, size: length }); -} - -function ctWriteUint8(value, endian, buffer, offset) -{ - mod_ctio.wuint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteUint16(value, endian, buffer, offset) -{ - mod_ctio.wuint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteUint32(value, endian, buffer, offset) -{ - mod_ctio.wuint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteUint64(value, endian, buffer, offset) -{ - mod_ctio.wuint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteSint8(value, endian, buffer, offset) -{ - mod_ctio.wsint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteSint16(value, endian, buffer, offset) -{ - mod_ctio.wsint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteSint32(value, endian, buffer, offset) -{ - mod_ctio.wsint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteSint64(value, endian, buffer, offset) -{ - mod_ctio.wsint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteFloat(value, endian, buffer, offset) -{ - mod_ctio.wfloat(value, endian, buffer, offset); - return (4); -} - -function ctWriteDouble(value, endian, buffer, offset) -{ - mod_ctio.wdouble(value, endian, buffer, offset); - return (8); -} - -/* - * Writes a single character into a node buffer - */ -function ctWriteChar(value, endian, buffer, offset) -{ - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - mod_ctio.ruint8(value[0], endian, buffer, offset); - return (1); -} - -/* - * We're going to write 0s into the buffer if the string is shorter than the - * length of the array. - */ -function ctWriteCharArray(value, length, endian, buffer, offset) -{ - var ii; - - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - if (value.length > length) - throw (new Error('value length greater than array length')); - - for (ii = 0; ii < value.length && ii < length; ii++) - mod_ctio.wuint8(value[ii], endian, buffer, offset + ii); - - for (; ii < length; ii++) - mod_ctio.wuint8(0, endian, offset + ii); - - - return (length); -} - -/* - * Each parser has their own set of types. We want to make sure that they each - * get their own copy as they may need to modify it. - */ -function ctGetBasicTypes() -{ - var ret = {}; - var key; - for (key in deftypes) - ret[key] = deftypes[key]; - - return (ret); -} - -/* - * Given a string in the form of type[length] we want to split this into an - * object that extracts that information. We want to note that we could possibly - * have nested arrays so this should only check the furthest one. It may also be - * the case that we have no [] pieces, in which case we just return the current - * type. - */ -function ctParseType(str) -{ - var begInd, endInd; - var type, len; - if (typeof (str) != 'string') - throw (new Error('type must be a Javascript string')); - - endInd = str.lastIndexOf(']'); - if (endInd == -1) { - if (str.lastIndexOf('[') != -1) - throw (new Error('found invalid type with \'[\' but ' + - 'no corresponding \']\'')); - - return ({ type: str }); - } - - begInd = str.lastIndexOf('['); - if (begInd == -1) - throw (new Error('found invalid type with \']\' but ' + - 'no corresponding \'[\'')); - - if (begInd >= endInd) - throw (new Error('malformed type, \']\' appears before \'[\'')); - - type = str.substring(0, begInd); - len = str.substring(begInd + 1, endInd); - - return ({ type: type, len: len }); -} - -/* - * Given a request validate that all of the fields for it are valid and make - * sense. This includes verifying the following notions: - * - Each type requested is present in types - * - Only allow a name for a field to be specified once - * - If an array is specified, validate that the requested field exists and - * comes before it. - * - If fields is defined, check that each entry has the occurrence of field - */ -function ctCheckReq(def, types, fields) -{ - var ii, jj; - var req, keys, key; - var found = {}; - - if (!(def instanceof Array)) - throw (new Error('definition is not an array')); - - if (def.length === 0) - throw (new Error('definition must have at least one element')); - - for (ii = 0; ii < def.length; ii++) { - req = def[ii]; - if (!(req instanceof Object)) - throw (new Error('definition must be an array of' + - 'objects')); - - keys = Object.keys(req); - if (keys.length != 1) - throw (new Error('definition entry must only have ' + - 'one key')); - - if (keys[0] in found) - throw (new Error('Specified name already ' + - 'specified: ' + keys[0])); - - if (!('type' in req[keys[0]])) - throw (new Error('missing required type definition')); - - key = ctParseType(req[keys[0]]['type']); - - /* - * We may have nested arrays, we need to check the validity of - * the types until the len field is undefined in key. However, - * each time len is defined we need to verify it is either an - * integer or corresponds to an already seen key. - */ - while (key['len'] !== undefined) { - if (isNaN(parseInt(key['len'], 10))) { - if (!(key['len'] in found)) - throw (new Error('Given an array ' + - 'length without a matching type')); - - } - - key = ctParseType(key['type']); - } - - /* Now we can validate if the type is valid */ - if (!(key['type'] in types)) - throw (new Error('type not found or typdefed: ' + - key['type'])); - - /* Check for any required fields */ - if (fields !== undefined) { - for (jj = 0; jj < fields.length; jj++) { - if (!(fields[jj] in req[keys[0]])) - throw (new Error('Missing required ' + - 'field: ' + fields[jj])); - } - } - - found[keys[0]] = true; - } -} - - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following required - * values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - * And the following optional values: - * - * char-type Valid options here are uint8 and int8. If uint8 is - * specified this changes the default behavior of a single - * char from being a buffer of a single character to being - * a uint8_t. If int8, it becomes an int8_t instead. - */ -function CTypeParser(conf) -{ - if (!conf) throw (new Error('missing required argument')); - - if (!('endian' in conf)) - throw (new Error('missing required endian value')); - - if (conf['endian'] != 'big' && conf['endian'] != 'little') - throw (new Error('Invalid endian type')); - - if ('char-type' in conf && (conf['char-type'] != 'uint8' && - conf['char-type'] != 'int8')) - throw (new Error('invalid option for char-type: ' + - conf['char-type'])); - - this.endian = conf['endian']; - this.types = ctGetBasicTypes(); - - /* - * There may be a more graceful way to do this, but this will have to - * serve. - */ - if ('char-type' in conf && conf['char-type'] == 'uint8') - this.types['char'] = this.types['uint8_t']; - - if ('char-type' in conf && conf['char-type'] == 'int8') - this.types['char'] = this.types['int8_t']; -} - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -CTypeParser.prototype.setEndian = function (endian) -{ - if (endian != 'big' && endian != 'little') - throw (new Error('invalid endian type, must be big or ' + - 'little')); - - this.endian = endian; -}; - -/* - * Returns the current value of the endian value for the parser. - */ -CTypeParser.prototype.getEndian = function () -{ - return (this.endian); -}; - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -CTypeParser.prototype.typedef = function (name, value) -{ - var type; - - if (name === undefined) - throw (new (Error('missing required typedef argument: name'))); - - if (value === undefined) - throw (new (Error('missing required typedef argument: value'))); - - if (typeof (name) != 'string') - throw (new (Error('the name of a type must be a string'))); - - type = ctParseType(name); - - if (type['len'] !== undefined) - throw (new Error('Cannot have an array in the typedef name')); - - if (name in this.types) - throw (new Error('typedef name already present: ' + name)); - - if (typeof (value) != 'string' && !(value instanceof Array)) - throw (new Error('typedef value must either be a string or ' + - 'struct')); - - if (typeof (value) == 'string') { - type = ctParseType(value); - if (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) - throw (new (Error('typedef value must use ' + - 'fixed size array when outside of a ' + - 'struct'))); - } - - this.types[name] = value; - } else { - /* We have a struct, validate it */ - ctCheckReq(value, this.types); - this.types[name] = value; - } -}; - -/* - * Include all of the typedefs, but none of the built in types. This should be - * treated as read-only. - */ -CTypeParser.prototype.lstypes = function () -{ - var key; - var ret = {}; - - for (key in this.types) { - if (key in deftypes) - continue; - ret[key] = this.types[key]; - } - - return (ret); -}; - -/* - * Given a type string that may have array types that aren't numbers, try and - * fill them in from the values object. The object should be of the format where - * indexing into it should return a number for that type. - * - * str The type string - * - * values An object that can be used to fulfill type information - */ -function ctResolveArray(str, values) -{ - var ret = ''; - var type = ctParseType(str); - - while (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) { - if (typeof (values[type['len']]) != 'number') - throw (new Error('cannot sawp in non-number ' + - 'for array value')); - ret = '[' + values[type['len']] + ']' + ret; - } else { - ret = '[' + type['len'] + ']' + ret; - } - type = ctParseType(type['type']); - } - - ret = type['type'] + ret; - - return (ret); -} - -/* - * [private] Either the typedef resolves to another type string or to a struct. - * If it resolves to a struct, we just pass it off to read struct. If not, we - * can just pass it off to read entry. - */ -CTypeParser.prototype.resolveTypedef = function (type, dispatch, buffer, - offset, value) -{ - var pt; - - mod_assert.ok(type in this.types); - if (typeof (this.types[type]) == 'string') { - pt = ctParseType(this.types[type]); - if (dispatch == 'read') - return (this.readEntry(pt, buffer, offset)); - else if (dispatch == 'write') - return (this.writeEntry(value, pt, buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } else { - if (dispatch == 'read') - return (this.readStruct(this.types[type], buffer, - offset)); - else if (dispatch == 'write') - return (this.writeStruct(value, this.types[type], - buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } - -}; - -/* - * [private] Try and read in the specific entry. - */ -CTypeParser.prototype.readEntry = function (type, buffer, offset) -{ - var parse, len; - - /* - * Because we want to special case char[]s this is unfortunately - * a bit uglier than it really should be. We want to special - * case char[]s so that we return a node buffer, thus they are a - * first class type where as all other arrays just call into a - * generic array routine which calls their data-specific routine - * the specified number of times. - * - * The valid dispatch options we have are: - * - Array and char => char[] handler - * - Generic array handler - * - Generic typedef handler - * - Basic type handler - */ - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - parse = this.types['char[]']['read'](len, - this.endian, buffer, offset); - else - parse = this.readArray(type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - parse = this.types[type['type']]['read'](this.endian, - buffer, offset); - else - parse = this.resolveTypedef(type['type'], 'read', - buffer, offset); - } - - return (parse); -}; - -/* - * [private] Read an array of data - */ -CTypeParser.prototype.readArray = function (type, length, buffer, offset) -{ - var ii, ent, pt; - var baseOffset = offset; - var ret = new Array(length); - pt = ctParseType(type); - - for (ii = 0; ii < length; ii++) { - ent = this.readEntry(pt, buffer, offset); - offset += ent['size']; - ret[ii] = ent['value']; - } - - return ({ value: ret, size: offset - baseOffset }); -}; - -/* - * [private] Read a single struct in. - */ -CTypeParser.prototype.readStruct = function (def, buffer, offset) -{ - var parse, ii, type, entry, key; - var baseOffset = offset; - var ret = {}; - - /* Walk it and handle doing what's necessary */ - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - /* Resolve all array values */ - type = ctParseType(ctResolveArray(entry['type'], ret)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - parse = this.readEntry(type, buffer, offset); - - offset += parse['size']; - ret[key] = parse['value']; - } - - return ({ value: ret, size: (offset-baseOffset)}); -}; - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -CTypeParser.prototype.readData = function (def, buffer, offset) -{ - /* Sanity check for arguments */ - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - /* Sanity check the object definition */ - ctCheckReq(def, this.types); - - return (this.readStruct(def, buffer, offset)['value']); -}; - -/* - * [private] Write out an array of data - */ -CTypeParser.prototype.writeArray = function (value, type, length, buffer, - offset) -{ - var ii, pt; - var baseOffset = offset; - if (!(value instanceof Array)) - throw (new Error('asked to write an array, but value is not ' + - 'an array')); - - if (value.length != length) - throw (new Error('asked to write array of length ' + length + - ' but that does not match value length: ' + value.length)); - - pt = ctParseType(type); - for (ii = 0; ii < length; ii++) - offset += this.writeEntry(value[ii], pt, buffer, offset); - - return (offset - baseOffset); -}; - -/* - * [private] Write the specific entry - */ -CTypeParser.prototype.writeEntry = function (value, type, buffer, offset) -{ - var len, ret; - - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - ret = this.types['char[]']['write'](value, len, - this.endian, buffer, offset); - else - ret = this.writeArray(value, type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - ret = this.types[type['type']]['write'](value, - this.endian, buffer, offset); - else - ret = this.resolveTypedef(type['type'], 'write', - buffer, offset, value); - } - - return (ret); -}; - -/* - * [private] Write a single struct out. - */ -CTypeParser.prototype.writeStruct = function (value, def, buffer, offset) -{ - var ii, entry, type, key; - var baseOffset = offset; - var vals = {}; - - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - type = ctParseType(ctResolveArray(entry['type'], vals)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - offset += this.writeEntry(value[ii], type, buffer, offset); - /* Now that we've written it out, we can use it for arrays */ - vals[key] = value[ii]; - } - - return (offset); -}; - -/* - * Unfortunately, we're stuck with the sins of an initial poor design. Because - * of that, we are going to have to support the old way of writing data via - * writeData. There we insert the values that you want to write into the - * definition. A little baroque. Internally, we use the new model. So we need to - * just get those values out of there. But to maintain the principle of least - * surprise, we're not going to modify the input data. - */ -function getValues(def) -{ - var ii, out, key; - out = []; - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - mod_assert.ok('value' in def[ii][key]); - out.push(def[ii][key]['value']); - } - - return (out); -} - -/* - * This is the second half of what we were born to do, write out the data - * itself. Historically this function required you to put your values in the - * definition section. This was not the smartest thing to do and a bit of an - * oversight to be honest. As such, this function now takes a values argument. - * If values is non-null and non-undefined, it will be used to determine the - * values. This means that the old method is still supported, but is no longer - * acceptable. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - * - * values An array of values to write. - */ -CTypeParser.prototype.writeData = function (def, buffer, offset, values) -{ - var hv; - - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - hv = (values != null && values != undefined); - if (hv) { - if (!Array.isArray(values)) - throw (new Error('missing values for writing')); - ctCheckReq(def, this.types); - } else { - ctCheckReq(def, this.types, [ 'value' ]); - } - - this.writeStruct(hv ? values : getValues(def), def, buffer, offset); -}; - -/* - * Functions to go to and from 64 bit numbers in a way that is compatible with - * Javascript limitations. There are two sets. One where the user is okay with - * an approximation and one where they are definitely not okay with an - * approximation. - */ - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -function toAbs64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - /* We have 20 bits worth of precision in this range */ - if (val[0] >= 0x100000) - throw (new Error('value would become approximated')); - - return (val[0] * Math.pow(2, 32) + val[1]); -} - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -function toApprox64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - return (Math.pow(2, 32) * val[0] + val[1]); -} - -function parseCTF(json, conf) -{ - var ctype = new CTypeParser(conf); - mod_ctf.ctfParseJson(json, ctype); - - return (ctype); -} - -/* - * Export the few things we actually want to. Currently this is just the CType - * Parser and ctio. - */ -exports.Parser = CTypeParser; -exports.toAbs64 = toAbs64; -exports.toApprox64 = toApprox64; - -exports.parseCTF = parseCTF; - -exports.ruint8 = mod_ctio.ruint8; -exports.ruint16 = mod_ctio.ruint16; -exports.ruint32 = mod_ctio.ruint32; -exports.ruint64 = mod_ctio.ruint64; -exports.wuint8 = mod_ctio.wuint8; -exports.wuint16 = mod_ctio.wuint16; -exports.wuint32 = mod_ctio.wuint32; -exports.wuint64 = mod_ctio.wuint64; - -exports.rsint8 = mod_ctio.rsint8; -exports.rsint16 = mod_ctio.rsint16; -exports.rsint32 = mod_ctio.rsint32; -exports.rsint64 = mod_ctio.rsint64; -exports.wsint8 = mod_ctio.wsint8; -exports.wsint16 = mod_ctio.wsint16; -exports.wsint32 = mod_ctio.wsint32; -exports.wsint64 = mod_ctio.wsint64; - -exports.rfloat = mod_ctio.rfloat; -exports.rdouble = mod_ctio.rdouble; -exports.wfloat = mod_ctio.wfloat; -exports.wdouble = mod_ctio.wdouble; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype deleted file mode 100644 index 3f94986a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype +++ /dev/null @@ -1,241 +0,0 @@ -'\" te -.\" Copyright (c) 2011, Robert Mustacchi. All Rights Reserved. -.\" Copyright (c) 2011, Joyent, Inc. All Rights Reserved. -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a copy -.\" of this software and associated documentation files (the "Software"), to -.\" deal in the Software without restriction, including without limitation the -.\" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -.\" sell copies of the Software, and to permit persons to whom the Software is -.\" furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -.\" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -.\" IN THE SOFTWARE. -.TH CTIO 3CTYPE "December 12, 2011" -.SH NAME -ctio, ruint8, ruint16, ruint32, ruint64, wuint8, wuint16, wuint32, wuint64, -rsint8, rsint16, rsint32, rsint64, wsint8, wsint16, wsint32, wsint64, rfloat, -rdouble, wfloat, wdouble \- integer and float operations -.SH SYNOPSIS -.LP -.nf -var mod_ctype = require('ctype'); - -\fBNumber\fR \fBmod_ctype.ruint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.ruint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.rsint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rfloat\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rdouble\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wfloat\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wdouble\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.SH DESCRIPTION -.sp -.LP -The argument \fIbuf\fR refers to a valid buffer (from calling new Buffer()). The -argument \fIendian\fR is either the string 'big' or 'little' and controls -whether the data in the buffer is interpreted as big or little endian. The argument -\fIoffset\fR indicates the starting index into the buffer to read or write. All -functions ensure that starting at \fIoffset\fR does not overflow the end of the -buffer. The argument \fIvalue\fR is a Number that is the valid type for the -specific function. All functions that take \fIvalue\fR as an argument, verify -that the passed value is valid. - -.SS "\fBruint8()\fR, \fBruint16()\fR, \fBruint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions read an 8, -16, and 32-bit unsigned value from \fIbuf\fR and return it. The value read is -influenced by the values of \fIoffset\fR and \fRendian\fI. - - -.SS "\fBrsint8()\fR, \fBrsint16()\fR, \fBrsint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions work just as -\fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR, except they return signed -integers. - -.SS "\fBruint64()\fR, \fBrsint64()\fR" -.sp -.LP -The \fBruint64()\fR and \fBrsint64()\fR functions read unsigned and signed 64 -bit integers respectively from \fBbuf\fR. Due to the limitations of ECMAScript's -\fBNumber\fR type, they cannot be stored as one value without a loss of -precision. Instead of returning the values as a single \fBNumber\fR, the -functions return an array of two numbers. The first entry always contains the -upper 32-bits and the second value contains the lower 32-bits. The lossy -transformation into a number would be \fIres[0]*Math.pow(2,32)+res[1]\fR. -Note that, unless an entry is zero, both array entries are guaranteed to have -the same sign. - -.SS "\fBwuint8()\fR, \fBwuint16()\fR, \fBwuint32()\fR" -.sp -.LP -The functions \fBwuint8()\fR, \fBwuint16()\fR, and \fBwuint32()\fR modify the -contents of \fBbuf\fR by writing an 8, 16, and 32-bit unsigned integer -respectively to \fBbuf\fR. It is illegal to pass a number that is not an integer -within the domain of the integer size, for example, for \fBwuint8()\fR the valid -range is \fB[0, 255]\fR. The value will be written in either big or little -endian format based upon the value of \fBendian\fR. - - -.SS "\fBwsint8()\fR, \fBwsint16()\fR, \fBwsint32()\fR" -.sp -.LP -The functions \fBwsint8()\fR, \fBwsint16()\fR, and \fBwsint32()\fR function -identically to the functions \fBwuint8()\fR, \fBwuint16()\fR, and -\fBwuint32()\fR except that they the valid domain for \fBvalue\fR is that of a -signed number instead of an unsigned number. For example the \fBwsint8()\fR has -a domain of \fB[-128, 127]\fR. - -.SS "\fBwuint64()\fR, \fBwsint64()\fR" -.sp -.LP -The functions \fBwuint64()\fR and \fBswint64()\fR write out 64-bit unsigned and -signed integers to \fBbuf\fR. The \fBvalue\fR argument must be in the same -format as described in \fBruint64()\fR and \fBrsint64()\fR. - -.SS "\fBrfloat()\fR, \fBrdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other read -functions, except that they read a single precision and double precision -IEEE-754 floating point value instead. - -.SS "\fBwfloat()\fR, \fBwdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other write -functions, except that the domain for a float is that of a single precision 4 -byte value. The domain for a double is any \fBNumber\fR in ECMAScript, which is -defined to be represented by a double. - -.SH ATTRIBUTES -.sp -.LP -See \fBattributes\fR(5) for descriptions of the following attributes: -.sp - -.sp -.TS -box; -c | c -l | l . -ATTRIBUTE TYPE ATTRIBUTE VALUE -_ -Interface Stability Committed -_ -MT-Level See below. -_ -Standard Not standardized. -.TE - -.sp -.LP - -All functions are MT-safe in so far as there aren't shared memory MT concerns in -most node programs. If one where to concoct such an environment, these functions -wouldn't be MT-safe. - -.SH SEE ALSO -.sp -.LP diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json deleted file mode 100644 index edcc649a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "ctype", - "version": "0.5.2", - "description": "read and write binary structures and data types", - "homepage": "https://github.com/rmustacc/node-ctype", - "author": { - "name": "Robert Mustacchi", - "email": "rm@fingolfin.org" - }, - "engines": { - "node": ">= 0.4" - }, - "main": "ctype.js", - "readme": "Node-CType is a way to read and write binary data in structured and easy to use\nformat. Its name comes from the C header file.\n\nTo get started, simply clone the repository or use npm to install it. Once it is\nthere, simply require it.\n\ngit clone git://github.com/rmustacc/node-ctype\nnpm install ctype\nvar mod_ctype = require('ctype')\n\n\nThere are two APIs that you can use, depending on what abstraction you'd like.\nThe low level API let's you read and write individual integers and floats from\nbuffers. The higher level API let's you read and write structures of these. To\nillustrate this, let's looks look at how we would read and write a binary\nencoded x,y point.\n\nIn C we would define this structure as follows:\n\ntypedef struct point {\n\tuint16_t\tp_x;\n\tuint16_t\tp_y;\n} point_t;\n\nTo read a binary encoded point from a Buffer, we first need to create a CType\nparser (where we specify the endian and other options) and add the typedef.\n\nvar parser = new mod_ctype.Parser({ endian: 'big' });\nparser.typedef('point_t', [\n\t{ x: { type: 'uint16_t' } },\n\t{ y: { type: 'uint16_t' } }\n]);\n\nFrom here, given a buffer buf and an offset into it, we can read a point.\n\nvar out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0);\nconsole.log(out);\n{ point: { x: 23, y: 42 } }\n\nAnother way to get the same information would be to use the low level methods.\nNote that these require you to manually deal with the offset. Here's how we'd\nget the same values of x and y from the buffer.\n\nvar x = mod_ctype.ruint16(buf, 'big', 0);\nvar y = mod_ctype.ruint16(buf, 'big', 2);\nconsole.log(x + ', ' + y);\n23, 42\n\nThe true power of this API comes from the ability to define and nest typedefs,\njust as you would in C. By default, the following types are defined by default.\nNote that they return a Number, unless indicated otherwise.\n\n * int8_t\n * int16_t\n * int32_t\n * int64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * uint8_t\n * uint16_t\n * uint32_t\n * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * float\n * double\n * char (either returns a buffer with that character or a uint8_t)\n * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)\n\n\nctf2json integration:\n\nNode-CType supports consuming the output of ctf2json. Once you read in a JSON file,\nall you have to do to add all the definitions it contains is:\n\nvar data, parser;\ndata = JSON.parse(parsedJSONData);\nparser = mod_ctype.parseCTF(data, { endian: 'big' });\n\nFor more documentation, see the file README.old. Full documentation is in the\nprocess of being rewritten as a series of manual pages which will be available\nin the repository and online for viewing.\n\nTo read the ctio manual page simple run, from the root of the workspace:\n\nman -Mman -s 3ctype ctio\n", - "readmeFilename": "README", - "_id": "ctype@0.5.2", - "_from": "ctype@0.5.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf deleted file mode 100755 index 845f367a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf +++ /dev/null @@ -1,129 +0,0 @@ -# -# Configuration File for JavaScript Lint 0.3.0 -# Developed by Matthias Miller (http://www.JavaScriptLint.com) -# -# This configuration file can be used to lint a collection of scripts, or to enable -# or disable warnings for scripts that are linted via the command line. -# - -### Warnings -# Enable or disable warnings based on requirements. -# Use "+WarningName" to display or "-WarningName" to suppress. -# -+no_return_value # function {0} does not always return a value -+duplicate_formal # duplicate formal argument {0} -+equal_as_assign # test for equality (==) mistyped as assignment (=)?{0} -+var_hides_arg # variable {0} hides argument -+redeclared_var # redeclaration of {0} {1} -+anon_no_return_value # anonymous function does not always return a value -+missing_semicolon # missing semicolon -+meaningless_block # meaningless block; curly braces have no impact -+comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+unreachable_code # unreachable code -+missing_break # missing break statement -+missing_break_for_last_case # missing break statement for last case in switch -+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement -+useless_void # use of the void type may be unnecessary (void is always undefined) --useless_quotes # quotation marks are unnecessary -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+use_of_label # use of label --block_without_braces # block statement without curly braces -+leading_decimal_point # leading decimal point may indicate a number or an object member -+trailing_decimal_point # trailing decimal point may indicate a number or an object member --octal_number # leading zeros make an octal number -+nested_comment # nested comment -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+empty_statement # empty statement or extra semicolon --missing_option_explicit # the "option explicit" control comment is missing -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+dup_option_explicit # duplicate "option explicit" control comment -+useless_assign # useless assignment -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent) -+missing_default_case # missing default case in switch statement -+duplicate_case_in_switch # duplicate case in switch statements -+default_not_at_end # the default case is not at the end of the switch statement -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+useless_comparison # useless comparison; comparing identical expressions -+with_statement # with statement hides undeclared variables; use temporary variable instead -+trailing_comma_in_array # extra comma is not recommended in array initializers -+assign_to_function_call # assignment to a function call -+parseint_missing_radix # parseInt missing radix parameter --unreferenced_argument # argument declared but never referenced: {name} - -### Output format -# Customize the format of the error message. -# __FILE__ indicates current file path -# __FILENAME__ indicates current file name -# __LINE__ indicates current line -# __ERROR__ indicates error message -# -# Visual Studio syntax (default): -+output-format __FILE__(__LINE__): __ERROR__ -# Alternative syntax: -#+output-format __FILE__:__LINE__: __ERROR__ - - -### Context -# Show the in-line position of the error. -# Use "+context" to display or "-context" to suppress. -# -+context - - -### Semicolons -# By default, assignments of an anonymous function to a variable or -# property (such as a function prototype) must be followed by a semicolon. -# -#+lambda_assign_requires_semicolon # deprecated setting - - -### Control Comments -# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for -# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is -# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason, -# although legacy control comments are enabled by default for backward compatibility. -# -+legacy_control_comments - - -### JScript Function Extensions -# JScript allows member functions to be defined like this: -# function MyObj() { /*constructor*/ } -# function MyObj.prototype.go() { /*member function*/ } -# -# It also allows events to be attached like this: -# function window::onload() { /*init page*/ } -# -# This is a Microsoft-only JavaScript extension. Enable this setting to allow them. -# -#-jscript_function_extensions # deprecated setting - - -### Defining identifiers -# By default, "option explicit" is enabled on a per-file basis. -# To enable this for all files, use "+always_use_option_explicit" --always_use_option_explicit - -# Define certain identifiers of which the lint is not aware. -# (Use this in conjunction with the "undeclared identifier" warning.) -# -# Common uses for webpages might be: -#+define window -#+define document -+define require -+define exports -+define console -+define Buffer -+define JSON - -### Files -# Specify which files to lint -# Use "+recurse" to enable recursion (disabled by default). -# To add a set of files, use "+process FileName", "+process Folder\Path\*.js", -# or "+process Folder\Path\*.htm". -# -#+process jsl-test.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle deleted file mode 100755 index 96c72b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle +++ /dev/null @@ -1,839 +0,0 @@ -#!/usr/bin/env perl -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# Copyright 2011 Joyent, Inc. All rights reserved. -# -# jsstyle - check for some common stylistic errors. -# -# jsstyle is a sort of "lint" for Javascript coding style. This tool is -# derived from the cstyle tool, used to check for the style used in the -# Solaris kernel, sometimes known as "Bill Joy Normal Form". -# -# There's a lot this can't check for, like proper indentation of code -# blocks. There's also a lot more this could check for. -# -# A note to the non perl literate: -# -# perl regular expressions are pretty much like egrep -# regular expressions, with the following special symbols -# -# \s any space character -# \S any non-space character -# \w any "word" character [a-zA-Z0-9_] -# \W any non-word character -# \d a digit [0-9] -# \D a non-digit -# \b word boundary (between \w and \W) -# \B non-word boundary -# - -require 5.0; -use IO::File; -use Getopt::Std; -use strict; - -my $usage = -"usage: jsstyle [-chvC] [-o constructs] file ... - -c check continuation indentation inside functions - -h perform heuristic checks that are sometimes wrong - -v verbose - -C don't check anything in header block comments - -o constructs - allow a comma-seperated list of optional constructs: - doxygen allow doxygen-style block comments (/** /*!) - splint allow splint-style lint comments (/*@ ... @*/) -"; - -my %opts; - -if (!getopts("cho:vC", \%opts)) { - print $usage; - exit 2; -} - -my $check_continuation = $opts{'c'}; -my $heuristic = $opts{'h'}; -my $verbose = $opts{'v'}; -my $ignore_hdr_comment = $opts{'C'}; - -my $doxygen_comments = 0; -my $splint_comments = 0; - -if (defined($opts{'o'})) { - for my $x (split /,/, $opts{'o'}) { - if ($x eq "doxygen") { - $doxygen_comments = 1; - } elsif ($x eq "splint") { - $splint_comments = 1; - } else { - print "jsstyle: unrecognized construct \"$x\"\n"; - print $usage; - exit 2; - } - } -} - -my ($filename, $line, $prev); # shared globals - -my $fmt; -my $hdr_comment_start; - -if ($verbose) { - $fmt = "%s: %d: %s\n%s\n"; -} else { - $fmt = "%s: %d: %s\n"; -} - -if ($doxygen_comments) { - # doxygen comments look like "/*!" or "/**"; allow them. - $hdr_comment_start = qr/^\s*\/\*[\!\*]?$/; -} else { - $hdr_comment_start = qr/^\s*\/\*$/; -} - -# Note, following must be in single quotes so that \s and \w work right. -my $lint_re = qr/\/\*(?: - jsl:\w+?|ARGSUSED[0-9]*|NOTREACHED|LINTLIBRARY|VARARGS[0-9]*| - CONSTCOND|CONSTANTCOND|CONSTANTCONDITION|EMPTY| - FALLTHRU|FALLTHROUGH|LINTED.*?|PRINTFLIKE[0-9]*| - PROTOLIB[0-9]*|SCANFLIKE[0-9]*|JSSTYLED.*? - )\*\//x; - -my $splint_re = qr/\/\*@.*?@\*\//x; - -my $err_stat = 0; # exit status - -if ($#ARGV >= 0) { - foreach my $arg (@ARGV) { - my $fh = new IO::File $arg, "r"; - if (!defined($fh)) { - printf "%s: cannot open\n", $arg; - } else { - &jsstyle($arg, $fh); - close $fh; - } - } -} else { - &jsstyle("<stdin>", *STDIN); -} -exit $err_stat; - -my $no_errs = 0; # set for JSSTYLED-protected lines - -sub err($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $line; - $err_stat = 1; - } -} - -sub err_prefix($$) { - my ($prevline, $error) = @_; - my $out = $prevline."\n".$line; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $out; - $err_stat = 1; - } -} - -sub err_prev($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $. - 1, $error, $prev; - $err_stat = 1; - } -} - -sub jsstyle($$) { - -my ($fn, $filehandle) = @_; -$filename = $fn; # share it globally - -my $in_cpp = 0; -my $next_in_cpp = 0; - -my $in_comment = 0; -my $in_header_comment = 0; -my $comment_done = 0; -my $in_function = 0; -my $in_function_header = 0; -my $in_declaration = 0; -my $note_level = 0; -my $nextok = 0; -my $nocheck = 0; - -my $in_string = 0; - -my ($okmsg, $comment_prefix); - -$line = ''; -$prev = ''; -reset_indent(); - -line: while (<$filehandle>) { - s/\r?\n$//; # strip return and newline - - # save the original line, then remove all text from within - # double or single quotes, we do not want to check such text. - - $line = $_; - - # - # C allows strings to be continued with a backslash at the end of - # the line. We translate that into a quoted string on the previous - # line followed by an initial quote on the next line. - # - # (we assume that no-one will use backslash-continuation with character - # constants) - # - $_ = '"' . $_ if ($in_string && !$nocheck && !$in_comment); - - # - # normal strings and characters - # - s/'([^\\']|\\.)*'/\'\'/g; - s/"([^\\"]|\\.)*"/\"\"/g; - - # - # detect string continuation - # - if ($nocheck || $in_comment) { - $in_string = 0; - } else { - # - # Now that all full strings are replaced with "", we check - # for unfinished strings continuing onto the next line. - # - $in_string = - (s/([^"](?:"")*)"([^\\"]|\\.)*\\$/$1""/ || - s/^("")*"([^\\"]|\\.)*\\$/""/); - } - - # - # figure out if we are in a cpp directive - # - $in_cpp = $next_in_cpp || /^\s*#/; # continued or started - $next_in_cpp = $in_cpp && /\\$/; # only if continued - - # strip off trailing backslashes, which appear in long macros - s/\s*\\$//; - - # an /* END JSSTYLED */ comment ends a no-check block. - if ($nocheck) { - if (/\/\* *END *JSSTYLED *\*\//) { - $nocheck = 0; - } else { - reset_indent(); - next line; - } - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if ($nextok) { - if ($okmsg) { - err($okmsg); - } - $nextok = 0; - $okmsg = 0; - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - $no_errs = 1; - } elsif ($no_errs) { - $no_errs = 0; - } - - # check length of line. - # first, a quick check to see if there is any chance of being too long. - if (($line =~ tr/\t/\t/) * 7 + length($line) > 80) { - # yes, there is a chance. - # replace tabs with spaces and check again. - my $eline = $line; - 1 while $eline =~ - s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; - if (length($eline) > 80) { - err("line > 80 characters"); - } - } - - # ignore NOTE(...) annotations (assumes NOTE is on lines by itself). - if ($note_level || /\b_?NOTE\s*\(/) { # if in NOTE or this is NOTE - s/[^()]//g; # eliminate all non-parens - $note_level += s/\(//g - length; # update paren nest level - next; - } - - # a /* BEGIN JSSTYLED */ comment starts a no-check block. - if (/\/\* *BEGIN *JSSTYLED *\*\//) { - $nocheck = 1; - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - if (/\/\/ *JSSTYLED/) { - /^.*\/\/ *JSSTYLED *(.*)$/; - $okmsg = $1; - $nextok = 1; - } - - # universal checks; apply to everything - if (/\t +\t/) { - err("spaces between tabs"); - } - if (/ \t+ /) { - err("tabs between spaces"); - } - if (/\s$/) { - err("space or tab at end of line"); - } - if (/[^ \t(]\/\*/ && !/\w\(\/\*.*\*\/\);/) { - err("comment preceded by non-blank"); - } - - # is this the beginning or ending of a function? - # (not if "struct foo\n{\n") - if (/^{$/ && $prev =~ /\)\s*(const\s*)?(\/\*.*\*\/\s*)?\\?$/) { - $in_function = 1; - $in_declaration = 1; - $in_function_header = 0; - $prev = $line; - next line; - } - if (/^}\s*(\/\*.*\*\/\s*)*$/) { - if ($prev =~ /^\s*return\s*;/) { - err_prev("unneeded return at end of function"); - } - $in_function = 0; - reset_indent(); # we don't check between functions - $prev = $line; - next line; - } - if (/^\w*\($/) { - $in_function_header = 1; - } - - # a blank line terminates the declarations within a function. - # XXX - but still a problem in sub-blocks. - if ($in_declaration && /^$/) { - $in_declaration = 0; - } - - if ($comment_done) { - $in_comment = 0; - $in_header_comment = 0; - $comment_done = 0; - } - # does this looks like the start of a block comment? - if (/$hdr_comment_start/) { - if (!/^\t*\/\*/) { - err("block comment not indented by tabs"); - } - $in_comment = 1; - /^(\s*)\//; - $comment_prefix = $1; - if ($comment_prefix eq "") { - $in_header_comment = 1; - } - $prev = $line; - next line; - } - # are we still in the block comment? - if ($in_comment) { - if (/^$comment_prefix \*\/$/) { - $comment_done = 1; - } elsif (/\*\//) { - $comment_done = 1; - err("improper block comment close") - unless ($ignore_hdr_comment && $in_header_comment); - } elsif (!/^$comment_prefix \*[ \t]/ && - !/^$comment_prefix \*$/) { - err("improper block comment") - unless ($ignore_hdr_comment && $in_header_comment); - } - } - - if ($in_header_comment && $ignore_hdr_comment) { - $prev = $line; - next line; - } - - # check for errors that might occur in comments and in code. - - # allow spaces to be used to draw pictures in header comments. - #if (/[^ ] / && !/".* .*"/ && !$in_header_comment) { - # err("spaces instead of tabs"); - #} - #if (/^ / && !/^ \*[ \t\/]/ && !/^ \*$/ && - # (!/^ \w/ || $in_function != 0)) { - # err("indent by spaces instead of tabs"); - #} - if (/^ {2,}/ && !/^ [^ ]/) { - err("indent by spaces instead of tabs"); - } - if (/^\t+ [^ \t\*]/ || /^\t+ \S/ || /^\t+ \S/) { - err("continuation line not indented by 4 spaces"); - } - - if (/^\s*\/\*./ && !/^\s*\/\*.*\*\// && !/$hdr_comment_start/) { - err("improper first line of block comment"); - } - - if ($in_comment) { # still in comment, don't do further checks - $prev = $line; - next line; - } - - if ((/[^(]\/\*\S/ || /^\/\*\S/) && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank after open comment"); - } - if (/\S\*\/[^)]|\S\*\/$/ && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank before close comment"); - } - if (/\/\/\S/) { # C++ comments - err("missing blank after start comment"); - } - # check for unterminated single line comments, but allow them when - # they are used to comment out the argument list of a function - # declaration. - if (/\S.*\/\*/ && !/\S.*\/\*.*\*\// && !/\(\/\*/) { - err("unterminated single line comment"); - } - - if (/^(#else|#endif|#include)(.*)$/) { - $prev = $line; - next line; - } - - # - # delete any comments and check everything else. Note that - # ".*?" is a non-greedy match, so that we don't get confused by - # multiple comments on the same line. - # - s/\/\*.*?\*\///g; - s/\/\/.*$//; # C++ comments - - # delete any trailing whitespace; we have already checked for that. - s/\s*$//; - - # following checks do not apply to text in comments. - if (/"/) { - err("literal string using double-quote instead of single"); - } - - if (/[^=!<>\s][!<>=]=/ || /[^<>!=][!<>=]==?[^\s,=]/ || - (/[^->]>[^,=>\s]/ && !/[^->]>$/) || - (/[^<]<[^,=<\s]/ && !/[^<]<$/) || - /[^<\s]<[^<]/ || /[^->\s]>[^>]/) { - err("missing space around relational operator"); - } - if (/\S>>=/ || /\S<<=/ || />>=\S/ || /<<=\S/ || /\S[-+*\/&|^%]=/ || - (/[^-+*\/&|^%!<>=\s]=[^=]/ && !/[^-+*\/&|^%!<>=\s]=$/) || - (/[^!<>=]=[^=\s]/ && !/[^!<>=]=$/)) { - # XXX - should only check this for C++ code - # XXX - there are probably other forms that should be allowed - if (!/\soperator=/) { - err("missing space around assignment operator"); - } - } - if (/[,;]\S/ && !/\bfor \(;;\)/) { - err("comma or semicolon followed by non-blank"); - } - # allow "for" statements to have empty "while" clauses - if (/\s[,;]/ && !/^[\t]+;$/ && !/^\s*for \([^;]*; ;[^;]*\)/) { - err("comma or semicolon preceded by blank"); - } - if (/^\s*(&&|\|\|)/) { - err("improper boolean continuation"); - } - if (/\S *(&&|\|\|)/ || /(&&|\|\|) *\S/) { - err("more than one space around boolean operator"); - } - if (/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\(/) { - err("missing space between keyword and paren"); - } - if (/(\b(catch|for|if|with|while|switch|return)\b.*){2,}/) { - # multiple "case" and "sizeof" allowed - err("more than one keyword on line"); - } - if (/\b(delete|typeof|instanceOf|with|throw|catch|new|function|in|for|if|while|switch|return|case)\s\s+\(/ && - !/^#if\s+\(/) { - err("extra space between keyword and paren"); - } - # try to detect "func (x)" but not "if (x)" or - # "#define foo (x)" or "int (*func)();" - if (/\w\s\(/) { - my $s = $_; - # strip off all keywords on the line - s/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\s\(/XXX(/g; - s/#elif\s\(/XXX(/g; - s/^#define\s+\w+\s+\(/XXX(/; - # do not match things like "void (*f)();" - # or "typedef void (func_t)();" - s/\w\s\(+\*/XXX(*/g; - s/\b(void)\s+\(+/XXX(/og; - if (/\w\s\(/) { - err("extra space between function name and left paren"); - } - $_ = $s; - } - - if (/^\s*return\W[^;]*;/ && !/^\s*return\s*\(.*\);/) { - err("unparenthesized return expression"); - } - if (/\btypeof\b/ && !/\btypeof\s*\(.*\)/) { - err("unparenthesized typeof expression"); - } - if (/\(\s/) { - err("whitespace after left paren"); - } - # allow "for" statements to have empty "continue" clauses - if (/\s\)/ && !/^\s*for \([^;]*;[^;]*; \)/) { - err("whitespace before right paren"); - } - if (/^\s*\(void\)[^ ]/) { - err("missing space after (void) cast"); - } - if (/\S{/ && !/({|\(){/) { - err("missing space before left brace"); - } - if ($in_function && /^\s+{/ && - ($prev =~ /\)\s*$/ || $prev =~ /\bstruct\s+\w+$/)) { - err("left brace starting a line"); - } - if (/}(else|while)/) { - err("missing space after right brace"); - } - if (/}\s\s+(else|while)/) { - err("extra space after right brace"); - } - if (/^\s+#/) { - err("preprocessor statement not in column 1"); - } - if (/^#\s/) { - err("blank after preprocessor #"); - } - - # - # We completely ignore, for purposes of indentation: - # * lines outside of functions - # * preprocessor lines - # - if ($check_continuation && $in_function && !$in_cpp) { - process_indent($_); - } - - if ($heuristic) { - # cannot check this everywhere due to "struct {\n...\n} foo;" - if ($in_function && !$in_declaration && - /}./ && !/}\s+=/ && !/{.*}[;,]$/ && !/}(\s|)*$/ && - !/} (else|while)/ && !/}}/) { - err("possible bad text following right brace"); - } - # cannot check this because sub-blocks in - # the middle of code are ok - if ($in_function && /^\s+{/) { - err("possible left brace starting a line"); - } - } - if (/^\s*else\W/) { - if ($prev =~ /^\s*}$/) { - err_prefix($prev, - "else and right brace should be on same line"); - } - } - $prev = $line; -} - -if ($prev eq "") { - err("last line in file is blank"); -} - -} - -# -# Continuation-line checking -# -# The rest of this file contains the code for the continuation checking -# engine. It's a pretty simple state machine which tracks the expression -# depth (unmatched '('s and '['s). -# -# Keep in mind that the argument to process_indent() has already been heavily -# processed; all comments have been replaced by control-A, and the contents of -# strings and character constants have been elided. -# - -my $cont_in; # currently inside of a continuation -my $cont_off; # skipping an initializer or definition -my $cont_noerr; # suppress cascading errors -my $cont_start; # the line being continued -my $cont_base; # the base indentation -my $cont_first; # this is the first line of a statement -my $cont_multiseg; # this continuation has multiple segments - -my $cont_special; # this is a C statement (if, for, etc.) -my $cont_macro; # this is a macro -my $cont_case; # this is a multi-line case - -my @cont_paren; # the stack of unmatched ( and [s we've seen - -sub -reset_indent() -{ - $cont_in = 0; - $cont_off = 0; -} - -sub -delabel($) -{ - # - # replace labels with tabs. Note that there may be multiple - # labels on a line. - # - local $_ = $_[0]; - - while (/^(\t*)( *(?:(?:\w+\s*)|(?:case\b[^:]*)): *)(.*)$/) { - my ($pre_tabs, $label, $rest) = ($1, $2, $3); - $_ = $pre_tabs; - while ($label =~ s/^([^\t]*)(\t+)//) { - $_ .= "\t" x (length($2) + length($1) / 8); - } - $_ .= ("\t" x (length($label) / 8)).$rest; - } - - return ($_); -} - -sub -process_indent($) -{ - require strict; - local $_ = $_[0]; # preserve the global $_ - - s///g; # No comments - s/\s+$//; # Strip trailing whitespace - - return if (/^$/); # skip empty lines - - # regexps used below; keywords taking (), macros, and continued cases - my $special = '(?:(?:\}\s*)?else\s+)?(?:if|for|while|switch)\b'; - my $macro = '[A-Z_][A-Z_0-9]*\('; - my $case = 'case\b[^:]*$'; - - # skip over enumerations, array definitions, initializers, etc. - if ($cont_off <= 0 && !/^\s*$special/ && - (/(?:(?:\b(?:enum|struct|union)\s*[^\{]*)|(?:\s+=\s*)){/ || - (/^\s*{/ && $prev =~ /=\s*(?:\/\*.*\*\/\s*)*$/))) { - $cont_in = 0; - $cont_off = tr/{/{/ - tr/}/}/; - return; - } - if ($cont_off) { - $cont_off += tr/{/{/ - tr/}/}/; - return; - } - - if (!$cont_in) { - $cont_start = $line; - - if (/^\t* /) { - err("non-continuation indented 4 spaces"); - $cont_noerr = 1; # stop reporting - } - $_ = delabel($_); # replace labels with tabs - - # check if the statement is complete - return if (/^\s*\}?$/); - return if (/^\s*\}?\s*else\s*\{?$/); - return if (/^\s*do\s*\{?$/); - return if (/{$/); - return if (/}[,;]?$/); - - # Allow macros on their own lines - return if (/^\s*[A-Z_][A-Z_0-9]*$/); - - # cases we don't deal with, generally non-kosher - if (/{/) { - err("stuff after {"); - return; - } - - # Get the base line, and set up the state machine - /^(\t*)/; - $cont_base = $1; - $cont_in = 1; - @cont_paren = (); - $cont_first = 1; - $cont_multiseg = 0; - - # certain things need special processing - $cont_special = /^\s*$special/? 1 : 0; - $cont_macro = /^\s*$macro/? 1 : 0; - $cont_case = /^\s*$case/? 1 : 0; - } else { - $cont_first = 0; - - # Strings may be pulled back to an earlier (half-)tabstop - unless ($cont_noerr || /^$cont_base / || - (/^\t*(?: )?(?:gettext\()?\"/ && !/^$cont_base\t/)) { - err_prefix($cont_start, - "continuation should be indented 4 spaces"); - } - } - - my $rest = $_; # keeps the remainder of the line - - # - # The split matches 0 characters, so that each 'special' character - # is processed separately. Parens and brackets are pushed and - # popped off the @cont_paren stack. For normal processing, we wait - # until a ; or { terminates the statement. "special" processing - # (if/for/while/switch) is allowed to stop when the stack empties, - # as is macro processing. Case statements are terminated with a : - # and an empty paren stack. - # - foreach $_ (split /[^\(\)\[\]\{\}\;\:]*/) { - next if (length($_) == 0); - - # rest contains the remainder of the line - my $rxp = "[^\Q$_\E]*\Q$_\E"; - $rest =~ s/^$rxp//; - - if (/\(/ || /\[/) { - push @cont_paren, $_; - } elsif (/\)/ || /\]/) { - my $cur = $_; - tr/\)\]/\(\[/; - - my $old = (pop @cont_paren); - if (!defined($old)) { - err("unexpected '$cur'"); - $cont_in = 0; - last; - } elsif ($old ne $_) { - err("'$cur' mismatched with '$old'"); - $cont_in = 0; - last; - } - - # - # If the stack is now empty, do special processing - # for if/for/while/switch and macro statements. - # - next if (@cont_paren != 0); - if ($cont_special) { - if ($rest =~ /^\s*{?$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*;$/) { - err("empty if/for/while body ". - "not on its own line"); - $cont_in = 0; - last; - } - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - # We've finished this section, start - # processing the next. - goto section_ended; - } - if ($cont_macro) { - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - } - } elsif (/\;/) { - if ($cont_case) { - err("unexpected ;"); - } elsif (!$cont_special) { - err("unexpected ;") if (@cont_paren != 0); - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*special/) { - err("if/for/while/switch not started ". - "on its own line"); - } - goto section_ended; - } - } elsif (/\{/) { - err("{ while in parens/brackets") if (@cont_paren != 0); - err("stuff after {") if ($rest =~ /[^\s}]/); - $cont_in = 0; - last; - } elsif (/\}/) { - err("} while in parens/brackets") if (@cont_paren != 0); - if (!$cont_special && $rest !~ /^\s*(while|else)\b/) { - if ($rest =~ /^$/) { - err("unexpected }"); - } else { - err("stuff after }"); - } - $cont_in = 0; - last; - } - } elsif (/\:/ && $cont_case && @cont_paren == 0) { - err("stuff after multi-line case") if ($rest !~ /$^/); - $cont_in = 0; - last; - } - next; -section_ended: - # End of a statement or if/while/for loop. Reset - # cont_special and cont_macro based on the rest of the - # line. - $cont_special = ($rest =~ /^\s*$special/)? 1 : 0; - $cont_macro = ($rest =~ /^\s*$macro/)? 1 : 0; - $cont_case = 0; - next; - } - $cont_noerr = 0 if (!$cont_in); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json deleted file mode 100644 index 29d7bd89..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563626, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "float" ] - }, -"data": - [ - { "name": "float", "float": { "length": 4 } } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json deleted file mode 100644 index f9773a14..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563631, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "int" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json deleted file mode 100644 index e0ee5e0d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json +++ /dev/null @@ -1,104 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563573, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "psinfo_t" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } }, - { "name": "char", "integer": { "length": 1, "signed": true } }, - { "name": "unsigned short", "integer": { "length": 2, "signed": false } }, - { "name": "long", "integer": { "length": 4, "signed": true } }, - { "name": "unsigned", "integer": { "length": 4, "signed": false } }, - { "name": "size_t", "typedef": "unsigned" }, - { "name": "unsigned long", "integer": { "length": 4, "signed": false } }, - { "name": "time_t", "typedef": "long" }, - { "name": "struct timespec", "struct": [ - { "name": "tv_sec", "type": "time_t" }, - { "name": "tv_nsec", "type": "long" } - ] }, - { "name": "zoneid_t", "typedef": "long" }, - { "name": "taskid_t", "typedef": "long" }, - { "name": "dev_t", "typedef": "unsigned long" }, - { "name": "uid_t", "typedef": "unsigned" }, - { "name": "gid_t", "typedef": "unsigned" }, - { "name": "timestruc_t", "typedef": "struct timespec" }, - { "name": "short", "integer": { "length": 2, "signed": true } }, - { "name": "projid_t", "typedef": "long" }, - { "name": "ushort_t", "typedef": "unsigned short" }, - { "name": "poolid_t", "typedef": "long" }, - { "name": "uintptr_t", "typedef": "unsigned" }, - { "name": "id_t", "typedef": "long" }, - { "name": "pid_t", "typedef": "long" }, - { "name": "processorid_t", "typedef": "int" }, - { "name": "psetid_t", "typedef": "int" }, - { "name": "struct lwpsinfo", "struct": [ - { "name": "pr_flag", "type": "int" }, - { "name": "pr_lwpid", "type": "id_t" }, - { "name": "pr_addr", "type": "uintptr_t" }, - { "name": "pr_wchan", "type": "uintptr_t" }, - { "name": "pr_stype", "type": "char" }, - { "name": "pr_state", "type": "char" }, - { "name": "pr_sname", "type": "char" }, - { "name": "pr_nice", "type": "char" }, - { "name": "pr_syscall", "type": "short" }, - { "name": "pr_oldpri", "type": "char" }, - { "name": "pr_cpu", "type": "char" }, - { "name": "pr_pri", "type": "int" }, - { "name": "pr_pctcpu", "type": "ushort_t" }, - { "name": "pr_pad", "type": "ushort_t" }, - { "name": "pr_start", "type": "timestruc_t" }, - { "name": "pr_time", "type": "timestruc_t" }, - { "name": "pr_clname", "type": "char [8]" }, - { "name": "pr_name", "type": "char [16]" }, - { "name": "pr_onpro", "type": "processorid_t" }, - { "name": "pr_bindpro", "type": "processorid_t" }, - { "name": "pr_bindpset", "type": "psetid_t" }, - { "name": "pr_lgrp", "type": "int" }, - { "name": "pr_filler", "type": "int [4]" } - ] }, - { "name": "lwpsinfo_t", "typedef": "struct lwpsinfo" }, - { "name": "struct psinfo", "struct": [ - { "name": "pr_flag", "type": "int" }, - { "name": "pr_nlwp", "type": "int" }, - { "name": "pr_pid", "type": "pid_t" }, - { "name": "pr_ppid", "type": "pid_t" }, - { "name": "pr_pgid", "type": "pid_t" }, - { "name": "pr_sid", "type": "pid_t" }, - { "name": "pr_uid", "type": "uid_t" }, - { "name": "pr_euid", "type": "uid_t" }, - { "name": "pr_gid", "type": "gid_t" }, - { "name": "pr_egid", "type": "gid_t" }, - { "name": "pr_addr", "type": "uintptr_t" }, - { "name": "pr_size", "type": "size_t" }, - { "name": "pr_rssize", "type": "size_t" }, - { "name": "pr_pad1", "type": "size_t" }, - { "name": "pr_ttydev", "type": "dev_t" }, - { "name": "pr_pctcpu", "type": "ushort_t" }, - { "name": "pr_pctmem", "type": "ushort_t" }, - { "name": "pr_start", "type": "timestruc_t" }, - { "name": "pr_time", "type": "timestruc_t" }, - { "name": "pr_ctime", "type": "timestruc_t" }, - { "name": "pr_fname", "type": "char [16]" }, - { "name": "pr_psargs", "type": "char [80]" }, - { "name": "pr_wstat", "type": "int" }, - { "name": "pr_argc", "type": "int" }, - { "name": "pr_argv", "type": "uintptr_t" }, - { "name": "pr_envp", "type": "uintptr_t" }, - { "name": "pr_dmodel", "type": "char" }, - { "name": "pr_pad2", "type": "char [3]" }, - { "name": "pr_taskid", "type": "taskid_t" }, - { "name": "pr_projid", "type": "projid_t" }, - { "name": "pr_nzomb", "type": "int" }, - { "name": "pr_poolid", "type": "poolid_t" }, - { "name": "pr_zoneid", "type": "zoneid_t" }, - { "name": "pr_contract", "type": "id_t" }, - { "name": "pr_filler", "type": "int [1]" }, - { "name": "pr_lwp", "type": "lwpsinfo_t" } - ] }, - { "name": "psinfo_t", "typedef": "struct psinfo" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json deleted file mode 100644 index e0542ff4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json +++ /dev/null @@ -1,19 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563648, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "timestruc_t" ] - }, -"data": - [ - { "name": "long", "integer": { "length": 4, "signed": true } }, - { "name": "time_t", "typedef": "long" }, - { "name": "struct timespec", "struct": [ - { "name": "tv_sec", "type": "time_t" }, - { "name": "tv_nsec", "type": "long" } - ] }, - { "name": "timestruc_t", "typedef": "struct timespec" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js deleted file mode 100644 index d6a52cbb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Test several conditions that should always cause us to throw. - */ -var mod_assert = require('assert'); -var mod_ctype = require('../../ctype.js'); - -var cases = [ -{ json: { }, msg: 'bad JSON - no metadata or data' }, -{ json: { metadata: {} }, msg: 'bad JSON - bad metadata section' }, -{ json: { metadata: { 'JSON version': [] } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': 2 } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': '100.20' } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': '1.0' } }, - msg: 'missing data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: 1 }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: 1.1 }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: '1.1' }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: {} }, - msg: 'invalid data section' } -]; - -function test() -{ - var ii; - - for (ii = 0; ii < cases.length; ii++) { - mod_assert.throws(function () { - mod_ctype.parseCTF(cases[ii].json); - }, Error, cases[ii].msg); - } -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js deleted file mode 100644 index f2144994..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./float.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), {}); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js deleted file mode 100644 index 0ec0f769..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./int.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'int': 'int32_t' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js deleted file mode 100644 index ca1a544c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js +++ /dev/null @@ -1,17 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -/* - * This is too unwieldly to actually write out. Just make sure we can parse it - * without errrors. - */ -function test() -{ - var data; - - data = JSON.parse(mod_fs.readFileSync('./psinfo.json').toString()); - mod_ctype.parseCTF(data, { endian: 'big' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js deleted file mode 100644 index c62f41f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js +++ /dev/null @@ -1,18 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./struct.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'long': 'int32_t', - 'time_t': 'long', - 'timestruc_t': 'struct timespec', - 'struct timespec': [ { 'tv_sec': { 'type': 'time_t' } }, - { 'tv_nsec': { 'type': 'long' } } ] }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js deleted file mode 100644 index 9006cd1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js +++ /dev/null @@ -1,15 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./typedef.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'bar_t': 'int', - 'int': 'int32_t' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json deleted file mode 100644 index 35ddb50d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json +++ /dev/null @@ -1,14 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316302348, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "bar_t" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } }, - { "name": "bar_t", "typedef": "int" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js deleted file mode 100644 index 2c9504a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js +++ /dev/null @@ -1,767 +0,0 @@ -/* - * Battery of tests to break our floating point implementation. Oh ho ho. - * - * There are a few useful ways to generate the expected output. The first is - * just write a C program and write raw bytes out and inspect with xxd. Remember - * to consider whether or not you're on a big endian or little endian machine. - * Another useful site I found to help with some of this was: - * - * http://babbage.cs.qc.edu/IEEE-754/ - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testfloat() -{ - var buffer = new Buffer(4); - /* Start off with some of the easy ones: +zero */ - buffer[0] = 0; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'big', 0)); - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'little', 0)); - - /* Test -0 */ - buffer[0] = 0x80; - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = buffer[0]; - buffer[0] = 0; - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'little', 0)); - - /* Catch +infin */ - buffer[0] = 0x7f; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = 0x7f; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rfloat(buffer, 'litle', 0)); - - /* Catch -infin */ - buffer[0] = 0xff; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = 0xff; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rfloat(buffer, 'litle', 0)); - - /* Catch NaN */ - - buffer[0] = 0x7f; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'big', 0))); - buffer[3] = 0x7f; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'little', 0))); - - /* Catch -infin */ - buffer[0] = 0xff; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'big', 0))); - buffer[3] = 0xff; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'little', 0))); - - /* On to some basic tests */ - /* 1.125 */ - buffer[0] = 0x3f; - buffer[1] = 0x90; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(1.125, mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x3f; - buffer[2] = 0x90; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(1.125, mod_ctype.rfloat(buffer, 'little', 0)); - - /* ff34a2b0 -2.4010576103645774e+38 */ - buffer[0] = 0xff; - buffer[1] = 0x34; - buffer[2] = 0xa2; - buffer[3] = 0xb0; - ASSERT.equal(-2.4010576103645774e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0xff; - buffer[2] = 0x34; - buffer[1] = 0xa2; - buffer[0] = 0xb0; - ASSERT.equal(-2.4010576103645774e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Denormalized tests */ - - /* 0003f89a +/- 3.6468792534053364e-40 */ - buffer[0] = 0x00; - buffer[1] = 0x03; - buffer[2] = 0xf8; - buffer[3] = 0x9a; - ASSERT.equal(3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x03; - buffer[1] = 0xf8; - buffer[0] = 0x9a; - ASSERT.equal(3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x03; - buffer[2] = 0xf8; - buffer[3] = 0x9a; - ASSERT.equal(-3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x03; - buffer[1] = 0xf8; - buffer[0] = 0x9a; - ASSERT.equal(-3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'little', 0)); - - - /* Maximum and minimum normalized and denormalized values */ - - /* Largest normalized number +/- 3.4028234663852886e+38 */ - - buffer[0] = 0x7f; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x7f; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(-3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0xff; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Smallest normalied number +/- 1.1754943508222875e-38 */ - buffer[0] = 0x00; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(-1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(-1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - - /* Smallest denormalized number 1.401298464324817e-45 */ - buffer[0] = 0x00; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x01; - ASSERT.equal(1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x01; - ASSERT.equal(-1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(-1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Largest denormalized value +/- 1.1754942106924411e-38 */ - buffer[0] = 0x00; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(-1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Do some quick offset testing */ - buffer = new Buffer(6); - buffer[0] = 0x7f; - buffer[1] = 0x4e; - buffer[2] = 0x8a; - buffer[3] = 0x79; - buffer[4] = 0xcd; - buffer[5] = 0x3f; - - ASSERT.equal(2.745399582697325e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - ASSERT.equal(1161619072, - mod_ctype.rfloat(buffer, 'big', 1)); - ASSERT.equal(-1.2027516403607578e-32, - mod_ctype.rfloat(buffer, 'big', 2)); - - ASSERT.equal(8.97661320504413e+34, - mod_ctype.rfloat(buffer, 'little', 0)); - ASSERT.equal(-261661920, - mod_ctype.rfloat(buffer, 'little', 1)); - ASSERT.equal(1.605271577835083, - mod_ctype.rfloat(buffer, 'little', 2)); - -} - -function testdouble() -{ - var buffer = new Buffer(10); - - /* Check 0 */ - buffer[0] = 0; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'big', 0)); - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'big', 0)); - buffer[7] = 0x80; - buffer[6] = 0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Check NaN */ - buffer[0] = 0x7f; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'big', 0))); - - buffer[7] = 0x7f; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'little', 0))); - - buffer[0] = 0xff; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'big', 0))); - - buffer[7] = 0xff; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'little', 0))); - - /* pos inf */ - buffer[0] = 0x7f; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7f; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* neg inf */ - buffer[0] = 0xff; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xff; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Simple normalized values */ - - /* +/- 1.125 */ - buffer[0] = 0x3f; - buffer[1] = 0xf2; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(1.125, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x3f; - buffer[6] = 0xf2; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(1.125, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xbf; - buffer[1] = 0xf2; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(-1.125, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xbf; - buffer[6] = 0xf2; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(-1.125, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* +/- 1.4397318913736026e+283 */ - buffer[0] = 0x7a; - buffer[1] = 0xb8; - buffer[2] = 0xc9; - buffer[3] = 0x34; - buffer[4] = 0x72; - buffer[5] = 0x16; - buffer[6] = 0xf9; - buffer[7] = 0x0e; - ASSERT.equal(1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7a; - buffer[6] = 0xb8; - buffer[5] = 0xc9; - buffer[4] = 0x34; - buffer[3] = 0x72; - buffer[2] = 0x16; - buffer[1] = 0xf9; - buffer[0] = 0x0e; - ASSERT.equal(1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xfa; - buffer[1] = 0xb8; - buffer[2] = 0xc9; - buffer[3] = 0x34; - buffer[4] = 0x72; - buffer[5] = 0x16; - buffer[6] = 0xf9; - buffer[7] = 0x0e; - ASSERT.equal(-1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xfa; - buffer[6] = 0xb8; - buffer[5] = 0xc9; - buffer[4] = 0x34; - buffer[3] = 0x72; - buffer[2] = 0x16; - buffer[1] = 0xf9; - buffer[0] = 0x0e; - ASSERT.equal(-1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Denormalized values */ - /* +/- 8.82521232268344e-309 */ - buffer[0] = 0x00; - buffer[1] = 0x06; - buffer[2] = 0x58; - buffer[3] = 0x94; - buffer[4] = 0x13; - buffer[5] = 0x27; - buffer[6] = 0x8a; - buffer[7] = 0xcd; - ASSERT.equal(8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x06; - buffer[5] = 0x58; - buffer[4] = 0x94; - buffer[3] = 0x13; - buffer[2] = 0x27; - buffer[1] = 0x8a; - buffer[0] = 0xcd; - ASSERT.equal(8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x06; - buffer[2] = 0x58; - buffer[3] = 0x94; - buffer[4] = 0x13; - buffer[5] = 0x27; - buffer[6] = 0x8a; - buffer[7] = 0xcd; - ASSERT.equal(-8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x06; - buffer[5] = 0x58; - buffer[4] = 0x94; - buffer[3] = 0x13; - buffer[2] = 0x27; - buffer[1] = 0x8a; - buffer[0] = 0xcd; - ASSERT.equal(-8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Edge cases, maximum and minimum values */ - - /* Smallest denormalized value 5e-324 */ - buffer[0] = 0x00; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x01; - ASSERT.equal(5e-324, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x00; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(5e-324, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x01; - ASSERT.equal(-5e-324, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x00; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(-5e-324, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Largest denormalized value 2.225073858507201e-308 */ - buffer[0] = 0x00; - buffer[1] = 0x0f; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x0f; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x0f; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(-2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x0f; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Smallest normalized value 2.2250738585072014e-308 */ - buffer[0] = 0x00; - buffer[1] = 0x10; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x00; - ASSERT.equal(2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x10; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x10; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x00; - ASSERT.equal(-2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x10; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(-2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Largest normalized value 1.7976931348623157e+308 */ - buffer[0] = 0x7f; - buffer[1] = 0xef; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7f; - buffer[6] = 0xef; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0xef; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(-1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xff; - buffer[6] = 0xef; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Try offsets */ - buffer[0] = 0xde; - buffer[1] = 0xad; - buffer[2] = 0xbe; - buffer[3] = 0xef; - buffer[4] = 0xba; - buffer[5] = 0xdd; - buffer[6] = 0xca; - buffer[7] = 0xfe; - buffer[8] = 0x16; - buffer[9] = 0x79; - - ASSERT.equal(-1.1885958404126936e+148, - mod_ctype.rdouble(buffer, 'big', 0)); - ASSERT.equal(-2.4299184080448593e-88, - mod_ctype.rdouble(buffer, 'big', 1)); - ASSERT.equal(-0.000015130017658081283, - mod_ctype.rdouble(buffer, 'big', 2)); - - ASSERT.equal(-5.757458694845505e+302, - mod_ctype.rdouble(buffer, 'little', 0)); - ASSERT.equal(6.436459604192476e-198, - mod_ctype.rdouble(buffer, 'little', 1)); - ASSERT.equal(1.9903745632417286e+275, - mod_ctype.rdouble(buffer, 'little', 2)); -} - -testfloat(); -testdouble(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js deleted file mode 100644 index b5fd95cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js +++ /dev/null @@ -1,753 +0,0 @@ -/* - * Another place to find bugs that may yet plague us. This time with writing out - * floats to arrays. We are lazy and did basically just take the opposite of our - * test code to read in values. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - - -/* - * A useful thing to keep around for debugging - * console.log('buffer[0]: ' + buffer[0].toString(16)); - * console.log('buffer[1]: ' + buffer[1].toString(16)); - * console.log('buffer[2]: ' + buffer[2].toString(16)); - * console.log('buffer[3]: ' + buffer[3].toString(16)); - * console.log('buffer[4]: ' + buffer[4].toString(16)); - * console.log('buffer[5]: ' + buffer[5].toString(16)); - * console.log('buffer[6]: ' + buffer[6].toString(16)); - * console.log('buffer[7]: ' + buffer[7].toString(16)); - */ - -function testfloat() -{ - var buffer = new Buffer(4); - mod_ctype.wfloat(0, 'big', buffer, 0); - /* Start off with some of the easy ones: +zero */ - ASSERT.equal(0, buffer[0]); - ASSERT.equal(0, buffer[1]); - ASSERT.equal(0, buffer[2]); - ASSERT.equal(0, buffer[3]); - mod_ctype.wfloat(0, 'little', buffer, 0); - ASSERT.equal(0, buffer[0]); - ASSERT.equal(0, buffer[1]); - ASSERT.equal(0, buffer[2]); - ASSERT.equal(0, buffer[3]); - - /* Catch +infin */ - mod_ctype.wfloat(Number.POSITIVE_INFINITY, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(Number.POSITIVE_INFINITY, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Catch -infin */ - mod_ctype.wfloat(Number.NEGATIVE_INFINITY, 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(Number.NEGATIVE_INFINITY, 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Catch NaN */ - - /* - * NaN Is a litle weird in its requirements, so we're going to encode a - * bit of how we actually implement it into this test. Probably not the - * best, since technically the sign is a don't care and the mantissa - * needs to just be non-zero. - */ - mod_ctype.wfloat(NaN, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x17, buffer[3]); - mod_ctype.wfloat(NaN, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x17, buffer[0]); - - /* On to some basic tests */ - /* 1.125 */ - mod_ctype.wfloat(1.125, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x90, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(1.125, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x90, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wfloat(1.0000001192092896, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.0000001192092896, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(1.0000001192092896, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.0000001192092896, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(2.3283067140944524e-10, 'big', buffer, 0); - ASSERT.equal(0x2f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(2.3283067140944524e-10, 'little', buffer, 0); - ASSERT.equal(0x2f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - /* ff34a2b0 -2.4010576103645774e+38 */ - mod_ctype.wfloat(-2.4010576103645774e+38, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x34, buffer[1]); - ASSERT.equal(0xa2, buffer[2]); - ASSERT.equal(0xb0, buffer[3]); - mod_ctype.wfloat(-2.4010576103645774e+38, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x34, buffer[2]); - ASSERT.equal(0xa2, buffer[1]); - ASSERT.equal(0xb0, buffer[0]); - - /* Denormalized tests */ - - /* 0003f89a +/- 3.6468792534053364e-40 */ - mod_ctype.wfloat(3.6468792534053364e-40, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x03, buffer[1]); - ASSERT.equal(0xf8, buffer[2]); - ASSERT.equal(0x9a, buffer[3]); - mod_ctype.wfloat(3.6468792534053364e-40, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x03, buffer[2]); - ASSERT.equal(0xf8, buffer[1]); - ASSERT.equal(0x9a, buffer[0]); - - mod_ctype.wfloat(-3.6468792534053364e-40, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x03, buffer[1]); - ASSERT.equal(0xf8, buffer[2]); - ASSERT.equal(0x9a, buffer[3]); - mod_ctype.wfloat(-3.6468792534053364e-40, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x03, buffer[2]); - ASSERT.equal(0xf8, buffer[1]); - ASSERT.equal(0x9a, buffer[0]); - - /* Maximum and minimum normalized and denormalized values */ - - /* Largest normalized number +/- 3.4028234663852886e+38 */ - - mod_ctype.wfloat(3.4028234663852886e+38, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(3.4028234663852886e+38, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wfloat(-3.4028234663852886e+38, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(-3.4028234663852886e+38, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - /* Smallest normalied number +/- 1.1754943508222875e-38 */ - - mod_ctype.wfloat(1.1754943508222875e-38, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(1.1754943508222875e-38, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wfloat(-1.1754943508222875e-38, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(-1.1754943508222875e-38, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Smallest denormalized number 1.401298464324817e-45 */ - mod_ctype.wfloat(1.401298464324817e-45, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.401298464324817e-45, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(-1.401298464324817e-45, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(-1.401298464324817e-45, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - /* Largest denormalized value +/- 1.1754942106924411e-38 */ - - mod_ctype.wfloat(1.1754942106924411e-38, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(1.1754942106924411e-38, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wfloat(-1.1754942106924411e-38, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(-1.1754942106924411e-38, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - /* Do some quick offset testing */ - buffer = new Buffer(6); - mod_ctype.wfloat(-1.2027516403607578e-32, - 'big', buffer, 2); - ASSERT.equal(0x8a, buffer[2]); - ASSERT.equal(0x79, buffer[3]); - ASSERT.equal(0xcd, buffer[4]); - ASSERT.equal(0x3f, buffer[5]); - - mod_ctype.wfloat(-1.2027516403607578e-32, - 'little', buffer, 2); - ASSERT.equal(0x8a, buffer[5]); - ASSERT.equal(0x79, buffer[4]); - ASSERT.equal(0xcd, buffer[3]); - ASSERT.equal(0x3f, buffer[2]); - -} - -function testdouble() -{ - var buffer = new Buffer(10); - - /* Check 0 */ - mod_ctype.wdouble(0, 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(0, 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Check NaN */ - /* Similar to floats we are only generating a subset of values */ - mod_ctype.wdouble(NaN, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x17, buffer[7]); - mod_ctype.wdouble(NaN, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x17, buffer[0]); - - /* pos inf */ - mod_ctype.wdouble(Number.POSITIVE_INFINITY, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(Number.POSITIVE_INFINITY, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* neg inf */ - mod_ctype.wdouble(Number.NEGATIVE_INFINITY, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(Number.NEGATIVE_INFINITY, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Simple normalized values */ - - /* +/- 1.125 */ - mod_ctype.wdouble(1.125, - 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0xf2, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(1.125, - 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[7]); - ASSERT.equal(0xf2, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wdouble(-1.125, - 'big', buffer, 0); - ASSERT.equal(0xbf, buffer[0]); - ASSERT.equal(0xf2, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(-1.125, - 'little', buffer, 0); - ASSERT.equal(0xbf, buffer[7]); - ASSERT.equal(0xf2, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - - /* +/- 1.4397318913736026e+283 */ - mod_ctype.wdouble(1.4397318913736026e+283, - 'big', buffer, 0); - ASSERT.equal(0x7a, buffer[0]); - ASSERT.equal(0xb8, buffer[1]); - ASSERT.equal(0xc9, buffer[2]); - ASSERT.equal(0x34, buffer[3]); - ASSERT.equal(0x72, buffer[4]); - ASSERT.equal(0x16, buffer[5]); - ASSERT.equal(0xf9, buffer[6]); - ASSERT.equal(0x0e, buffer[7]); - - mod_ctype.wdouble(1.4397318913736026e+283, - 'little', buffer, 0); - ASSERT.equal(0x7a, buffer[7]); - ASSERT.equal(0xb8, buffer[6]); - ASSERT.equal(0xc9, buffer[5]); - ASSERT.equal(0x34, buffer[4]); - ASSERT.equal(0x72, buffer[3]); - ASSERT.equal(0x16, buffer[2]); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x0e, buffer[0]); - - mod_ctype.wdouble(-1.4397318913736026e+283, - 'big', buffer, 0); - ASSERT.equal(0xfa, buffer[0]); - ASSERT.equal(0xb8, buffer[1]); - ASSERT.equal(0xc9, buffer[2]); - ASSERT.equal(0x34, buffer[3]); - ASSERT.equal(0x72, buffer[4]); - ASSERT.equal(0x16, buffer[5]); - ASSERT.equal(0xf9, buffer[6]); - ASSERT.equal(0x0e, buffer[7]); - - mod_ctype.wdouble(-1.4397318913736026e+283, - 'little', buffer, 0); - ASSERT.equal(0xfa, buffer[7]); - ASSERT.equal(0xb8, buffer[6]); - ASSERT.equal(0xc9, buffer[5]); - ASSERT.equal(0x34, buffer[4]); - ASSERT.equal(0x72, buffer[3]); - ASSERT.equal(0x16, buffer[2]); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x0e, buffer[0]); - - /* Denormalized values */ - /* +/- 8.82521232268344e-309 */ - mod_ctype.wdouble(8.82521232268344e-309, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x06, buffer[1]); - ASSERT.equal(0x58, buffer[2]); - ASSERT.equal(0x94, buffer[3]); - ASSERT.equal(0x13, buffer[4]); - ASSERT.equal(0x27, buffer[5]); - ASSERT.equal(0x8a, buffer[6]); - ASSERT.equal(0xcd, buffer[7]); - - mod_ctype.wdouble(8.82521232268344e-309, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x06, buffer[6]); - ASSERT.equal(0x58, buffer[5]); - ASSERT.equal(0x94, buffer[4]); - ASSERT.equal(0x13, buffer[3]); - ASSERT.equal(0x27, buffer[2]); - ASSERT.equal(0x8a, buffer[1]); - ASSERT.equal(0xcd, buffer[0]); - - mod_ctype.wdouble(-8.82521232268344e-309, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x06, buffer[1]); - ASSERT.equal(0x58, buffer[2]); - ASSERT.equal(0x94, buffer[3]); - ASSERT.equal(0x13, buffer[4]); - ASSERT.equal(0x27, buffer[5]); - ASSERT.equal(0x8a, buffer[6]); - ASSERT.equal(0xcd, buffer[7]); - - mod_ctype.wdouble(-8.82521232268344e-309, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x06, buffer[6]); - ASSERT.equal(0x58, buffer[5]); - ASSERT.equal(0x94, buffer[4]); - ASSERT.equal(0x13, buffer[3]); - ASSERT.equal(0x27, buffer[2]); - ASSERT.equal(0x8a, buffer[1]); - ASSERT.equal(0xcd, buffer[0]); - - - /* Edge cases, maximum and minimum values */ - - /* Smallest denormalized value 5e-324 */ - mod_ctype.wdouble(5e-324, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x01, buffer[7]); - - mod_ctype.wdouble(5e-324, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wdouble(-5e-324, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x01, buffer[7]); - - mod_ctype.wdouble(-5e-324, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - - - /* Largest denormalized value 2.225073858507201e-308 */ - mod_ctype.wdouble(2.225073858507201e-308, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x0f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(2.225073858507201e-308, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x0f, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wdouble(-2.225073858507201e-308, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x0f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(-2.225073858507201e-308, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x0f, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - - /* Smallest normalized value 2.2250738585072014e-308 */ - mod_ctype.wdouble(2.2250738585072014e-308, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x10, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(2.2250738585072014e-308, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x10, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wdouble(-2.2250738585072014e-308, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x10, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(-2.2250738585072014e-308, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x10, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - - /* Largest normalized value 1.7976931348623157e+308 */ - mod_ctype.wdouble(1.7976931348623157e+308, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xef, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(1.7976931348623157e+308, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xef, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wdouble(-1.7976931348623157e+308, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xef, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(-1.7976931348623157e+308, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[7]); - ASSERT.equal(0xef, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - - /* Try offsets */ - buffer[0] = 0xde; - buffer[1] = 0xad; - buffer[2] = 0xbe; - buffer[3] = 0xef; - buffer[4] = 0xba; - buffer[5] = 0xdd; - buffer[6] = 0xca; - buffer[7] = 0xfe; - buffer[8] = 0x16; - buffer[9] = 0x79; - - mod_ctype.wdouble(-0.000015130017658081283, - 'big', buffer, 2); - ASSERT.equal(0xbe, buffer[2]); - ASSERT.equal(0xef, buffer[3]); - ASSERT.equal(0xba, buffer[4]); - ASSERT.equal(0xdd, buffer[5]); - ASSERT.equal(0xca, buffer[6]); - ASSERT.equal(0xfe, buffer[7]); - ASSERT.equal(0x16, buffer[8]); - ASSERT.equal(0x79, buffer[9]); - - mod_ctype.wdouble(-0.000015130017658081283, - 'little', buffer, 2); - ASSERT.equal(0xbe, buffer[9]); - ASSERT.equal(0xef, buffer[8]); - ASSERT.equal(0xba, buffer[7]); - ASSERT.equal(0xdd, buffer[6]); - ASSERT.equal(0xca, buffer[5]); - ASSERT.equal(0xfe, buffer[4]); - ASSERT.equal(0x16, buffer[3]); - ASSERT.equal(0x79, buffer[2]); -} - -testfloat(); -testdouble(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js deleted file mode 100644 index 1ffdac09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js +++ /dev/null @@ -1,638 +0,0 @@ -/* - * Test our ability to read and write signed 64-bit integers. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testRead() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - data[6] = 0xff; - data[7] = 0xff; - data[8] = 0x89; - data[9] = 0x11; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x32654256, res[0]); - ASSERT.equal(0x23ffffff, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x65425623, res[0]); - ASSERT.equal(0xffffff89, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x425623ff, res[0]); - ASSERT.equal(0xffff8911, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(-0x000000dc, res[0]); - ASSERT.equal(-0xa9bd9ace, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(-0x76000000, res[0]); - ASSERT.equal(-0xdca9bd9b, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x1189ffff, res[0]); - ASSERT.equal(0xff235642, res[1]); - - data.fill(0x00); - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - - data.fill(0xff); - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - - data[0] = 0x80; - data[1] = 0x00; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x00; - data[5] = 0x00; - data[6] = 0x00; - data[7] = 0x00; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(-0x80000000, res[0]); - ASSERT.equal(0, res[1]); - - - data[7] = 0x80; - data[6] = 0x00; - data[5] = 0x00; - data[4] = 0x00; - data[3] = 0x00; - data[2] = 0x00; - data[1] = 0x00; - data[0] = 0x00; - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(-0x80000000, res[0]); - ASSERT.equal(0, res[1]); - - data[0] = 0x80; - data[1] = 0x00; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x00; - data[5] = 0x00; - data[6] = 0x00; - data[7] = 0x01; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(-0x7fffffff, res[0]); - ASSERT.equal(-0xffffffff, res[1]); - - -} - -function testWriteZero() -{ - var data, buf; - buf = new Buffer(10); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); - - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); -} - -/* - * Also include tests that are going to force us to go into a negative value and - * insure that it's written correctly. - */ -function testWrite() -{ - var data, buf; - - buf = new Buffer(10); - data = [ 0x234456, 0x87 ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x23, buf[1]); - ASSERT.equal(0x44, buf[2]); - ASSERT.equal(0x56, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x87, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x23, buf[2]); - ASSERT.equal(0x44, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x87, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x23, buf[3]); - ASSERT.equal(0x44, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x87, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x87, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x44, buf[5]); - ASSERT.equal(0x23, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x87, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x44, buf[6]); - ASSERT.equal(0x23, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x87, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x56, buf[6]); - ASSERT.equal(0x44, buf[7]); - ASSERT.equal(0x23, buf[8]); - ASSERT.equal(0x00, buf[9]); - - data = [0x3421, 0x34abcdba]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x34, buf[2]); - ASSERT.equal(0x21, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0xab, buf[5]); - ASSERT.equal(0xcd, buf[6]); - ASSERT.equal(0xba, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xab, buf[6]); - ASSERT.equal(0xcd, buf[7]); - ASSERT.equal(0xba, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xab, buf[7]); - ASSERT.equal(0xcd, buf[8]); - ASSERT.equal(0xba, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0xba, buf[0]); - ASSERT.equal(0xcd, buf[1]); - ASSERT.equal(0xab, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xba, buf[1]); - ASSERT.equal(0xcd, buf[2]); - ASSERT.equal(0xab, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xba, buf[2]); - ASSERT.equal(0xcd, buf[3]); - ASSERT.equal(0xab, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x21, buf[6]); - ASSERT.equal(0x34, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x00, buf[9]); - - - data = [ -0x80000000, 0 ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x80, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x80, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - data = [ -0x7fffffff, -0xffffffff ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x80, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x01, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x01, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x80, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - data = [ 0x0, -0x1]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0xff, buf[4]); - ASSERT.equal(0xff, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0xff, buf[4]); - ASSERT.equal(0xff, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); -} - -/* - * Make sure we catch invalid writes. - */ -function testWriteInvalid() -{ - var data, buf; - - /* Buffer too small */ - buf = new Buffer(4); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 0); - }, Error, 'buffer too small'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 0); - }, Error, 'buffer too small'); - - /* Beyond the end of the buffer */ - buf = new Buffer(12); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 11); - }, Error, 'write beyond end of buffer'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 11); - }, Error, 'write beyond end of buffer'); - - /* Write fractional values */ - buf = new Buffer(12); - data = [ 3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, 3.3 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, -3.3 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, -2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, -2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - /* Signs don't match */ - buf = new Buffer(12); - data = [ 0x800000, -0x32 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x800000, 0x32 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - /* Write values that are too large */ - buf = new Buffer(12); - data = [ 0x80000000, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x7fffffff, 0x100000000 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x00, 0x800000000 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0xffffffffff, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x23, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x80000000, -0xfff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x80000004, -0xfff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); -} - - -testRead(); -testWrite(); -testWriteZero(); -testWriteInvalid(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js deleted file mode 100644 index 5236d268..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Tests to verify we're reading in signed integers correctly - */ -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * Test 8 bit signed integers - */ -function test8() -{ - var data = new Buffer(4); - - data[0] = 0x23; - ASSERT.equal(0x23, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(0x23, mod_ctype.rsint8(data, 'little', 0)); - - data[0] = 0xff; - ASSERT.equal(-1, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(-1, mod_ctype.rsint8(data, 'little', 0)); - - data[0] = 0x87; - data[1] = 0xab; - data[2] = 0x7c; - data[3] = 0xef; - ASSERT.equal(-121, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(-85, mod_ctype.rsint8(data, 'big', 1)); - ASSERT.equal(124, mod_ctype.rsint8(data, 'big', 2)); - ASSERT.equal(-17, mod_ctype.rsint8(data, 'big', 3)); - ASSERT.equal(-121, mod_ctype.rsint8(data, 'little', 0)); - ASSERT.equal(-85, mod_ctype.rsint8(data, 'little', 1)); - ASSERT.equal(124, mod_ctype.rsint8(data, 'little', 2)); - ASSERT.equal(-17, mod_ctype.rsint8(data, 'little', 3)); -} - -function test16() -{ - var buffer = new Buffer(6); - buffer[0] = 0x16; - buffer[1] = 0x79; - ASSERT.equal(0x1679, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(0x7916, mod_ctype.rsint16(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0x80; - ASSERT.equal(-128, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(-32513, mod_ctype.rsint16(buffer, 'little', 0)); - - /* test offset with weenix */ - buffer[0] = 0x77; - buffer[1] = 0x65; - buffer[2] = 0x65; - buffer[3] = 0x6e; - buffer[4] = 0x69; - buffer[5] = 0x78; - ASSERT.equal(0x7765, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'big', 1)); - ASSERT.equal(0x656e, mod_ctype.rsint16(buffer, 'big', 2)); - ASSERT.equal(0x6e69, mod_ctype.rsint16(buffer, 'big', 3)); - ASSERT.equal(0x6978, mod_ctype.rsint16(buffer, 'big', 4)); - ASSERT.equal(0x6577, mod_ctype.rsint16(buffer, 'little', 0)); - ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'little', 1)); - ASSERT.equal(0x6e65, mod_ctype.rsint16(buffer, 'little', 2)); - ASSERT.equal(0x696e, mod_ctype.rsint16(buffer, 'little', 3)); - ASSERT.equal(0x7869, mod_ctype.rsint16(buffer, 'little', 4)); -} - -function test32() -{ - var buffer = new Buffer(6); - buffer[0] = 0x43; - buffer[1] = 0x53; - buffer[2] = 0x16; - buffer[3] = 0x79; - ASSERT.equal(0x43531679, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(0x79165343, mod_ctype.rsint32(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0xfe; - buffer[2] = 0xef; - buffer[3] = 0xfa; - ASSERT.equal(-69638, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(-84934913, mod_ctype.rsint32(buffer, 'little', 0)); - - buffer[0] = 0x42; - buffer[1] = 0xc3; - buffer[2] = 0x95; - buffer[3] = 0xa9; - buffer[4] = 0x36; - buffer[5] = 0x17; - ASSERT.equal(0x42c395a9, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(-1013601994, mod_ctype.rsint32(buffer, 'big', 1)); - ASSERT.equal(-1784072681, mod_ctype.rsint32(buffer, 'big', 2)); - ASSERT.equal(-1449802942, mod_ctype.rsint32(buffer, 'little', 0)); - ASSERT.equal(917083587, mod_ctype.rsint32(buffer, 'little', 1)); - ASSERT.equal(389458325, mod_ctype.rsint32(buffer, 'little', 2)); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js deleted file mode 100644 index 5488177b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Test to make sure that we properly are erroring whenever we try to write - * beyond the size of the integer. - */ - -var mod_ctio = require('../../../ctio.js'); -var mod_assert = require('assert'); -var tb = new Buffer(16); /* Largest buffer we'll need */ - -var cases = [ - { func: - function () { - mod_ctio.wsint8(0x80, 'big', tb, 0); - }, test: '+int8_t' }, - { func: - function () { - mod_ctio.wsint8(-0x81, 'big', tb, 0); - }, test: '-int8_t' }, - - { func: - function () { - mod_ctio.wsint16(0x8000, 'big', tb, 0); - }, test: '+int16_t' }, - { func: - function () { - mod_ctio.wsint16(-0x8001, 'big', tb, 0); - }, test: '-int16_t' }, - { func: - function () { - mod_ctio.wsint32(0x80000000, 'big', tb, 0); - }, test: '+int32_t' }, - { func: - function () { - mod_ctio.wsint32(-0x80000001, 'big', tb, 0); - }, test: '-int32_t' }, - { func: - function () { - mod_ctio.wsint64([ 0x80000000, 0 ], 'big', tb, 0); - }, test: '+int64_t' }, - { func: - function () { - mod_ctio.wsint64([ -0x80000000, -1 ], 'big', tb, 0); - }, test: '-int64_t' } -]; - -function test() -{ - var ii; - for (ii = 0; ii < cases.length; ii++) - mod_assert.throws(cases[ii]['func'], Error, cases[ii]['test']); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js deleted file mode 100644 index 98b6a32a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Tests to verify we're writing signed integers correctly - */ -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function test8() -{ - var buffer = new Buffer(4); - mod_ctype.wsint8(0x23, 'big', buffer, 0); - mod_ctype.wsint8(0x23, 'little', buffer, 1); - mod_ctype.wsint8(-5, 'big', buffer, 2); - mod_ctype.wsint8(-5, 'little', buffer, 3); - - ASSERT.equal(0x23, buffer[0]); - ASSERT.equal(0x23, buffer[1]); - ASSERT.equal(0xfb, buffer[2]); - ASSERT.equal(0xfb, buffer[3]); - - /* Make sure we handle truncation correctly */ - ASSERT.throws(function () { - mod_ctype.wsint8(0xabc, 'big', buffer, 0); - }); - ASSERT.throws(function () { - mod_ctype.wsint8(0xabc, 'little', buffer, 0); - }); -} - -function test16() -{ - var buffer = new Buffer(6); - mod_ctype.wsint16(0x0023, 'big', buffer, 0); - mod_ctype.wsint16(0x0023, 'little', buffer, 2); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x23, buffer[1]); - ASSERT.equal(0x23, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wsint16(-5, 'big', buffer, 0); - mod_ctype.wsint16(-5, 'little', buffer, 2); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xfb, buffer[1]); - ASSERT.equal(0xfb, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - - mod_ctype.wsint16(-1679, 'big', buffer, 1); - mod_ctype.wsint16(-1679, 'little', buffer, 3); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x71, buffer[2]); - ASSERT.equal(0x71, buffer[3]); - ASSERT.equal(0xf9, buffer[4]); -} - -function test32() -{ - var buffer = new Buffer(8); - mod_ctype.wsint32(0x23, 'big', buffer, 0); - mod_ctype.wsint32(0x23, 'little', buffer, 4); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x23, buffer[3]); - ASSERT.equal(0x23, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wsint32(-5, 'big', buffer, 0); - mod_ctype.wsint32(-5, 'little', buffer, 4); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xfb, buffer[3]); - ASSERT.equal(0xfb, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wsint32(-805306713, 'big', buffer, 0); - mod_ctype.wsint32(-805306713, 'litle', buffer, 4); - ASSERT.equal(0xcf, buffer[0]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xfe, buffer[2]); - ASSERT.equal(0xa7, buffer[3]); - ASSERT.equal(0xa7, buffer[4]); - ASSERT.equal(0xfe, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xcf, buffer[7]); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js deleted file mode 100644 index cf66ac7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Test our ability to read and write unsigned 64-bit integers. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testRead() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - data[6] = 0xff; - data[7] = 0xff; - data[8] = 0x89; - data[9] = 0x11; - res = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(0x32654256, res[0]); - ASSERT.equal(0x23ffffff, res[1]); - res = mod_ctype.ruint64(data, 'big', 1); - ASSERT.equal(0x65425623, res[0]); - ASSERT.equal(0xffffff89, res[1]); - res = mod_ctype.ruint64(data, 'big', 2); - ASSERT.equal(0x425623ff, res[0]); - ASSERT.equal(0xffff8911, res[1]); - res = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(0xffffff23, res[0]); - ASSERT.equal(0x56426532, res[1]); - res = mod_ctype.ruint64(data, 'little', 1); - ASSERT.equal(0x89ffffff, res[0]); - ASSERT.equal(0x23564265, res[1]); - res = mod_ctype.ruint64(data, 'little', 2); - ASSERT.equal(0x1189ffff, res[0]); - ASSERT.equal(0xff235642, res[1]); - -} - -function testReadOver() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x80; - data[1] = 0xff; - data[2] = 0x80; - data[3] = 0xff; - data[4] = 0x80; - data[5] = 0xff; - data[6] = 0x80; - data[7] = 0xff; - data[8] = 0x80; - data[9] = 0xff; - res = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'big', 1); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); - res = mod_ctype.ruint64(data, 'big', 2); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); - res = mod_ctype.ruint64(data, 'little', 1); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'little', 2); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); -} - -function testWriteZero() -{ - var data, buf; - buf = new Buffer(10); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); - - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); -} - -/* - * Also include tests that are going to force us to go into a negative value and - * insure that it's written correctly. - */ -function testWrite() -{ - var data, buf; - - buf = new Buffer(10); - data = [ 0x234456, 0x87 ]; - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x23, buf[1]); - ASSERT.equal(0x44, buf[2]); - ASSERT.equal(0x56, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x87, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x23, buf[2]); - ASSERT.equal(0x44, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x87, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x23, buf[3]); - ASSERT.equal(0x44, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x87, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0x87, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x44, buf[5]); - ASSERT.equal(0x23, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x87, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x44, buf[6]); - ASSERT.equal(0x23, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x87, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x56, buf[6]); - ASSERT.equal(0x44, buf[7]); - ASSERT.equal(0x23, buf[8]); - ASSERT.equal(0x00, buf[9]); - - data = [0xffff3421, 0x34abcdba]; - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0x34, buf[2]); - ASSERT.equal(0x21, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0xab, buf[5]); - ASSERT.equal(0xcd, buf[6]); - ASSERT.equal(0xba, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xab, buf[6]); - ASSERT.equal(0xcd, buf[7]); - ASSERT.equal(0xba, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xab, buf[7]); - ASSERT.equal(0xcd, buf[8]); - ASSERT.equal(0xba, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0xba, buf[0]); - ASSERT.equal(0xcd, buf[1]); - ASSERT.equal(0xab, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xba, buf[1]); - ASSERT.equal(0xcd, buf[2]); - ASSERT.equal(0xab, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0xff, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xba, buf[2]); - ASSERT.equal(0xcd, buf[3]); - ASSERT.equal(0xab, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x21, buf[6]); - ASSERT.equal(0x34, buf[7]); - ASSERT.equal(0xff, buf[8]); - ASSERT.equal(0xff, buf[9]); -} - -/* - * Make sure we catch invalid writes. - */ -function testWriteInvalid() -{ - var data, buf; - - /* Buffer too small */ - buf = new Buffer(4); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 0); - }, Error, 'buffer too small'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 0); - }, Error, 'buffer too small'); - - /* Beyond the end of the buffer */ - buf = new Buffer(12); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 11); - }, Error, 'write beyond end of buffer'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 11); - }, Error, 'write beyond end of buffer'); - - /* Write negative values */ - buf = new Buffer(12); - data = [ -3, 0 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - data = [ 0, -3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - data = [ -3, -3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - - /* Write fractional values */ - buf = new Buffer(12); - data = [ 3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, 3.3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - /* Write values that are too large */ - buf = new Buffer(12); - data = [ 0xffffffffff, 23 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0xffffffffff, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x23, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); -} - - -testRead(); -testReadOver(); -testWriteZero(); -testWrite(); -testWriteInvalid(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js deleted file mode 100644 index 87ae59b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js +++ /dev/null @@ -1,81 +0,0 @@ -/* - * A battery of tests for sucessful round-trip between writes and reads - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - - -/* - * What the heck, let's just test every value for 8-bits. - */ - -function test8() { - var data = new Buffer(1); - var i; - for (i = 0; i < 256; i++) { - mod_ctype.wuint8(i, 'big', data, 0); - ASSERT.equal(i, mod_ctype.ruint8(data, 'big', 0)); - mod_ctype.wuint8(i, 'little', data, 0); - ASSERT.equal(i, mod_ctype.ruint8(data, 'little', 0)); - } - ASSERT.ok(true); -} - -/* - * Test a random sample of 256 values in the 16-bit unsigned range - */ - -function test16() { - var data = new Buffer(2); - var i = 0; - for (i = 0; i < 256; i++) { - var value = Math.round(Math.random() * Math.pow(2, 16)); - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(value, mod_ctype.ruint16(data, 'big', 0)); - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(value, mod_ctype.ruint16(data, 'little', 0)); - } -} - -/* - * Test a random sample of 256 values in the 32-bit unsigned range - */ - -function test32() { - var data = new Buffer(4); - var i = 0; - for (i = 0; i < 256; i++) { - var value = Math.round(Math.random() * Math.pow(2, 32)); - mod_ctype.wuint32(value, 'big', data, 0); - ASSERT.equal(value, mod_ctype.ruint32(data, 'big', 0)); - mod_ctype.wuint32(value, 'little', data, 0); - ASSERT.equal(value, mod_ctype.ruint32(data, 'little', 0)); - } -} - -/* - * Test a random sample of 256 values in the 64-bit unsigned range - */ - -function test64() { - var data = new Buffer(8); - var i = 0; - for (i = 0; i < 256; i++) { - var low = Math.round(Math.random() * Math.pow(2, 32)); - var high = Math.round(Math.random() * Math.pow(2, 32)); - mod_ctype.wuint64([high, low], 'big', data, 0); - var result = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(high, result[0]); - ASSERT.equal(low, result[1]); - mod_ctype.wuint64([high, low], 'little', data, 0); - result = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(high, result[0]); - ASSERT.equal(low, result[1]); - } -} - -exports.test8 = test8; -exports.test16 = test16; -exports.test32 = test32; -exports.test64 = test64; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js deleted file mode 100644 index b67c077f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js +++ /dev/null @@ -1,95 +0,0 @@ -/* - * A battery of tests to help us read a series of uints - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * We need to check the following things: - * - We are correctly resolving big endian (doesn't mean anything for 8 bit) - * - Correctly resolving little endian (doesn't mean anything for 8 bit) - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test8() -{ - var data = new Buffer(4); - data[0] = 23; - data[1] = 23; - data[2] = 23; - data[3] = 23; - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 0)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 0)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 1)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 1)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 2)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 2)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 3)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 3)); - data[0] = 255; /* If it became a signed int, would be -1 */ - ASSERT.equal(255, mod_ctype.ruint8(data, 'big', 0)); - ASSERT.equal(255, mod_ctype.ruint8(data, 'little', 0)); -} - -/* - * Test 16 bit unsigned integers. We need to verify the same set as 8 bit, only - * now some of the issues actually matter: - * - We are correctly resolving big endian - * - Correctly resolving little endian - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test16() -{ - var data = new Buffer(4); - /* Test signed values first */ - data[0] = 0; - data[1] = 0x23; - data[2] = 0x42; - data[3] = 0x3f; - - ASSERT.equal(0x23, mod_ctype.ruint16(data, 'big', 0)); - ASSERT.equal(0x2342, mod_ctype.ruint16(data, 'big', 1)); - ASSERT.equal(0x423f, mod_ctype.ruint16(data, 'big', 2)); - - ASSERT.equal(0x2300, mod_ctype.ruint16(data, 'little', 0)); - ASSERT.equal(0x4223, mod_ctype.ruint16(data, 'little', 1)); - ASSERT.equal(0x3f42, mod_ctype.ruint16(data, 'little', 2)); - - data[0] = 0xfe; - data[1] = 0xfe; - - ASSERT.equal(0xfefe, mod_ctype.ruint16(data, 'big', 0)); - ASSERT.equal(0xfefe, mod_ctype.ruint16(data, 'little', 0)); -} - -/* - * Test 32 bit unsigned integers. We need to verify the same set as 8 bit, only - * now some of the issues actually matter: - * - We are correctly resolving big endian - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test32() -{ - var data = new Buffer(8); - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - - ASSERT.equal(0x32654256, mod_ctype.ruint32(data, 'big', 0)); - ASSERT.equal(0x65425623, mod_ctype.ruint32(data, 'big', 1)); - ASSERT.equal(0x425623ff, mod_ctype.ruint32(data, 'big', 2)); - - ASSERT.equal(0x56426532, mod_ctype.ruint32(data, 'little', 0)); - ASSERT.equal(0x23564265, mod_ctype.ruint32(data, 'little', 1)); - ASSERT.equal(0xff235642, mod_ctype.ruint32(data, 'little', 2)); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js deleted file mode 100644 index d6c4230f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * A battery of tests to help us read a series of uints - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * We need to check the following things: - * - We are correctly resolving big endian (doesn't mean anything for 8 bit) - * - Correctly resolving little endian (doesn't mean anything for 8 bit) - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test8() -{ - var data = new Buffer(4); - mod_ctype.wuint8(23, 'big', data, 0); - mod_ctype.wuint8(23, 'big', data, 1); - mod_ctype.wuint8(23, 'big', data, 2); - mod_ctype.wuint8(23, 'big', data, 3); - ASSERT.equal(23, data[0]); - ASSERT.equal(23, data[1]); - ASSERT.equal(23, data[2]); - ASSERT.equal(23, data[3]); - mod_ctype.wuint8(23, 'little', data, 0); - mod_ctype.wuint8(23, 'little', data, 1); - mod_ctype.wuint8(23, 'little', data, 2); - mod_ctype.wuint8(23, 'little', data, 3); - ASSERT.equal(23, data[0]); - ASSERT.equal(23, data[1]); - ASSERT.equal(23, data[2]); - ASSERT.equal(23, data[3]); - mod_ctype.wuint8(255, 'big', data, 0); - ASSERT.equal(255, data[0]); - mod_ctype.wuint8(255, 'little', data, 0); - ASSERT.equal(255, data[0]); -} - -function test16() -{ - var value = 0x2343; - var data = new Buffer(4); - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(0x23, data[0]); - ASSERT.equal(0x43, data[1]); - mod_ctype.wuint16(value, 'big', data, 1); - ASSERT.equal(0x23, data[1]); - ASSERT.equal(0x43, data[2]); - mod_ctype.wuint16(value, 'big', data, 2); - ASSERT.equal(0x23, data[2]); - ASSERT.equal(0x43, data[3]); - - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(0x23, data[1]); - ASSERT.equal(0x43, data[0]); - - mod_ctype.wuint16(value, 'little', data, 1); - ASSERT.equal(0x23, data[2]); - ASSERT.equal(0x43, data[1]); - - mod_ctype.wuint16(value, 'little', data, 2); - ASSERT.equal(0x23, data[3]); - ASSERT.equal(0x43, data[2]); - - value = 0xff80; - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(0xff, data[1]); - ASSERT.equal(0x80, data[0]); - - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(0xff, data[0]); - ASSERT.equal(0x80, data[1]); -} - -function test32() -{ - var data = new Buffer(6); - var value = 0xe7f90a6d; - - mod_ctype.wuint32(value, 'big', data, 0); - ASSERT.equal(0xe7, data[0]); - ASSERT.equal(0xf9, data[1]); - ASSERT.equal(0x0a, data[2]); - ASSERT.equal(0x6d, data[3]); - - mod_ctype.wuint32(value, 'big', data, 1); - ASSERT.equal(0xe7, data[1]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0x0a, data[3]); - ASSERT.equal(0x6d, data[4]); - - mod_ctype.wuint32(value, 'big', data, 2); - ASSERT.equal(0xe7, data[2]); - ASSERT.equal(0xf9, data[3]); - ASSERT.equal(0x0a, data[4]); - ASSERT.equal(0x6d, data[5]); - - mod_ctype.wuint32(value, 'little', data, 0); - ASSERT.equal(0xe7, data[3]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0x0a, data[1]); - ASSERT.equal(0x6d, data[0]); - - mod_ctype.wuint32(value, 'little', data, 1); - ASSERT.equal(0xe7, data[4]); - ASSERT.equal(0xf9, data[3]); - ASSERT.equal(0x0a, data[2]); - ASSERT.equal(0x6d, data[1]); - - mod_ctype.wuint32(value, 'little', data, 2); - ASSERT.equal(0xe7, data[5]); - ASSERT.equal(0xf9, data[4]); - ASSERT.equal(0x0a, data[3]); - ASSERT.equal(0x6d, data[2]); -} - -function test64() -{ - var data = new Buffer(10); - var value = 0x0007cda8e7f90a6d; - var high = Math.floor(value / Math.pow(2, 32)); - var low = value - (high * Math.pow(2, 32)); - ASSERT.equal(0x0007cda8, high); - ASSERT.equal(0xe7f90a6d, low); - - mod_ctype.wuint64([high, low], 'big', data, 0); - ASSERT.equal(0x00, data[0]); - ASSERT.equal(0x07, data[1]); - ASSERT.equal(0xcd, data[2]); - ASSERT.equal(0xa8, data[3]); - ASSERT.equal(0xe7, data[4]); - ASSERT.equal(0xf9, data[5]); - ASSERT.equal(0x0a, data[6]); - ASSERT.equal(0x6d, data[7]); - - mod_ctype.wuint64([high, low], 'little', data, 0); - ASSERT.equal(0x6d, data[0]); - ASSERT.equal(0x0a, data[1]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0xe7, data[3]); - ASSERT.equal(0xa8, data[4]); - ASSERT.equal(0xcd, data[5]); - ASSERT.equal(0x07, data[6]); - ASSERT.equal(0x00, data[7]); -} - -test8(); -test16(); -test32(); -test64(); - -exports.test8 = test8; -exports.test16 = test16; -exports.test32 = test32; -exports.test64 = test64; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js deleted file mode 100644 index e9895152..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Simple does to see if it works at all - */ -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); -var mod_sys = require('sys'); - -function test() -{ - var ii, p, result, buffer; - - p = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer(4); - buffer[0] = 23; - buffer[3] = 42; - result = p.readData([ { x: { type: 'uint8_t' }}, - { y: { type: 'uint8_t', offset: 3 }} - ], buffer, 0); - ASSERT.equal(23, result['x']); - ASSERT.equal(42, result['y']); - - buffer = new Buffer(23); - for (ii = 0; ii < 23; ii++) - buffer[ii] = 0; - - buffer.write('Hello, world!'); - result = p.readData([ { x: { type: 'char[20]' }} ], buffer, 0); - - /* - * This is currently broken behvaior, need to redesign check - * ASSERT.equal('Hello, world!', result['x'].toString('utf-8', 0, - * result['x'].length)); - */ - - buffer = new Buffer(4); - buffer[0] = 0x03; - buffer[1] = 0x24; - buffer[2] = 0x25; - buffer[3] = 0x26; - result = p.readData([ { y: { type: 'uint8_t' }}, - { x: { type: 'uint8_t[y]' }}], buffer, 0); - console.log(mod_sys.inspect(result, true)); - - p.typedef('ssize_t', 'int32_t'); - ASSERT.deepEqual({ 'ssize_t': 'int32_t' }, p.lstypes()); - result = p.readData([ { x: { type: 'ssize_t' } } ], buffer, 0); - ASSERT.equal(0x26252403, result['x']); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js deleted file mode 100644 index 89d446f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Simple does it fucking work at all test - */ - -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); -var mod_sys = require('sys'); - -function test() -{ - var ii, p, buffer, buf2; - - p = new mod_ctype.Parser({ endian: 'big' }); - buffer = new Buffer(4); - p.writeData([ { x: { type: 'uint8_t', value: 23 }}, - { y: { type: 'uint8_t', offset: 3, value: 42 }} - ], buffer, 0); - ASSERT.equal(23, buffer[0]); - ASSERT.equal(42, buffer[3]); - - buffer = new Buffer(20); - for (ii = 0; ii < 20; ii++) - buffer[ii] = 0; - - buffer.write('Hello, world!'); - buf2 = new Buffer(22); - p.writeData([ { x: { type: 'char[20]', value: buffer }} ], buf2, 0); - for (ii = 0; ii < 20; ii++) - ASSERT.equal(buffer[ii], buf2[ii]); - /* - * This is currently broken behvaior, need to redesign check - * ASSERT.equal('Hello, world!', result['x'].toString('utf-8', 0, - * result['x'].length)); - */ - - buffer = new Buffer(4); - p.writeData([ { y: { type: 'uint8_t', value: 3 }}, - { x: { type: 'uint8_t[y]', value: [ 0x24, 0x25, 0x26] }}], - buffer, 0); - console.log(mod_sys.inspect(buffer)); - - p.typedef('ssize_t', 'int32_t'); - ASSERT.deepEqual({ 'ssize_t': 'int32_t' }, p.lstypes()); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js deleted file mode 100644 index 14d9529c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Test the different forms of reading characters: - * - * - the default, a single element buffer - * - uint8, values are uint8_ts - * - int8, values are int8_ts - */ -var mod_ctype = require('../../ctype'); -var mod_assert = require('assert'); - -function test() -{ - var p, buf, res; - - buf = new Buffer(1); - buf[0] = 255; - - p = new mod_ctype.Parser({ endian: 'little'}); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(res instanceof Buffer); - mod_assert.equal(255, res[0]); - - p = new mod_ctype.Parser({ endian: 'little', - 'char-type': 'int8' }); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(typeof (res) == 'number', 'got typeof (res): ' + - typeof (res)); - mod_assert.equal(-1, res); - - p = new mod_ctype.Parser({ endian: 'little', - 'char-type': 'uint8' }); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(typeof (res) == 'number', 'got typeof (res): ' + - typeof (res)); - mod_assert.equal(255, res); - -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js deleted file mode 100644 index 11fc2d2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Simple test to make sure that the endian setting works. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf; - - parser = new mod_ctype.Parser({ - endian: 'little' - }); - - buf = new Buffer(2); - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x34); - mod_assert.equal(buf[1], 0x12); - parser.setEndian('big'); - - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x12); - mod_assert.equal(buf[1], 0x34); - - parser.setEndian('little'); - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x34); - mod_assert.equal(buf[1], 0x12); -} - -function fail() -{ - var parser; - - parser = new mod_ctype.Parser({ - endian: 'little' - }); - mod_assert.throws(function () { - parser.setEndian('littlebigwrong'); - }); -} - -test(); -fail(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js deleted file mode 100644 index 9491cf6e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * A long overdue test to go through and verify that we can read and write - * structures as well as nested structures. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(2); - data = [ - { point: { type: 'point_t', value: [ 23, 42 ] } } - ]; - parser.writeData(data, buf, 0); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js deleted file mode 100644 index 6c490a2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Testing to ensure we're reading the expected number bytes - */ -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); - -function testUint8() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80', 'hex'); - result = parser.readStruct([ { item: { type: 'uint8_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 1); -} - -function testSint8() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80', 'hex'); - result = parser.readStruct([ { item: { type: 'int8_t' } } ], buffer, 0); - ASSERT.equal(result['size'], 1); -} - -function testUint16() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint16_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 2); -} - -function testSint16() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000', 'hex'); - result = parser.readStruct([ { item: { type: 'int16_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 2); -} - -function testUint32() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80000000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint32_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 4); -} - -function testSint32() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80000000', 'hex'); - result = parser.readStruct([ { item: { type: 'int32_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 4); -} - -function testUint64() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000000000000000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint64_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 8); -} - -function testSint64() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000000000000000', 'hex'); - result = parser.readStruct([ { item: { type: 'int64_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 8); -} - -function testFloat() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('ABAAAA3E', 'hex'); - result = parser.readStruct([ { item: { type: 'float' } } ], buffer, 0); - ASSERT.equal(result['size'], 4); -} - -function testDouble() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('000000000000F03F', 'hex'); - result = parser.readStruct([ { item: { type: 'double' } } ], buffer, 0); - ASSERT.equal(result['size'], 8); -} - -function testChar() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('t'); - result = parser.readStruct([ { item: { type: 'char' } } ], buffer, 0); - ASSERT.equal(result['size'], 1); -} - -function test() -{ - testSint8(); - testUint8(); - testSint16(); - testUint16(); - testSint32(); - testUint32(); - testSint64(); - testUint64(); - testFloat(); - testDouble(); - testChar(); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js deleted file mode 100644 index 09c1a5ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * A long overdue test to go through and verify that we can read and write - * structures as well as nested structures. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(2); - data = [ - { point: { type: 'point_t' } } - ]; - parser.writeData(data, buf, 0, [ [ 23, 42 ] ]); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js deleted file mode 100644 index 48556667..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Test to verify that the offset is incremented when structures are written to. - * Hopefully we will not regress issue #41 - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(4); - data = [ - { point1: { type: 'point_t' } }, - { point2: { type: 'point_t' } } - ]; - parser.writeData(data, buf, 0, [ [ 23, 42 ], [ 91, 18 ] ]); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); - mod_assert.ok(buf[2] == 91); - mod_assert.ok(buf[3] == 18); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json deleted file mode 100644 index 94bd8e79..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Joyent, Inc" - }, - "name": "http-signature", - "description": "Reference implementation of Joyent's HTTP Signature Scheme", - "version": "0.10.0", - "repository": { - "type": "git", - "url": "git://github.com/joyent/node-http-signature.git" - }, - "engines": { - "node": ">=0.8" - }, - "main": "lib/index.js", - "scripts": { - "test": "./node_modules/.bin/tap tst/*.js" - }, - "dependencies": { - "assert-plus": "0.1.2", - "asn1": "0.1.11", - "ctype": "0.5.2" - }, - "devDependencies": { - "node-uuid": "1.4.0", - "tap": "0.4.2" - }, - "readme": "# node-http-signature\n\nnode-http-signature is a node.js library that has client and server components\nfor Joyent's [HTTP Signature Scheme](http_signing.md).\n\n## Usage\n\nNote the example below signs a request with the same key/cert used to start an\nHTTP server. This is almost certainly not what you actaully want, but is just\nused to illustrate the API calls; you will need to provide your own key\nmanagement in addition to this library.\n\n### Client\n\n var fs = require('fs');\n var https = require('https');\n var httpSignature = require('http-signature');\n\n var key = fs.readFileSync('./key.pem', 'ascii');\n\n var options = {\n host: 'localhost',\n port: 8443,\n path: '/',\n method: 'GET',\n headers: {}\n };\n\n // Adds a 'Date' header in, signs it, and adds the\n // 'Authorization' header in.\n var req = https.request(options, function(res) {\n console.log(res.statusCode);\n });\n\n\n httpSignature.sign(req, {\n key: key,\n keyId: './cert.pem'\n });\n\n req.end();\n\n### Server\n\n var fs = require('fs');\n var https = require('https');\n var httpSignature = require('http-signature');\n\n var options = {\n key: fs.readFileSync('./key.pem'),\n cert: fs.readFileSync('./cert.pem')\n };\n\n https.createServer(options, function (req, res) {\n var rc = 200;\n var parsed = httpSignature.parseRequest(req);\n var pub = fs.readFileSync(parsed.keyId, 'ascii');\n if (!httpSignature.verifySignature(parsed, pub))\n rc = 401;\n\n res.writeHead(rc);\n res.end();\n }).listen(8443);\n\n## Installation\n\n npm install http-signature\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/joyent/node-http-signature/issues>.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/joyent/node-http-signature/issues" - }, - "homepage": "https://github.com/joyent/node-http-signature", - "_id": "http-signature@0.10.0", - "_from": "http-signature@~0.10.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md deleted file mode 100644 index 5d764f3a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# json-stringify-safe - -Like JSON.stringify, but doesn't throw on circular references. - -## Usage - -Takes the same arguments as `JSON.stringify`. - -```javascript -var stringify = require('json-stringify-safe'); -var circularObj = {}; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; -console.log(stringify(circularObj, null, 2)); -``` - -Output: - -```json -{ - "circularRef": "[Circular]", - "list": [ - "[Circular]", - "[Circular]" - ] -} -``` - -## Details - -``` -stringify(obj, serializer, indent, decycler) -``` - -The first three arguments are the same as to JSON.stringify. The last -is an argument that's only used when the object has been seen already. - -The default `decycler` function returns the string `'[Circular]'`. -If, for example, you pass in `function(k,v){}` (return nothing) then it -will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`, -then cyclical objects will always be represented as `{"foo":"bar"}` in -the result. - -``` -stringify.getSerialize(serializer, decycler) -``` - -Returns a serializer that can be used elsewhere. This is the actual -function that's passed to JSON.stringify. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json deleted file mode 100644 index 322c23a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "json-stringify-safe", - "version": "5.0.0", - "description": "Like JSON.stringify, but doesn't blow up on circular refs", - "main": "stringify.js", - "scripts": { - "test": "node test.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/json-stringify-safe" - }, - "keywords": [ - "json", - "stringify", - "circular", - "safe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "license": "BSD", - "readmeFilename": "README.md", - "readme": "# json-stringify-safe\n\nLike JSON.stringify, but doesn't throw on circular references.\n\n## Usage\n\nTakes the same arguments as `JSON.stringify`.\n\n```javascript\nvar stringify = require('json-stringify-safe');\nvar circularObj = {};\ncircularObj.circularRef = circularObj;\ncircularObj.list = [ circularObj, circularObj ];\nconsole.log(stringify(circularObj, null, 2));\n```\n\nOutput:\n\n```json\n{\n \"circularRef\": \"[Circular]\",\n \"list\": [\n \"[Circular]\",\n \"[Circular]\"\n ]\n}\n```\n\n## Details\n\n```\nstringify(obj, serializer, indent, decycler)\n```\n\nThe first three arguments are the same as to JSON.stringify. The last\nis an argument that's only used when the object has been seen already.\n\nThe default `decycler` function returns the string `'[Circular]'`.\nIf, for example, you pass in `function(k,v){}` (return nothing) then it\nwill prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`,\nthen cyclical objects will always be represented as `{\"foo\":\"bar\"}` in\nthe result.\n\n```\nstringify.getSerialize(serializer, decycler)\n```\n\nReturns a serializer that can be used elsewhere. This is the actual\nfunction that's passed to JSON.stringify.\n", - "bugs": { - "url": "https://github.com/isaacs/json-stringify-safe/issues" - }, - "homepage": "https://github.com/isaacs/json-stringify-safe", - "_id": "json-stringify-safe@5.0.0", - "_from": "json-stringify-safe@~5.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js deleted file mode 100644 index 853ef9b2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = stringify; - -function getSerialize (fn, decycle) { - var seen = [], keys = []; - decycle = decycle || function(key, value) { - return '[Circular ' + getPath(value, seen, keys) + ']' - }; - return function(key, value) { - var ret = value; - if (typeof value === 'object' && value) { - if (seen.indexOf(value) !== -1) - ret = decycle(key, value); - else { - seen.push(value); - keys.push(key); - } - } - if (fn) ret = fn(key, ret); - return ret; - } -} - -function getPath (value, seen, keys) { - var index = seen.indexOf(value); - var path = [ keys[index] ]; - for (index--; index >= 0; index--) { - if (seen[index][ path[0] ] === value) { - value = seen[index]; - path.unshift(keys[index]); - } - } - return '~' + path.join('.'); -} - -function stringify(obj, fn, spaces, decycle) { - return JSON.stringify(obj, getSerialize(fn, decycle), spaces); -} - -stringify.getSerialize = getSerialize; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js deleted file mode 100644 index 991e9197..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js +++ /dev/null @@ -1,128 +0,0 @@ -var stringify = require('./stringify.js'); - -var circularObj = { a: 'b' }; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; - -////////// -// default -var testObj = { - "a": "b", - "circularRef": "[Circular ~]", - "list": [ - "[Circular ~]", - "[Circular ~]" - ] -}; - -var assert = require('assert'); -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2)); - -assert.equal(JSON.stringify(testObj, null, 2), - JSON.stringify(circularObj, stringify.getSerialize(), 2)); - - -//////// -// prune -testObj = { - "a": "b", - "list": [ - null, - null - ] -}; - -function prune(k, v) {} - -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2, prune)); - -/////////// -// re-cycle -// (throws) -function recycle(k, v) { - return v; -} - -assert.throws(function() { - stringify(circularObj, null, 2, recycle); -}); - -//////// -// fancy -testObj = { - "a": "b", - "circularRef": "circularRef{a:string,circularRef:Object,list:Array}", - "list": [ - "0{a:string,circularRef:Object,list:Array}", - "1{a:string,circularRef:Object,list:Array}" - ] -}; - -function signer(key, value) { - var ret = key + '{'; - var f = false; - for (var i in value) { - if (f) - ret += ','; - f = true; - ret += i + ':'; - var v = value[i]; - switch (typeof v) { - case 'object': - if (!v) - ret += 'null'; - else if (Array.isArray(v)) - ret += 'Array' - else - ret += v.constructor && v.constructor.name || 'Object'; - break; - default: - ret += typeof v; - break; - } - } - ret += '}'; - return ret; -} - -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2, signer)); - - -/////// -//multi -var a = { x: 1 }; -a.a = a; -var b = { x: 2 }; -b.a = a; - -var c = { a: a, b: b }; -var d = { list: [ a, b, c ] }; -d.d = d; - -var multi = { - "list": [ - { - "x": 1, - "a": "[Circular ~.list.0]" - }, - { - "x": 2, - "a": "[Circular ~.list.0]" - }, - { - "a": "[Circular ~.list.0]", - "b": "[Circular ~.list.1]" - } - ], - "d": "[Circular ~]" -}; - -assert.equal(JSON.stringify(multi, null, 2), - stringify(d, null, 2)); - -//////// -// pass! -console.log('ok'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE deleted file mode 100644 index 451fc455..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md deleted file mode 100644 index 6ca19bd1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js deleted file mode 100644 index 48be0c5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js +++ /dev/null @@ -1,114 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json deleted file mode 100644 index a9759392..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.2.11", - "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "homepage": "https://github.com/broofa/node-mime", - "_id": "mime@1.2.11", - "_from": "mime@~1.2.9" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js deleted file mode 100644 index 2cda1c7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); -var path = require('path'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); // normal file -eq('text/plain', mime.lookup('TEXT.TXT')); // uppercase -eq('text/plain', mime.lookup('dir/text.txt')); // dir + file -eq('text/plain', mime.lookup('.text.txt')); // hidden file -eq('text/plain', mime.lookup('.txt')); // nameless -eq('text/plain', mime.lookup('txt')); // extension-only -eq('text/plain', mime.lookup('/txt')); // extension-less () -eq('text/plain', mime.lookup('\\txt')); // Windows, extension-less -eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized -eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq('bin', mime.extension('application/octet-stream ')); -eq('html', mime.extension(' text/html; charset=UTF-8')); -eq('html', mime.extension('text/html; charset=UTF-8 ')); -eq('html', mime.extension('text/html; charset=UTF-8')); -eq('html', mime.extension('text/html ; charset=UTF-8')); -eq('html', mime.extension('text/html;charset=UTF-8')); -eq('html', mime.extension('text/Html;charset=UTF-8')); -eq(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -eq('application/font-woff', mime.lookup('file.woff')); -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); -eq('font/opentype', mime.lookup('file.otf')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -// -// Test for overlaps between mime.types and node.types -// - -var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime(); -apacheTypes.load(path.join(__dirname, 'types/mime.types')); -nodeTypes.load(path.join(__dirname, 'types/node.types')); - -var keys = [].concat(Object.keys(apacheTypes.types)) - .concat(Object.keys(nodeTypes.types)); -keys.sort(); -for (var i = 1; i < keys.length; i++) { - if (keys[i] == keys[i-1]) { - console.warn('Warning: ' + - 'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] + - ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]); - } -} - -console.log('\nOK'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types deleted file mode 100644 index da8cd691..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1588 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at <http://www.iana.org/assignments/media-types/>. -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types deleted file mode 100644 index 55b2cf79..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types +++ /dev/null @@ -1,77 +0,0 @@ -# What: WebVTT -# Why: To allow formats intended for marking up external text track resources. -# http://dev.w3.org/html5/webvtt/ -# Added by: niftylettuce -text/vtt vtt - -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifes ('.manifest' extension) -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Lua file types -# Why: Googling around shows de-facto consensus on these -# Added by: creationix (Issue #45) -text/x-lua lua -application/x-lua-bytecode luac - -# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax -# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown -# Added by: avoidwork -text/x-markdown markdown md mkd - -# What: ini files -# Why: because they're just text files -# Added by: Matthew Kastor -text/plain ini - -# What: DASH Adaptive Streaming manifest -# Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video -# Added by: eelcocramer -application/dash+xml mdp - -# What: OpenType font files - http://www.microsoft.com/typography/otspec/ -# Why: Browsers usually ignore the font MIME types and sniff the content, -# but Chrome, shows a warning if OpenType fonts aren't served with -# the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png. -# Added by: alrra -font/opentype otf diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md deleted file mode 100644 index f039427f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md +++ /dev/null @@ -1,2 +0,0 @@ -Copyright (c) 2010-2012 Robert Kieffer -MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md deleted file mode 100644 index e436a89f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md +++ /dev/null @@ -1,207 +0,0 @@ -# node-uuid - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid'). -* Cryptographically strong random # generation on supporting platforms -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) - -## Getting Started - -Install it in your browser: - -```html -<script src="uuid.js"></script> -``` - -Or in node.js: - -``` -npm install node-uuid -``` - -```javascript -var uuid = require('node-uuid'); -``` - -Then create some ids ... - -```javascript -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the node-uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include <stdio.h> -#include <unistd.h> -#include <sys/time.h> -#include <uuid/uuid.h> - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json deleted file mode 100644 index ace21348..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "node-uuid", - "repo": "broofa/node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "version": "1.4.0", - "author": "Robert Kieffer <robert@broofa.com>", - "contributors": [ - {"name": "Christoph Tavan <dev@tavan.de>", "github": "https://github.com/ctavan"} - ], - "keywords": ["uuid", "guid", "rfc4122"], - "dependencies": {}, - "development": {}, - "main": "uuid.js", - "scripts": [ - "uuid.js" - ], - "license": "MIT" -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json deleted file mode 100644 index 5cc6f35e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "url": "http://github.com/broofa/node-uuid", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "lib": ".", - "main": "./uuid.js", - "repository": { - "type": "git", - "url": "https://github.com/broofa/node-uuid.git" - }, - "version": "1.4.1", - "readme": "# node-uuid\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src=\"uuid.js\"></script>\n```\n\nOr in node.js:\n\n```\nnpm install node-uuid\n```\n\n```javascript\nvar uuid = require('node-uuid');\n```\n\nThen create some ids ...\n\n```javascript\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the node-uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-uuid/issues" - }, - "homepage": "https://github.com/broofa/node-uuid", - "_id": "node-uuid@1.4.1", - "_from": "node-uuid@~1.4.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js deleted file mode 100644 index 05af8221..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js +++ /dev/null @@ -1,63 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../uuid'), - uuidjs = require('uuid-js'), - libuuid = require('uuid').generate, - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html deleted file mode 100644 index d80326ec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html +++ /dev/null @@ -1,17 +0,0 @@ -<html> - <head> - <style> - div { - font-family: monospace; - font-size: 8pt; - } - div.log {color: #444;} - div.warn {color: #550;} - div.error {color: #800; font-weight: bold;} - </style> - <script src="../uuid.js"></script> - </head> - <body> - <script src="./test.js"></script> - </body> -</html> diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js deleted file mode 100644 index 24692256..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js +++ /dev/null @@ -1,228 +0,0 @@ -if (!this.uuid) { - // node.js - uuid = require('../uuid'); -} - -// -// x-platform log/assert shims -// - -function _log(msg, type) { - type = type || 'log'; - - if (typeof(document) != 'undefined') { - document.write('<div class="' + type + '">' + msg.replace(/\n/g, '<br />') + '</div>'); - } - if (typeof(console) != 'undefined') { - var color = { - log: '\033[39m', - warn: '\033[33m', - error: '\033[31m' - }; - console[type](color[type] + msg + color.log); - } -} - -function log(msg) {_log(msg, 'log');} -function warn(msg) {_log(msg, 'warn');} -function error(msg) {_log(msg, 'error');} - -function assert(res, msg) { - if (!res) { - error('FAIL: ' + msg); - } else { - log('Pass: ' + msg); - } -} - -// -// Unit tests -// - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - ids = ids.map(function(id) { - return id.split('-').reverse().join('-'); - }).sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' -); - -// Verify throw if too many ids created -var thrown = false; -try { - uuid.v1({msecs: TIME, nsecs: 10000}); -} catch (e) { - thrown = true; -} -assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); - -// Verify clock regression bumps clockseq -var uidt = uuid.v1({msecs: TIME}); -var uidtb = uuid.v1({msecs: TIME - 1}); -assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' -); - -// Verify clock regression bumps clockseq -var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); -var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); -assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' -); - -// Verify explicit options produce expected id -var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] -}); -assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); - -// Verify adjacent ids across a msec boundary are 1 time unit apart -var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); -var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - -var before = u0.split('-')[0], after = u1.split('-')[0]; -var dt = parseInt(after, 16) - parseInt(before, 16); -assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); - -// -// Test parse/unparse -// - -id = '00112233445566778899aabbccddeeff'; -assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); -assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); - -// -// Perf tests -// - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js deleted file mode 100644 index 2fac6dc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js +++ /dev/null @@ -1,245 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -(function() { - var _global = this; - - // Unique ID creation requires a high quality random # generator. We feature - // detect to determine the best RNG source, normalizing to a function that - // returns 128-bits of randomness, since that's what's usually required - var _rng; - - // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html - // - // Moderately fast, high quality - if (typeof(require) == 'function') { - try { - var _rb = require('crypto').randomBytes; - _rng = _rb && function() {return _rb(16);}; - } catch(e) {} - } - - if (!_rng && _global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - _rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; - } - - if (!_rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - _rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; - } - - // Buffer class to use - var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - - // Maps for number <-> hex string conversion - var _byteToHex = []; - var _hexToByte = {}; - for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; - } - - // **`parse()` - Parse a UUID into it's component bytes** - function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; - } - - // **`unparse()` - Convert UUID byte array (ala parse()) into a string** - function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - - // random #'s we need to init node and clockseq - var _seedBytes = _rng(); - - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] - ]; - - // Per 4.2.2, randomize (14 bit) clockseq - var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - - // Previous uuid creation time - var _lastMSecs = 0, _lastNSecs = 0; - - // See https://github.com/broofa/node-uuid for API details - function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq != null ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs != null ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq == null) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); - } - - // **`v4()` - Generate random UUID** - - // See https://github.com/broofa/node-uuid for API details - function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); - } - - // Export public API - var uuid = v4; - uuid.v1 = v1; - uuid.v4 = v4; - uuid.parse = parse; - uuid.unparse = unparse; - uuid.BufferClass = BufferClass; - - if (typeof define === 'function' && define.amd) { - // Publish as AMD module - define(function() {return uuid;}); - } else if (typeof(module) != 'undefined' && module.exports) { - // Publish as node.js module - module.exports = uuid; - } else { - // Publish as global (in browsers) - var _previousRoot = _global.uuid; - - // **`noConflict()` - (browser only) to reset global 'uuid' var** - uuid.noConflict = function() { - _global.uuid = _previousRoot; - return uuid; - }; - - _global.uuid = uuid; - } -}).call(this); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md deleted file mode 100644 index 34c4a85d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md +++ /dev/null @@ -1,4 +0,0 @@ -oauth-sign -========== - -OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js deleted file mode 100644 index e35bfa67..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js +++ /dev/null @@ -1,43 +0,0 @@ -var crypto = require('crypto') - , qs = require('querystring') - ; - -function sha1 (key, body) { - return crypto.createHmac('sha1', key).update(body).digest('base64') -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') - ; -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - var querystring = Object.keys(params).sort().map(function(key){ - // big WTF here with the escape + encoding but it's what twitter wants - return escape(rfc3986(key)) + "%3D" + escape(rfc3986(params[key])) - }).join('%26') - - var base = [ - httpMethod ? httpMethod.toUpperCase() : 'GET', - rfc3986(base_uri), - querystring - ].join('&') - - var key = [ - consumer_secret, - token_secret || '' - ].map(rfc3986).join('&') - - return sha1(key, base) -} - -exports.hmacsign = hmacsign -exports.rfc3986 = rfc3986 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json deleted file mode 100644 index dc99a4ec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "oauth-sign", - "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.", - "version": "0.3.0", - "repository": { - "url": "https://github.com/mikeal/oauth-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "scripts": { - "test": "node test.js" - }, - "readme": "oauth-sign\n==========\n\nOAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. \n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/oauth-sign/issues" - }, - "homepage": "https://github.com/mikeal/oauth-sign", - "_id": "oauth-sign@0.3.0", - "_from": "oauth-sign@~0.3.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js deleted file mode 100644 index 46955ff6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js +++ /dev/null @@ -1,49 +0,0 @@ -var hmacsign = require('./index').hmacsign - , assert = require('assert') - , qs = require('querystring') - ; - -// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth - -var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', - { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' - , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_timestamp: '1272323042' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - -console.log(reqsign) -console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') -assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') - -var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', - { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' - , oauth_timestamp: '1272323047' - , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - -console.log(accsign) -console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') -assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') - -var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , status: 'setting up my twitter ç§ã®ã•ãˆãšã‚Šã‚’設定ã™ã‚‹' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') -assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules deleted file mode 100644 index 49e31dac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "support/expresso"] - path = support/expresso - url = git://github.com/visionmedia/expresso.git -[submodule "support/should"] - path = support/should - url = git://github.com/visionmedia/should.js.git diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore deleted file mode 100644 index e85ce2af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -test -.travis.yml -benchmark.js -component.json -examples.js -History.md -Makefile diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md deleted file mode 100644 index 27e54a4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md +++ /dev/null @@ -1,58 +0,0 @@ -# node-querystring - - query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. - -## Installation - - $ npm install qs - -## Examples - -```js -var qs = require('qs'); - -qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); -// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } - -qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) -// => user[name]=Tobi&user[email]=tobi%40learnboost.com -``` - -## Testing - -Install dev dependencies: - - $ npm install -d - -and execute: - - $ make test - -browser: - - $ open test/browser/index.html - -## License - -(The MIT License) - -Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js deleted file mode 100644 index b05938ac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js +++ /dev/null @@ -1,366 +0,0 @@ -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Object#hasOwnProperty ref - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Array#indexOf shim. - */ - -var indexOf = typeof Array.prototype.indexOf === 'function' - ? function(arr, el) { return arr.indexOf(el); } - : function(arr, el) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === el) return i; - } - return -1; - }; - -/** - * Array.isArray shim. - */ - -var isArray = Array.isArray || function(arr) { - return toString.call(arr) == '[object Array]'; -}; - -/** - * Object.keys shim. - */ - -var objectKeys = Object.keys || function(obj) { - var ret = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - ret.push(key); - } - } - return ret; -}; - -/** - * Array#forEach shim. - */ - -var forEach = typeof Array.prototype.forEach === 'function' - ? function(arr, fn) { return arr.forEach(fn); } - : function(arr, fn) { - for (var i = 0; i < arr.length; i++) fn(arr[i]); - }; - -/** - * Array#reduce shim. - */ - -var reduce = function(arr, fn, initial) { - if (typeof arr.reduce === 'function') return arr.reduce(fn, initial); - var res = initial; - for (var i = 0; i < arr.length; i++) res = fn(res, arr[i]); - return res; -}; - -/** - * Cache non-integer test regexp. - */ - -var isint = /^[0-9]+$/; - -function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = {} - var t = {}; - for (var i in parent[key]) { - if (hasOwnProperty.call(parent[key], i)) { - t[i] = parent[key][i]; - } - } - parent[key] = t; - return t; -} - -function parse(parts, parent, key, val) { - var part = parts.shift(); - - // illegal - if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return; - - // end - if (!part) { - if (isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - var obj = parent[key] = parent[key] || []; - if (']' == part) { - if (isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[objectKeys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~indexOf(part, ']')) { - part = part.substr(0, part.length - 1); - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - // key - } else { - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - } - } -} - -/** - * Merge parent key/val pair. - */ - -function merge(parent, key, val){ - if (~indexOf(key, ']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - parse(parts, parent, 'base', val); - // optimize - } else { - if (!isint.test(key) && isArray(parent.base)) { - var t = {}; - for (var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return parent; -} - -/** - * Compact sparse arrays. - */ - -function compact(obj) { - if ('object' != typeof obj) return obj; - - if (isArray(obj)) { - var ret = []; - - for (var i in obj) { - if (hasOwnProperty.call(obj, i)) { - ret.push(obj[i]); - } - } - - return ret; - } - - for (var key in obj) { - obj[key] = compact(obj[key]); - } - - return obj; -} - -/** - * Parse the given obj. - */ - -function parseObject(obj){ - var ret = { base: {} }; - - forEach(objectKeys(obj), function(name){ - merge(ret, name, obj[name]); - }); - - return compact(ret.base); -} - -/** - * Parse the given str. - */ - -function parseString(str){ - var ret = reduce(String(str).split('&'), function(ret, pair){ - var eql = indexOf(pair, '=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(indexOf(val, '=') + 1, val.length); - - // ?foo - if ('' == key) key = pair, val = ''; - if ('' == key) return ret; - - return merge(ret, decode(key), decode(val)); - }, { base: {} }).base; - - return compact(ret); -} - -/** - * Parse the given query `str` or `obj`, returning an object. - * - * @param {String} str | {Object} obj - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - return 'object' == typeof str - ? parseObject(str) - : parseString(str); -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix + '=' + encodeURIComponent(String(obj)); - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '[' + i + ']')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = objectKeys(obj) - , key; - - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - if ('' == key) continue; - if (null == obj[key]) { - ret.push(encodeURIComponent(key) + '='); - } else { - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - } - - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return; - if (undefined === v) { - obj[key] = val; - } else if (isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} - -/** - * Decode `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -function decode(str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (err) { - return str; - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json deleted file mode 100644 index 313485c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "qs", - "description": "querystring parser", - "version": "0.6.6", - "keywords": [ - "query string", - "parser", - "component" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-querystring.git" - }, - "devDependencies": { - "mocha": "*", - "expect.js": "*" - }, - "scripts": { - "test": "make test" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "index", - "engines": { - "node": "*" - }, - "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-querystring/issues" - }, - "homepage": "https://github.com/visionmedia/node-querystring", - "_id": "qs@0.6.6", - "_from": "qs@~0.6.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc deleted file mode 100644 index 8fcead4f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc +++ /dev/null @@ -1,72 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 100, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : false, // Standard browser globals e.g. `window`, `document`. - "node" : true, - "rhino" : false, - "couch" : false, - "wsh" : false, // Windows Scripting Host. - - "jquery" : false, - "prototypejs" : false, - "mootools" : false, - "dojo" : false, - - "predef" : [ // Custom globals. - "escape", "unescape" // aren't picked up by node flag above :/ - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : true, // Allow EcmaScript 5 syntax. - "esnext" : true, // Allow ES "next" syntax, specifically 'const' (V8 has this) - "strict" : false, // Require `use strict` pragma in every file. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : false, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : true, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexp" : true, // Prohibit `.` and `[^...]` in regular expressions. - "regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`. - "scripturl" : true, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : true, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "lastsemic" : true, // Prohibit missing semicolon for the last statement in a one-line block - "newcap" : false, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nonew" : true, // Prohibit use of constructors for side-effects. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "onevar" : false, // Allow only one `var` statement per function. - "onecase" : false, // Allow switches with one case statement - "plusplus" : false, // Prohibit use of `++` & `--`. - "proto" : false, // Allow use of __proto__ - "sub" : true, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore deleted file mode 100644 index 54efff98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -.*.sw[nmop] -npm-debug.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 3fac4c85..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,78 +0,0 @@ -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -The following exceptions apply: - -=== - -`pubSufTest()` of generate-pubsuffix.js is in the public domain. - - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - -=== - -`public-suffix.txt` was obtained from -<https://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1> -via <http://publicsuffix.org>. - -That file contains the usual Mozilla triple-license, for which this project uses it -under the terms of the MPL 1.1: - - // ***** BEGIN LICENSE BLOCK ***** - // Version: MPL 1.1/GPL 2.0/LGPL 2.1 - // - // The contents of this file are subject to the Mozilla Public License Version - // 1.1 (the "License"); you may not use this file except in compliance with - // the License. You may obtain a copy of the License at - // http://www.mozilla.org/MPL/ - // - // Software distributed under the License is distributed on an "AS IS" basis, - // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - // for the specific language governing rights and limitations under the - // License. - // - // The Original Code is the Public Suffix List. - // - // The Initial Developer of the Original Code is - // Jo Hermans <jo.hermans@gmail.com>. - // Portions created by the Initial Developer are Copyright (C) 2007 - // the Initial Developer. All Rights Reserved. - // - // Contributor(s): - // Ruben Arakelyan <ruben@rubenarakelyan.com> - // Gervase Markham <gerv@gerv.net> - // Pamela Greene <pamg.bugs@gmail.com> - // David Triendl <david@triendl.name> - // Jothan Frakes <jothan@gmail.com> - // The kind representatives of many TLD registries - // - // Alternatively, the contents of this file may be used under the terms of - // either the GNU General Public License Version 2 or later (the "GPL"), or - // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - // in which case the provisions of the GPL or the LGPL are applicable instead - // of those above. If you wish to allow use of your version of this file only - // under the terms of either the GPL or the LGPL, and not to allow others to - // use your version of this file under the terms of the MPL, indicate your - // decision by deleting the provisions above and replace them with the notice - // and other provisions required by the GPL or the LGPL. If you do not delete - // the provisions above, a recipient may use your version of this file under - // the terms of any one of the MPL, the GPL or the LGPL. - // - // ***** END LICENSE BLOCK ***** diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md deleted file mode 100644 index fd1dbb1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,380 +0,0 @@ -[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg) - -# Synopsis - -``` javascript -var cookies = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie' -var Cookie = cookies.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new cookies.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Requires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default. - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -# API - -cookies -======= - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -parseDate(string[,strict]) ------------------ - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. "Thu, 01 Jan 1970 00:00:010 GMT" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid). - -formatDate(date) ----------------- - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -canonicalDomain(str) --------------------- - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -domainMatch(str,domStr[,canonicalize=true]) -------------------------------------------- - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not. - -defaultPath(path) ------------------ - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -pathMatch(reqPath,cookiePath) ------------------------------ - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -parse(header[,strict=false]) ----------------------------- - -alias for `Cookie.parse(header[,strict])` - -fromJSON(string) ----------------- - -alias for `Cookie.fromJSON(string)` - -getPublicSuffix(hostname) -------------------------- - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. - -cookieCompare(a,b) ------------------- - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest. - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -permuteDomain(domain) ---------------------- - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - - -permutePath(path) ------------------ - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - -Cookie -====== - -Cookie.parse(header[,strict=false]) ------------------------------------ - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(Cookie.parse); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -Cookie.fromJSON(string) ------------------------ - -Convert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects. - -Properties -========== - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _created_ - `Date` - when this cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -Construction([{options}]) ------------- - -Receives an options object that can contain any Cookie properties, uses the default for unspecified properties. - -.toString() ------------ - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -.cookieString() ---------------- - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -.setExpires(String) -------------------- - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -.setMaxAge(number) -------------------- - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -.expiryTime([now=Date.now()]) ------------------------------ - -.expiryDate([now=Date.now()]) ------------------------------ - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -.TTL([now=Date.now()]) ---------- - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -.canonicalizedDoman() ---------------------- - -.cdomain() ----------- - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -.validate() ------------ - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - -CookieJar -========= - -Construction([store = new MemoryCookieStore()][, rejectPublicSuffixes]) ------------- - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - - -Attributes ----------- - - * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`) - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie)) -------------------------------------------------------------------- - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _strict_ - boolean - default `false` - perform extra checks - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -.storeCookie(cookie, [{options},] cb(err,cookie)) -------------------------------------------------- - -__REMOVED__ removed in lieu of the CookieStore API below - -.getCookies(currentUrl, [{options},] cb(err,cookies)) ------------------------------------------------------ - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -.getCookieString(...) ---------------------- - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -.getSetCookieStrings(...) -------------------------- - -Accepts the same options as `.getCookies()` but passes an array of strings suitable for Set-Cookie headers (rather than an array of `Cookie`s) to the callback. Simply maps the cookie array via `.toString()`. - -# CookieStore API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -store.findCookie(domain, path, key, cb(err,cookie)) ---------------------------------------------------- - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -store.findCookies(domain, path, cb(err,cookies)) ------------------------------------------------- - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -store.putCookie(cookie, cb(err)) --------------------------------- - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -store.updateCookie(oldCookie, newCookie, cb(err)) -------------------------------------------------- - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -store.removeCookie(domain, path, key, cb(err)) ----------------------------------------------- - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -store.removeCookies(domain, path, cb(err)) ------------------------------------------- - -Removes matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -# TODO - - * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()` - * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891 - * better tests for `validate()`? - -# Copyright and License - -(tl;dr: MIT with some MPL/1.1) - -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -Portions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js deleted file mode 100644 index a7fa5452..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -var fs = require('fs'); -var assert = require('assert'); -var punycode = require('punycode'); - -fs.readFile('./public-suffix.txt', 'utf8', function(err,string) { - if (err) throw err; - var lines = string.split("\n"); - process.nextTick(function() { - processList(lines); - }); -}); - -var index = {}; - -var COMMENT = new RegExp('//.+'); -function processList(lines) { - while (lines.length) { - var line = lines.shift(); - line = line.replace(COMMENT,'').trim(); - if (!line) continue; - addToIndex(index,line); - } - - pubSufTest(); - - var w = fs.createWriteStream('./lib/pubsuffix.js',{ - flags: 'w', - encoding: 'utf8', - mode: 0644, - }); - w.on('end', process.exit); - w.write("/****************************************************\n"); - w.write(" * AUTOMATICALLY GENERATED by generate-pubsuffix.js *\n"); - w.write(" * DO NOT EDIT! *\n"); - w.write(" ****************************************************/\n\n"); - - w.write("module.exports.getPublicSuffix = "); - w.write(getPublicSuffix.toString()); - w.write(";\n\n"); - - w.write("// The following generated structure is used under the MPL version 1.1\n"); - w.write("// See public-suffix.txt for more information\n\n"); - w.write("var index = module.exports.index = Object.freeze(\n"); - w.write(JSON.stringify(index)); - w.write(");\n\n"); - w.write("// END of automatically generated file\n"); - - w.end(); -} - -function addToIndex(index,line) { - var prefix = ''; - if (line.replace(/^(!|\*\.)/)) { - prefix = RegExp.$1; - line = line.slice(prefix.length); - } - line = prefix + punycode.toASCII(line); - - if (line.substr(0,1) == '!') - index[line.substr(1)] = false; - else - index[line] = true; -} - -// include the licence in the function since it gets written to pubsuffix.js -function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i<parts.length; i++) { - var part = parts[i]; - var starstr = '*'+suffix; - var partstr = part+suffix; - - if (index[starstr]) { // star rule matches - suffixLen = i+1; - if (index[partstr] === false) { // exception rule matches (NB: false, not undefined) - suffixLen--; - } - } else if (index[partstr]) { // exact match, not exception - suffixLen = i+1; - } - - suffix = '.'+part+suffix; - } - - if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp'); - return null; - } - - if (suffixLen && parts.length > suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -} - -function checkPublicSuffix(give,get) { - var got = getPublicSuffix(give); - assert.equal(got, get, give+' should be '+(get==null?'NULL':get)+' but got '+got); -} - -// pubSufTest() was converted to JavaScript from http://publicsuffix.org/list/test.txt -function pubSufTest() { - // For this function-scope and this function-scope ONLY: - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - - // NULL input. - checkPublicSuffix(null, null); - // Mixed case. - checkPublicSuffix('COM', null); - checkPublicSuffix('example.COM', 'example.com'); - checkPublicSuffix('WwW.example.COM', 'example.com'); - // Leading dot. - checkPublicSuffix('.com', null); - checkPublicSuffix('.example', null); - checkPublicSuffix('.example.com', null); - checkPublicSuffix('.example.example', null); - // Unlisted TLD. - checkPublicSuffix('example', null); - checkPublicSuffix('example.example', null); - checkPublicSuffix('b.example.example', null); - checkPublicSuffix('a.b.example.example', null); - // Listed, but non-Internet, TLD. - checkPublicSuffix('local', null); - checkPublicSuffix('example.local', null); - checkPublicSuffix('b.example.local', null); - checkPublicSuffix('a.b.example.local', null); - // TLD with only 1 rule. - checkPublicSuffix('biz', null); - checkPublicSuffix('domain.biz', 'domain.biz'); - checkPublicSuffix('b.domain.biz', 'domain.biz'); - checkPublicSuffix('a.b.domain.biz', 'domain.biz'); - // TLD with some 2-level rules. - checkPublicSuffix('com', null); - checkPublicSuffix('example.com', 'example.com'); - checkPublicSuffix('b.example.com', 'example.com'); - checkPublicSuffix('a.b.example.com', 'example.com'); - checkPublicSuffix('uk.com', null); - checkPublicSuffix('example.uk.com', 'example.uk.com'); - checkPublicSuffix('b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('a.b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('test.ac', 'test.ac'); - // TLD with only 1 (wildcard) rule. - checkPublicSuffix('cy', null); - checkPublicSuffix('c.cy', null); - checkPublicSuffix('b.c.cy', 'b.c.cy'); - checkPublicSuffix('a.b.c.cy', 'b.c.cy'); - // More complex TLD. - checkPublicSuffix('jp', null); - checkPublicSuffix('test.jp', 'test.jp'); - checkPublicSuffix('www.test.jp', 'test.jp'); - checkPublicSuffix('ac.jp', null); - checkPublicSuffix('test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('www.test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('kyoto.jp', null); - checkPublicSuffix('c.kyoto.jp', null); - checkPublicSuffix('b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('a.b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - // TLD with a wildcard rule and exceptions. - checkPublicSuffix('om', null); - checkPublicSuffix('test.om', null); - checkPublicSuffix('b.test.om', 'b.test.om'); - checkPublicSuffix('a.b.test.om', 'b.test.om'); - checkPublicSuffix('songfest.om', 'songfest.om'); - checkPublicSuffix('www.songfest.om', 'songfest.om'); - // US K12. - checkPublicSuffix('us', null); - checkPublicSuffix('test.us', 'test.us'); - checkPublicSuffix('www.test.us', 'test.us'); - checkPublicSuffix('ak.us', null); - checkPublicSuffix('test.ak.us', 'test.ak.us'); - checkPublicSuffix('www.test.ak.us', 'test.ak.us'); - checkPublicSuffix('k12.ak.us', null); - checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us'); - checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us'); - - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index 1d8615b5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,947 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/*jshint regexp:false */ -var net = require('net'); -var urlParse = require('url').parse; -var pubsuffix = require('./pubsuffix'); - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); -} - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -// From RFC2616 S2.2: -var TOKEN = /[\x21\x23-\x26\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]/; - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; - -// The name/key cannot be empty but the value can (S5.2): -var COOKIE_PAIR_STRICT = new RegExp('^('+TOKEN.source+'+)=("?)('+COOKIE_OCTET.source+'*)\\2'); -var COOKIE_PAIR = /^([^=\s]+)\s*=\s*("?)\s*(.*)\s*\2/; - -// RFC6265 S4.1.1 defines extension-av as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var NON_CTL_SEMICOLON = /[\x20-\x3A\x3C-\x7E]+/; -var EXTENSION_AV = NON_CTL_SEMICOLON; -var PATH_VALUE = NON_CTL_SEMICOLON; - -// Used for checking whether or not there is a trailing semi-colon -var TRAILING_SEMICOLON = /;+$/; - -/* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ -var DAY_OF_MONTH = /^(0?[1-9]|[12][0-9]|3[01])$/; - -/* RFC6265 S5.1.1.5: - * [fail if] - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - */ -var TIME = /(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])/; -var STRICT_TIME = /^(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/; - -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/i; -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var YEAR = /^([1-9][0-9]{1,3})$/; // 2 to 4 digits (will check range when parsing) - -var MAX_TIME = 2147483647000; // 31-bit max -var MAX_DATE = new Date(CookieJar.MAX_TIME); // 31-bit max -var MIN_TIME = 0; // 31-bit min -var MIN_DATE = new Date(CookieJar.MIN_TIME); // 31-bit min - - -// RFC6265 S5.1.1 date parser: -function parseDate(str,strict) { - if (!str) return; - var found_time, found_dom, found_month, found_year; - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) return; - - var date = new Date(); - date.setMilliseconds(0); - - for (var i=0; i<tokens.length; i++) { - var token = tokens[i].trim(); - if (!token.length) continue; - - var result; - - /* 2.1. If the found-time flag is not set and the token matches the time - * production, set the found-time flag and set the hour- value, - * minute-value, and second-value to the numbers denoted by the digits in - * the date-token, respectively. Skip the remaining sub-steps and continue - * to the next date-token. - */ - if (!found_time) { - result = (strict ? STRICT_TIME : TIME).exec(token); - if (result) { - found_time = true; - date.setUTCHours(result[1]); - date.setUTCMinutes(result[2]); - date.setUTCSeconds(result[3]); - continue; - } - } - - /* 2.2. If the found-day-of-month flag is not set and the date-token matches - * the day-of-month production, set the found-day-of- month flag and set - * the day-of-month-value to the number denoted by the date-token. Skip - * the remaining sub-steps and continue to the next date-token. - */ - if (!found_dom) { - result = DAY_OF_MONTH.exec(token); - if (result) { - found_dom = true; - date.setUTCDate(result[1]); - continue; - } - } - - /* 2.3. If the found-month flag is not set and the date-token matches the - * month production, set the found-month flag and set the month-value to - * the month denoted by the date-token. Skip the remaining sub-steps and - * continue to the next date-token. - */ - if (!found_month) { - result = MONTH.exec(token); - if (result) { - found_month = true; - date.setUTCMonth(MONTH_TO_NUM[result[1].toLowerCase()]); - continue; - } - } - - /* 2.4. If the found-year flag is not set and the date-token matches the year - * production, set the found-year flag and set the year-value to the number - * denoted by the date-token. Skip the remaining sub-steps and continue to - * the next date-token. - */ - if (!found_year) { - result = YEAR.exec(token); - if (result) { - var year = result[0]; - /* From S5.1.1: - * 3. If the year-value is greater than or equal to 70 and less - * than or equal to 99, increment the year-value by 1900. - * 4. If the year-value is greater than or equal to 0 and less - * than or equal to 69, increment the year-value by 2000. - */ - if (70 <= year && year <= 99) - year += 1900; - else if (0 <= year && year <= 69) - year += 2000; - - if (year < 1601) - return; // 5. ... the year-value is less than 1601 - - found_year = true; - date.setUTCFullYear(year); - continue; - } - } - } - - if (!(found_time && found_dom && found_month && found_year)) { - return; // 5. ... at least one of the found-day-of-month, found-month, found- - // year, or found-time flags is not set, - } - - return date; -} - -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) return null; - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) - str = punycode.toASCII(str); - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) return null; - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) return true; - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) return false; - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) return false; // it's a non-match (-1) or prefix (0) - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) // it's not a suffix - return false; - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') return false; - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") return "/"; - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") return path; - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) return "/"; - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - -/* - * "A request-path path-matches a given cookie-path if at least one of the - * following conditions holds:" - */ -function pathMatch(reqPath,cookiePath) { - // "o The cookie-path and the request-path are identical." - if (cookiePath === reqPath) - return true; - - var idx = reqPath.indexOf(cookiePath); - if (idx === 0) { - // "o The cookie-path is a prefix of the request-path, and the last - // character of the cookie-path is %x2F ("/")." - if (cookiePath.substr(-1) === "/") - return true; - - // " o The cookie-path is a prefix of the request-path, and the first - // character of the request-path that is not included in the cookie- path - // is a %x2F ("/") character." - if (reqPath.substr(cookiePath.length,1) === "/") - return true; - } - - return false; -} - -function parse(str, strict) { - str = str.trim(); - - // S4.1.1 Trailing semi-colons are not part of the specification. - // If we are not in strict mode we remove the trailing semi-colons. - var semiColonCheck = TRAILING_SEMICOLON.exec(str); - if (semiColonCheck) { - if (strict) return; - str = str.slice(0, semiColonCheck.index); - } - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRx = strict ? COOKIE_PAIR_STRICT : COOKIE_PAIR; - var result = pairRx.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) return; - - var c = new Cookie(); - c.key = result[1]; // the regexp should trim() already - c.value = result[3]; // [2] is quotes or empty-string - - if (firstSemi === -1) return c; - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) return c; - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(/\s*;\s*/); - while (cookie_avs.length) { - var av = cookie_avs.shift(); - - if (strict && !EXTENSION_AV.test(av)) return; - - var av_sep = av.indexOf('='); - var av_key, av_value; - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - if (av_value) av_value = av_value.trim(); - - switch(av_key) { - case 'expires': // S5.2.1 - if (!av_value) { if(strict){return}else{break;} } - var exp = parseDate(av_value,strict); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp == null) { if(strict){return}else{break;} } - c.expires = exp; - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - break; - - case 'max-age': // S5.2.2 - if (!av_value) { if(strict){return}else{break;} } - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (!/^-?[0-9]+$/.test(av_value)) { if(strict){return}else{break;} } - var delta = parseInt(av_value,10); - if (strict && delta <= 0) return; // S4.1.1 - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (!av_value) { if(strict){return}else{break;} } - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./,''); - if (!domain) { if(strict){return}else{break;} } // see "is empty" above - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - if (!av_value || av_value.substr(0,1) != "/") { if(strict){return}else{break;} } - c.path = av_value; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - if (av_value != null) { if(strict){return} } - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - if (av_value != null) { if(strict){return} } - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - // ensure a default date for sorting: - c.creation = new Date(); - return c; -} - -function fromJSON(str) { - if (!str) return null; - - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return null; - } - - var c = new Cookie(); - for (var i=0; i<numCookieProperties; i++) { - var prop = cookieProperties[i]; - if (obj[prop] == null) continue; - if (prop === 'expires' || - prop === 'creation' || - prop === 'lastAccessed') - { - c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(obj[prop]); - } else { - c[prop] = obj[prop]; - } - } - - - // ensure a default date for sorting: - c.creation = c.creation || new Date(); - - return c; -} - -/* Section 5.4 part 2: - * "* Cookies with longer paths are listed before cookies with - * shorter paths. - * - * * Among cookies that have equal-length path fields, cookies with - * earlier creation-times are listed before cookies with later - * creation-times." - */ - -function cookieCompare(a,b) { - // descending for length: b CMP a - var deltaLen = (b.path ? b.path.length : 0) - (a.path ? a.path.length : 0); - if (deltaLen !== 0) return deltaLen; - // ascending for time: a CMP b - return (a.creation ? a.creation.getTime() : MAX_TIME) - - (b.creation ? b.creation.getTime() : MAX_TIME); -} - -// Gives the permutation of all possible domainMatch()es of a given domain. The -// array is in shortest-to-longest order. Handy for indexing. -function permuteDomain(domain) { - var pubSuf = pubsuffix.getPublicSuffix(domain); - if (!pubSuf) return null; - if (pubSuf == domain) return [domain]; - - var prefix = domain.slice(0,-(pubSuf.length+1)); // ".example.com" - var parts = prefix.split('.').reverse(); - var cur = pubSuf; - var permutations = [cur]; - while (parts.length) { - cur = parts.shift()+'.'+cur; - permutations.push(cur); - } - return permutations; -} - -// Gives the permutation of all possible pathMatch()es of a given path. The -// array is in longest-to-shortest order. Handy for indexing. -function permutePath(path) { - var origPath = path; - if (path === '/') return ['/']; - if (path.lastIndexOf('/') === path.length-1) - path = path.substr(0,path.length-1); - var permutations = [path]; - while (path.length > 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) break; - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - - -function Cookie (opts) { - if (typeof opts !== "object") return; - Object.keys(opts).forEach(function (key) { - if (Cookie.prototype.hasOwnProperty(key)) { - this[key] = opts[key] || Cookie.prototype[key]; - } - }.bind(this)); -} - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set - -var cookieProperties = Object.freeze(Object.keys(Cookie.prototype).map(function(p) { - if (p instanceof Function) return; - return p; -})); -var numCookieProperties = cookieProperties.length; - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -Cookie.prototype.validate = function validate() { - if (!COOKIE_OCTETS.test(this.value)) - return false; - if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires,true)) - return false; - if (this.maxAge != null && this.maxAge <= 0) - return false; // "Max-Age=" non-zero-digit *DIGIT - if (this.path != null && !PATH_VALUE.test(this.path)) - return false; - - var cdomain = this.cdomain(); - if (cdomain) { - if (cdomain.match(/\.$/)) - return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this - var suffix = pubsuffix.getPublicSuffix(cdomain); - if (suffix == null) // it's a public suffix - return false; - } - return true; -}; - -Cookie.prototype.setExpires = function setExpires(exp) { - if (exp instanceof Date) this.expires = exp; - else this.expires = parseDate(exp) || "Infinity"; -}; - -Cookie.prototype.setMaxAge = function setMaxAge(age) { - if (age === Infinity || age === -Infinity) - this.maxAge = age.toString(); // so JSON.stringify() works - else - this.maxAge = age; -}; - -// gives Cookie header format -Cookie.prototype.cookieString = function cookieString() { - var val = this.value; - if (val == null) val = ''; - if (!val.length || COOKIE_OCTETS.test(val)) - return this.key+'='+val; - else - return this.key+'="'+val+'"'; -}; - -// gives Set-Cookie header format -Cookie.prototype.toString = function toString() { - var str = this.cookieString(); - - if (this.expires != Infinity) { - if (this.expires instanceof Date) - str += '; Expires='+formatDate(this.expires); - else - str += '; Expires='+this.expires; - } - - if (this.maxAge != null && this.maxAge != Infinity) - str += '; Max-Age='+this.maxAge; - - if (this.domain && !this.hostOnly) - str += '; Domain='+this.domain; - if (this.path) - str += '; Path='+this.path; - - if (this.secure) str += '; Secure'; - if (this.httpOnly) str += '; HttpOnly'; - if (this.extensions) { - this.extensions.forEach(function(ext) { - str += '; '+ext; - }); - } - - return str; -}; - -// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -// S5.3 says to give the "latest representable date" for which we use Infinity -// For "expired" we use 0 -Cookie.prototype.TTL = function TTL(now) { - /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires - * attribute, the Max-Age attribute has precedence and controls the - * expiration date of the cookie. - * (Concurs with S5.3 step 3) - */ - if (this.maxAge != null) { - return this.maxAge<=0 ? 0 : this.maxAge*1000; - } - - var expires = this.expires; - if (expires != Infinity) { - if (!(expires instanceof Date)) { - expires = parseDate(expires) || Infinity; - } - - if (expires == Infinity) - return Infinity; - - return expires.getTime() - (now || Date.now()); - } - - return Infinity; -}; - -// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -Cookie.prototype.expiryTime = function expiryTime(now) { - if (this.maxAge != null) { - var relativeTo = this.creation || now || new Date(); - var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000; - return relativeTo.getTime() + age; - } - - if (this.expires == Infinity) return Infinity; - return this.expires.getTime(); -}; - -// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere), except it returns a Date -Cookie.prototype.expiryDate = function expiryDate(now) { - var millisec = this.expiryTime(now); - if (millisec == Infinity) return new Date(MAX_TIME); - else if (millisec == -Infinity) return new Date(MIN_TIME); - else return new Date(millisec); -}; - -// This replaces the "persistent-flag" parts of S5.3 step 3 -Cookie.prototype.isPersistent = function isPersistent() { - return (this.maxAge != null || this.expires != Infinity); -}; - -// Mostly S5.1.2 and S5.2.3: -Cookie.prototype.cdomain = -Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() { - if (this.domain == null) return null; - return canonicalDomain(this.domain); -}; - - -var memstore; -function CookieJar(store, rejectPublicSuffixes) { - if (rejectPublicSuffixes != null) this.rejectPublicSuffixes = rejectPublicSuffixes; - if (!store) { - memstore = memstore || require('./memstore'); - store = new memstore.MemoryCookieStore(); - } - this.store = store; -} -CookieJar.prototype.store = null; -CookieJar.prototype.rejectPublicSuffixes = true; - -CookieJar.prototype.setCookie = function setCookie(cookie, url, options, cb) { - var err; - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - - // S5.3 step 1 - if (!(cookie instanceof Cookie)) - cookie = Cookie.parse(cookie, options.strict === true); - if (!cookie) { - err = new Error("Cookie failed to parse"); - return cb(options.ignoreError ? null : err); - } - - // S5.3 step 2 - var now = options.now || new Date(); // will assign later to save effort in the face of errors - - // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie() - - // S5.3 step 4: NOOP; domain is null by default - - // S5.3 step 5: public suffixes - if (this.rejectPublicSuffixes && cookie.domain) { - var suffix = pubsuffix.getPublicSuffix(cookie.cdomain()); - if (suffix == null) { // e.g. "com" - err = new Error("Cookie has domain set to a public suffix"); - return cb(options.ignoreError ? null : err); - } - } - - // S5.3 step 6: - if (cookie.domain) { - if (!domainMatch(host, cookie.cdomain(), false)) { - err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host); - return cb(options.ignoreError ? null : err); - } - - if (cookie.hostOnly == null) // don't reset if already set - cookie.hostOnly = false; - - } else { - cookie.hostOnly = true; - cookie.domain = host; - } - - // S5.3 step 7: "Otherwise, set the cookie's path to the default-path of the - // request-uri" - if (!cookie.path) { - cookie.path = defaultPath(context.pathname); - cookie.pathIsDefault = true; - } else { - if (cookie.path.length > 1 && cookie.path.substr(-1) == '/') - cookie.path = cookie.path.slice(0,-1); - } - - // S5.3 step 8: NOOP; secure attribute - // S5.3 step 9: NOOP; httpOnly attribute - - // S5.3 step 10 - if (options.http === false && cookie.httpOnly) { - err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - - var store = this.store; - - if (!store.updateCookie) { - store.updateCookie = function stubUpdateCookie(oldCookie, newCookie, cb) { - this.putCookie(newCookie, cb); - }; - } - - store.findCookie(cookie.domain, cookie.path, cookie.key, function(err,oldCookie) { - if (err) return cb(err); - - var next = function(err) { - if (err) return cb(err); - else cb(null, cookie); - }; - - if (oldCookie) { - // S5.3 step 11 - "If the cookie store contains a cookie with the same name, - // domain, and path as the newly created cookie:" - if (options.http === false && oldCookie.httpOnly) { // step 11.2 - err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - cookie.creation = oldCookie.creation; // step 11.3 - cookie.lastAccessed = now; - // Step 11.4 (delete cookie) is implied by just setting the new one: - store.updateCookie(oldCookie, cookie, next); // step 12 - - } else { - cookie.creation = cookie.lastAccessed = now; - store.putCookie(cookie, next); // step 12 - } - }); -}; - -// RFC6365 S5.4 -CookieJar.prototype.getCookies = function getCookies(url, options, cb) { - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - var path = context.pathname || '/'; - - var secure = options.secure; - if (secure == null && context.protocol && - (context.protocol == 'https:' || context.protocol == 'wss:')) - { - secure = true; - } - - var http = options.http; - if (http == null) http = true; - - var now = options.now || Date.now(); - var expireCheck = options.expire !== false; - var allPaths = !!options.allPaths; - var store = this.store; - - function matchingCookie(c) { - // "Either: - // The cookie's host-only-flag is true and the canonicalized - // request-host is identical to the cookie's domain. - // Or: - // The cookie's host-only-flag is false and the canonicalized - // request-host domain-matches the cookie's domain." - if (c.hostOnly) { - if (c.domain != host) return false; - } else { - if (!domainMatch(host, c.domain, false)) return false; - } - - // "The request-uri's path path-matches the cookie's path." - if (!allPaths && !pathMatch(path, c.path)) - return false; - - // "If the cookie's secure-only-flag is true, then the request-uri's - // scheme must denote a "secure" protocol" - if (c.secure && !secure) - return false; - - // "If the cookie's http-only-flag is true, then exclude the cookie if the - // cookie-string is being generated for a "non-HTTP" API" - if (c.httpOnly && !http) - return false; - - // deferred from S5.3 - // non-RFC: allow retention of expired cookies by choice - if (expireCheck && c.expiryTime() <= now) { - store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored - return false; - } - - return true; - } - - store.findCookies(host, allPaths ? null : path, function(err,cookies) { - if (err) return cb(err); - - cookies = cookies.filter(matchingCookie); - - // sorting of S5.4 part 2 - if (options.sort !== false) - cookies = cookies.sort(cookieCompare); - - // S5.4 part 3 - var now = new Date(); - cookies.forEach(function(c) { c.lastAccessed = now }); - // TODO persist lastAccessed - - cb(null,cookies); - }); -}; - -CookieJar.prototype.getCookieString = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) cb(err); - else cb(null, cookies.map(function(c){return c.cookieString()}).join('; ')); - }; - args.push(next); - this.getCookies.apply(this,args); -}; - -CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) cb(err); - else cb(null, cookies.map(function(c){return c.toString()})); - }; - args.push(next); - this.getCookies.apply(this,args); -}; - - - -module.exports = { - CookieJar: CookieJar, - Cookie: Cookie, - parseDate: parseDate, - formatDate: formatDate, - parse: parse, - fromJSON: fromJSON, - domainMatch: domainMatch, - defaultPath: defaultPath, - pathMatch: pathMatch, - getPublicSuffix: pubsuffix.getPublicSuffix, - cookieCompare: cookieCompare, - permuteDomain: permuteDomain, - permutePath: permutePath, - canonicalDomain: canonicalDomain, -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js deleted file mode 100644 index 66abb376..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js +++ /dev/null @@ -1,102 +0,0 @@ -var tough = require('./cookie'); -var permuteDomain = tough.permuteDomain; -var permutePath = tough.permutePath; -var util = require('util'); - -function MemoryCookieStore() { - this.idx = {}; -} -module.exports.MemoryCookieStore = MemoryCookieStore; -MemoryCookieStore.prototype.idx = null; - -// force a default depth: -MemoryCookieStore.prototype.inspect = function inspect() { - return "{ idx: "+util.inspect(this.idx, false, 2)+' }'; -}; - -MemoryCookieStore.prototype.findCookie = function findCookie(domain, path, key, cb) { - if (!this.idx[domain]) return cb(null,undefined); - if (!this.idx[domain][path]) return cb(null,undefined); - return cb(null,this.idx[domain][path][key]||null); -}; - -MemoryCookieStore.prototype.findCookies = function findCookies(domain, path, cb) { - var results = []; - if (!domain) return cb(null,[]); - - var pathMatcher; - if (!path) { - // null or '/' means "all paths" - pathMatcher = function matchAll(domainIndex) { - for (var curPath in domainIndex) { - var pathIndex = domainIndex[curPath]; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - } - }; - - } else if (path === '/') { - pathMatcher = function matchSlash(domainIndex) { - var pathIndex = domainIndex['/']; - if (!pathIndex) return; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }; - - } else { - var paths = permutePath(path) || [path]; - pathMatcher = function matchRFC(domainIndex) { - paths.forEach(function(curPath) { - var pathIndex = domainIndex[curPath]; - if (!pathIndex) return; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }); - }; - } - - var domains = permuteDomain(domain) || [domain]; - var idx = this.idx; - domains.forEach(function(curDomain) { - var domainIndex = idx[curDomain]; - if (!domainIndex) return; - pathMatcher(domainIndex); - }); - - cb(null,results); -}; - -MemoryCookieStore.prototype.putCookie = function putCookie(cookie, cb) { - if (!this.idx[cookie.domain]) this.idx[cookie.domain] = {}; - if (!this.idx[cookie.domain][cookie.path]) this.idx[cookie.domain][cookie.path] = {}; - this.idx[cookie.domain][cookie.path][cookie.key] = cookie; - cb(null); -}; - -MemoryCookieStore.prototype.updateCookie = function updateCookie(oldCookie, newCookie, cb) { - // updateCookie() may avoid updating cookies that are identical. For example, - // lastAccessed may not be important to some stores and an equality - // comparison could exclude that field. - this.putCookie(newCookie,cb); -}; - -MemoryCookieStore.prototype.removeCookie = function removeCookie(domain, path, key, cb) { - if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) { - delete this.idx[domain][path][key]; - } - cb(null); -}; - -MemoryCookieStore.prototype.removeCookies = function removeCookies(domain, path, cb) { - if (!this.idx[domain]) { - if (path) { - delete this.idx[domain][path]; - } else { - delete this.idx[domain]; - } - } - return cb(null); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js deleted file mode 100644 index a7031473..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************** - * AUTOMATICALLY GENERATED by generate-pubsuffix.js * - * DO NOT EDIT! * - ****************************************************/ - -module.exports.getPublicSuffix = function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i<parts.length; i++) { - var part = parts[i]; - var starstr = '*'+suffix; - var partstr = part+suffix; - - if (index[starstr]) { // star rule matches - suffixLen = i+1; - if (index[partstr] === false) { // exception rule matches (NB: false, not undefined) - suffixLen--; - } - } else if (index[partstr]) { // exact match, not exception - suffixLen = i+1; - } - - suffix = '.'+part+suffix; - } - - if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp'); - return null; - } - - if (suffixLen && parts.length > suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -}; - -// The following generated structure is used under the MPL version 1.1 -// See public-suffix.txt for more information - -var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"*.ar":true,"congresodelalengua3.ar":false,"educ.ar":false,"gobiernoelectronico.ar":false,"mecon.ar":false,"nacion.ar":false,"nic.ar":false,"promocion.ar":false,"retina.ar":false,"uba.ar":false,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"csiro.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"act.gov.au":true,"nt.gov.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"can.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mus.br":true,"net.br":true,"nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"gov.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cx":true,"gov.cx":true,"*.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"*.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"org.gg":true,"net.gg":true,"sch.gg":true,"gov.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"gm":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"*.gt":true,"www.gt":false,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"co.id":true,"go.id":true,"mil.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"*.il":true,"im":true,"co.im":true,"ltd.co.im":true,"plc.co.im":true,"net.im":true,"gov.im":true,"org.im":true,"nic.im":true,"ac.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"agrigento.it":true,"ag.it":true,"alessandria.it":true,"al.it":true,"ancona.it":true,"an.it":true,"aosta.it":true,"aoste.it":true,"ao.it":true,"arezzo.it":true,"ar.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"ap.it":true,"asti.it":true,"at.it":true,"avellino.it":true,"av.it":true,"bari.it":true,"ba.it":true,"andria-barletta-trani.it":true,"andriabarlettatrani.it":true,"trani-barletta-andria.it":true,"tranibarlettaandria.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"andria-trani-barletta.it":true,"andriatranibarletta.it":true,"trani-andria-barletta.it":true,"traniandriabarletta.it":true,"bt.it":true,"belluno.it":true,"bl.it":true,"benevento.it":true,"bn.it":true,"bergamo.it":true,"bg.it":true,"biella.it":true,"bi.it":true,"bologna.it":true,"bo.it":true,"bolzano.it":true,"bozen.it":true,"balsan.it":true,"alto-adige.it":true,"altoadige.it":true,"suedtirol.it":true,"bz.it":true,"brescia.it":true,"bs.it":true,"brindisi.it":true,"br.it":true,"cagliari.it":true,"ca.it":true,"caltanissetta.it":true,"cl.it":true,"campobasso.it":true,"cb.it":true,"carboniaiglesias.it":true,"carbonia-iglesias.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"ci.it":true,"caserta.it":true,"ce.it":true,"catania.it":true,"ct.it":true,"catanzaro.it":true,"cz.it":true,"chieti.it":true,"ch.it":true,"como.it":true,"co.it":true,"cosenza.it":true,"cs.it":true,"cremona.it":true,"cr.it":true,"crotone.it":true,"kr.it":true,"cuneo.it":true,"cn.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"ogliastra.it":true,"og.it":true,"enna.it":true,"en.it":true,"ferrara.it":true,"fe.it":true,"fermo.it":true,"fm.it":true,"firenze.it":true,"florence.it":true,"fi.it":true,"foggia.it":true,"fg.it":true,"forli-cesena.it":true,"forlicesena.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"fc.it":true,"frosinone.it":true,"fr.it":true,"genova.it":true,"genoa.it":true,"ge.it":true,"gorizia.it":true,"go.it":true,"grosseto.it":true,"gr.it":true,"imperia.it":true,"im.it":true,"isernia.it":true,"is.it":true,"laquila.it":true,"aquila.it":true,"aq.it":true,"la-spezia.it":true,"laspezia.it":true,"sp.it":true,"latina.it":true,"lt.it":true,"lecce.it":true,"le.it":true,"lecco.it":true,"lc.it":true,"livorno.it":true,"li.it":true,"lodi.it":true,"lo.it":true,"lucca.it":true,"lu.it":true,"macerata.it":true,"mc.it":true,"mantova.it":true,"mn.it":true,"massa-carrara.it":true,"massacarrara.it":true,"carrara-massa.it":true,"carraramassa.it":true,"ms.it":true,"matera.it":true,"mt.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"vs.it":true,"messina.it":true,"me.it":true,"milano.it":true,"milan.it":true,"mi.it":true,"modena.it":true,"mo.it":true,"monza.it":true,"monza-brianza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"monza-e-della-brianza.it":true,"mb.it":true,"napoli.it":true,"naples.it":true,"na.it":true,"novara.it":true,"no.it":true,"nuoro.it":true,"nu.it":true,"oristano.it":true,"or.it":true,"padova.it":true,"padua.it":true,"pd.it":true,"palermo.it":true,"pa.it":true,"parma.it":true,"pr.it":true,"pavia.it":true,"pv.it":true,"perugia.it":true,"pg.it":true,"pescara.it":true,"pe.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"pu.it":true,"piacenza.it":true,"pc.it":true,"pisa.it":true,"pi.it":true,"pistoia.it":true,"pt.it":true,"pordenone.it":true,"pn.it":true,"potenza.it":true,"pz.it":true,"prato.it":true,"po.it":true,"ragusa.it":true,"rg.it":true,"ravenna.it":true,"ra.it":true,"reggio-calabria.it":true,"reggiocalabria.it":true,"rc.it":true,"reggio-emilia.it":true,"reggioemilia.it":true,"re.it":true,"rieti.it":true,"ri.it":true,"rimini.it":true,"rn.it":true,"roma.it":true,"rome.it":true,"rm.it":true,"rovigo.it":true,"ro.it":true,"salerno.it":true,"sa.it":true,"sassari.it":true,"ss.it":true,"savona.it":true,"sv.it":true,"siena.it":true,"si.it":true,"siracusa.it":true,"sr.it":true,"sondrio.it":true,"so.it":true,"taranto.it":true,"ta.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"ot.it":true,"teramo.it":true,"te.it":true,"terni.it":true,"tr.it":true,"torino.it":true,"turin.it":true,"to.it":true,"trapani.it":true,"tp.it":true,"trento.it":true,"trentino.it":true,"tn.it":true,"treviso.it":true,"tv.it":true,"trieste.it":true,"ts.it":true,"udine.it":true,"ud.it":true,"varese.it":true,"va.it":true,"venezia.it":true,"venice.it":true,"ve.it":true,"verbania.it":true,"vb.it":true,"vercelli.it":true,"vc.it":true,"verona.it":true,"vr.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vv.it":true,"vicenza.it":true,"vi.it":true,"viterbo.it":true,"vt.it":true,"je":true,"co.je":true,"org.je":true,"net.je":true,"sch.je":true,"gov.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"*.aichi.jp":true,"*.akita.jp":true,"*.aomori.jp":true,"*.chiba.jp":true,"*.ehime.jp":true,"*.fukui.jp":true,"*.fukuoka.jp":true,"*.fukushima.jp":true,"*.gifu.jp":true,"*.gunma.jp":true,"*.hiroshima.jp":true,"*.hokkaido.jp":true,"*.hyogo.jp":true,"*.ibaraki.jp":true,"*.ishikawa.jp":true,"*.iwate.jp":true,"*.kagawa.jp":true,"*.kagoshima.jp":true,"*.kanagawa.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.kochi.jp":true,"*.kumamoto.jp":true,"*.kyoto.jp":true,"*.mie.jp":true,"*.miyagi.jp":true,"*.miyazaki.jp":true,"*.nagano.jp":true,"*.nagasaki.jp":true,"*.nagoya.jp":true,"*.nara.jp":true,"*.niigata.jp":true,"*.oita.jp":true,"*.okayama.jp":true,"*.okinawa.jp":true,"*.osaka.jp":true,"*.saga.jp":true,"*.saitama.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.shiga.jp":true,"*.shimane.jp":true,"*.shizuoka.jp":true,"*.tochigi.jp":true,"*.tokushima.jp":true,"*.tokyo.jp":true,"*.tottori.jp":true,"*.toyama.jp":true,"*.wakayama.jp":true,"*.yamagata.jp":true,"*.yamaguchi.jp":true,"*.yamanashi.jp":true,"*.yokohama.jp":true,"metro.tokyo.jp":false,"pref.aichi.jp":false,"pref.akita.jp":false,"pref.aomori.jp":false,"pref.chiba.jp":false,"pref.ehime.jp":false,"pref.fukui.jp":false,"pref.fukuoka.jp":false,"pref.fukushima.jp":false,"pref.gifu.jp":false,"pref.gunma.jp":false,"pref.hiroshima.jp":false,"pref.hokkaido.jp":false,"pref.hyogo.jp":false,"pref.ibaraki.jp":false,"pref.ishikawa.jp":false,"pref.iwate.jp":false,"pref.kagawa.jp":false,"pref.kagoshima.jp":false,"pref.kanagawa.jp":false,"pref.kochi.jp":false,"pref.kumamoto.jp":false,"pref.kyoto.jp":false,"pref.mie.jp":false,"pref.miyagi.jp":false,"pref.miyazaki.jp":false,"pref.nagano.jp":false,"pref.nagasaki.jp":false,"pref.nara.jp":false,"pref.niigata.jp":false,"pref.oita.jp":false,"pref.okayama.jp":false,"pref.okinawa.jp":false,"pref.osaka.jp":false,"pref.saga.jp":false,"pref.saitama.jp":false,"pref.shiga.jp":false,"pref.shimane.jp":false,"pref.shizuoka.jp":false,"pref.tochigi.jp":false,"pref.tokushima.jp":false,"pref.tottori.jp":false,"pref.toyama.jp":false,"pref.wakayama.jp":false,"pref.yamagata.jp":false,"pref.yamaguchi.jp":false,"pref.yamanashi.jp":false,"city.chiba.jp":false,"city.fukuoka.jp":false,"city.hiroshima.jp":false,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.kyoto.jp":false,"city.nagoya.jp":false,"city.niigata.jp":false,"city.okayama.jp":false,"city.osaka.jp":false,"city.saitama.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.shizuoka.jp":false,"city.yokohama.jp":false,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"*.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ac.ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"net.ng":true,"org.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"*.nz":true,"*.om":true,"mediaphone.om":false,"nawrastelecom.om":false,"nawras.om":false,"omanmobile.om":false,"omanpost.om":false,"omantel.om":false,"rakpetroleum.om":false,"siemens.om":false,"songfest.om":false,"statecouncil.om":false,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"com.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"net.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"org.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"6bone.pl":true,"art.pl":true,"mbone.pl":true,"gov.pl":true,"uw.gov.pl":true,"um.gov.pl":true,"ug.gov.pl":true,"upow.gov.pl":true,"starostwo.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"po.gov.pl":true,"pa.gov.pl":true,"ngo.pl":true,"irc.pl":true,"usenet.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"siedlce.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"*.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"mosreg.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"pskov.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"sshn.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"si":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"*.sv":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"*.tr":true,"nic.tr":false,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"ac.tz":true,"co.tz":true,"go.tz":true,"mil.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"chernigov.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"ks.ua":true,"kv.ua":true,"lg.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lviv.ua":true,"mk.ua":true,"nikolaev.ua":true,"od.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rovno.ua":true,"rv.ua":true,"sebastopol.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vn.ua":true,"zaporizhzhe.ua":true,"zp.ua":true,"zhitomir.ua":true,"zt.ua":true,"co.ua":true,"pp.ua":true,"ug":true,"co.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"or.ug":true,"*.uk":true,"*.sch.uk":true,"bl.uk":false,"british-library.uk":false,"icnet.uk":false,"jet.uk":false,"mod.uk":false,"nel.uk":false,"nhs.uk":false,"nic.uk":false,"nls.uk":false,"national-library-scotland.uk":false,"parliament.uk":false,"police.uk":false,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.nd.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.sd.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wv.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wv.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"*.uy":true,"uz":true,"com.uz":true,"co.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"*.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--54b7fta0cc":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--mgb9awbf":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"*.za":true,"*.zm":true,"*.zw":true,"biz.at":true,"info.at":true,"priv.at":true,"co.ca":true,"ar.com":true,"br.com":true,"cn.com":true,"de.com":true,"eu.com":true,"gb.com":true,"gr.com":true,"hu.com":true,"jpn.com":true,"kr.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"uk.com":true,"us.com":true,"uy.com":true,"za.com":true,"gb.net":true,"jp.net":true,"se.net":true,"uk.net":true,"ae.org":true,"us.org":true,"com.de":true,"operaunite.com":true,"appspot.com":true,"iki.fi":true,"c.la":true,"za.net":true,"za.org":true,"co.nl":true,"co.no":true,"co.pl":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true}); - -// END of automatically generated file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt deleted file mode 100644 index 11dddd00..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt +++ /dev/null @@ -1,278 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt deleted file mode 100644 index 97067e54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Mathias Bynens <http://mathiasbynens.be/> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md deleted file mode 100644 index 6dae5c4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js) - -A robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms. - -This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: - -* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C) -* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) -* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) -* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) -* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) - -This project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc). - -## Installation - -Via [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2): - -```bash -npm install punycode -``` - -Via [Bower](http://bower.io/): - -```bash -bower install punycode -``` - -Via [Component](https://github.com/component/component): - -```bash -component install bestiejs/punycode.js -``` - -In a browser: - -```html -<script src="punycode.js"></script> -``` - -In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): - -```js -var punycode = require('punycode'); -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('punycode.js'); -``` - -Using an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require( - { - 'paths': { - 'punycode': 'path/to/punycode' - } - }, - ['punycode'], - function(punycode) { - console.log(punycode); - } -); -``` - -## API - -### `punycode.decode(string)` - -Converts a Punycode string of ASCII symbols to a string of Unicode symbols. - -```js -// decode domain name parts -punycode.decode('maana-pta'); // 'mañana' -punycode.decode('--dqo34k'); // '☃-⌘' -``` - -### `punycode.encode(string)` - -Converts a string of Unicode symbols to a Punycode string of ASCII symbols. - -```js -// encode domain name parts -punycode.encode('mañana'); // 'maana-pta' -punycode.encode('☃-⌘'); // '--dqo34k' -``` - -### `punycode.toUnicode(domain)` - -Converts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. - -```js -// decode domain names -punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' -punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' -``` - -### `punycode.toASCII(domain)` - -Converts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. - -```js -// encode domain names -punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' -punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' -``` - -### `punycode.ucs2` - -#### `punycode.ucs2.decode(string)` - -Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. - -```js -punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63] -// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: -punycode.ucs2.decode('\uD834\uDF06'); // [0x1D306] -``` - -#### `punycode.ucs2.encode(codePoints)` - -Creates a string based on an array of numeric code point values. - -```js -punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc' -punycode.ucs2.encode([0x1D306]); // '\uD834\uDF06' -``` - -### `punycode.version` - -A string representing the current Punycode.js version number. - -[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme) - -## Unit tests & code coverage - -After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. - -Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. - -To generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`. - -Feel free to fork if you see possible improvements! - -## Author - -| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") | -|---| -| [Mathias Bynens](http://mathiasbynens.be/) | - -## Contributors - -| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## License - -Punycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json deleted file mode 100644 index 35237574..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "punycode", - "version": "1.2.4", - "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", - "homepage": "http://mths.be/punycode", - "main": "punycode.js", - "keywords": [ - "punycode", - "unicode", - "idn", - "idna", - "dns", - "url", - "domain" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://mths.be/mit" - }, - { - "type": "GPL", - "url": "http://mths.be/gpl" - } - ], - "author": { - "name": "Mathias Bynens", - "email": "mathias@qiwi.be", - "url": "http://mathiasbynens.be/" - }, - "contributors": [ - { - "name": "Mathias Bynens", - "email": "mathias@qiwi.be", - "url": "http://mathiasbynens.be/" - }, - { - "name": "John-David Dalton", - "email": "john.david.dalton@gmail.com", - "url": "http://allyoucanleet.com/" - } - ], - "bugs": { - "url": "https://github.com/bestiejs/punycode.js/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/bestiejs/punycode.js.git" - }, - "engines": [ - "node", - "rhino" - ], - "directories": { - "doc": "docs", - "test": "tests" - }, - "scripts": { - "test": "node tests/tests.js" - }, - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-uglify": "~0.2.2", - "grunt-shell": "~0.6.4", - "istanbul": "~0.2.4", - "qunit-clib": "~1.3.0", - "qunitjs": "~1.11.0", - "requirejs": "~2.1.6" - }, - "readme": "# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js)\n\nA robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms.\n\nThis JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:\n\n* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C)\n* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)\n* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)\n* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)\n* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))\n\nThis project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc).\n\n## Installation\n\nVia [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2):\n\n```bash\nnpm install punycode\n```\n\nVia [Bower](http://bower.io/):\n\n```bash\nbower install punycode\n```\n\nVia [Component](https://github.com/component/component):\n\n```bash\ncomponent install bestiejs/punycode.js\n```\n\nIn a browser:\n\n```html\n<script src=\"punycode.js\"></script>\n```\n\nIn [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):\n\n```js\nvar punycode = require('punycode');\n```\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload('punycode.js');\n```\n\nUsing an AMD loader like [RequireJS](http://requirejs.org/):\n\n```js\nrequire(\n {\n 'paths': {\n 'punycode': 'path/to/punycode'\n }\n },\n ['punycode'],\n function(punycode) {\n console.log(punycode);\n }\n);\n```\n\n## API\n\n### `punycode.decode(string)`\n\nConverts a Punycode string of ASCII symbols to a string of Unicode symbols.\n\n```js\n// decode domain name parts\npunycode.decode('maana-pta'); // 'mañana'\npunycode.decode('--dqo34k'); // '☃-⌘'\n```\n\n### `punycode.encode(string)`\n\nConverts a string of Unicode symbols to a Punycode string of ASCII symbols.\n\n```js\n// encode domain name parts\npunycode.encode('mañana'); // 'maana-pta'\npunycode.encode('☃-⌘'); // '--dqo34k'\n```\n\n### `punycode.toUnicode(domain)`\n\nConverts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.\n\n```js\n// decode domain names\npunycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'\npunycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com'\n```\n\n### `punycode.toASCII(domain)`\n\nConverts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII.\n\n```js\n// encode domain names\npunycode.toASCII('mañana.com'); // 'xn--maana-pta.com'\npunycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com'\n```\n\n### `punycode.ucs2`\n\n#### `punycode.ucs2.decode(string)`\n\nCreates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.\n\n```js\npunycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]\n// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:\npunycode.ucs2.decode('\\uD834\\uDF06'); // [0x1D306]\n```\n\n#### `punycode.ucs2.encode(codePoints)`\n\nCreates a string based on an array of numeric code point values.\n\n```js\npunycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc'\npunycode.ucs2.encode([0x1D306]); // '\\uD834\\uDF06'\n```\n\n### `punycode.version`\n\nA string representing the current Punycode.js version number.\n\n[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme)\n\n## Unit tests & code coverage\n\nAfter cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.\n\nOnce that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`.\n\nTo generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`.\n\nFeel free to fork if you see possible improvements!\n\n## Author\n\n| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias \"Follow @mathias on Twitter\") |\n|---|\n| [Mathias Bynens](http://mathiasbynens.be/) |\n\n## Contributors\n\n| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton \"Follow @jdalton on Twitter\") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## License\n\nPunycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses.\n", - "readmeFilename": "README.md", - "_id": "punycode@1.2.4", - "_from": "punycode@>=0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js deleted file mode 100644 index d5b9bc21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js +++ /dev/null @@ -1,507 +0,0 @@ -/*! http://mths.be/punycode v1.2.4 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports; - var freeModule = typeof module == 'object' && module && - module.exports == freeExports && module; - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /\x2E|\u3002|\uFF0E|\uFF61/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - while (length--) { - array[length] = fn(array[length]); - } - return array; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings. - * @private - * @param {String} domain The domain name. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - return map(string.split(regexSeparators), fn).join('.'); - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see <http://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols to a Punycode string of ASCII-only - * symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name to Unicode. Only the - * Punycoded parts of the domain name will be converted, i.e. it doesn't - * matter if you call it on a string that has already been converted to - * Unicode. - * @memberOf punycode - * @param {String} domain The Punycode domain name to convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(domain) { - return mapDomain(domain, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name to Punycode. Only the - * non-ASCII parts of the domain name will be converted, i.e. it doesn't - * matter if you call it with a domain that's already in ASCII. - * @memberOf punycode - * @param {String} domain The domain name to convert, as a Unicode string. - * @returns {String} The Punycode representation of the given domain name. - */ - function toASCII(domain) { - return mapDomain(domain, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.2.4', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see <http://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && !freeExports.nodeType) { - if (freeModule) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js deleted file mode 100644 index 24c8af24..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! http://mths.be/punycode v1.2.4 by @mathias */ -!function(a){function b(a){throw RangeError(E[a])}function c(a,b){for(var c=a.length;c--;)a[c]=b(a[c]);return a}function d(a,b){return c(a.split(D),b).join(".")}function e(a){for(var b,c,d=[],e=0,f=a.length;f>e;)b=a.charCodeAt(e++),b>=55296&&56319>=b&&f>e?(c=a.charCodeAt(e++),56320==(64512&c)?d.push(((1023&b)<<10)+(1023&c)+65536):(d.push(b),e--)):d.push(b);return d}function f(a){return c(a,function(a){var b="";return a>65535&&(a-=65536,b+=H(a>>>10&1023|55296),a=56320|1023&a),b+=H(a)}).join("")}function g(a){return 10>a-48?a-22:26>a-65?a-65:26>a-97?a-97:t}function h(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function i(a,b,c){var d=0;for(a=c?G(a/x):a>>1,a+=G(a/b);a>F*v>>1;d+=t)a=G(a/F);return G(d+(F+1)*a/(a+w))}function j(a){var c,d,e,h,j,k,l,m,n,o,p=[],q=a.length,r=0,w=z,x=y;for(d=a.lastIndexOf(A),0>d&&(d=0),e=0;d>e;++e)a.charCodeAt(e)>=128&&b("not-basic"),p.push(a.charCodeAt(e));for(h=d>0?d+1:0;q>h;){for(j=r,k=1,l=t;h>=q&&b("invalid-input"),m=g(a.charCodeAt(h++)),(m>=t||m>G((s-r)/k))&&b("overflow"),r+=m*k,n=x>=l?u:l>=x+v?v:l-x,!(n>m);l+=t)o=t-n,k>G(s/o)&&b("overflow"),k*=o;c=p.length+1,x=i(r-j,c,0==j),G(r/c)>s-w&&b("overflow"),w+=G(r/c),r%=c,p.splice(r++,0,w)}return f(p)}function k(a){var c,d,f,g,j,k,l,m,n,o,p,q,r,w,x,B=[];for(a=e(a),q=a.length,c=z,d=0,j=y,k=0;q>k;++k)p=a[k],128>p&&B.push(H(p));for(f=g=B.length,g&&B.push(A);q>f;){for(l=s,k=0;q>k;++k)p=a[k],p>=c&&l>p&&(l=p);for(r=f+1,l-c>G((s-d)/r)&&b("overflow"),d+=(l-c)*r,c=l,k=0;q>k;++k)if(p=a[k],c>p&&++d>s&&b("overflow"),p==c){for(m=d,n=t;o=j>=n?u:n>=j+v?v:n-j,!(o>m);n+=t)x=m-o,w=t-o,B.push(H(h(o+x%w,0))),m=G(x/w);B.push(H(h(m,0))),j=i(d,r,f==g),d=0,++f}++d,++c}return B.join("")}function l(a){return d(a,function(a){return B.test(a)?j(a.slice(4).toLowerCase()):a})}function m(a){return d(a,function(a){return C.test(a)?"xn--"+k(a):a})}var n="object"==typeof exports&&exports,o="object"==typeof module&&module&&module.exports==n&&module,p="object"==typeof global&&global;(p.global===p||p.window===p)&&(a=p);var q,r,s=2147483647,t=36,u=1,v=26,w=38,x=700,y=72,z=128,A="-",B=/^xn--/,C=/[^ -~]/,D=/\x2E|\u3002|\uFF0E|\uFF61/g,E={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=t-u,G=Math.floor,H=String.fromCharCode;if(q={version:"1.2.4",ucs2:{decode:e,encode:f},decode:j,encode:k,toASCII:m,toUnicode:l},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return q});else if(n&&!n.nodeType)if(o)o.exports=q;else for(r in q)q.hasOwnProperty(r)&&(n[r]=q[r]);else a.punycode=q}(this); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json deleted file mode 100644 index e91645aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Jeremy Stashewsky", - "email": "jeremy@goinstant.com", - "url": "https://github.com/stash" - }, - "name": "tough-cookie", - "description": "RFC6265 Cookies and Cookie Jar for node.js", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "version": "0.9.15", - "homepage": "https://github.com/goinstant/node-cookie", - "repository": { - "type": "git", - "url": "git://github.com/goinstant/node-cookie.git" - }, - "bugs": { - "url": "https://github.com/goinstant/node-cookie/issues" - }, - "main": "./lib/cookie", - "scripts": { - "test": "vows test.js" - }, - "engines": { - "node": ">=0.4.12" - }, - "dependencies": { - "punycode": ">=0.2.0" - }, - "devDependencies": { - "vows": ">=0.6.0", - "async": ">=0.1.12" - }, - "readme": "[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js\n\n![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg)\n\n# Synopsis\n\n``` javascript\nvar cookies = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie'\nvar Cookie = cookies.Cookie;\nvar cookie = Cookie.parse(header);\ncookie.value = 'somethingdifferent';\nheader = cookie.toString();\n\nvar cookiejar = new cookies.CookieJar();\ncookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb);\n// ...\ncookiejar.getCookies('http://example.com/otherpath',function(err,cookies) {\n res.headers['cookie'] = cookies.join('; ');\n});\n```\n\n# Installation\n\nIt's _so_ easy!\n\n`npm install tough-cookie`\n\nRequires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default.\n\nWhy the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.\n\n# API\n\ncookies\n=======\n\nFunctions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be \"bound\".\n\nparseDate(string[,strict])\n-----------------\n\nParse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. \"Thu, 01 Jan 1970 00:00:010 GMT\" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid).\n\nformatDate(date)\n----------------\n\nFormat a Date into a RFC1123 string (the RFC6265-recommended format).\n\ncanonicalDomain(str)\n--------------------\n\nTransforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).\n\ndomainMatch(str,domStr[,canonicalize=true])\n-------------------------------------------\n\nAnswers \"does this real domain match the domain in a cookie?\". The `str` is the \"current\" domain-name and the `domStr` is the \"cookie\" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a \"suffix match\".\n\nThe `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.\n\ndefaultPath(path)\n-----------------\n\nGiven a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the \"directory\" of a \"file\" in the path, but is specified by Section 5.1.4 of the RFC.\n\nThe `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output.\n\npathMatch(reqPath,cookiePath)\n-----------------------------\n\nAnswers \"does the request-path path-match a given cookie-path?\" as per RFC6265 Section 5.1.4. Returns a boolean.\n\nThis is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.\n\nparse(header[,strict=false])\n----------------------------\n\nalias for `Cookie.parse(header[,strict])`\n\nfromJSON(string)\n----------------\n\nalias for `Cookie.fromJSON(string)`\n\ngetPublicSuffix(hostname)\n-------------------------\n\nReturns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.\n\nFor example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.\n\nFor further information, see http://publicsuffix.org/. This module derives its list from that site.\n\ncookieCompare(a,b)\n------------------\n\nFor use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest.\n\n``` javascript\nvar cookies = [ /* unsorted array of Cookie objects */ ];\ncookies = cookies.sort(cookieCompare);\n```\n\npermuteDomain(domain)\n---------------------\n\nGenerates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.\n\n\npermutePath(path)\n-----------------\n\nGenerates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.\n\nCookie\n======\n\nCookie.parse(header[,strict=false])\n-----------------------------------\n\nParses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off.\n\nHere's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:\n\n``` javascript\nif (res.headers['set-cookie'] instanceof Array)\n cookies = res.headers['set-cookie'].map(Cookie.parse);\nelse\n cookies = [Cookie.parse(res.headers['set-cookie'])];\n```\n\nCookie.fromJSON(string)\n-----------------------\n\nConvert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects.\n\nProperties\n==========\n\n * _key_ - string - the name or key of the cookie (default \"\")\n * _value_ - string - the value of the cookie (default \"\")\n * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `\"Infinity\"`). See `setExpires()`\n * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `\"Infinity\"` and `\"-Infinity\"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`\n * _domain_ - string - the `Domain=` attribute of the cookie\n * _path_ - string - the `Path=` of the cookie\n * _secure_ - boolean - the `Secure` cookie flag\n * _httpOnly_ - boolean - the `HttpOnly` cookie flag\n * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)\n \nAfter a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:\n\n * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)\n * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.\n * _created_ - `Date` - when this cookie was added to the jar\n * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.\n\nConstruction([{options}])\n------------\n\nReceives an options object that can contain any Cookie properties, uses the default for unspecified properties.\n\n.toString()\n-----------\n\nencode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.\n\n.cookieString()\n---------------\n\nencode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '=').\n\n.setExpires(String)\n-------------------\n\nsets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `\"Infinity\"` (a string) is set.\n\n.setMaxAge(number)\n-------------------\n\nsets the maxAge in seconds. Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it JSON serializes correctly.\n\n.expiryTime([now=Date.now()])\n-----------------------------\n\n.expiryDate([now=Date.now()])\n-----------------------------\n\nexpiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.\n\nMax-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.\n\nIf Expires (`.expires`) is set, that's returned.\n\nOtherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for \"Tue, 19 Jan 2038 03:14:07 GMT\" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).\n\n.TTL([now=Date.now()])\n---------\n\ncompute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.\n\nThe \"number\" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.\n\n.canonicalizedDoman()\n---------------------\n\n.cdomain()\n----------\n\nreturn the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.\n\n.validate()\n-----------\n\nStatus: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.\n\nvalidates cookie attributes for semantic correctness. Useful for \"lint\" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:\n\n``` javascript\nif (cookie.validate() === true) {\n // it's tasty\n} else {\n // yuck!\n}\n```\n\nCookieJar\n=========\n\nConstruction([store = new MemoryCookieStore()][, rejectPublicSuffixes])\n------------\n\nSimply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.\n\n\nAttributes\n----------\n\n * _rejectPublicSuffixes_ - boolean - reject cookies with domains like \"com\" and \"co.uk\" (default: `true`)\n \nSince eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.\n\n.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))\n-------------------------------------------------------------------\n\nAttempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _strict_ - boolean - default `false` - perform extra checks\n * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option.\n\nAs per the RFC, the `.hostOnly` property is set if there was no \"Domain=\" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).\n\n.storeCookie(cookie, [{options},] cb(err,cookie))\n-------------------------------------------------\n\n__REMOVED__ removed in lieu of the CookieStore API below\n \n.getCookies(currentUrl, [{options},] cb(err,cookies))\n-----------------------------------------------------\n\nRetrieve the list of cookies that can be sent in a Cookie header for the current url.\n\nIf an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).\n * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it).\n\nThe `.lastAccessed` property of the returned cookies will have been updated.\n\n.getCookieString(...)\n---------------------\n\nAccepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.\n\n.getSetCookieStrings(...)\n-------------------------\n\nAccepts the same options as `.getCookies()` but passes an array of strings suitable for Set-Cookie headers (rather than an array of `Cookie`s) to the callback. Simply maps the cookie array via `.toString()`.\n\n# CookieStore API\n\nThe storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.\n\nAll `domain` parameters will have been normalized before calling.\n\nThe Cookie store must have all of the following methods.\n\nstore.findCookie(domain, path, key, cb(err,cookie))\n---------------------------------------------------\n\nRetrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.\n\nCallback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).\n\nstore.findCookies(domain, path, cb(err,cookies))\n------------------------------------------------\n\nLocates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.\n\nIf no cookies are found, the callback MUST be passed an empty array.\n\nThe resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.\n\nAs of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).\n\nstore.putCookie(cookie, cb(err))\n--------------------------------\n\nAdds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.\n\nThe `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.\n\nPass an error if the cookie cannot be stored.\n\nstore.updateCookie(oldCookie, newCookie, cb(err))\n-------------------------------------------------\n\nUpdate an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.\n\nThe `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion).\n\nStores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.\n\nThe `newCookie` and `oldCookie` objects MUST NOT be modified.\n\nPass an error if the newCookie cannot be stored.\n\nstore.removeCookie(domain, path, key, cb(err))\n----------------------------------------------\n\nRemove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).\n\nThe implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie.\n\nstore.removeCookies(domain, path, cb(err))\n------------------------------------------\n\nRemoves matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed.\n\nPass an error ONLY if removing any existing cookies failed.\n\n# TODO\n\n * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()`\n * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891\n * better tests for `validate()`?\n\n# Copyright and License\n\n(tl;dr: MIT with some MPL/1.1)\n\nCopyright GoInstant, Inc. and other contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n\nPortions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.\n", - "readmeFilename": "README.md", - "_id": "tough-cookie@0.9.15", - "_from": "tough-cookie@~0.9.15" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt deleted file mode 100644 index 2c201312..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt +++ /dev/null @@ -1,5229 +0,0 @@ -// ***** BEGIN LICENSE BLOCK ***** -// Version: MPL 1.1/GPL 2.0/LGPL 2.1 -// -// The contents of this file are subject to the Mozilla Public License Version -// 1.1 (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// http://www.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" basis, -// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -// for the specific language governing rights and limitations under the -// License. -// -// The Original Code is the Public Suffix List. -// -// The Initial Developer of the Original Code is -// Jo Hermans <jo.hermans@gmail.com>. -// Portions created by the Initial Developer are Copyright (C) 2007 -// the Initial Developer. All Rights Reserved. -// -// Contributor(s): -// Ruben Arakelyan <ruben@rubenarakelyan.com> -// Gervase Markham <gerv@gerv.net> -// Pamela Greene <pamg.bugs@gmail.com> -// David Triendl <david@triendl.name> -// Jothan Frakes <jothan@gmail.com> -// The kind representatives of many TLD registries -// -// Alternatively, the contents of this file may be used under the terms of -// either the GNU General Public License Version 2 or later (the "GPL"), or -// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -// in which case the provisions of the GPL or the LGPL are applicable instead -// of those above. If you wish to allow use of your version of this file only -// under the terms of either the GPL or the LGPL, and not to allow others to -// use your version of this file under the terms of the MPL, indicate your -// decision by deleting the provisions above and replace them with the notice -// and other provisions required by the GPL or the LGPL. If you do not delete -// the provisions above, a recipient may use your version of this file under -// the terms of any one of the MPL, the GPL or the LGPL. -// -// ***** END LICENSE BLOCK ***** - -// ===BEGIN ICANN DOMAINS=== - -// ac : http://en.wikipedia.org/wiki/.ac -ac -com.ac -edu.ac -gov.ac -net.ac -mil.ac -org.ac - -// ad : http://en.wikipedia.org/wiki/.ad -ad -nom.ad - -// ae : http://en.wikipedia.org/wiki/.ae -// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php -ae -co.ae -net.ae -org.ae -sch.ae -ac.ae -gov.ae -mil.ae - -// aero : see http://www.information.aero/index.php?id=66 -aero -accident-investigation.aero -accident-prevention.aero -aerobatic.aero -aeroclub.aero -aerodrome.aero -agents.aero -aircraft.aero -airline.aero -airport.aero -air-surveillance.aero -airtraffic.aero -air-traffic-control.aero -ambulance.aero -amusement.aero -association.aero -author.aero -ballooning.aero -broker.aero -caa.aero -cargo.aero -catering.aero -certification.aero -championship.aero -charter.aero -civilaviation.aero -club.aero -conference.aero -consultant.aero -consulting.aero -control.aero -council.aero -crew.aero -design.aero -dgca.aero -educator.aero -emergency.aero -engine.aero -engineer.aero -entertainment.aero -equipment.aero -exchange.aero -express.aero -federation.aero -flight.aero -freight.aero -fuel.aero -gliding.aero -government.aero -groundhandling.aero -group.aero -hanggliding.aero -homebuilt.aero -insurance.aero -journal.aero -journalist.aero -leasing.aero -logistics.aero -magazine.aero -maintenance.aero -marketplace.aero -media.aero -microlight.aero -modelling.aero -navigation.aero -parachuting.aero -paragliding.aero -passenger-association.aero -pilot.aero -press.aero -production.aero -recreation.aero -repbody.aero -res.aero -research.aero -rotorcraft.aero -safety.aero -scientist.aero -services.aero -show.aero -skydiving.aero -software.aero -student.aero -taxi.aero -trader.aero -trading.aero -trainer.aero -union.aero -workinggroup.aero -works.aero - -// af : http://www.nic.af/help.jsp -af -gov.af -com.af -org.af -net.af -edu.af - -// ag : http://www.nic.ag/prices.htm -ag -com.ag -org.ag -net.ag -co.ag -nom.ag - -// ai : http://nic.com.ai/ -ai -off.ai -com.ai -net.ai -org.ai - -// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 -al -com.al -edu.al -gov.al -mil.al -net.al -org.al - -// am : http://en.wikipedia.org/wiki/.am -am - -// an : http://www.una.an/an_domreg/default.asp -an -com.an -net.an -org.an -edu.an - -// ao : http://en.wikipedia.org/wiki/.ao -// http://www.dns.ao/REGISTR.DOC -ao -ed.ao -gv.ao -og.ao -co.ao -pb.ao -it.ao - -// aq : http://en.wikipedia.org/wiki/.aq -aq - -// ar : http://en.wikipedia.org/wiki/.ar -*.ar -!congresodelalengua3.ar -!educ.ar -!gobiernoelectronico.ar -!mecon.ar -!nacion.ar -!nic.ar -!promocion.ar -!retina.ar -!uba.ar - -// arpa : http://en.wikipedia.org/wiki/.arpa -// Confirmed by registry <iana-questions@icann.org> 2008-06-18 -e164.arpa -in-addr.arpa -ip6.arpa -iris.arpa -uri.arpa -urn.arpa - -// as : http://en.wikipedia.org/wiki/.as -as -gov.as - -// asia : http://en.wikipedia.org/wiki/.asia -asia - -// at : http://en.wikipedia.org/wiki/.at -// Confirmed by registry <it@nic.at> 2008-06-17 -at -ac.at -co.at -gv.at -or.at - -// au : http://en.wikipedia.org/wiki/.au -// http://www.auda.org.au/ -// 2LDs -com.au -net.au -org.au -edu.au -gov.au -csiro.au -asn.au -id.au -// Historic 2LDs (closed to new registration, but sites still exist) -info.au -conf.au -oz.au -// CGDNs - http://www.cgdn.org.au/ -act.au -nsw.au -nt.au -qld.au -sa.au -tas.au -vic.au -wa.au -// 3LDs -act.edu.au -nsw.edu.au -nt.edu.au -qld.edu.au -sa.edu.au -tas.edu.au -vic.edu.au -wa.edu.au -act.gov.au -// Removed at request of Shae.Donelan@services.nsw.gov.au, 2010-03-04 -// nsw.gov.au -nt.gov.au -qld.gov.au -sa.gov.au -tas.gov.au -vic.gov.au -wa.gov.au - -// aw : http://en.wikipedia.org/wiki/.aw -aw -com.aw - -// ax : http://en.wikipedia.org/wiki/.ax -ax - -// az : http://en.wikipedia.org/wiki/.az -az -com.az -net.az -int.az -gov.az -org.az -edu.az -info.az -pp.az -mil.az -name.az -pro.az -biz.az - -// ba : http://en.wikipedia.org/wiki/.ba -ba -org.ba -net.ba -edu.ba -gov.ba -mil.ba -unsa.ba -unbi.ba -co.ba -com.ba -rs.ba - -// bb : http://en.wikipedia.org/wiki/.bb -bb -biz.bb -com.bb -edu.bb -gov.bb -info.bb -net.bb -org.bb -store.bb - -// bd : http://en.wikipedia.org/wiki/.bd -*.bd - -// be : http://en.wikipedia.org/wiki/.be -// Confirmed by registry <tech@dns.be> 2008-06-08 -be -ac.be - -// bf : http://en.wikipedia.org/wiki/.bf -bf -gov.bf - -// bg : http://en.wikipedia.org/wiki/.bg -// https://www.register.bg/user/static/rules/en/index.html -bg -a.bg -b.bg -c.bg -d.bg -e.bg -f.bg -g.bg -h.bg -i.bg -j.bg -k.bg -l.bg -m.bg -n.bg -o.bg -p.bg -q.bg -r.bg -s.bg -t.bg -u.bg -v.bg -w.bg -x.bg -y.bg -z.bg -0.bg -1.bg -2.bg -3.bg -4.bg -5.bg -6.bg -7.bg -8.bg -9.bg - -// bh : http://en.wikipedia.org/wiki/.bh -bh -com.bh -edu.bh -net.bh -org.bh -gov.bh - -// bi : http://en.wikipedia.org/wiki/.bi -// http://whois.nic.bi/ -bi -co.bi -com.bi -edu.bi -or.bi -org.bi - -// biz : http://en.wikipedia.org/wiki/.biz -biz - -// bj : http://en.wikipedia.org/wiki/.bj -bj -asso.bj -barreau.bj -gouv.bj - -// bm : http://www.bermudanic.bm/dnr-text.txt -bm -com.bm -edu.bm -gov.bm -net.bm -org.bm - -// bn : http://en.wikipedia.org/wiki/.bn -*.bn - -// bo : http://www.nic.bo/ -bo -com.bo -edu.bo -gov.bo -gob.bo -int.bo -org.bo -net.bo -mil.bo -tv.bo - -// br : http://registro.br/dominio/dpn.html -// Updated by registry <fneves@registro.br> 2011-03-01 -br -adm.br -adv.br -agr.br -am.br -arq.br -art.br -ato.br -b.br -bio.br -blog.br -bmd.br -can.br -cim.br -cng.br -cnt.br -com.br -coop.br -ecn.br -edu.br -emp.br -eng.br -esp.br -etc.br -eti.br -far.br -flog.br -fm.br -fnd.br -fot.br -fst.br -g12.br -ggf.br -gov.br -imb.br -ind.br -inf.br -jor.br -jus.br -lel.br -mat.br -med.br -mil.br -mus.br -net.br -nom.br -not.br -ntr.br -odo.br -org.br -ppg.br -pro.br -psc.br -psi.br -qsl.br -radio.br -rec.br -slg.br -srv.br -taxi.br -teo.br -tmp.br -trd.br -tur.br -tv.br -vet.br -vlog.br -wiki.br -zlg.br - -// bs : http://www.nic.bs/rules.html -bs -com.bs -net.bs -org.bs -edu.bs -gov.bs - -// bt : http://en.wikipedia.org/wiki/.bt -bt -com.bt -edu.bt -gov.bt -net.bt -org.bt - -// bv : No registrations at this time. -// Submitted by registry <jarle@uninett.no> 2006-06-16 - -// bw : http://en.wikipedia.org/wiki/.bw -// http://www.gobin.info/domainname/bw.doc -// list of other 2nd level tlds ? -bw -co.bw -org.bw - -// by : http://en.wikipedia.org/wiki/.by -// http://tld.by/rules_2006_en.html -// list of other 2nd level tlds ? -by -gov.by -mil.by -// Official information does not indicate that com.by is a reserved -// second-level domain, but it's being used as one (see www.google.com.by and -// www.yahoo.com.by, for example), so we list it here for safety's sake. -com.by - -// http://hoster.by/ -of.by - -// bz : http://en.wikipedia.org/wiki/.bz -// http://www.belizenic.bz/ -bz -com.bz -net.bz -org.bz -edu.bz -gov.bz - -// ca : http://en.wikipedia.org/wiki/.ca -ca -// ca geographical names -ab.ca -bc.ca -mb.ca -nb.ca -nf.ca -nl.ca -ns.ca -nt.ca -nu.ca -on.ca -pe.ca -qc.ca -sk.ca -yk.ca -// gc.ca: http://en.wikipedia.org/wiki/.gc.ca -// see also: http://registry.gc.ca/en/SubdomainFAQ -gc.ca - -// cat : http://en.wikipedia.org/wiki/.cat -cat - -// cc : http://en.wikipedia.org/wiki/.cc -cc - -// cd : http://en.wikipedia.org/wiki/.cd -// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 -cd -gov.cd - -// cf : http://en.wikipedia.org/wiki/.cf -cf - -// cg : http://en.wikipedia.org/wiki/.cg -cg - -// ch : http://en.wikipedia.org/wiki/.ch -ch - -// ci : http://en.wikipedia.org/wiki/.ci -// http://www.nic.ci/index.php?page=charte -ci -org.ci -or.ci -com.ci -co.ci -edu.ci -ed.ci -ac.ci -net.ci -go.ci -asso.ci -aéroport.ci -int.ci -presse.ci -md.ci -gouv.ci - -// ck : http://en.wikipedia.org/wiki/.ck -*.ck -!www.ck - -// cl : http://en.wikipedia.org/wiki/.cl -cl -gov.cl -gob.cl -co.cl -mil.cl - -// cm : http://en.wikipedia.org/wiki/.cm -cm -gov.cm - -// cn : http://en.wikipedia.org/wiki/.cn -// Submitted by registry <tanyaling@cnnic.cn> 2008-06-11 -cn -ac.cn -com.cn -edu.cn -gov.cn -net.cn -org.cn -mil.cn -å…¬å¸.cn -网络.cn -網絡.cn -// cn geographic names -ah.cn -bj.cn -cq.cn -fj.cn -gd.cn -gs.cn -gz.cn -gx.cn -ha.cn -hb.cn -he.cn -hi.cn -hl.cn -hn.cn -jl.cn -js.cn -jx.cn -ln.cn -nm.cn -nx.cn -qh.cn -sc.cn -sd.cn -sh.cn -sn.cn -sx.cn -tj.cn -xj.cn -xz.cn -yn.cn -zj.cn -hk.cn -mo.cn -tw.cn - -// co : http://en.wikipedia.org/wiki/.co -// Submitted by registry <tecnico@uniandes.edu.co> 2008-06-11 -co -arts.co -com.co -edu.co -firm.co -gov.co -info.co -int.co -mil.co -net.co -nom.co -org.co -rec.co -web.co - -// com : http://en.wikipedia.org/wiki/.com -com - -// coop : http://en.wikipedia.org/wiki/.coop -coop - -// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do -cr -ac.cr -co.cr -ed.cr -fi.cr -go.cr -or.cr -sa.cr - -// cu : http://en.wikipedia.org/wiki/.cu -cu -com.cu -edu.cu -org.cu -net.cu -gov.cu -inf.cu - -// cv : http://en.wikipedia.org/wiki/.cv -cv - -// cx : http://en.wikipedia.org/wiki/.cx -// list of other 2nd level tlds ? -cx -gov.cx - -// cy : http://en.wikipedia.org/wiki/.cy -*.cy - -// cz : http://en.wikipedia.org/wiki/.cz -cz - -// de : http://en.wikipedia.org/wiki/.de -// Confirmed by registry <ops@denic.de> (with technical -// reservations) 2008-07-01 -de - -// dj : http://en.wikipedia.org/wiki/.dj -dj - -// dk : http://en.wikipedia.org/wiki/.dk -// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17 -dk - -// dm : http://en.wikipedia.org/wiki/.dm -dm -com.dm -net.dm -org.dm -edu.dm -gov.dm - -// do : http://en.wikipedia.org/wiki/.do -do -art.do -com.do -edu.do -gob.do -gov.do -mil.do -net.do -org.do -sld.do -web.do - -// dz : http://en.wikipedia.org/wiki/.dz -dz -com.dz -org.dz -net.dz -gov.dz -edu.dz -asso.dz -pol.dz -art.dz - -// ec : http://www.nic.ec/reg/paso1.asp -// Submitted by registry <vabboud@nic.ec> 2008-07-04 -ec -com.ec -info.ec -net.ec -fin.ec -k12.ec -med.ec -pro.ec -org.ec -edu.ec -gov.ec -gob.ec -mil.ec - -// edu : http://en.wikipedia.org/wiki/.edu -edu - -// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B -ee -edu.ee -gov.ee -riik.ee -lib.ee -med.ee -com.ee -pri.ee -aip.ee -org.ee -fie.ee - -// eg : http://en.wikipedia.org/wiki/.eg -eg -com.eg -edu.eg -eun.eg -gov.eg -mil.eg -name.eg -net.eg -org.eg -sci.eg - -// er : http://en.wikipedia.org/wiki/.er -*.er - -// es : https://www.nic.es/site_ingles/ingles/dominios/index.html -es -com.es -nom.es -org.es -gob.es -edu.es - -// et : http://en.wikipedia.org/wiki/.et -*.et - -// eu : http://en.wikipedia.org/wiki/.eu -eu - -// fi : http://en.wikipedia.org/wiki/.fi -fi -// aland.fi : http://en.wikipedia.org/wiki/.ax -// This domain is being phased out in favor of .ax. As there are still many -// domains under aland.fi, we still keep it on the list until aland.fi is -// completely removed. -// TODO: Check for updates (expected to be phased out around Q1/2009) -aland.fi - -// fj : http://en.wikipedia.org/wiki/.fj -*.fj - -// fk : http://en.wikipedia.org/wiki/.fk -*.fk - -// fm : http://en.wikipedia.org/wiki/.fm -fm - -// fo : http://en.wikipedia.org/wiki/.fo -fo - -// fr : http://www.afnic.fr/ -// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs -fr -com.fr -asso.fr -nom.fr -prd.fr -presse.fr -tm.fr -// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels -aeroport.fr -assedic.fr -avocat.fr -avoues.fr -cci.fr -chambagri.fr -chirurgiens-dentistes.fr -experts-comptables.fr -geometre-expert.fr -gouv.fr -greta.fr -huissier-justice.fr -medecin.fr -notaires.fr -pharmacien.fr -port.fr -veterinaire.fr - -// ga : http://en.wikipedia.org/wiki/.ga -ga - -// gb : This registry is effectively dormant -// Submitted by registry <Damien.Shaw@ja.net> 2008-06-12 - -// gd : http://en.wikipedia.org/wiki/.gd -gd - -// ge : http://www.nic.net.ge/policy_en.pdf -ge -com.ge -edu.ge -gov.ge -org.ge -mil.ge -net.ge -pvt.ge - -// gf : http://en.wikipedia.org/wiki/.gf -gf - -// gg : http://www.channelisles.net/applic/avextn.shtml -gg -co.gg -org.gg -net.gg -sch.gg -gov.gg - -// gh : http://en.wikipedia.org/wiki/.gh -// see also: http://www.nic.gh/reg_now.php -// Although domains directly at second level are not possible at the moment, -// they have been possible for some time and may come back. -gh -com.gh -edu.gh -gov.gh -org.gh -mil.gh - -// gi : http://www.nic.gi/rules.html -gi -com.gi -ltd.gi -gov.gi -mod.gi -edu.gi -org.gi - -// gl : http://en.wikipedia.org/wiki/.gl -// http://nic.gl -gl - -// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm -gm - -// gn : http://psg.com/dns/gn/gn.txt -// Submitted by registry <randy@psg.com> 2008-06-17 -ac.gn -com.gn -edu.gn -gov.gn -org.gn -net.gn - -// gov : http://en.wikipedia.org/wiki/.gov -gov - -// gp : http://www.nic.gp/index.php?lang=en -gp -com.gp -net.gp -mobi.gp -edu.gp -org.gp -asso.gp - -// gq : http://en.wikipedia.org/wiki/.gq -gq - -// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html -// Submitted by registry <segred@ics.forth.gr> 2008-06-09 -gr -com.gr -edu.gr -net.gr -org.gr -gov.gr - -// gs : http://en.wikipedia.org/wiki/.gs -gs - -// gt : http://www.gt/politicas.html -*.gt -!www.gt - -// gu : http://gadao.gov.gu/registration.txt -*.gu - -// gw : http://en.wikipedia.org/wiki/.gw -gw - -// gy : http://en.wikipedia.org/wiki/.gy -// http://registry.gy/ -gy -co.gy -com.gy -net.gy - -// hk : https://www.hkdnr.hk -// Submitted by registry <hk.tech@hkirc.hk> 2008-06-11 -hk -com.hk -edu.hk -gov.hk -idv.hk -net.hk -org.hk -å…¬å¸.hk -教育.hk -敎育.hk -政府.hk -個人.hk -个人.hk -箇人.hk -網络.hk -网络.hk -组織.hk -網絡.hk -网絡.hk -组织.hk -組織.hk -組织.hk - -// hm : http://en.wikipedia.org/wiki/.hm -hm - -// hn : http://www.nic.hn/politicas/ps02,,05.html -hn -com.hn -edu.hn -org.hn -net.hn -mil.hn -gob.hn - -// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf -hr -iz.hr -from.hr -name.hr -com.hr - -// ht : http://www.nic.ht/info/charte.cfm -ht -com.ht -shop.ht -firm.ht -info.ht -adult.ht -net.ht -pro.ht -org.ht -med.ht -art.ht -coop.ht -pol.ht -asso.ht -edu.ht -rel.ht -gouv.ht -perso.ht - -// hu : http://www.domain.hu/domain/English/sld.html -// Confirmed by registry <pasztor@iszt.hu> 2008-06-12 -hu -co.hu -info.hu -org.hu -priv.hu -sport.hu -tm.hu -2000.hu -agrar.hu -bolt.hu -casino.hu -city.hu -erotica.hu -erotika.hu -film.hu -forum.hu -games.hu -hotel.hu -ingatlan.hu -jogasz.hu -konyvelo.hu -lakas.hu -media.hu -news.hu -reklam.hu -sex.hu -shop.hu -suli.hu -szex.hu -tozsde.hu -utazas.hu -video.hu - -// id : http://en.wikipedia.org/wiki/.id -// see also: https://register.pandi.or.id/ -id -ac.id -co.id -go.id -mil.id -net.id -or.id -sch.id -web.id - -// ie : http://en.wikipedia.org/wiki/.ie -ie -gov.ie - -// il : http://en.wikipedia.org/wiki/.il -*.il - -// im : https://www.nic.im/pdfs/imfaqs.pdf -im -co.im -ltd.co.im -plc.co.im -net.im -gov.im -org.im -nic.im -ac.im - -// in : http://en.wikipedia.org/wiki/.in -// see also: http://www.inregistry.in/policies/ -// Please note, that nic.in is not an offical eTLD, but used by most -// government institutions. -in -co.in -firm.in -net.in -org.in -gen.in -ind.in -nic.in -ac.in -edu.in -res.in -gov.in -mil.in - -// info : http://en.wikipedia.org/wiki/.info -info - -// int : http://en.wikipedia.org/wiki/.int -// Confirmed by registry <iana-questions@icann.org> 2008-06-18 -int -eu.int - -// io : http://www.nic.io/rules.html -// list of other 2nd level tlds ? -io -com.io - -// iq : http://www.cmc.iq/english/iq/iqregister1.htm -iq -gov.iq -edu.iq -mil.iq -com.iq -org.iq -net.iq - -// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules -// Also see http://www.nic.ir/Internationalized_Domain_Names -// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16 -ir -ac.ir -co.ir -gov.ir -id.ir -net.ir -org.ir -sch.ir -// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH) -ایران.ir -// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH) -ايران.ir - -// is : http://www.isnic.is/domain/rules.php -// Confirmed by registry <marius@isgate.is> 2008-12-06 -is -net.is -com.is -edu.is -gov.is -org.is -int.is - -// it : http://en.wikipedia.org/wiki/.it -it -gov.it -edu.it -// list of reserved geo-names : -// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf -// (There is also a list of reserved geo-names corresponding to Italian -// municipalities : http://www.nic.it/documenti/appendice-c.pdf , but it is -// not included here.) -agrigento.it -ag.it -alessandria.it -al.it -ancona.it -an.it -aosta.it -aoste.it -ao.it -arezzo.it -ar.it -ascoli-piceno.it -ascolipiceno.it -ap.it -asti.it -at.it -avellino.it -av.it -bari.it -ba.it -andria-barletta-trani.it -andriabarlettatrani.it -trani-barletta-andria.it -tranibarlettaandria.it -barletta-trani-andria.it -barlettatraniandria.it -andria-trani-barletta.it -andriatranibarletta.it -trani-andria-barletta.it -traniandriabarletta.it -bt.it -belluno.it -bl.it -benevento.it -bn.it -bergamo.it -bg.it -biella.it -bi.it -bologna.it -bo.it -bolzano.it -bozen.it -balsan.it -alto-adige.it -altoadige.it -suedtirol.it -bz.it -brescia.it -bs.it -brindisi.it -br.it -cagliari.it -ca.it -caltanissetta.it -cl.it -campobasso.it -cb.it -carboniaiglesias.it -carbonia-iglesias.it -iglesias-carbonia.it -iglesiascarbonia.it -ci.it -caserta.it -ce.it -catania.it -ct.it -catanzaro.it -cz.it -chieti.it -ch.it -como.it -co.it -cosenza.it -cs.it -cremona.it -cr.it -crotone.it -kr.it -cuneo.it -cn.it -dell-ogliastra.it -dellogliastra.it -ogliastra.it -og.it -enna.it -en.it -ferrara.it -fe.it -fermo.it -fm.it -firenze.it -florence.it -fi.it -foggia.it -fg.it -forli-cesena.it -forlicesena.it -cesena-forli.it -cesenaforli.it -fc.it -frosinone.it -fr.it -genova.it -genoa.it -ge.it -gorizia.it -go.it -grosseto.it -gr.it -imperia.it -im.it -isernia.it -is.it -laquila.it -aquila.it -aq.it -la-spezia.it -laspezia.it -sp.it -latina.it -lt.it -lecce.it -le.it -lecco.it -lc.it -livorno.it -li.it -lodi.it -lo.it -lucca.it -lu.it -macerata.it -mc.it -mantova.it -mn.it -massa-carrara.it -massacarrara.it -carrara-massa.it -carraramassa.it -ms.it -matera.it -mt.it -medio-campidano.it -mediocampidano.it -campidano-medio.it -campidanomedio.it -vs.it -messina.it -me.it -milano.it -milan.it -mi.it -modena.it -mo.it -monza.it -monza-brianza.it -monzabrianza.it -monzaebrianza.it -monzaedellabrianza.it -monza-e-della-brianza.it -mb.it -napoli.it -naples.it -na.it -novara.it -no.it -nuoro.it -nu.it -oristano.it -or.it -padova.it -padua.it -pd.it -palermo.it -pa.it -parma.it -pr.it -pavia.it -pv.it -perugia.it -pg.it -pescara.it -pe.it -pesaro-urbino.it -pesarourbino.it -urbino-pesaro.it -urbinopesaro.it -pu.it -piacenza.it -pc.it -pisa.it -pi.it -pistoia.it -pt.it -pordenone.it -pn.it -potenza.it -pz.it -prato.it -po.it -ragusa.it -rg.it -ravenna.it -ra.it -reggio-calabria.it -reggiocalabria.it -rc.it -reggio-emilia.it -reggioemilia.it -re.it -rieti.it -ri.it -rimini.it -rn.it -roma.it -rome.it -rm.it -rovigo.it -ro.it -salerno.it -sa.it -sassari.it -ss.it -savona.it -sv.it -siena.it -si.it -siracusa.it -sr.it -sondrio.it -so.it -taranto.it -ta.it -tempio-olbia.it -tempioolbia.it -olbia-tempio.it -olbiatempio.it -ot.it -teramo.it -te.it -terni.it -tr.it -torino.it -turin.it -to.it -trapani.it -tp.it -trento.it -trentino.it -tn.it -treviso.it -tv.it -trieste.it -ts.it -udine.it -ud.it -varese.it -va.it -venezia.it -venice.it -ve.it -verbania.it -vb.it -vercelli.it -vc.it -verona.it -vr.it -vibo-valentia.it -vibovalentia.it -vv.it -vicenza.it -vi.it -viterbo.it -vt.it - -// je : http://www.channelisles.net/applic/avextn.shtml -je -co.je -org.je -net.je -sch.je -gov.je - -// jm : http://www.com.jm/register.html -*.jm - -// jo : http://www.dns.jo/Registration_policy.aspx -jo -com.jo -org.jo -net.jo -edu.jo -sch.jo -gov.jo -mil.jo -name.jo - -// jobs : http://en.wikipedia.org/wiki/.jobs -jobs - -// jp : http://en.wikipedia.org/wiki/.jp -// http://jprs.co.jp/en/jpdomain.html -// Submitted by registry <yone@jprs.co.jp> 2008-06-11 -// Updated by registry <yone@jprs.co.jp> 2008-12-04 -jp -// jp organizational type names -ac.jp -ad.jp -co.jp -ed.jp -go.jp -gr.jp -lg.jp -ne.jp -or.jp -// jp geographic type names -// http://jprs.jp/doc/rule/saisoku-1.html -*.aichi.jp -*.akita.jp -*.aomori.jp -*.chiba.jp -*.ehime.jp -*.fukui.jp -*.fukuoka.jp -*.fukushima.jp -*.gifu.jp -*.gunma.jp -*.hiroshima.jp -*.hokkaido.jp -*.hyogo.jp -*.ibaraki.jp -*.ishikawa.jp -*.iwate.jp -*.kagawa.jp -*.kagoshima.jp -*.kanagawa.jp -*.kawasaki.jp -*.kitakyushu.jp -*.kobe.jp -*.kochi.jp -*.kumamoto.jp -*.kyoto.jp -*.mie.jp -*.miyagi.jp -*.miyazaki.jp -*.nagano.jp -*.nagasaki.jp -*.nagoya.jp -*.nara.jp -*.niigata.jp -*.oita.jp -*.okayama.jp -*.okinawa.jp -*.osaka.jp -*.saga.jp -*.saitama.jp -*.sapporo.jp -*.sendai.jp -*.shiga.jp -*.shimane.jp -*.shizuoka.jp -*.tochigi.jp -*.tokushima.jp -*.tokyo.jp -*.tottori.jp -*.toyama.jp -*.wakayama.jp -*.yamagata.jp -*.yamaguchi.jp -*.yamanashi.jp -*.yokohama.jp -!metro.tokyo.jp -!pref.aichi.jp -!pref.akita.jp -!pref.aomori.jp -!pref.chiba.jp -!pref.ehime.jp -!pref.fukui.jp -!pref.fukuoka.jp -!pref.fukushima.jp -!pref.gifu.jp -!pref.gunma.jp -!pref.hiroshima.jp -!pref.hokkaido.jp -!pref.hyogo.jp -!pref.ibaraki.jp -!pref.ishikawa.jp -!pref.iwate.jp -!pref.kagawa.jp -!pref.kagoshima.jp -!pref.kanagawa.jp -!pref.kochi.jp -!pref.kumamoto.jp -!pref.kyoto.jp -!pref.mie.jp -!pref.miyagi.jp -!pref.miyazaki.jp -!pref.nagano.jp -!pref.nagasaki.jp -!pref.nara.jp -!pref.niigata.jp -!pref.oita.jp -!pref.okayama.jp -!pref.okinawa.jp -!pref.osaka.jp -!pref.saga.jp -!pref.saitama.jp -!pref.shiga.jp -!pref.shimane.jp -!pref.shizuoka.jp -!pref.tochigi.jp -!pref.tokushima.jp -!pref.tottori.jp -!pref.toyama.jp -!pref.wakayama.jp -!pref.yamagata.jp -!pref.yamaguchi.jp -!pref.yamanashi.jp -!city.chiba.jp -!city.fukuoka.jp -!city.hiroshima.jp -!city.kawasaki.jp -!city.kitakyushu.jp -!city.kobe.jp -!city.kyoto.jp -!city.nagoya.jp -!city.niigata.jp -!city.okayama.jp -!city.osaka.jp -!city.saitama.jp -!city.sapporo.jp -!city.sendai.jp -!city.shizuoka.jp -!city.yokohama.jp - -// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 -*.ke - -// kg : http://www.domain.kg/dmn_n.html -kg -org.kg -net.kg -com.kg -edu.kg -gov.kg -mil.kg - -// kh : http://www.mptc.gov.kh/dns_registration.htm -*.kh - -// ki : http://www.ki/dns/index.html -ki -edu.ki -biz.ki -net.ki -org.ki -gov.ki -info.ki -com.ki - -// km : http://en.wikipedia.org/wiki/.km -// http://www.domaine.km/documents/charte.doc -km -org.km -nom.km -gov.km -prd.km -tm.km -edu.km -mil.km -ass.km -com.km -// These are only mentioned as proposed suggestions at domaine.km, but -// http://en.wikipedia.org/wiki/.km says they're available for registration: -coop.km -asso.km -presse.km -medecin.km -notaires.km -pharmaciens.km -veterinaire.km -gouv.km - -// kn : http://en.wikipedia.org/wiki/.kn -// http://www.dot.kn/domainRules.html -kn -net.kn -org.kn -edu.kn -gov.kn - -// kp : http://www.kcce.kp/en_index.php -com.kp -edu.kp -gov.kp -org.kp -rep.kp -tra.kp - -// kr : http://en.wikipedia.org/wiki/.kr -// see also: http://domain.nida.or.kr/eng/registration.jsp -kr -ac.kr -co.kr -es.kr -go.kr -hs.kr -kg.kr -mil.kr -ms.kr -ne.kr -or.kr -pe.kr -re.kr -sc.kr -// kr geographical names -busan.kr -chungbuk.kr -chungnam.kr -daegu.kr -daejeon.kr -gangwon.kr -gwangju.kr -gyeongbuk.kr -gyeonggi.kr -gyeongnam.kr -incheon.kr -jeju.kr -jeonbuk.kr -jeonnam.kr -seoul.kr -ulsan.kr - -// kw : http://en.wikipedia.org/wiki/.kw -*.kw - -// ky : http://www.icta.ky/da_ky_reg_dom.php -// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17 -ky -edu.ky -gov.ky -com.ky -org.ky -net.ky - -// kz : http://en.wikipedia.org/wiki/.kz -// see also: http://www.nic.kz/rules/index.jsp -kz -org.kz -edu.kz -net.kz -gov.kz -mil.kz -com.kz - -// la : http://en.wikipedia.org/wiki/.la -// Submitted by registry <gavin.brown@nic.la> 2008-06-10 -la -int.la -net.la -info.la -edu.la -gov.la -per.la -com.la -org.la - -// lb : http://en.wikipedia.org/wiki/.lb -// Submitted by registry <randy@psg.com> 2008-06-17 -com.lb -edu.lb -gov.lb -net.lb -org.lb - -// lc : http://en.wikipedia.org/wiki/.lc -// see also: http://www.nic.lc/rules.htm -lc -com.lc -net.lc -co.lc -org.lc -edu.lc -gov.lc - -// li : http://en.wikipedia.org/wiki/.li -li - -// lk : http://www.nic.lk/seclevpr.html -lk -gov.lk -sch.lk -net.lk -int.lk -com.lk -org.lk -edu.lk -ngo.lk -soc.lk -web.lk -ltd.lk -assn.lk -grp.lk -hotel.lk - -// lr : http://psg.com/dns/lr/lr.txt -// Submitted by registry <randy@psg.com> 2008-06-17 -com.lr -edu.lr -gov.lr -org.lr -net.lr - -// ls : http://en.wikipedia.org/wiki/.ls -ls -co.ls -org.ls - -// lt : http://en.wikipedia.org/wiki/.lt -lt -// gov.lt : http://www.gov.lt/index_en.php -gov.lt - -// lu : http://www.dns.lu/en/ -lu - -// lv : http://www.nic.lv/DNS/En/generic.php -lv -com.lv -edu.lv -gov.lv -org.lv -mil.lv -id.lv -net.lv -asn.lv -conf.lv - -// ly : http://www.nic.ly/regulations.php -ly -com.ly -net.ly -gov.ly -plc.ly -edu.ly -sch.ly -med.ly -org.ly -id.ly - -// ma : http://en.wikipedia.org/wiki/.ma -// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf -ma -co.ma -net.ma -gov.ma -org.ma -ac.ma -press.ma - -// mc : http://www.nic.mc/ -mc -tm.mc -asso.mc - -// md : http://en.wikipedia.org/wiki/.md -md - -// me : http://en.wikipedia.org/wiki/.me -me -co.me -net.me -org.me -edu.me -ac.me -gov.me -its.me -priv.me - -// mg : http://www.nic.mg/tarif.htm -mg -org.mg -nom.mg -gov.mg -prd.mg -tm.mg -edu.mg -mil.mg -com.mg - -// mh : http://en.wikipedia.org/wiki/.mh -mh - -// mil : http://en.wikipedia.org/wiki/.mil -mil - -// mk : http://en.wikipedia.org/wiki/.mk -// see also: http://dns.marnet.net.mk/postapka.php -mk -com.mk -org.mk -net.mk -edu.mk -gov.mk -inf.mk -name.mk - -// ml : http://www.gobin.info/domainname/ml-template.doc -// see also: http://en.wikipedia.org/wiki/.ml -ml -com.ml -edu.ml -gouv.ml -gov.ml -net.ml -org.ml -presse.ml - -// mm : http://en.wikipedia.org/wiki/.mm -*.mm - -// mn : http://en.wikipedia.org/wiki/.mn -mn -gov.mn -edu.mn -org.mn - -// mo : http://www.monic.net.mo/ -mo -com.mo -net.mo -org.mo -edu.mo -gov.mo - -// mobi : http://en.wikipedia.org/wiki/.mobi -mobi - -// mp : http://www.dot.mp/ -// Confirmed by registry <dcamacho@saipan.com> 2008-06-17 -mp - -// mq : http://en.wikipedia.org/wiki/.mq -mq - -// mr : http://en.wikipedia.org/wiki/.mr -mr -gov.mr - -// ms : http://en.wikipedia.org/wiki/.ms -ms - -// mt : https://www.nic.org.mt/dotmt/ -*.mt - -// mu : http://en.wikipedia.org/wiki/.mu -mu -com.mu -net.mu -org.mu -gov.mu -ac.mu -co.mu -or.mu - -// museum : http://about.museum/naming/ -// http://index.museum/ -museum -academy.museum -agriculture.museum -air.museum -airguard.museum -alabama.museum -alaska.museum -amber.museum -ambulance.museum -american.museum -americana.museum -americanantiques.museum -americanart.museum -amsterdam.museum -and.museum -annefrank.museum -anthro.museum -anthropology.museum -antiques.museum -aquarium.museum -arboretum.museum -archaeological.museum -archaeology.museum -architecture.museum -art.museum -artanddesign.museum -artcenter.museum -artdeco.museum -arteducation.museum -artgallery.museum -arts.museum -artsandcrafts.museum -asmatart.museum -assassination.museum -assisi.museum -association.museum -astronomy.museum -atlanta.museum -austin.museum -australia.museum -automotive.museum -aviation.museum -axis.museum -badajoz.museum -baghdad.museum -bahn.museum -bale.museum -baltimore.museum -barcelona.museum -baseball.museum -basel.museum -baths.museum -bauern.museum -beauxarts.museum -beeldengeluid.museum -bellevue.museum -bergbau.museum -berkeley.museum -berlin.museum -bern.museum -bible.museum -bilbao.museum -bill.museum -birdart.museum -birthplace.museum -bonn.museum -boston.museum -botanical.museum -botanicalgarden.museum -botanicgarden.museum -botany.museum -brandywinevalley.museum -brasil.museum -bristol.museum -british.museum -britishcolumbia.museum -broadcast.museum -brunel.museum -brussel.museum -brussels.museum -bruxelles.museum -building.museum -burghof.museum -bus.museum -bushey.museum -cadaques.museum -california.museum -cambridge.museum -can.museum -canada.museum -capebreton.museum -carrier.museum -cartoonart.museum -casadelamoneda.museum -castle.museum -castres.museum -celtic.museum -center.museum -chattanooga.museum -cheltenham.museum -chesapeakebay.museum -chicago.museum -children.museum -childrens.museum -childrensgarden.museum -chiropractic.museum -chocolate.museum -christiansburg.museum -cincinnati.museum -cinema.museum -circus.museum -civilisation.museum -civilization.museum -civilwar.museum -clinton.museum -clock.museum -coal.museum -coastaldefence.museum -cody.museum -coldwar.museum -collection.museum -colonialwilliamsburg.museum -coloradoplateau.museum -columbia.museum -columbus.museum -communication.museum -communications.museum -community.museum -computer.museum -computerhistory.museum -comunicações.museum -contemporary.museum -contemporaryart.museum -convent.museum -copenhagen.museum -corporation.museum -correios-e-telecomunicações.museum -corvette.museum -costume.museum -countryestate.museum -county.museum -crafts.museum -cranbrook.museum -creation.museum -cultural.museum -culturalcenter.museum -culture.museum -cyber.museum -cymru.museum -dali.museum -dallas.museum -database.museum -ddr.museum -decorativearts.museum -delaware.museum -delmenhorst.museum -denmark.museum -depot.museum -design.museum -detroit.museum -dinosaur.museum -discovery.museum -dolls.museum -donostia.museum -durham.museum -eastafrica.museum -eastcoast.museum -education.museum -educational.museum -egyptian.museum -eisenbahn.museum -elburg.museum -elvendrell.museum -embroidery.museum -encyclopedic.museum -england.museum -entomology.museum -environment.museum -environmentalconservation.museum -epilepsy.museum -essex.museum -estate.museum -ethnology.museum -exeter.museum -exhibition.museum -family.museum -farm.museum -farmequipment.museum -farmers.museum -farmstead.museum -field.museum -figueres.museum -filatelia.museum -film.museum -fineart.museum -finearts.museum -finland.museum -flanders.museum -florida.museum -force.museum -fortmissoula.museum -fortworth.museum -foundation.museum -francaise.museum -frankfurt.museum -franziskaner.museum -freemasonry.museum -freiburg.museum -fribourg.museum -frog.museum -fundacio.museum -furniture.museum -gallery.museum -garden.museum -gateway.museum -geelvinck.museum -gemological.museum -geology.museum -georgia.museum -giessen.museum -glas.museum -glass.museum -gorge.museum -grandrapids.museum -graz.museum -guernsey.museum -halloffame.museum -hamburg.museum -handson.museum -harvestcelebration.museum -hawaii.museum -health.museum -heimatunduhren.museum -hellas.museum -helsinki.museum -hembygdsforbund.museum -heritage.museum -histoire.museum -historical.museum -historicalsociety.museum -historichouses.museum -historisch.museum -historisches.museum -history.museum -historyofscience.museum -horology.museum -house.museum -humanities.museum -illustration.museum -imageandsound.museum -indian.museum -indiana.museum -indianapolis.museum -indianmarket.museum -intelligence.museum -interactive.museum -iraq.museum -iron.museum -isleofman.museum -jamison.museum -jefferson.museum -jerusalem.museum -jewelry.museum -jewish.museum -jewishart.museum -jfk.museum -journalism.museum -judaica.museum -judygarland.museum -juedisches.museum -juif.museum -karate.museum -karikatur.museum -kids.museum -koebenhavn.museum -koeln.museum -kunst.museum -kunstsammlung.museum -kunstunddesign.museum -labor.museum -labour.museum -lajolla.museum -lancashire.museum -landes.museum -lans.museum -läns.museum -larsson.museum -lewismiller.museum -lincoln.museum -linz.museum -living.museum -livinghistory.museum -localhistory.museum -london.museum -losangeles.museum -louvre.museum -loyalist.museum -lucerne.museum -luxembourg.museum -luzern.museum -mad.museum -madrid.museum -mallorca.museum -manchester.museum -mansion.museum -mansions.museum -manx.museum -marburg.museum -maritime.museum -maritimo.museum -maryland.museum -marylhurst.museum -media.museum -medical.museum -medizinhistorisches.museum -meeres.museum -memorial.museum -mesaverde.museum -michigan.museum -midatlantic.museum -military.museum -mill.museum -miners.museum -mining.museum -minnesota.museum -missile.museum -missoula.museum -modern.museum -moma.museum -money.museum -monmouth.museum -monticello.museum -montreal.museum -moscow.museum -motorcycle.museum -muenchen.museum -muenster.museum -mulhouse.museum -muncie.museum -museet.museum -museumcenter.museum -museumvereniging.museum -music.museum -national.museum -nationalfirearms.museum -nationalheritage.museum -nativeamerican.museum -naturalhistory.museum -naturalhistorymuseum.museum -naturalsciences.museum -nature.museum -naturhistorisches.museum -natuurwetenschappen.museum -naumburg.museum -naval.museum -nebraska.museum -neues.museum -newhampshire.museum -newjersey.museum -newmexico.museum -newport.museum -newspaper.museum -newyork.museum -niepce.museum -norfolk.museum -north.museum -nrw.museum -nuernberg.museum -nuremberg.museum -nyc.museum -nyny.museum -oceanographic.museum -oceanographique.museum -omaha.museum -online.museum -ontario.museum -openair.museum -oregon.museum -oregontrail.museum -otago.museum -oxford.museum -pacific.museum -paderborn.museum -palace.museum -paleo.museum -palmsprings.museum -panama.museum -paris.museum -pasadena.museum -pharmacy.museum -philadelphia.museum -philadelphiaarea.museum -philately.museum -phoenix.museum -photography.museum -pilots.museum -pittsburgh.museum -planetarium.museum -plantation.museum -plants.museum -plaza.museum -portal.museum -portland.museum -portlligat.museum -posts-and-telecommunications.museum -preservation.museum -presidio.museum -press.museum -project.museum -public.museum -pubol.museum -quebec.museum -railroad.museum -railway.museum -research.museum -resistance.museum -riodejaneiro.museum -rochester.museum -rockart.museum -roma.museum -russia.museum -saintlouis.museum -salem.museum -salvadordali.museum -salzburg.museum -sandiego.museum -sanfrancisco.museum -santabarbara.museum -santacruz.museum -santafe.museum -saskatchewan.museum -satx.museum -savannahga.museum -schlesisches.museum -schoenbrunn.museum -schokoladen.museum -school.museum -schweiz.museum -science.museum -scienceandhistory.museum -scienceandindustry.museum -sciencecenter.museum -sciencecenters.museum -science-fiction.museum -sciencehistory.museum -sciences.museum -sciencesnaturelles.museum -scotland.museum -seaport.museum -settlement.museum -settlers.museum -shell.museum -sherbrooke.museum -sibenik.museum -silk.museum -ski.museum -skole.museum -society.museum -sologne.museum -soundandvision.museum -southcarolina.museum -southwest.museum -space.museum -spy.museum -square.museum -stadt.museum -stalbans.museum -starnberg.museum -state.museum -stateofdelaware.museum -station.museum -steam.museum -steiermark.museum -stjohn.museum -stockholm.museum -stpetersburg.museum -stuttgart.museum -suisse.museum -surgeonshall.museum -surrey.museum -svizzera.museum -sweden.museum -sydney.museum -tank.museum -tcm.museum -technology.museum -telekommunikation.museum -television.museum -texas.museum -textile.museum -theater.museum -time.museum -timekeeping.museum -topology.museum -torino.museum -touch.museum -town.museum -transport.museum -tree.museum -trolley.museum -trust.museum -trustee.museum -uhren.museum -ulm.museum -undersea.museum -university.museum -usa.museum -usantiques.museum -usarts.museum -uscountryestate.museum -usculture.museum -usdecorativearts.museum -usgarden.museum -ushistory.museum -ushuaia.museum -uslivinghistory.museum -utah.museum -uvic.museum -valley.museum -vantaa.museum -versailles.museum -viking.museum -village.museum -virginia.museum -virtual.museum -virtuel.museum -vlaanderen.museum -volkenkunde.museum -wales.museum -wallonie.museum -war.museum -washingtondc.museum -watchandclock.museum -watch-and-clock.museum -western.museum -westfalen.museum -whaling.museum -wildlife.museum -williamsburg.museum -windmill.museum -workshop.museum -york.museum -yorkshire.museum -yosemite.museum -youth.museum -zoological.museum -zoology.museum -ירושלי×.museum -иком.museum - -// mv : http://en.wikipedia.org/wiki/.mv -// "mv" included because, contra Wikipedia, google.mv exists. -mv -aero.mv -biz.mv -com.mv -coop.mv -edu.mv -gov.mv -info.mv -int.mv -mil.mv -museum.mv -name.mv -net.mv -org.mv -pro.mv - -// mw : http://www.registrar.mw/ -mw -ac.mw -biz.mw -co.mw -com.mw -coop.mw -edu.mw -gov.mw -int.mw -museum.mw -net.mw -org.mw - -// mx : http://www.nic.mx/ -// Submitted by registry <farias@nic.mx> 2008-06-19 -mx -com.mx -org.mx -gob.mx -edu.mx -net.mx - -// my : http://www.mynic.net.my/ -my -com.my -net.my -org.my -gov.my -edu.my -mil.my -name.my - -// mz : http://www.gobin.info/domainname/mz-template.doc -*.mz - -// na : http://www.na-nic.com.na/ -// http://www.info.na/domain/ -na -info.na -pro.na -name.na -school.na -or.na -dr.na -us.na -mx.na -ca.na -in.na -cc.na -tv.na -ws.na -mobi.na -co.na -com.na -org.na - -// name : has 2nd-level tlds, but there's no list of them -name - -// nc : http://www.cctld.nc/ -nc -asso.nc - -// ne : http://en.wikipedia.org/wiki/.ne -ne - -// net : http://en.wikipedia.org/wiki/.net -net - -// nf : http://en.wikipedia.org/wiki/.nf -nf -com.nf -net.nf -per.nf -rec.nf -web.nf -arts.nf -firm.nf -info.nf -other.nf -store.nf - -// ng : http://psg.com/dns/ng/ -// Submitted by registry <randy@psg.com> 2008-06-17 -ac.ng -com.ng -edu.ng -gov.ng -net.ng -org.ng - -// ni : http://www.nic.ni/dominios.htm -*.ni - -// nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html -// Confirmed by registry <Antoin.Verschuren@sidn.nl> (with technical -// reservations) 2008-06-08 -nl - -// BV.nl will be a registry for dutch BV's (besloten vennootschap) -bv.nl - -// no : http://www.norid.no/regelverk/index.en.html -// The Norwegian registry has declined to notify us of updates. The web pages -// referenced below are the official source of the data. There is also an -// announce mailing list: -// https://postlister.uninett.no/sympa/info/norid-diskusjon -no -// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html -fhs.no -vgs.no -fylkesbibl.no -folkebibl.no -museum.no -idrett.no -priv.no -// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html -mil.no -stat.no -dep.no -kommune.no -herad.no -// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html -// counties -aa.no -ah.no -bu.no -fm.no -hl.no -hm.no -jan-mayen.no -mr.no -nl.no -nt.no -of.no -ol.no -oslo.no -rl.no -sf.no -st.no -svalbard.no -tm.no -tr.no -va.no -vf.no -// primary and lower secondary schools per county -gs.aa.no -gs.ah.no -gs.bu.no -gs.fm.no -gs.hl.no -gs.hm.no -gs.jan-mayen.no -gs.mr.no -gs.nl.no -gs.nt.no -gs.of.no -gs.ol.no -gs.oslo.no -gs.rl.no -gs.sf.no -gs.st.no -gs.svalbard.no -gs.tm.no -gs.tr.no -gs.va.no -gs.vf.no -// cities -akrehamn.no -Ã¥krehamn.no -algard.no -Ã¥lgÃ¥rd.no -arna.no -brumunddal.no -bryne.no -bronnoysund.no -brønnøysund.no -drobak.no -drøbak.no -egersund.no -fetsund.no -floro.no -florø.no -fredrikstad.no -hokksund.no -honefoss.no -hønefoss.no -jessheim.no -jorpeland.no -jørpeland.no -kirkenes.no -kopervik.no -krokstadelva.no -langevag.no -langevÃ¥g.no -leirvik.no -mjondalen.no -mjøndalen.no -mo-i-rana.no -mosjoen.no -mosjøen.no -nesoddtangen.no -orkanger.no -osoyro.no -osøyro.no -raholt.no -rÃ¥holt.no -sandnessjoen.no -sandnessjøen.no -skedsmokorset.no -slattum.no -spjelkavik.no -stathelle.no -stavern.no -stjordalshalsen.no -stjørdalshalsen.no -tananger.no -tranby.no -vossevangen.no -// communities -afjord.no -Ã¥fjord.no -agdenes.no -al.no -Ã¥l.no -alesund.no -Ã¥lesund.no -alstahaug.no -alta.no -áltá.no -alaheadju.no -álaheadju.no -alvdal.no -amli.no -Ã¥mli.no -amot.no -Ã¥mot.no -andebu.no -andoy.no -andøy.no -andasuolo.no -ardal.no -Ã¥rdal.no -aremark.no -arendal.no -Ã¥s.no -aseral.no -Ã¥seral.no -asker.no -askim.no -askvoll.no -askoy.no -askøy.no -asnes.no -Ã¥snes.no -audnedaln.no -aukra.no -aure.no -aurland.no -aurskog-holand.no -aurskog-høland.no -austevoll.no -austrheim.no -averoy.no -averøy.no -balestrand.no -ballangen.no -balat.no -bálát.no -balsfjord.no -bahccavuotna.no -báhccavuotna.no -bamble.no -bardu.no -beardu.no -beiarn.no -bajddar.no -bájddar.no -baidar.no -báidár.no -berg.no -bergen.no -berlevag.no -berlevÃ¥g.no -bearalvahki.no -bearalváhki.no -bindal.no -birkenes.no -bjarkoy.no -bjarkøy.no -bjerkreim.no -bjugn.no -bodo.no -bodø.no -badaddja.no -bÃ¥dÃ¥ddjÃ¥.no -budejju.no -bokn.no -bremanger.no -bronnoy.no -brønnøy.no -bygland.no -bykle.no -barum.no -bærum.no -bo.telemark.no -bø.telemark.no -bo.nordland.no -bø.nordland.no -bievat.no -bievát.no -bomlo.no -bømlo.no -batsfjord.no -bÃ¥tsfjord.no -bahcavuotna.no -báhcavuotna.no -dovre.no -drammen.no -drangedal.no -dyroy.no -dyrøy.no -donna.no -dønna.no -eid.no -eidfjord.no -eidsberg.no -eidskog.no -eidsvoll.no -eigersund.no -elverum.no -enebakk.no -engerdal.no -etne.no -etnedal.no -evenes.no -evenassi.no -evenášši.no -evje-og-hornnes.no -farsund.no -fauske.no -fuossko.no -fuoisku.no -fedje.no -fet.no -finnoy.no -finnøy.no -fitjar.no -fjaler.no -fjell.no -flakstad.no -flatanger.no -flekkefjord.no -flesberg.no -flora.no -fla.no -flÃ¥.no -folldal.no -forsand.no -fosnes.no -frei.no -frogn.no -froland.no -frosta.no -frana.no -fræna.no -froya.no -frøya.no -fusa.no -fyresdal.no -forde.no -førde.no -gamvik.no -gangaviika.no -gáŋgaviika.no -gaular.no -gausdal.no -gildeskal.no -gildeskÃ¥l.no -giske.no -gjemnes.no -gjerdrum.no -gjerstad.no -gjesdal.no -gjovik.no -gjøvik.no -gloppen.no -gol.no -gran.no -grane.no -granvin.no -gratangen.no -grimstad.no -grong.no -kraanghke.no -krÃ¥anghke.no -grue.no -gulen.no -hadsel.no -halden.no -halsa.no -hamar.no -hamaroy.no -habmer.no -hábmer.no -hapmir.no -hápmir.no -hammerfest.no -hammarfeasta.no -hámmárfeasta.no -haram.no -hareid.no -harstad.no -hasvik.no -aknoluokta.no -ákÅ‹oluokta.no -hattfjelldal.no -aarborte.no -haugesund.no -hemne.no -hemnes.no -hemsedal.no -heroy.more-og-romsdal.no -herøy.møre-og-romsdal.no -heroy.nordland.no -herøy.nordland.no -hitra.no -hjartdal.no -hjelmeland.no -hobol.no -hobøl.no -hof.no -hol.no -hole.no -holmestrand.no -holtalen.no -holtÃ¥len.no -hornindal.no -horten.no -hurdal.no -hurum.no -hvaler.no -hyllestad.no -hagebostad.no -hægebostad.no -hoyanger.no -høyanger.no -hoylandet.no -høylandet.no -ha.no -hÃ¥.no -ibestad.no -inderoy.no -inderøy.no -iveland.no -jevnaker.no -jondal.no -jolster.no -jølster.no -karasjok.no -karasjohka.no -kárášjohka.no -karlsoy.no -galsa.no -gálsá.no -karmoy.no -karmøy.no -kautokeino.no -guovdageaidnu.no -klepp.no -klabu.no -klæbu.no -kongsberg.no -kongsvinger.no -kragero.no -kragerø.no -kristiansand.no -kristiansund.no -krodsherad.no -krødsherad.no -kvalsund.no -rahkkeravju.no -ráhkkerávju.no -kvam.no -kvinesdal.no -kvinnherad.no -kviteseid.no -kvitsoy.no -kvitsøy.no -kvafjord.no -kvæfjord.no -giehtavuoatna.no -kvanangen.no -kvænangen.no -navuotna.no -návuotna.no -kafjord.no -kÃ¥fjord.no -gaivuotna.no -gáivuotna.no -larvik.no -lavangen.no -lavagis.no -loabat.no -loabát.no -lebesby.no -davvesiida.no -leikanger.no -leirfjord.no -leka.no -leksvik.no -lenvik.no -leangaviika.no -leaÅ‹gaviika.no -lesja.no -levanger.no -lier.no -lierne.no -lillehammer.no -lillesand.no -lindesnes.no -lindas.no -lindÃ¥s.no -lom.no -loppa.no -lahppi.no -láhppi.no -lund.no -lunner.no -luroy.no -lurøy.no -luster.no -lyngdal.no -lyngen.no -ivgu.no -lardal.no -lerdal.no -lærdal.no -lodingen.no -lødingen.no -lorenskog.no -lørenskog.no -loten.no -løten.no -malvik.no -masoy.no -mÃ¥søy.no -muosat.no -muosát.no -mandal.no -marker.no -marnardal.no -masfjorden.no -meland.no -meldal.no -melhus.no -meloy.no -meløy.no -meraker.no -merÃ¥ker.no -moareke.no -moÃ¥reke.no -midsund.no -midtre-gauldal.no -modalen.no -modum.no -molde.no -moskenes.no -moss.no -mosvik.no -malselv.no -mÃ¥lselv.no -malatvuopmi.no -málatvuopmi.no -namdalseid.no -aejrie.no -namsos.no -namsskogan.no -naamesjevuemie.no -nååmesjevuemie.no -laakesvuemie.no -nannestad.no -narvik.no -narviika.no -naustdal.no -nedre-eiker.no -nes.akershus.no -nes.buskerud.no -nesna.no -nesodden.no -nesseby.no -unjarga.no -unjárga.no -nesset.no -nissedal.no -nittedal.no -nord-aurdal.no -nord-fron.no -nord-odal.no -norddal.no -nordkapp.no -davvenjarga.no -davvenjárga.no -nordre-land.no -nordreisa.no -raisa.no -ráisa.no -nore-og-uvdal.no -notodden.no -naroy.no -nærøy.no -notteroy.no -nøtterøy.no -odda.no -oksnes.no -øksnes.no -oppdal.no -oppegard.no -oppegÃ¥rd.no -orkdal.no -orland.no -ørland.no -orskog.no -ørskog.no -orsta.no -ørsta.no -os.hedmark.no -os.hordaland.no -osen.no -osteroy.no -osterøy.no -ostre-toten.no -østre-toten.no -overhalla.no -ovre-eiker.no -øvre-eiker.no -oyer.no -øyer.no -oygarden.no -øygarden.no -oystre-slidre.no -øystre-slidre.no -porsanger.no -porsangu.no -porsáŋgu.no -porsgrunn.no -radoy.no -radøy.no -rakkestad.no -rana.no -ruovat.no -randaberg.no -rauma.no -rendalen.no -rennebu.no -rennesoy.no -rennesøy.no -rindal.no -ringebu.no -ringerike.no -ringsaker.no -rissa.no -risor.no -risør.no -roan.no -rollag.no -rygge.no -ralingen.no -rælingen.no -rodoy.no -rødøy.no -romskog.no -rømskog.no -roros.no -røros.no -rost.no -røst.no -royken.no -røyken.no -royrvik.no -røyrvik.no -rade.no -rÃ¥de.no -salangen.no -siellak.no -saltdal.no -salat.no -sálát.no -sálat.no -samnanger.no -sande.more-og-romsdal.no -sande.møre-og-romsdal.no -sande.vestfold.no -sandefjord.no -sandnes.no -sandoy.no -sandøy.no -sarpsborg.no -sauda.no -sauherad.no -sel.no -selbu.no -selje.no -seljord.no -sigdal.no -siljan.no -sirdal.no -skaun.no -skedsmo.no -ski.no -skien.no -skiptvet.no -skjervoy.no -skjervøy.no -skierva.no -skiervá.no -skjak.no -skjÃ¥k.no -skodje.no -skanland.no -skÃ¥nland.no -skanit.no -skánit.no -smola.no -smøla.no -snillfjord.no -snasa.no -snÃ¥sa.no -snoasa.no -snaase.no -snÃ¥ase.no -sogndal.no -sokndal.no -sola.no -solund.no -songdalen.no -sortland.no -spydeberg.no -stange.no -stavanger.no -steigen.no -steinkjer.no -stjordal.no -stjørdal.no -stokke.no -stor-elvdal.no -stord.no -stordal.no -storfjord.no -omasvuotna.no -strand.no -stranda.no -stryn.no -sula.no -suldal.no -sund.no -sunndal.no -surnadal.no -sveio.no -svelvik.no -sykkylven.no -sogne.no -søgne.no -somna.no -sømna.no -sondre-land.no -søndre-land.no -sor-aurdal.no -sør-aurdal.no -sor-fron.no -sør-fron.no -sor-odal.no -sør-odal.no -sor-varanger.no -sør-varanger.no -matta-varjjat.no -mátta-várjjat.no -sorfold.no -sørfold.no -sorreisa.no -sørreisa.no -sorum.no -sørum.no -tana.no -deatnu.no -time.no -tingvoll.no -tinn.no -tjeldsund.no -dielddanuorri.no -tjome.no -tjøme.no -tokke.no -tolga.no -torsken.no -tranoy.no -tranøy.no -tromso.no -tromsø.no -tromsa.no -romsa.no -trondheim.no -troandin.no -trysil.no -trana.no -træna.no -trogstad.no -trøgstad.no -tvedestrand.no -tydal.no -tynset.no -tysfjord.no -divtasvuodna.no -divttasvuotna.no -tysnes.no -tysvar.no -tysvær.no -tonsberg.no -tønsberg.no -ullensaker.no -ullensvang.no -ulvik.no -utsira.no -vadso.no -vadsø.no -cahcesuolo.no -Äáhcesuolo.no -vaksdal.no -valle.no -vang.no -vanylven.no -vardo.no -vardø.no -varggat.no -várggát.no -vefsn.no -vaapste.no -vega.no -vegarshei.no -vegÃ¥rshei.no -vennesla.no -verdal.no -verran.no -vestby.no -vestnes.no -vestre-slidre.no -vestre-toten.no -vestvagoy.no -vestvÃ¥gøy.no -vevelstad.no -vik.no -vikna.no -vindafjord.no -volda.no -voss.no -varoy.no -værøy.no -vagan.no -vÃ¥gan.no -voagat.no -vagsoy.no -vÃ¥gsøy.no -vaga.no -vÃ¥gÃ¥.no -valer.ostfold.no -vÃ¥ler.østfold.no -valer.hedmark.no -vÃ¥ler.hedmark.no - -// np : http://www.mos.com.np/register.html -*.np - -// nr : http://cenpac.net.nr/dns/index.html -// Confirmed by registry <technician@cenpac.net.nr> 2008-06-17 -nr -biz.nr -info.nr -gov.nr -edu.nr -org.nr -net.nr -com.nr - -// nu : http://en.wikipedia.org/wiki/.nu -nu - -// nz : http://en.wikipedia.org/wiki/.nz -*.nz - -// om : http://en.wikipedia.org/wiki/.om -*.om -!mediaphone.om -!nawrastelecom.om -!nawras.om -!omanmobile.om -!omanpost.om -!omantel.om -!rakpetroleum.om -!siemens.om -!songfest.om -!statecouncil.om - -// org : http://en.wikipedia.org/wiki/.org -org - -// pa : http://www.nic.pa/ -// Some additional second level "domains" resolve directly as hostnames, such as -// pannet.pa, so we add a rule for "pa". -pa -ac.pa -gob.pa -com.pa -org.pa -sld.pa -edu.pa -net.pa -ing.pa -abo.pa -med.pa -nom.pa - -// pe : https://www.nic.pe/InformeFinalComision.pdf -pe -edu.pe -gob.pe -nom.pe -mil.pe -org.pe -com.pe -net.pe - -// pf : http://www.gobin.info/domainname/formulaire-pf.pdf -pf -com.pf -org.pf -edu.pf - -// pg : http://en.wikipedia.org/wiki/.pg -*.pg - -// ph : http://www.domains.ph/FAQ2.asp -// Submitted by registry <jed@email.com.ph> 2008-06-13 -ph -com.ph -net.ph -org.ph -gov.ph -edu.ph -ngo.ph -mil.ph -i.ph - -// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK -pk -com.pk -net.pk -edu.pk -org.pk -fam.pk -biz.pk -web.pk -gov.pk -gob.pk -gok.pk -gon.pk -gop.pk -gos.pk -info.pk - -// pl : http://www.dns.pl/english/ -pl -// NASK functional domains (nask.pl / dns.pl) : http://www.dns.pl/english/dns-funk.html -aid.pl -agro.pl -atm.pl -auto.pl -biz.pl -com.pl -edu.pl -gmina.pl -gsm.pl -info.pl -mail.pl -miasta.pl -media.pl -mil.pl -net.pl -nieruchomosci.pl -nom.pl -org.pl -pc.pl -powiat.pl -priv.pl -realestate.pl -rel.pl -sex.pl -shop.pl -sklep.pl -sos.pl -szkola.pl -targi.pl -tm.pl -tourism.pl -travel.pl -turystyka.pl -// ICM functional domains (icm.edu.pl) -6bone.pl -art.pl -mbone.pl -// Government domains (administred by ippt.gov.pl) -gov.pl -uw.gov.pl -um.gov.pl -ug.gov.pl -upow.gov.pl -starostwo.gov.pl -so.gov.pl -sr.gov.pl -po.gov.pl -pa.gov.pl -// other functional domains -ngo.pl -irc.pl -usenet.pl -// NASK geographical domains : http://www.dns.pl/english/dns-regiony.html -augustow.pl -babia-gora.pl -bedzin.pl -beskidy.pl -bialowieza.pl -bialystok.pl -bielawa.pl -bieszczady.pl -boleslawiec.pl -bydgoszcz.pl -bytom.pl -cieszyn.pl -czeladz.pl -czest.pl -dlugoleka.pl -elblag.pl -elk.pl -glogow.pl -gniezno.pl -gorlice.pl -grajewo.pl -ilawa.pl -jaworzno.pl -jelenia-gora.pl -jgora.pl -kalisz.pl -kazimierz-dolny.pl -karpacz.pl -kartuzy.pl -kaszuby.pl -katowice.pl -kepno.pl -ketrzyn.pl -klodzko.pl -kobierzyce.pl -kolobrzeg.pl -konin.pl -konskowola.pl -kutno.pl -lapy.pl -lebork.pl -legnica.pl -lezajsk.pl -limanowa.pl -lomza.pl -lowicz.pl -lubin.pl -lukow.pl -malbork.pl -malopolska.pl -mazowsze.pl -mazury.pl -mielec.pl -mielno.pl -mragowo.pl -naklo.pl -nowaruda.pl -nysa.pl -olawa.pl -olecko.pl -olkusz.pl -olsztyn.pl -opoczno.pl -opole.pl -ostroda.pl -ostroleka.pl -ostrowiec.pl -ostrowwlkp.pl -pila.pl -pisz.pl -podhale.pl -podlasie.pl -polkowice.pl -pomorze.pl -pomorskie.pl -prochowice.pl -pruszkow.pl -przeworsk.pl -pulawy.pl -radom.pl -rawa-maz.pl -rybnik.pl -rzeszow.pl -sanok.pl -sejny.pl -siedlce.pl -slask.pl -slupsk.pl -sosnowiec.pl -stalowa-wola.pl -skoczow.pl -starachowice.pl -stargard.pl -suwalki.pl -swidnica.pl -swiebodzin.pl -swinoujscie.pl -szczecin.pl -szczytno.pl -tarnobrzeg.pl -tgory.pl -turek.pl -tychy.pl -ustka.pl -walbrzych.pl -warmia.pl -warszawa.pl -waw.pl -wegrow.pl -wielun.pl -wlocl.pl -wloclawek.pl -wodzislaw.pl -wolomin.pl -wroclaw.pl -zachpomor.pl -zagan.pl -zarow.pl -zgora.pl -zgorzelec.pl -// TASK geographical domains (www.task.gda.pl/uslugi/dns) -gda.pl -gdansk.pl -gdynia.pl -med.pl -sopot.pl -// other geographical domains -gliwice.pl -krakow.pl -poznan.pl -wroc.pl -zakopane.pl - -// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -pm - -// pn : http://www.government.pn/PnRegistry/policies.htm -pn -gov.pn -co.pn -org.pn -edu.pn -net.pn - -// pr : http://www.nic.pr/index.asp?f=1 -pr -com.pr -net.pr -org.pr -gov.pr -edu.pr -isla.pr -pro.pr -biz.pr -info.pr -name.pr -// these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr -est.pr -prof.pr -ac.pr - -// pro : http://www.nic.pro/support_faq.htm -pro -aca.pro -bar.pro -cpa.pro -jur.pro -law.pro -med.pro -eng.pro - -// ps : http://en.wikipedia.org/wiki/.ps -// http://www.nic.ps/registration/policy.html#reg -ps -edu.ps -gov.ps -sec.ps -plo.ps -com.ps -org.ps -net.ps - -// pt : http://online.dns.pt/dns/start_dns -pt -net.pt -gov.pt -org.pt -edu.pt -int.pt -publ.pt -com.pt -nome.pt - -// pw : http://en.wikipedia.org/wiki/.pw -pw -co.pw -ne.pw -or.pw -ed.pw -go.pw -belau.pw - -// py : http://www.nic.py/faq_a.html#faq_b -*.py - -// qa : http://domains.qa/en/ -qa -com.qa -edu.qa -gov.qa -mil.qa -name.qa -net.qa -org.qa -sch.qa - -// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs -re -com.re -asso.re -nom.re - -// ro : http://www.rotld.ro/ -ro -com.ro -org.ro -tm.ro -nt.ro -nom.ro -info.ro -rec.ro -arts.ro -firm.ro -store.ro -www.ro - -// rs : http://en.wikipedia.org/wiki/.rs -rs -co.rs -org.rs -edu.rs -ac.rs -gov.rs -in.rs - -// ru : http://www.cctld.ru/ru/docs/aktiv_8.php -// Industry domains -ru -ac.ru -com.ru -edu.ru -int.ru -net.ru -org.ru -pp.ru -// Geographical domains -adygeya.ru -altai.ru -amur.ru -arkhangelsk.ru -astrakhan.ru -bashkiria.ru -belgorod.ru -bir.ru -bryansk.ru -buryatia.ru -cbg.ru -chel.ru -chelyabinsk.ru -chita.ru -chukotka.ru -chuvashia.ru -dagestan.ru -dudinka.ru -e-burg.ru -grozny.ru -irkutsk.ru -ivanovo.ru -izhevsk.ru -jar.ru -joshkar-ola.ru -kalmykia.ru -kaluga.ru -kamchatka.ru -karelia.ru -kazan.ru -kchr.ru -kemerovo.ru -khabarovsk.ru -khakassia.ru -khv.ru -kirov.ru -koenig.ru -komi.ru -kostroma.ru -krasnoyarsk.ru -kuban.ru -kurgan.ru -kursk.ru -lipetsk.ru -magadan.ru -mari.ru -mari-el.ru -marine.ru -mordovia.ru -mosreg.ru -msk.ru -murmansk.ru -nalchik.ru -nnov.ru -nov.ru -novosibirsk.ru -nsk.ru -omsk.ru -orenburg.ru -oryol.ru -palana.ru -penza.ru -perm.ru -pskov.ru -ptz.ru -rnd.ru -ryazan.ru -sakhalin.ru -samara.ru -saratov.ru -simbirsk.ru -smolensk.ru -spb.ru -stavropol.ru -stv.ru -surgut.ru -tambov.ru -tatarstan.ru -tom.ru -tomsk.ru -tsaritsyn.ru -tsk.ru -tula.ru -tuva.ru -tver.ru -tyumen.ru -udm.ru -udmurtia.ru -ulan-ude.ru -vladikavkaz.ru -vladimir.ru -vladivostok.ru -volgograd.ru -vologda.ru -voronezh.ru -vrn.ru -vyatka.ru -yakutia.ru -yamal.ru -yaroslavl.ru -yekaterinburg.ru -yuzhno-sakhalinsk.ru -// More geographical domains -amursk.ru -baikal.ru -cmw.ru -fareast.ru -jamal.ru -kms.ru -k-uralsk.ru -kustanai.ru -kuzbass.ru -magnitka.ru -mytis.ru -nakhodka.ru -nkz.ru -norilsk.ru -oskol.ru -pyatigorsk.ru -rubtsovsk.ru -snz.ru -syzran.ru -vdonsk.ru -zgrad.ru -// State domains -gov.ru -mil.ru -// Technical domains -test.ru - -// rw : http://www.nic.rw/cgi-bin/policy.pl -rw -gov.rw -net.rw -edu.rw -ac.rw -com.rw -co.rw -int.rw -mil.rw -gouv.rw - -// sa : http://www.nic.net.sa/ -sa -com.sa -net.sa -org.sa -gov.sa -med.sa -pub.sa -edu.sa -sch.sa - -// sb : http://www.sbnic.net.sb/ -// Submitted by registry <lee.humphries@telekom.com.sb> 2008-06-08 -sb -com.sb -edu.sb -gov.sb -net.sb -org.sb - -// sc : http://www.nic.sc/ -sc -com.sc -gov.sc -net.sc -org.sc -edu.sc - -// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm -// Submitted by registry <admin@isoc.sd> 2008-06-17 -sd -com.sd -net.sd -org.sd -edu.sd -med.sd -gov.sd -info.sd - -// se : http://en.wikipedia.org/wiki/.se -// Submitted by registry <Patrik.Wallstrom@iis.se> 2008-06-24 -se -a.se -ac.se -b.se -bd.se -brand.se -c.se -d.se -e.se -f.se -fh.se -fhsk.se -fhv.se -g.se -h.se -i.se -k.se -komforb.se -kommunalforbund.se -komvux.se -l.se -lanbib.se -m.se -n.se -naturbruksgymn.se -o.se -org.se -p.se -parti.se -pp.se -press.se -r.se -s.se -sshn.se -t.se -tm.se -u.se -w.se -x.se -y.se -z.se - -// sg : http://www.nic.net.sg/sub_policies_agreement/2ld.html -sg -com.sg -net.sg -org.sg -gov.sg -edu.sg -per.sg - -// sh : http://www.nic.sh/rules.html -// list of 2nd level domains ? -sh - -// si : http://en.wikipedia.org/wiki/.si -si - -// sj : No registrations at this time. -// Submitted by registry <jarle@uninett.no> 2008-06-16 - -// sk : http://en.wikipedia.org/wiki/.sk -// list of 2nd level domains ? -sk - -// sl : http://www.nic.sl -// Submitted by registry <adam@neoip.com> 2008-06-12 -sl -com.sl -net.sl -edu.sl -gov.sl -org.sl - -// sm : http://en.wikipedia.org/wiki/.sm -sm - -// sn : http://en.wikipedia.org/wiki/.sn -sn -art.sn -com.sn -edu.sn -gouv.sn -org.sn -perso.sn -univ.sn - -// so : http://www.soregistry.com/ -so -com.so -net.so -org.so - -// sr : http://en.wikipedia.org/wiki/.sr -sr - -// st : http://www.nic.st/html/policyrules/ -st -co.st -com.st -consulado.st -edu.st -embaixada.st -gov.st -mil.st -net.st -org.st -principe.st -saotome.st -store.st - -// su : http://en.wikipedia.org/wiki/.su -su - -// sv : http://www.svnet.org.sv/svpolicy.html -*.sv - -// sy : http://en.wikipedia.org/wiki/.sy -// see also: http://www.gobin.info/domainname/sy.doc -sy -edu.sy -gov.sy -net.sy -mil.sy -com.sy -org.sy - -// sz : http://en.wikipedia.org/wiki/.sz -// http://www.sispa.org.sz/ -sz -co.sz -ac.sz -org.sz - -// tc : http://en.wikipedia.org/wiki/.tc -tc - -// td : http://en.wikipedia.org/wiki/.td -td - -// tel: http://en.wikipedia.org/wiki/.tel -// http://www.telnic.org/ -tel - -// tf : http://en.wikipedia.org/wiki/.tf -tf - -// tg : http://en.wikipedia.org/wiki/.tg -// http://www.nic.tg/nictg/index.php implies no reserved 2nd-level domains, -// although this contradicts wikipedia. -tg - -// th : http://en.wikipedia.org/wiki/.th -// Submitted by registry <krit@thains.co.th> 2008-06-17 -th -ac.th -co.th -go.th -in.th -mi.th -net.th -or.th - -// tj : http://www.nic.tj/policy.htm -tj -ac.tj -biz.tj -co.tj -com.tj -edu.tj -go.tj -gov.tj -int.tj -mil.tj -name.tj -net.tj -nic.tj -org.tj -test.tj -web.tj - -// tk : http://en.wikipedia.org/wiki/.tk -tk - -// tl : http://en.wikipedia.org/wiki/.tl -tl -gov.tl - -// tm : http://www.nic.tm/rules.html -// list of 2nd level tlds ? -tm - -// tn : http://en.wikipedia.org/wiki/.tn -// http://whois.ati.tn/ -tn -com.tn -ens.tn -fin.tn -gov.tn -ind.tn -intl.tn -nat.tn -net.tn -org.tn -info.tn -perso.tn -tourism.tn -edunet.tn -rnrt.tn -rns.tn -rnu.tn -mincom.tn -agrinet.tn -defense.tn -turen.tn - -// to : http://en.wikipedia.org/wiki/.to -// Submitted by registry <egullich@colo.to> 2008-06-17 -to -com.to -gov.to -net.to -org.to -edu.to -mil.to - -// tr : http://en.wikipedia.org/wiki/.tr -*.tr -!nic.tr -// Used by government in the TRNC -// http://en.wikipedia.org/wiki/.nc.tr -gov.nc.tr - -// travel : http://en.wikipedia.org/wiki/.travel -travel - -// tt : http://www.nic.tt/ -tt -co.tt -com.tt -org.tt -net.tt -biz.tt -info.tt -pro.tt -int.tt -coop.tt -jobs.tt -mobi.tt -travel.tt -museum.tt -aero.tt -name.tt -gov.tt -edu.tt - -// tv : http://en.wikipedia.org/wiki/.tv -// Not listing any 2LDs as reserved since none seem to exist in practice, -// Wikipedia notwithstanding. -tv - -// tw : http://en.wikipedia.org/wiki/.tw -tw -edu.tw -gov.tw -mil.tw -com.tw -net.tw -org.tw -idv.tw -game.tw -ebiz.tw -club.tw -網路.tw -組織.tw -商業.tw - -// tz : http://en.wikipedia.org/wiki/.tz -// Submitted by registry <randy@psg.com> 2008-06-17 -// Updated from http://www.tznic.or.tz/index.php/domains.html 2010-10-25 -ac.tz -co.tz -go.tz -mil.tz -ne.tz -or.tz -sc.tz - -// ua : http://www.nic.net.ua/ -ua -com.ua -edu.ua -gov.ua -in.ua -net.ua -org.ua -// ua geo-names -cherkassy.ua -chernigov.ua -chernovtsy.ua -ck.ua -cn.ua -crimea.ua -cv.ua -dn.ua -dnepropetrovsk.ua -donetsk.ua -dp.ua -if.ua -ivano-frankivsk.ua -kh.ua -kharkov.ua -kherson.ua -khmelnitskiy.ua -kiev.ua -kirovograd.ua -km.ua -kr.ua -ks.ua -kv.ua -lg.ua -lugansk.ua -lutsk.ua -lviv.ua -mk.ua -nikolaev.ua -od.ua -odessa.ua -pl.ua -poltava.ua -rovno.ua -rv.ua -sebastopol.ua -sumy.ua -te.ua -ternopil.ua -uzhgorod.ua -vinnica.ua -vn.ua -zaporizhzhe.ua -zp.ua -zhitomir.ua -zt.ua - -// Private registries in .ua -co.ua -pp.ua - -// ug : http://www.registry.co.ug/ -ug -co.ug -ac.ug -sc.ug -go.ug -ne.ug -or.ug - -// uk : http://en.wikipedia.org/wiki/.uk -*.uk -*.sch.uk -!bl.uk -!british-library.uk -!icnet.uk -!jet.uk -!mod.uk -!nel.uk -!nhs.uk -!nic.uk -!nls.uk -!national-library-scotland.uk -!parliament.uk -!police.uk - -// us : http://en.wikipedia.org/wiki/.us -us -dni.us -fed.us -isa.us -kids.us -nsn.us -// us geographic names -ak.us -al.us -ar.us -as.us -az.us -ca.us -co.us -ct.us -dc.us -de.us -fl.us -ga.us -gu.us -hi.us -ia.us -id.us -il.us -in.us -ks.us -ky.us -la.us -ma.us -md.us -me.us -mi.us -mn.us -mo.us -ms.us -mt.us -nc.us -nd.us -ne.us -nh.us -nj.us -nm.us -nv.us -ny.us -oh.us -ok.us -or.us -pa.us -pr.us -ri.us -sc.us -sd.us -tn.us -tx.us -ut.us -vi.us -vt.us -va.us -wa.us -wi.us -wv.us -wy.us -// The registrar notes several more specific domains available in each state, -// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat -// haphazard; in some states these domains resolve as addresses, while in others -// only subdomains are available, or even nothing at all. We include the -// most common ones where it's clear that different sites are different -// entities. -k12.ak.us -k12.al.us -k12.ar.us -k12.as.us -k12.az.us -k12.ca.us -k12.co.us -k12.ct.us -k12.dc.us -k12.de.us -k12.fl.us -k12.ga.us -k12.gu.us -// k12.hi.us Hawaii has a state-wide DOE login: bug 614565 -k12.ia.us -k12.id.us -k12.il.us -k12.in.us -k12.ks.us -k12.ky.us -k12.la.us -k12.ma.us -k12.md.us -k12.me.us -k12.mi.us -k12.mn.us -k12.mo.us -k12.ms.us -k12.mt.us -k12.nc.us -k12.nd.us -k12.ne.us -k12.nh.us -k12.nj.us -k12.nm.us -k12.nv.us -k12.ny.us -k12.oh.us -k12.ok.us -k12.or.us -k12.pa.us -k12.pr.us -k12.ri.us -k12.sc.us -k12.sd.us -k12.tn.us -k12.tx.us -k12.ut.us -k12.vi.us -k12.vt.us -k12.va.us -k12.wa.us -k12.wi.us -k12.wv.us -k12.wy.us - -cc.ak.us -cc.al.us -cc.ar.us -cc.as.us -cc.az.us -cc.ca.us -cc.co.us -cc.ct.us -cc.dc.us -cc.de.us -cc.fl.us -cc.ga.us -cc.gu.us -cc.hi.us -cc.ia.us -cc.id.us -cc.il.us -cc.in.us -cc.ks.us -cc.ky.us -cc.la.us -cc.ma.us -cc.md.us -cc.me.us -cc.mi.us -cc.mn.us -cc.mo.us -cc.ms.us -cc.mt.us -cc.nc.us -cc.nd.us -cc.ne.us -cc.nh.us -cc.nj.us -cc.nm.us -cc.nv.us -cc.ny.us -cc.oh.us -cc.ok.us -cc.or.us -cc.pa.us -cc.pr.us -cc.ri.us -cc.sc.us -cc.sd.us -cc.tn.us -cc.tx.us -cc.ut.us -cc.vi.us -cc.vt.us -cc.va.us -cc.wa.us -cc.wi.us -cc.wv.us -cc.wy.us - -lib.ak.us -lib.al.us -lib.ar.us -lib.as.us -lib.az.us -lib.ca.us -lib.co.us -lib.ct.us -lib.dc.us -lib.de.us -lib.fl.us -lib.ga.us -lib.gu.us -lib.hi.us -lib.ia.us -lib.id.us -lib.il.us -lib.in.us -lib.ks.us -lib.ky.us -lib.la.us -lib.ma.us -lib.md.us -lib.me.us -lib.mi.us -lib.mn.us -lib.mo.us -lib.ms.us -lib.mt.us -lib.nc.us -lib.nd.us -lib.ne.us -lib.nh.us -lib.nj.us -lib.nm.us -lib.nv.us -lib.ny.us -lib.oh.us -lib.ok.us -lib.or.us -lib.pa.us -lib.pr.us -lib.ri.us -lib.sc.us -lib.sd.us -lib.tn.us -lib.tx.us -lib.ut.us -lib.vi.us -lib.vt.us -lib.va.us -lib.wa.us -lib.wi.us -lib.wv.us -lib.wy.us - -// k12.ma.us contains school districts in Massachusetts. The 4LDs are -// managed indepedently except for private (PVT), charter (CHTR) and -// parochial (PAROCH) schools. Those are delegated dorectly to the -// 5LD operators. <k12-ma-hostmaster _ at _ rsuc.gweep.net> -pvt.k12.ma.us -chtr.k12.ma.us -paroch.k12.ma.us - -// uy : http://www.antel.com.uy/ -*.uy - -// uz : http://www.reg.uz/registerr.html -// are there other 2nd level tlds ? -uz -com.uz -co.uz - -// va : http://en.wikipedia.org/wiki/.va -va - -// vc : http://en.wikipedia.org/wiki/.vc -// Submitted by registry <kshah@ca.afilias.info> 2008-06-13 -vc -com.vc -net.vc -org.vc -gov.vc -mil.vc -edu.vc - -// ve : http://registro.nic.ve/nicve/registro/index.html -*.ve - -// vg : http://en.wikipedia.org/wiki/.vg -vg - -// vi : http://www.nic.vi/newdomainform.htm -// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other -// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they -// are available for registration (which they do not seem to be). -vi -co.vi -com.vi -k12.vi -net.vi -org.vi - -// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp -vn -com.vn -net.vn -org.vn -edu.vn -gov.vn -int.vn -ac.vn -biz.vn -info.vn -name.vn -pro.vn -health.vn - -// vu : http://en.wikipedia.org/wiki/.vu -// list of 2nd level tlds ? -vu - -// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -wf - -// ws : http://en.wikipedia.org/wiki/.ws -// http://samoanic.ws/index.dhtml -ws -com.ws -net.ws -org.ws -gov.ws -edu.ws - -// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -yt - -// IDN ccTLDs -// Please sort by ISO 3166 ccTLD, then punicode string -// when submitting patches and follow this format: -// <Punicode> ("<english word>" <language>) : <ISO 3166 ccTLD> -// [optional sponsoring org] -// <URL> - -// xn--mgbaam7a8h ("Emerat" Arabic) : AE -//http://nic.ae/english/arabicdomain/rules.jsp -امارات - -// xn--54b7fta0cc ("Bangla" Bangla) : BD -বাংলা - -// xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中国 - -// xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中國 - -// xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ -الجزائر - -// xn--wgbh1c ("Egypt" Arabic .masr) : EG -// http://www.dotmasr.eg/ -مصر - -// xn--node ("ge" Georgian (Mkhedruli)) : GE -გე - -// xn--j6w193g ("Hong Kong" Chinese-Han) : HK -// https://www2.hkirc.hk/register/rules.jsp -香港 - -// xn--h2brj9c ("Bharat" Devanagari) : IN -// India -भारत - -// xn--mgbbh1a71e ("Bharat" Arabic) : IN -// India -بھارت - -// xn--fpcrj9c3d ("Bharat" Telugu) : IN -// India -భారతౠ- -// xn--gecrj9c ("Bharat" Gujarati) : IN -// India -ભારત - -// xn--s9brj9c ("Bharat" Gurmukhi) : IN -// India -ਭਾਰਤ - -// xn--45brj9c ("Bharat" Bengali) : IN -// India -ভারত - -// xn--xkc2dl3a5ee0h ("India" Tamil) : IN -// India -இநà¯à®¤à®¿à®¯à®¾ - -// xn--mgba3a4f16a ("Iran" Persian) : IR -ایران - -// xn--mgba3a4fra ("Iran" Arabic) : IR -ايران - -//xn--mgbayh7gpa ("al-Ordon" Arabic) JO -//National Information Technology Center (NITC) -//Royal Scientific Society, Al-Jubeiha -الاردن - -// xn--3e0b707e ("Republic of Korea" Hangul) : KR -한국 - -// xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK -// http://nic.lk -ලංක෠- -// xn--xkc2al3hye2a ("Ilangai" Tamil) : LK -// http://nic.lk -இலஙà¯à®•ை - -// xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA -المغرب - -// xn--mgb9awbf ("Oman" Arabic) : OM -عمان - -// xn--ygbi2ammx ("Falasteen" Arabic) : PS -// The Palestinian National Internet Naming Authority (PNINA) -// http://www.pnina.ps -Ùلسطين - -// xn--90a3ac ("srb" Cyrillic) : RS -Ñрб - -// xn--p1ai ("rf" Russian-Cyrillic) : RU -// http://www.cctld.ru/en/docs/rulesrf.php -рф - -// xn--wgbl6a ("Qatar" Arabic) : QA -// http://www.ict.gov.qa/ -قطر - -// xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA -// http://www.nic.net.sa/ -السعودية - -// xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA -السعودیة - -// xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA -السعودیۃ - -// xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA -السعوديه - -// xn--ogbpf8fl ("Syria" Arabic) : SY -سورية - -// xn--mgbtf8fl ("Syria" Arabic) variant : SY -سوريا - -// xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG -æ–°åŠ å¡ - -// xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG -சிஙà¯à®•பà¯à®ªà¯‚ர௠- -// xn--o3cw4h ("Thai" Thai) : TH -// http://www.thnic.co.th -ไทย - -// xn--pgbs0dh ("Tunis") : TN -// http://nic.tn -تونس - -// xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -å°ç£ - -// xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -å°æ¹¾ - -// xn--nnx388a ("Taiwan") variant : TW -è‡ºç£ - -// xn--j1amh ("ukr" Cyrillic) : UA -укр - -// xn--mgb2ddes ("AlYemen" Arabic) : YE -اليمن - -// xxx : http://icmregistry.com -xxx - -// ye : http://www.y.net.ye/services/domain_name.htm -*.ye - -// za : http://www.zadna.org.za/slds.html -*.za - -// zm : http://en.wikipedia.org/wiki/.zm -*.zm - -// zw : http://en.wikipedia.org/wiki/.zw -*.zw - -// ===END ICANN DOMAINS=== -// ===BEGIN PRIVATE DOMAINS=== - -// info.at : http://www.info.at/ -biz.at -info.at - -// priv.at : http://www.nic.priv.at/ -// Submitted by registry <lendl@nic.at> 2008-06-09 -priv.at - -// co.ca : http://registry.co.ca -co.ca - -// CentralNic : http://www.centralnic.com/names/domains -// Confirmed by registry <gavin.brown@centralnic.com> 2008-06-09 -ar.com -br.com -cn.com -de.com -eu.com -gb.com -gr.com -hu.com -jpn.com -kr.com -no.com -qc.com -ru.com -sa.com -se.com -uk.com -us.com -uy.com -za.com -gb.net -jp.net -se.net -uk.net -ae.org -us.org -com.de - -// Opera Software, A.S.A. -// Requested by Yngve Pettersen <yngve@opera.com> 2009-11-26 -operaunite.com - -// Google, Inc. -// Requested by Eduardo Vela <evn@google.com> 2010-09-06 -appspot.com - -// iki.fi : Submitted by Hannu Aronsson <haa@iki.fi> 2009-11-05 -iki.fi - -// c.la : http://www.c.la/ -c.la - -// ZaNiC : http://www.za.net/ -// Confirmed by registry <hostmaster@nic.za.net> 2009-10-03 -za.net -za.org - -// CoDNS B.V. -// Added 2010-05-23. -co.nl -co.no - -// Mainseek Sp. z o.o. : http://www.co.pl/ -co.pl - -// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ -dyndns-at-home.com -dyndns-at-work.com -dyndns-blog.com -dyndns-free.com -dyndns-home.com -dyndns-ip.com -dyndns-mail.com -dyndns-office.com -dyndns-pics.com -dyndns-remote.com -dyndns-server.com -dyndns-web.com -dyndns-wiki.com -dyndns-work.com -dyndns.biz -dyndns.info -dyndns.org -dyndns.tv -at-band-camp.net -ath.cx -barrel-of-knowledge.info -barrell-of-knowledge.info -better-than.tv -blogdns.com -blogdns.net -blogdns.org -blogsite.org -boldlygoingnowhere.org -broke-it.net -buyshouses.net -cechire.com -dnsalias.com -dnsalias.net -dnsalias.org -dnsdojo.com -dnsdojo.net -dnsdojo.org -does-it.net -doesntexist.com -doesntexist.org -dontexist.com -dontexist.net -dontexist.org -doomdns.com -doomdns.org -dvrdns.org -dyn-o-saur.com -dynalias.com -dynalias.net -dynalias.org -dynathome.net -dyndns.ws -endofinternet.net -endofinternet.org -endoftheinternet.org -est-a-la-maison.com -est-a-la-masion.com -est-le-patron.com -est-mon-blogueur.com -for-better.biz -for-more.biz -for-our.info -for-some.biz -for-the.biz -forgot.her.name -forgot.his.name -from-ak.com -from-al.com -from-ar.com -from-az.net -from-ca.com -from-co.net -from-ct.com -from-dc.com -from-de.com -from-fl.com -from-ga.com -from-hi.com -from-ia.com -from-id.com -from-il.com -from-in.com -from-ks.com -from-ky.com -from-la.net -from-ma.com -from-md.com -from-me.org -from-mi.com -from-mn.com -from-mo.com -from-ms.com -from-mt.com -from-nc.com -from-nd.com -from-ne.com -from-nh.com -from-nj.com -from-nm.com -from-nv.com -from-ny.net -from-oh.com -from-ok.com -from-or.com -from-pa.com -from-pr.com -from-ri.com -from-sc.com -from-sd.com -from-tn.com -from-tx.com -from-ut.com -from-va.com -from-vt.com -from-wa.com -from-wi.com -from-wv.com -from-wy.com -ftpaccess.cc -fuettertdasnetz.de -game-host.org -game-server.cc -getmyip.com -gets-it.net -go.dyndns.org -gotdns.com -gotdns.org -groks-the.info -groks-this.info -ham-radio-op.net -here-for-more.info -hobby-site.com -hobby-site.org -home.dyndns.org -homedns.org -homeftp.net -homeftp.org -homeip.net -homelinux.com -homelinux.net -homelinux.org -homeunix.com -homeunix.net -homeunix.org -iamallama.com -in-the-band.net -is-a-anarchist.com -is-a-blogger.com -is-a-bookkeeper.com -is-a-bruinsfan.org -is-a-bulls-fan.com -is-a-candidate.org -is-a-caterer.com -is-a-celticsfan.org -is-a-chef.com -is-a-chef.net -is-a-chef.org -is-a-conservative.com -is-a-cpa.com -is-a-cubicle-slave.com -is-a-democrat.com -is-a-designer.com -is-a-doctor.com -is-a-financialadvisor.com -is-a-geek.com -is-a-geek.net -is-a-geek.org -is-a-green.com -is-a-guru.com -is-a-hard-worker.com -is-a-hunter.com -is-a-knight.org -is-a-landscaper.com -is-a-lawyer.com -is-a-liberal.com -is-a-libertarian.com -is-a-linux-user.org -is-a-llama.com -is-a-musician.com -is-a-nascarfan.com -is-a-nurse.com -is-a-painter.com -is-a-patsfan.org -is-a-personaltrainer.com -is-a-photographer.com -is-a-player.com -is-a-republican.com -is-a-rockstar.com -is-a-socialist.com -is-a-soxfan.org -is-a-student.com -is-a-teacher.com -is-a-techie.com -is-a-therapist.com -is-an-accountant.com -is-an-actor.com -is-an-actress.com -is-an-anarchist.com -is-an-artist.com -is-an-engineer.com -is-an-entertainer.com -is-by.us -is-certified.com -is-found.org -is-gone.com -is-into-anime.com -is-into-cars.com -is-into-cartoons.com -is-into-games.com -is-leet.com -is-lost.org -is-not-certified.com -is-saved.org -is-slick.com -is-uberleet.com -is-very-bad.org -is-very-evil.org -is-very-good.org -is-very-nice.org -is-very-sweet.org -is-with-theband.com -isa-geek.com -isa-geek.net -isa-geek.org -isa-hockeynut.com -issmarterthanyou.com -isteingeek.de -istmein.de -kicks-ass.net -kicks-ass.org -knowsitall.info -land-4-sale.us -lebtimnetz.de -leitungsen.de -likes-pie.com -likescandy.com -merseine.nu -mine.nu -misconfused.org -mypets.ws -myphotos.cc -neat-url.com -office-on-the.net -on-the-web.tv -podzone.net -podzone.org -readmyblog.org -saves-the-whales.com -scrapper-site.net -scrapping.cc -selfip.biz -selfip.com -selfip.info -selfip.net -selfip.org -sells-for-less.com -sells-for-u.com -sells-it.net -sellsyourhome.org -servebbs.com -servebbs.net -servebbs.org -serveftp.net -serveftp.org -servegame.org -shacknet.nu -simple-url.com -space-to-rent.com -stuff-4-sale.org -stuff-4-sale.us -teaches-yoga.com -thruhere.net -traeumtgerade.de -webhop.biz -webhop.info -webhop.net -webhop.org -worse-than.tv -writesthisblog.com - -// ===END PRIVATE DOMAINS=== diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js deleted file mode 100644 index 3cce815e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js +++ /dev/null @@ -1,1340 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -var vows = require('vows'); -var assert = require('assert'); -var async = require('async'); - -// NOTE use require("tough-cookie") in your own code: -var tough = require('./lib/cookie'); -var Cookie = tough.Cookie; -var CookieJar = tough.CookieJar; - - -function dateVows(table) { - var theVows = { }; - var keys = Object.keys(table).forEach(function(date) { - var expect = table[date]; - theVows[date] = function() { - var got = tough.parseDate(date) ? 'valid' : 'invalid'; - assert.equal(got, expect ? 'valid' : 'invalid'); - }; - }); - return { "date parsing": theVows }; -} - -function matchVows(func,table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var dom = item[1]; - var expect = item[2]; - var label = str+(expect?" matches ":" doesn't match ")+dom; - theVows[label] = function() { - assert.equal(func(str,dom),expect); - }; - }); - return theVows; -} - -function defaultPathVows(table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var expect = item[1]; - var label = str+" gives "+expect; - theVows[label] = function() { - assert.equal(tough.defaultPath(str),expect); - }; - }); - return theVows; -} - -var atNow = Date.now(); -function at(offset) { return {now: new Date(atNow+offset)} } - -vows.describe('Cookie Jar') -.addBatch({ - "all defined": function() { - assert.ok(Cookie); - assert.ok(CookieJar); - }, -}) -.addBatch( - dateVows({ - "Wed, 09 Jun 2021 10:18:14 GMT": true, - "Wed, 09 Jun 2021 22:18:14 GMT": true, - "Tue, 18 Oct 2011 07:42:42.123 GMT": true, - "18 Oct 2011 07:42:42 GMT": true, - "8 Oct 2011 7:42:42 GMT": true, - "8 Oct 2011 7:2:42 GMT": false, - "Oct 18 2011 07:42:42 GMT": true, - "Tue Oct 18 2011 07:05:03 GMT+0000 (GMT)": true, - "09 Jun 2021 10:18:14 GMT": true, - "99 Jix 3038 48:86:72 ZMT": false, - '01 Jan 1970 00:00:00 GMT': true, - '01 Jan 1600 00:00:00 GMT': false, // before 1601 - '01 Jan 1601 00:00:00 GMT': true, - '10 Feb 81 13:00:00 GMT': true, // implicit year - 'Thu, 01 Jan 1970 00:00:010 GMT': true, // strange time, non-strict OK - 'Thu, 17-Apr-2014 02:12:29 GMT': true, // dashes - 'Thu, 17-Apr-2014 02:12:29 UTC': true, // dashes and UTC - }) -) -.addBatch({ - "strict date parse of Thu, 01 Jan 1970 00:00:010 GMT": { - topic: function() { - return tough.parseDate('Thu, 01 Jan 1970 00:00:010 GMT', true) ? true : false; - }, - "invalid": function(date) { - assert.equal(date,false); - }, - } -}) -.addBatch({ - "formatting": { - "a simple cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b'); - }, - }, - "a cookie with spaces in the value": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'beta gamma'; - return c; - }, - "doesn't validate": function(c) { - assert.ok(!c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a="beta gamma"'); - }, - }, - "with an empty value and HttpOnly": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.httpOnly = true; - return c; - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=; HttpOnly'); - } - }, - "with an expiry": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT'); - }, - "to short string": function(c) { - assert.equal(c.cookieString(), 'a=b'); - }, - }, - "with a max-age": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); // mabe this one *shouldn't*? - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345'); - }, - }, - "with a bunch of things": function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - c.domain = 'example.com'; - c.path = '/foo'; - c.secure = true; - c.httpOnly = true; - c.extensions = ['MyExtension']; - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345; Domain=example.com; Path=/foo; Secure; HttpOnly; MyExtension'); - }, - "a host-only cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.hostOnly = true; - c.domain = 'shouldnt-stringify.example.com'; - c.path = '/should-stringify'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Path=/should-stringify'); - }, - }, - "minutes are '10'": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.expires = new Date(1284113410000); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - var str = c.toString(); - assert.notEqual(str, 'a=b; Expires=Fri, 010 Sep 2010 010:010:010 GMT'); - assert.equal(str, 'a=b; Expires=Fri, 10 Sep 2010 10:10:10 GMT'); - }, - } - } -}) -.addBatch({ - "TTL with max-age": function() { - var c = new Cookie(); - c.maxAge = 123; - assert.equal(c.TTL(), 123000); - assert.equal(c.expiryTime(new Date(9000000)), 9123000); - }, - "TTL with zero max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = 0; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with negative max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = -1; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with max-age and expires": function() { - var c = new Cookie(); - c.maxAge = 123; - c.expires = new Date(Date.now()+9000); - assert.equal(c.TTL(), 123000); - assert.ok(c.isPersistent()); - }, - "TTL with expires": function() { - var c = new Cookie(); - var now = Date.now(); - c.expires = new Date(now+9000); - assert.equal(c.TTL(now), 9000); - assert.equal(c.expiryTime(), c.expires.getTime()); - }, - "TTL with old expires": function() { - var c = new Cookie(); - c.setExpires('17 Oct 2010 00:00:00 GMT'); - assert.ok(c.TTL() < 0); - assert.ok(c.isPersistent()); - }, - "default TTL": { - topic: function() { return new Cookie() }, - "is Infinite-future": function(c) { assert.equal(c.TTL(), Infinity) }, - "is a 'session' cookie": function(c) { assert.ok(!c.isPersistent()) }, - }, -}).addBatch({ - "Parsing": { - "simple": { - topic: function() { - return Cookie.parse('a=bcd',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - }, - "with expiry": { - topic: function() { - return Cookie.parse('a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - }, - "with expiry and path": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "no httponly or secure": function(c) { - assert.ok(!c.httpOnly); - assert.ok(!c.secure); - }, - }, - "with everything": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc; Domain=example.com; Secure; HTTPOnly; Max-Age=1234; Foo=Bar; Baz', true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "has domain": function(c) { assert.equal(c.domain, 'example.com'); }, - "has httponly": function(c) { assert.equal(c.httpOnly, true); }, - "has secure": function(c) { assert.equal(c.secure, true); }, - "has max-age": function(c) { assert.equal(c.maxAge, 1234); }, - "has extensions": function(c) { - assert.ok(c.extensions); - assert.equal(c.extensions[0], 'Foo=Bar'); - assert.equal(c.extensions[1], 'Baz'); - }, - }, - "invalid expires": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Expires=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Expires=xyzzy"); - assert.ok(c); - assert.equal(c.expires, Infinity); - }, - }, - "zero max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=0", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=0"); - assert.ok(c); - assert.equal(c.maxAge, 0); - }, - }, - "negative max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=-1", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=-1"); - assert.ok(c); - assert.equal(c.maxAge, -1); - }, - }, - "empty domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain="); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "dot domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=.", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain=."); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "uppercase domain": { - "strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - "non-strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - }, - "trailing dot in domain": { - topic: function() { - return Cookie.parse("a=b; Domain=example.com.", true) || null; - }, - "has the domain": function(c) { assert.equal(c.domain,"example.com.") }, - "but doesn't validate": function(c) { assert.equal(c.validate(),false) }, - }, - "empty path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path="); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "no-slash path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path=xyzzy"); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "trailing semi-colons after path": { - topic: function () { - return [ - "a=b; path=/;", - "c=d;;;;" - ]; - }, - "strict": function (t) { - assert.ok(!Cookie.parse(t[0], true)); - assert.ok(!Cookie.parse(t[1], true)); - }, - "non-strict": function (t) { - var c1 = Cookie.parse(t[0]); - var c2 = Cookie.parse(t[1]); - assert.ok(c1); - assert.ok(c2); - assert.equal(c1.path, '/'); - } - }, - "secure-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Secure=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Secure=xyzzy"); - assert.ok(c); - assert.equal(c.secure, true); - }, - }, - "httponly-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; HttpOnly=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; HttpOnly=xyzzy"); - assert.ok(c); - assert.equal(c.httpOnly, true); - }, - }, - "garbage": { - topic: function() { - return Cookie.parse("\x08", true) || null; - }, - "doesn't parse": function(c) { assert.equal(c,null) }, - }, - "public suffix domain": { - topic: function() { - return Cookie.parse("a=b; domain=kyoto.jp", true) || null; - }, - "parses fine": function(c) { - assert.ok(c); - assert.equal(c.domain, 'kyoto.jp'); - }, - "but fails validation": function(c) { - assert.ok(c); - assert.ok(!c.validate()); - }, - }, - "Ironically, Google 'GAPS' cookie has very little whitespace": { - topic: function() { - return Cookie.parse("GAPS=1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-;Path=/;Expires=Thu, 17-Apr-2014 02:12:29 GMT;Secure;HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'GAPS') }, - "value": function(c) { assert.equal(c.value, '1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-') }, - "path": function(c) { - assert.notEqual(c.path, '/;Expires'); // BUG - assert.equal(c.path, '/'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "secure": function(c) { assert.ok(c.secure) }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - }, - "lots of equal signs": { - topic: function() { - return Cookie.parse("queryPref=b=c&d=e; Path=/f=g; Expires=Thu, 17 Apr 2014 02:12:29 GMT; HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'queryPref') }, - "value": function(c) { assert.equal(c.value, 'b=c&d=e') }, - "path": function(c) { - assert.equal(c.path, '/f=g'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - } - } -}) -.addBatch({ - "domain normalization": { - "simple": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.com"; - assert.equal(c.canonicalizedDomain(), "example.com"); - }, - "extra dots": function() { - var c = new Cookie(); - c.domain = ".EXAMPLE.com"; - assert.equal(c.cdomain(), "example.com"); - }, - "weird trailing dot": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.ca."; - assert.equal(c.canonicalizedDomain(), "example.ca."); - }, - "weird internal dots": function() { - var c = new Cookie(); - c.domain = "EXAMPLE...ca."; - assert.equal(c.canonicalizedDomain(), "example...ca."); - }, - "IDN": function() { - var c = new Cookie(); - c.domain = "δοκιμή.δοκιμή"; // "test.test" in greek - assert.equal(c.canonicalizedDomain(), "xn--jxalpdlp.xn--jxalpdlp"); - } - } -}) -.addBatch({ - "Domain Match":matchVows(tough.domainMatch, [ - // str, dom, expect - ["example.com", "example.com", true], - ["eXaMpLe.cOm", "ExAmPlE.CoM", true], - ["no.ca", "yes.ca", false], - ["wwwexample.com", "example.com", false], - ["www.example.com", "example.com", true], - ["example.com", "www.example.com", false], - ["www.subdom.example.com", "example.com", true], - ["www.subdom.example.com", "subdom.example.com", true], - ["example.com", "example.com.", false], // RFC6265 S4.1.2.3 - ["192.168.0.1", "168.0.1", false], // S5.1.3 "The string is a host name" - [null, "example.com", null], - ["example.com", null, null], - [null, null, null], - [undefined, undefined, null], - ]) -}) -.addBatch({ - "default-path": defaultPathVows([ - [null,"/"], - ["/","/"], - ["/file","/"], - ["/dir/file","/dir"], - ["noslash","/"], - ]) -}) -.addBatch({ - "Path-Match": matchVows(tough.pathMatch, [ - // request, cookie, match - ["/","/",true], - ["/dir","/",true], - ["/","/dir",false], - ["/dir/","/dir/", true], - ["/dir/file","/dir/",true], - ["/dir/file","/dir",true], - ["/directory","/dir",false], - ]) -}) -.addBatch({ - "Cookie Sorting": { - topic: function() { - var cookies = []; - var now = Date.now(); - cookies.push(Cookie.parse("a=0; Domain=example.com")); - cookies.push(Cookie.parse("b=1; Domain=www.example.com")); - cookies.push(Cookie.parse("c=2; Domain=example.com; Path=/pathA")); - cookies.push(Cookie.parse("d=3; Domain=www.example.com; Path=/pathA")); - cookies.push(Cookie.parse("e=4; Domain=example.com; Path=/pathA/pathB")); - cookies.push(Cookie.parse("f=5; Domain=www.example.com; Path=/pathA/pathB")); - - // force a stable creation time consistent with the order above since - // some may have been created at now + 1ms. - var i = cookies.length; - cookies.forEach(function(cookie) { - cookie.creation = new Date(now - 100*(i--)); - }); - - // weak shuffle: - cookies = cookies.sort(function(){return Math.random()-0.5}); - - cookies = cookies.sort(tough.cookieCompare); - return cookies; - }, - "got": function(cookies) { - assert.lengthOf(cookies, 6); - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['e','f','c','d','a','b']); - }, - } -}) -.addBatch({ - "CookieJar": { - "Setting a basic cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, // C is for Cookie, good enough for me - "gets timestamped": function(c) { - assert.ok(c.creation); - assert.ok(Date.now() - c.creation.getTime() < 5000); // recently stamped - assert.ok(c.lastAccessed); - assert.equal(c.creation, c.lastAccessed); - assert.equal(c.TTL(), Infinity); - assert.ok(!c.isPersistent()); - }, - }, - "Setting a no-path cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "path is /": function(c) { assert.equal(c.path, '/') }, - "path was derived": function(c) { assert.strictEqual(c.pathIsDefault, true) }, - }, - "Setting a cookie already marked as host-only": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - c.hostOnly = true; - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "still hostOnly": function(c) { assert.strictEqual(c.hostOnly, true) }, - }, - "Setting a session cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b"); - assert.strictEqual(c.path, null); - cj.setCookie(c, 'http://www.example.com/dir/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, - "gets the domain": function(c) { assert.equal(c.domain, 'www.example.com') }, - "gets the default path": function(c) { assert.equal(c.path, '/dir') }, - "is 'hostOnly'": function(c) { assert.ok(c.hostOnly) }, - }, - "Setting wrong domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=fooxample.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting sub-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=www.example.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting super-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - cj.setCookie(c, 'http://www.app.example.com/index.html', this.callback); - }, - "success": function(err,c) { - assert.ok(!err); - assert.equal(c.domain, 'example.com'); - }, - }, - "Setting HttpOnly cookie over non-HTTP API": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/; HttpOnly"); - cj.setCookie(c, 'http://example.com/index.html', {http:false}, this.callback); - }, - "fails": function(err,c) { - assert.match(err.message, /HttpOnly/i); - assert.ok(!c); - }, - }, - }, - "Cookie Jar store eight cookies": { - topic: function() { - var cj = new CookieJar(); - var ex = 'http://example.com/index.html'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('a=1; Domain=example.com; Path=/',ex,at(0),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Domain=example.com; Path=/; HttpOnly',ex,at(1000),next); - }); - tasks.push(function(next) { - cj.setCookie('c=3; Domain=example.com; Path=/; Secure',ex,at(2000),next); - }); - tasks.push(function(next) { // path - cj.setCookie('d=4; Domain=example.com; Path=/foo',ex,at(3000),next); - }); - tasks.push(function(next) { // host only - cj.setCookie('e=5',ex,at(4000),next); - }); - tasks.push(function(next) { // other domain - cj.setCookie('f=6; Domain=nodejs.org; Path=/','http://nodejs.org',at(5000),next); - }); - tasks.push(function(next) { // expired - cj.setCookie('g=7; Domain=example.com; Path=/; Expires=Tue, 18 Oct 2011 00:00:00 GMT',ex,at(6000),next); - }); - tasks.push(function(next) { // expired via Max-Age - cj.setCookie('h=8; Domain=example.com; Path=/; Max-Age=1',ex,next); - }); - var cb = this.callback; - async.parallel(tasks, function(err,results){ - setTimeout(function() { - cb(err,cj,results); - }, 2000); // so that 'h=8' expires - }); - }, - "setup ok": function(err,cj,results) { - assert.ok(1); - }, - "then retrieving for http://nodejs.org": { - topic: function(cj,results) { - cj.getCookies('http://nodejs.org',this.callback); - }, - "get a nodejs cookie": function(cookies) { - assert.lengthOf(cookies, 1); - var cookie = cookies[0]; - assert.equal(cookie.domain, 'nodejs.org'); - }, - }, - "then retrieving for https://example.com": { - topic: function(cj,results) { - cj.getCookies('https://example.com',{secure:true},this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for https://example.com (missing options)": { - topic: function(cj,results) { - cj.getCookies('https://example.com',this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for http://example.com": { - topic: function(cj,results) { - cj.getCookies('http://example.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://EXAMPlE.com": { - topic: function(cj,results) { - cj.getCookies('http://EXAMPlE.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://example.com, non-HTTP": { - topic: function(cj,results) { - cj.getCookies('http://example.com',{http:false},this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','e']); - }, - }, - "then retrieving for http://example.com/foo/bar": { - topic: function(cj,results) { - cj.getCookies('http://example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b','e']); - }, - }, - "then retrieving for http://example.com as a string": { - topic: function(cj,results) { - cj.getCookieString('http://example.com',this.callback); - }, - "get a single string": function(cookieHeader) { - assert.equal(cookieHeader, "a=1; b=2; e=5"); - }, - }, - "then retrieving for http://example.com as a set-cookie header": { - topic: function(cj,results) { - cj.getSetCookieStrings('http://example.com',this.callback); - }, - "get a single string": function(cookieHeaders) { - assert.lengthOf(cookieHeaders, 3); - assert.equal(cookieHeaders[0], "a=1; Domain=example.com; Path=/"); - assert.equal(cookieHeaders[1], "b=2; Domain=example.com; Path=/; HttpOnly"); - assert.equal(cookieHeaders[2], "e=5; Path=/"); - }, - }, - "then retrieving for http://www.example.com/": { - topic: function(cj,results) { - cj.getCookies('http://www.example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b']); // note lack of 'e' - }, - }, - }, - "Repeated names": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com/'; - var sc = cj.setCookie; - var tasks = []; - var now = Date.now(); - tasks.push(sc.bind(cj,'aaaa=xxxx',ex,at(0))); - tasks.push(sc.bind(cj,'aaaa=1111; Domain=www.example.com',ex,at(1000))); - tasks.push(sc.bind(cj,'aaaa=2222; Domain=example.com',ex,at(2000))); - tasks.push(sc.bind(cj,'aaaa=3333; Domain=www.example.com; Path=/pathA',ex,at(3000))); - async.series(tasks,function(err,results) { - results = results.filter(function(e) {return e !== undefined}); - cb(err,{cj:cj, cookies:results, now:now}); - }); - }, - "all got set": function(err,t) { - assert.lengthOf(t.cookies,4); - }, - "then getting 'em back": { - topic: function(t) { - var cj = t.cj; - cj.getCookies('http://www.example.com/pathA',this.callback); - }, - "there's just three": function (err,cookies) { - var vals = cookies.map(function(c) {return c.value}); - // may break with sorting; sorting should put 3333 first due to longest path: - assert.deepEqual(vals, ['3333','1111','2222']); - } - }, - }, - "CookieJar setCookie errors": { - "public-suffix domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('i=9; Domain=kyoto.jp; Path=/','kyoto.jp',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /public suffix/i); - }, - }, - "wrong domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('j=10; Domain=google.com; Path=/','google.ca',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /not in this host's domain/i); - }, - }, - "old cookie is HttpOnly": { - topic: function() { - var cb = this.callback; - var next = function (err,c) { - return cb(err,cj); - }; - var cj = new CookieJar(); - cj.setCookie('k=11; Domain=example.ca; Path=/; HttpOnly','http://example.ca',{http:true},next); - }, - "initial cookie is set": function(err,cj) { - assert.ok(!err); - }, - "but when trying to overwrite": { - topic: function(cj) { - var cb = this.callback; - cj.setCookie('k=12; Domain=example.ca; Path=/','http://example.ca',{http:false},function(err,c) {cb(null,err)}); - }, - "it's an error": function(err) { - assert.ok(err); - }, - "then, checking the original": { - topic: function(ignored,cj) { - assert.ok(cj instanceof CookieJar); - cj.getCookies('http://example.ca',{http:true},this.callback); - }, - "cookie has original value": function(err,cookies) { - assert.equal(err,null); - assert.lengthOf(cookies, 1); - assert.equal(cookies[0].value,11); - }, - }, - }, - }, - }, -}) -.addBatch({ - "JSON": { - "serialization": { - topic: function() { - var c = Cookie.parse('alpha=beta; Domain=example.com; Path=/foo; Expires=Tue, 19 Jan 2038 03:14:07 GMT; HttpOnly'); - return JSON.stringify(c); - }, - "gives a string": function(str) { - assert.equal(typeof str, "string"); - }, - "date is in ISO format": function(str) { - assert.match(str, /"expires":"2038-01-19T03:14:07\.000Z"/, 'expires is in ISO format'); - }, - }, - "deserialization": { - topic: function() { - var json = '{"key":"alpha","value":"beta","domain":"example.com","path":"/foo","expires":"2038-01-19T03:14:07.000Z","httpOnly":true,"lastAccessed":2000000000123}'; - return Cookie.fromJSON(json); - }, - "works": function(c) { - assert.ok(c); - }, - "key": function(c) { assert.equal(c.key, "alpha") }, - "value": function(c) { assert.equal(c.value, "beta") }, - "domain": function(c) { assert.equal(c.domain, "example.com") }, - "path": function(c) { assert.equal(c.path, "/foo") }, - "httpOnly": function(c) { assert.strictEqual(c.httpOnly, true) }, - "secure": function(c) { assert.strictEqual(c.secure, false) }, - "hostOnly": function(c) { assert.strictEqual(c.hostOnly, null) }, - "expires is a date object": function(c) { - assert.equal(c.expires.getTime(), 2147483647000); - }, - "lastAccessed is a date object": function(c) { - assert.equal(c.lastAccessed.getTime(), 2000000000123); - }, - "creation defaulted": function(c) { - assert.ok(c.creation.getTime()); - } - }, - "null deserialization": { - topic: function() { - return Cookie.fromJSON(null); - }, - "is null": function(cookie) { - assert.equal(cookie,null); - }, - }, - }, - "expiry deserialization": { - "Infinity": { - topic: Cookie.fromJSON.bind(null, '{"expires":"Infinity"}'), - "is infinite": function(c) { - assert.strictEqual(c.expires, "Infinity"); - assert.equal(c.expires, Infinity); - }, - }, - }, - "maxAge serialization": { - topic: function() { - return function(toSet) { - var c = new Cookie(); - c.key = 'foo'; c.value = 'bar'; - c.setMaxAge(toSet); - return JSON.stringify(c); - }; - }, - "zero": { - topic: function(f) { return f(0) }, - "looks good": function(str) { - assert.match(str, /"maxAge":0/); - }, - }, - "Infinity": { - topic: function(f) { return f(Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"Infinity"/); - }, - }, - "-Infinity": { - topic: function(f) { return f(-Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"-Infinity"/); - }, - }, - "null": { - topic: function(f) { return f(null) }, - "looks good": function(str) { - assert.match(str, /"maxAge":null/); - }, - }, - }, - "maxAge deserialization": { - "number": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":123}'), - "is the number": function(c) { - assert.strictEqual(c.maxAge, 123); - }, - }, - "null": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":null}'), - "is null": function(c) { - assert.strictEqual(c.maxAge, null); - }, - }, - "less than zero": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":-123}'), - "is -123": function(c) { - assert.strictEqual(c.maxAge, -123); - }, - }, - "Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "Infinity"); - }, - }, - "-Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"-Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "-Infinity"); - }, - }, - } -}) -.addBatch({ - "permuteDomain": { - "base case": { - topic: tough.permuteDomain.bind(null,'example.com'), - "got the domain": function(list) { - assert.deepEqual(list, ['example.com']); - }, - }, - "two levels": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.com'), - "got three things": function(list) { - assert.deepEqual(list, ['example.com','bar.example.com','foo.bar.example.com']); - }, - }, - "invalid domain": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.localduhmain'), - "got three things": function(list) { - assert.equal(list, null); - }, - }, - }, - "permutePath": { - "base case": { - topic: tough.permutePath.bind(null,'/'), - "just slash": function(list) { - assert.deepEqual(list,['/']); - }, - }, - "single case": { - topic: tough.permutePath.bind(null,'/foo'), - "two things": function(list) { - assert.deepEqual(list,['/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo',e)); - }); - }, - }, - "double case": { - topic: tough.permutePath.bind(null,'/foo/bar'), - "four things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar',e)); - }); - }, - }, - "trailing slash": { - topic: tough.permutePath.bind(null,'/foo/bar/'), - "three things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar/',e)); - }); - }, - }, - } -}) -.addBatch({ - "Issue 1": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('hello=world; path=/some/path/', 'http://domain/some/path/file', function(err,cookie) { - this.callback(err,{cj:cj, cookie:cookie}); - }.bind(this)); - }, - "stored a cookie": function(t) { - assert.ok(t.cookie); - }, - "cookie's path was modified to remove unnecessary slash": function(t) { - assert.equal(t.cookie.path, '/some/path'); - }, - "getting it back": { - topic: function(t) { - t.cj.getCookies('http://domain/some/path/file', function(err,cookies) { - this.callback(err, {cj:t.cj, cookies:cookies||[]}); - }.bind(this)); - }, - "got one cookie": function(t) { - assert.lengthOf(t.cookies, 1); - }, - "it's the right one": function(t) { - var c = t.cookies[0]; - assert.equal(c.key, 'hello'); - assert.equal(c.value, 'world'); - }, - } - } -}) -.addBatch({ - "expiry option": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - cj.setCookie('near=expiry; Domain=example.com; Path=/; Max-Age=1','http://www.example.com',at(-1), function(err,cookie) { - - cb(err, {cj:cj, cookie:cookie}); - }); - }, - "set the cookie": function(t) { - assert.ok(t.cookie, "didn't set?!"); - assert.equal(t.cookie.key, 'near'); - }, - "then, retrieving": { - topic: function(t) { - var cb = this.callback; - setTimeout(function() { - t.cj.getCookies('http://www.example.com', {http:true, expire:false}, function(err,cookies) { - t.cookies = cookies; - cb(err,t); - }); - },2000); - }, - "got the cookie": function(t) { - assert.lengthOf(t.cookies, 1); - assert.equal(t.cookies[0].key, 'near'); - }, - } - } -}) -.addBatch({ - "trailing semi-colon set into cj": { - topic: function () { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('broken_path=testme; path=/;',ex,at(-1),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Path=/;;;;',ex,at(-1),next); - }); - async.parallel(tasks, function (err, cookies) { - cb(null, { - cj: cj, - cookies: cookies - }); - }); - }, - "check number of cookies": function (t) { - assert.lengthOf(t.cookies, 2, "didn't set"); - }, - "check *broken_path* was set properly": function (t) { - assert.equal(t.cookies[0].key, "broken_path"); - assert.equal(t.cookies[0].value, "testme"); - assert.equal(t.cookies[0].path, "/"); - }, - "check *b* was set properly": function (t) { - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - "retrieve the cookie": { - topic: function (t) { - var cb = this.callback; - t.cj.getCookies('http://www.example.com', {}, function (err, cookies) { - t.cookies = cookies; - cb(err, t); - }); - }, - "get the cookie": function(t) { - assert.lengthOf(t.cookies, 2); - assert.equal(t.cookies[0].key, 'broken_path'); - assert.equal(t.cookies[0].value, 'testme'); - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - }, - } -}) -.addBatch({ - "Constructor":{ - topic: function () { - return new Cookie({ - key: 'test', - value: 'b', - maxAge: 60 - }); - }, - 'check for key property': function (c) { - assert.ok(c); - assert.equal(c.key, 'test'); - }, - 'check for value property': function (c) { - assert.equal(c.value, 'b'); - }, - 'check for maxAge': function (c) { - assert.equal(c.maxAge, 60); - }, - 'check for default values for unspecified properties': function (c) { - assert.equal(c.expires, "Infinity"); - assert.equal(c.secure, false); - assert.equal(c.httpOnly, false); - } - } -}) -.addBatch({ - "allPaths option": { - topic: function() { - var cj = new CookieJar(); - var tasks = []; - tasks.push(cj.setCookie.bind(cj, 'nopath_dom=qq; Path=/; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_dom=qq; Path=/foo; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'nopath_host=qq; Path=/', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_host=qq; Path=/foo', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'other=qq; Path=/', 'http://other.example.com/', {})); - tasks.push(cj.setCookie.bind(cj, 'other2=qq; Path=/foo', 'http://other.example.com/foo', {})); - var cb = this.callback; - async.parallel(tasks, function(err,results) { - cb(err, {cj:cj, cookies: results}); - }); - }, - "all set": function(t) { - assert.equal(t.cookies.length, 6); - assert.ok(t.cookies.every(function(c) { return !!c })); - }, - "getting without allPaths": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found just two cookies": function(t) { - assert.equal(t.cookies.length, 2); - }, - "all are path=/": function(t) { - assert.ok(t.cookies.every(function(c) { return c.path === '/' })); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting without allPaths for /foo": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/foo', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting with allPaths:true": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {allPaths:true}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - } -}) -.export(module); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js deleted file mode 100644 index 3f7bbb90..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,227 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port) { - var self = this - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: host, port: port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createSocket({host: host, port: port, request: req}, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - req.onSocket(socket) - - function onFree() { - self.emit('free', socket, host, port) - } - - function onCloseOrRemove(err) { - self.removeSocket() - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket) - }) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json deleted file mode 100644 index 6a6358be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "tunnel-agent", - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "version": "0.3.0", - "repository": { - "url": "https://github.com/mikeal/tunnel-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "tunnel-agent\n============\n\nHTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "homepage": "https://github.com/mikeal/tunnel-agent", - "_id": "tunnel-agent@0.3.0", - "_from": "tunnel-agent@~0.3.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json deleted file mode 100755 index 2fee74c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "request", - "description": "Simplified HTTP request client.", - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.31.0", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - "repository": { - "type": "git", - "url": "http://github.com/mikeal/request.git" - }, - "bugs": { - "url": "http://github.com/mikeal/request/issues" - }, - "engines": [ - "node >= 0.8.0" - ], - "main": "index.js", - "dependencies": { - "qs": "~0.6.0", - "json-stringify-safe": "~5.0.0", - "forever-agent": "~0.5.0", - "node-uuid": "~1.4.0", - "mime": "~1.2.9", - "tough-cookie": "~0.9.15", - "form-data": "~0.1.0", - "tunnel-agent": "~0.3.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.3.0", - "hawk": "~1.0.0", - "aws-sign2": "~0.5.0" - }, - "optionalDependencies": { - "tough-cookie": "~0.9.15", - "form-data": "~0.1.0", - "tunnel-agent": "~0.3.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.3.0", - "hawk": "~1.0.0", - "aws-sign2": "~0.5.0" - }, - "scripts": { - "test": "node tests/run.js" - }, - "readme": "# Request -- Simplified HTTP client\n\n[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/)\n\n## Super simple to use\n\nRequest is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.\n\n```javascript\nvar request = require('request');\nrequest('http://www.google.com', function (error, response, body) {\n if (!error && response.statusCode == 200) {\n console.log(body) // Print the google web page.\n }\n})\n```\n\n## Streaming\n\nYou can stream any response to a file stream.\n\n```javascript\nrequest('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))\n```\n\nYou can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one).\n\n```javascript\nfs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))\n```\n\nRequest can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers.\n\n```javascript\nrequest.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))\n```\n\nNow let’s get fancy.\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n if (req.method === 'PUT') {\n req.pipe(request.put('http://mysite.com/doodle.png'))\n } else if (req.method === 'GET' || req.method === 'HEAD') {\n request.get('http://mysite.com/doodle.png').pipe(resp)\n }\n }\n})\n```\n\nYou can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do:\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n var x = request('http://mysite.com/doodle.png')\n req.pipe(x)\n x.pipe(resp)\n }\n})\n```\n\nAnd since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :)\n\n```javascript\nreq.pipe(request('http://mysite.com/doodle.png')).pipe(resp)\n```\n\nAlso, none of this new functionality conflicts with requests previous features, it just expands them.\n\n```javascript\nvar r = request.defaults({'proxy':'http://localproxy.com'})\n\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n r.get('http://google.com/doodle.png').pipe(resp)\n }\n})\n```\n\nYou can still use intermediate proxies, the requests will still follow HTTP forwards, etc.\n\n## Forms\n\n`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API.\n\nURL-encoded forms are simple.\n\n```javascript\nrequest.post('http://service.com/upload', {form:{key:'value'}})\n// or\nrequest.post('http://service.com/upload').form({key:'value'})\n```\n\nFor `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you.\n\n```javascript\nvar r = request.post('http://service.com/upload')\nvar form = r.form()\nform.append('my_field', 'my_value')\nform.append('my_buffer', new Buffer([1, 2, 3]))\nform.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png'))\nform.append('remote_file', request('http://google.com/doodle.png'))\n```\n\n## HTTP Authentication\n\n```javascript\nrequest.get('http://some.server.com/').auth('username', 'password', false);\n// or\nrequest.get('http://some.server.com/', {\n 'auth': {\n 'user': 'username',\n 'pass': 'password',\n 'sendImmediately': false\n }\n});\n```\n\nIf passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`.\n\n`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method).\n\nDigest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail.\n\n## OAuth Signing\n\n```javascript\n// Twitter OAuth\nvar qs = require('querystring')\n , oauth =\n { callback: 'http://mysite.com/callback/'\n , consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n }\n , url = 'https://api.twitter.com/oauth/request_token'\n ;\nrequest.post({url:url, oauth:oauth}, function (e, r, body) {\n // Ideally, you would take the body in the response\n // and construct a URL that a user clicks on (like a sign in button).\n // The verifier is only available in the response after a user has\n // verified with twitter that they are authorizing your app.\n var access_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: access_token.oauth_token\n , verifier: access_token.oauth_verifier\n }\n , url = 'https://api.twitter.com/oauth/access_token'\n ;\n request.post({url:url, oauth:oauth}, function (e, r, body) {\n var perm_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: perm_token.oauth_token\n , token_secret: perm_token.oauth_token_secret\n }\n , url = 'https://api.twitter.com/1.1/users/show.json?'\n , params =\n { screen_name: perm_token.screen_name\n , user_id: perm_token.user_id\n }\n ;\n url += qs.stringify(params)\n request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {\n console.log(user)\n })\n })\n})\n```\n\n### Custom HTTP Headers\n\nHTTP Headers, such as `User-Agent`, can be set in the `options` object.\nIn the example below, we call the github API to find out the number\nof stars and forks for the request repository. This requires a\ncustom `User-Agent` header as well as https.\n\n```javascript\nvar request = require('request');\n\nvar options = {\n\turl: 'https://api.github.com/repos/mikeal/request',\n\theaders: {\n\t\t'User-Agent': 'request'\n\t}\n};\n\nfunction callback(error, response, body) {\n\tif (!error && response.statusCode == 200) {\n\t\tvar info = JSON.parse(body);\n\t\tconsole.log(info.stargazers_count + \" Stars\");\n\t\tconsole.log(info.forks_count + \" Forks\");\n\t}\n}\n\nrequest(options, callback);\n```\n\n### request(options, callback)\n\nThe first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional.\n\n* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()`\n* `qs` - object containing querystring values to be appended to the `uri`\n* `method` - http method (default: `\"GET\"`)\n* `headers` - http headers (default: `{}`)\n* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`.\n* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request).\n* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above.\n* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON.\n* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below.\n* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`)\n* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`)\n* `maxRedirects` - the maximum number of redirects to follow (default: `10`)\n* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`.\n* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node's default `maxSockets`)\n* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.\n* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request\n* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`)\n* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above.\n* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).\n* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option.\n* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section)\n* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services)\n* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options.\n* `localAddress` - Local interface to bind for network connections.\n\n\nThe callback argument gets 3 arguments: \n\n1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object)\n2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object\n3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied)\n\n## Convenience methods\n\nThere are also shorthand methods for different HTTP METHODs and some other conveniences.\n\n### request.defaults(options)\n\nThis method returns a wrapper around the normal request API that defaults to whatever options you pass in to it.\n\n### request.put\n\nSame as `request()`, but defaults to `method: \"PUT\"`.\n\n```javascript\nrequest.put(url)\n```\n\n### request.patch\n\nSame as `request()`, but defaults to `method: \"PATCH\"`.\n\n```javascript\nrequest.patch(url)\n```\n\n### request.post\n\nSame as `request()`, but defaults to `method: \"POST\"`.\n\n```javascript\nrequest.post(url)\n```\n\n### request.head\n\nSame as request() but defaults to `method: \"HEAD\"`.\n\n```javascript\nrequest.head(url)\n```\n\n### request.del\n\nSame as `request()`, but defaults to `method: \"DELETE\"`.\n\n```javascript\nrequest.del(url)\n```\n\n### request.get\n\nSame as `request()` (for uniformity).\n\n```javascript\nrequest.get(url)\n```\n### request.cookie\n\nFunction that creates a new cookie.\n\n```javascript\nrequest.cookie('cookie_string_here')\n```\n### request.jar\n\nFunction that creates a new cookie jar.\n\n```javascript\nrequest.jar()\n```\n\n\n## Examples:\n\n```javascript\n var request = require('request')\n , rand = Math.floor(Math.random()*100000000).toString()\n ;\n request(\n { method: 'PUT'\n , uri: 'http://mikeal.iriscouch.com/testjs/' + rand\n , multipart:\n [ { 'content-type': 'application/json'\n , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})\n }\n , { body: 'I am an attachment' }\n ]\n }\n , function (error, response, body) {\n if(response.statusCode == 201){\n console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)\n } else {\n console.log('error: '+ response.statusCode)\n console.log(body)\n }\n }\n )\n```\n\nCookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`).\n\n```javascript\nvar request = request.defaults({jar: true})\nrequest('http://www.google.com', function () {\n request('http://images.google.com')\n})\n```\n\nTo use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`)\n\n```javascript\nvar j = request.jar()\nvar request = request.defaults({jar:j})\nrequest('http://www.google.com', function () {\n request('http://images.google.com')\n})\n```\nOR\n\nNote that `setCookie` requires at least three parameters, and the last is required to be a callback.\n\n```javascript\nvar j = request.jar()\nvar cookie = request.cookie('your_cookie_here')\nj.setCookie(cookie, uri, function (err, cookie){})\nrequest({url: 'http://www.google.com', jar: j}, function () {\n request('http://images.google.com')\n})\n```\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/mikeal/request", - "_id": "request@2.31.0", - "_from": "request@~2.31.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js deleted file mode 100644 index 3c03c47d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js +++ /dev/null @@ -1,1260 +0,0 @@ -var optional = require('./lib/optional') - , http = require('http') - , https = optional('https') - , tls = optional('tls') - , url = require('url') - , util = require('util') - , stream = require('stream') - , qs = require('qs') - , querystring = require('querystring') - , crypto = require('crypto') - - , oauth = optional('oauth-sign') - , hawk = optional('hawk') - , aws = optional('aws-sign') - , httpSignature = optional('http-signature') - , uuid = require('node-uuid') - , mime = require('mime') - , tunnel = optional('tunnel-agent') - , _safeStringify = require('json-stringify-safe') - - , ForeverAgent = require('forever-agent') - , FormData = optional('form-data') - - , Cookie = optional('tough-cookie') - , CookieJar = Cookie && Cookie.CookieJar - , cookieJar = CookieJar && new CookieJar - - , copy = require('./lib/copy') - , debug = require('./lib/debug') - , getSafe = require('./lib/getSafe') - ; - -function safeStringify (obj) { - var ret - try { ret = JSON.stringify(obj) } - catch (e) { ret = _safeStringify(obj) } - return ret -} - -var globalPool = {} -var isUrl = /^https?:/i - - -// Hacky fix for pre-0.4.4 https -if (https && !https.Agent) { - https.Agent = function (options) { - http.Agent.call(this, options) - } - util.inherits(https.Agent, http.Agent) - https.Agent.prototype._getConnection = function (host, port, cb) { - var s = tls.connect(port, host, this.options, function () { - // do other checks here? - if (cb) cb() - }) - return s - } -} - -function isReadStream (rs) { - if (rs.readable && rs.path && rs.mode) { - return true - } -} - -function toBase64 (str) { - return (new Buffer(str || "", "ascii")).toString("base64") -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function Request (options) { - stream.Stream.call(this) - this.readable = true - this.writable = true - - if (typeof options === 'string') { - options = {uri:options} - } - - var reserved = Object.keys(Request.prototype) - for (var i in options) { - if (reserved.indexOf(i) === -1) { - this[i] = options[i] - } else { - if (typeof options[i] === 'function') { - delete options[i] - } - } - } - - if (options.method) { - this.explicitMethod = true - } - - this.canTunnel = options.tunnel !== false && tunnel; - - this.init(options) -} -util.inherits(Request, stream.Stream) -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) options = {} - - if (!self.method) self.method = options.method || 'GET' - self.localAddress = options.localAddress - - debug(options) - if (!self.pool && self.pool !== false) self.pool = globalPool - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) return // Print a warning maybe? - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - if (self.url && !self.uri) { - // People use this property instead all the time so why not just support it. - self.uri = self.url - delete self.url - } - - if (!self.uri) { - // this will throw if unhandled but is handleable when in a redirect - return self.emit('error', new Error("options.uri is a required argument")) - } else { - if (typeof self.uri == "string") self.uri = url.parse(self.uri) - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (self.proxy) { - if (typeof self.proxy == 'string') self.proxy = url.parse(self.proxy) - - // do the HTTP CONNECT dance using koichik/node-tunnel - if (http.globalAgent && self.uri.protocol === "https:" && self.canTunnel) { - var tunnelFn = self.proxy.protocol === "http:" - ? tunnel.httpsOverHttp : tunnel.httpsOverHttps - - var tunnelOptions = { proxy: { host: self.proxy.hostname - , port: +self.proxy.port - , proxyAuth: self.proxy.auth - , headers: { Host: self.uri.hostname + ':' + - (self.uri.port || self.uri.protocol === 'https:' ? 443 : 80) }} - , rejectUnauthorized: self.rejectUnauthorized - , ca: this.ca } - - self.agent = tunnelFn(tunnelOptions) - self.tunnel = true - } - } - - if (!self.uri.pathname) {self.uri.pathname = '/'} - - if (!self.uri.host) { - // Invalid URI: it may generate lot of bad errors, like "TypeError: Cannot call method 'indexOf' of undefined" in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - self.emit('error', new Error(message)) - return // This error was fatal - } - - self._redirectsFollowed = self._redirectsFollowed || 0 - self.maxRedirects = (self.maxRedirects !== undefined) ? self.maxRedirects : 10 - self.followRedirect = (self.followRedirect !== undefined) ? self.followRedirect : true - self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false - if (self.followRedirect || self.followAllRedirects) - self.redirects = self.redirects || [] - - self.headers = self.headers ? copy(self.headers) : {} - - self.setHost = false - if (!self.hasHeader('host')) { - self.setHeader('host', self.uri.hostname) - if (self.uri.port) { - if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') && - !(self.uri.port === 443 && self.uri.protocol === 'https:') ) - self.setHeader('host', self.getHeader('host') + (':'+self.uri.port) ) - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol == 'http:') {self.uri.port = 80} - else if (self.uri.protocol == 'https:') {self.uri.port = 443} - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - self.clientErrorHandler = function (error) { - if (self._aborted) return - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' - && self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) - } - - self._parserErrorHandler = function (error) { - if (this.res) { - if (this.res.request) { - this.res.request.emit('error', error) - } else { - this.res.emit('error', error) - } - } else { - this._httpMessage.emit('error', error) - } - } - - if (options.form) { - self.form(options.form) - } - - if (options.qs) self.qs(options.qs) - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || "") - } - - if (self.path.length === 0) self.path = '/' - - - // Auth must happen last in case signing is dependent on other headers - if (options.oauth) { - self.oauth(options.oauth) - } - - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) options.auth.user = options.auth.username - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) options.auth.pass = options.auth.password - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately - ) - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var authPieces = self.uri.auth.split(':').map(function(item){ return querystring.unescape(item) }) - self.auth(authPieces[0], authPieces.slice(1).join(':'), true) - } - if (self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization') && !self.tunnel) { - self.setHeader('proxy-authorization', "Basic " + toBase64(self.proxy.auth.split(':').map(function(item){ return querystring.unescape(item)}).join(':'))) - } - - - if (self.proxy && !self.tunnel) self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - - if (options.json) { - self.json(options.json) - } else if (options.multipart) { - self.boundary = uuid() - self.multipart(options.multipart) - } - - if (self.body) { - var length = 0 - if (!Buffer.isBuffer(self.body)) { - if (Array.isArray(self.body)) { - for (var i = 0; i < self.body.length; i++) { - length += self.body[i].length - } - } else { - self.body = new Buffer(self.body) - length = self.body.length - } - } else { - length = self.body.length - } - if (length) { - if (!self.hasHeader('content-length')) self.setHeader('content-length', length) - } else { - throw new Error('Argument error, options.body.') - } - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - , defaultModules = {'http:':http, 'https:':https} - , httpModules = self.httpModules || {} - ; - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) return this.emit('error', new Error("Invalid protocol")) - - if (options.ca) self.ca = options.ca - - if (!self.agent) { - if (options.agentOptions) self.agentOptions = options.agentOptions - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getAgent() - if (self.maxSockets) { - // Don't use our pooling if node has the refactored client - self.agent.maxSockets = self.maxSockets - } - if (self.pool.maxSockets) { - // Don't use our pooling if node has the refactored client - self.agent.maxSockets = self.pool.maxSockets - } - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) throw new Error("You cannot pipe to this stream after the outbound request has started.") - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) self.setHeader('content-type', mime.lookup(src.path)) - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) - self.setHeader('content-type', 'application/json') - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error("You have already piped to this stream. Pipeing twice is likely to break the request.") - // }) - }) - - process.nextTick(function () { - if (self._aborted) return - - if (self._form) { - self.setHeaders(self._form.getHeaders()) - self._form.pipe(self) - } - if (self.body) { - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } else if (self.requestBodyStream) { - console.warn("options.requestBodyStream is deprecated, please pass the request object to stream.pipe.") - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - self.ntick = true - }) -} - -// Must call this when following a redirect from https to http or vice versa -// Attempts to keep everything as identical as possible, but update the -// httpModule, Tunneling agent, and/or Forever Agent in use. -Request.prototype._updateProtocol = function () { - var self = this - var protocol = self.uri.protocol - - if (protocol === 'https:') { - // previously was doing http, now doing https - // if it's https, then we might need to tunnel now. - if (self.proxy && self.canTunnel) { - self.tunnel = true - var tunnelFn = self.proxy.protocol === 'http:' - ? tunnel.httpsOverHttp : tunnel.httpsOverHttps - var tunnelOptions = { proxy: { host: self.proxy.hostname - , port: +self.proxy.port - , proxyAuth: self.proxy.auth } - , rejectUnauthorized: self.rejectUnauthorized - , ca: self.ca } - self.agent = tunnelFn(tunnelOptions) - return - } - - self.httpModule = https - switch (self.agentClass) { - case ForeverAgent: - self.agentClass = ForeverAgent.SSL - break - case http.Agent: - self.agentClass = https.Agent - break - default: - // nothing we can do. Just hope for the best. - return - } - - // if there's an agent, we need to get a new one. - if (self.agent) self.agent = self.getAgent() - - } else { - // previously was doing https, now doing http - // stop any tunneling. - if (self.tunnel) self.tunnel = false - self.httpModule = http - switch (self.agentClass) { - case ForeverAgent.SSL: - self.agentClass = ForeverAgent - break - case https.Agent: - self.agentClass = http.Agent - break - default: - // nothing we can do. just hope for the best - return - } - - // if there's an agent, then get a new one. - if (self.agent) { - self.agent = null - self.agent = self.getAgent() - } - } -} - -Request.prototype.getAgent = function () { - var Agent = this.agentClass - var options = {} - if (this.agentOptions) { - for (var i in this.agentOptions) { - options[i] = this.agentOptions[i] - } - } - if (this.ca) options.ca = this.ca - if (this.ciphers) options.ciphers = this.ciphers - if (this.secureProtocol) options.secureProtocol = this.secureProtocol - if (typeof this.rejectUnauthorized !== 'undefined') options.rejectUnauthorized = this.rejectUnauthorized - - if (this.cert && this.key) { - options.key = this.key - options.cert = this.cert - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== this.httpModule.Agent) { - poolKey += Agent.name - } - - if (!this.httpModule.globalAgent) { - // node 0.4.x - options.host = this.host - options.port = this.port - if (poolKey) poolKey += ':' - poolKey += this.host + ':' + this.port - } - - // ca option is only relevant if proxy or destination are https - var proxy = this.proxy - if (typeof proxy === 'string') proxy = url.parse(proxy) - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - if (isHttps) { - if (options.ca) { - if (poolKey) poolKey += ':' - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) poolKey += ':' - poolKey += options.rejectUnauthorized - } - - if (options.cert) - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - - if (options.ciphers) { - if (poolKey) poolKey += ':' - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) poolKey += ':' - poolKey += options.secureProtocol - } - } - - if (this.pool === globalPool && !poolKey && Object.keys(options).length === 0 && this.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return this.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = this.uri.protocol + poolKey - - // already generated an agent for this setting - if (this.pool[poolKey]) return this.pool[poolKey] - - return this.pool[poolKey] = new Agent(options) -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self._aborted) return - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - self.req = self.httpModule.request(reqOptions, self.onResponse.bind(self)) - - if (self.timeout && !self.timeoutTimer) { - self.timeoutTimer = setTimeout(function () { - self.req.abort() - var e = new Error("ETIMEDOUT") - e.code = "ETIMEDOUT" - self.emit("error", e) - }, self.timeout) - - // Set additional timeout on socket - in case if remote - // server freeze after sending headers - if (self.req.setTimeout) { // only works on node 0.6+ - self.req.setTimeout(self.timeout, function () { - if (self.req) { - self.req.abort() - var e = new Error("ESOCKETTIMEDOUT") - e.code = "ESOCKETTIMEDOUT" - self.emit("error", e) - } - }) - } - } - - self.req.on('error', self.clientErrorHandler) - self.req.on('drain', function() { - self.emit('drain') - }) - self.on('end', function() { - if ( self.req.connection ) self.req.connection.removeListener('error', self._parserErrorHandler) - }) - self.emit('request', self.req) -} -Request.prototype.onResponse = function (response) { - var self = this - debug('onResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function() { - debug('response end', self.uri.href, response.statusCode, response.headers) - }); - - if (response.connection.listeners('error').indexOf(self._parserErrorHandler) === -1) { - response.connection.once('error', self._parserErrorHandler) - } - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - if (self._paused) response.pause() - else response.resume() - - self.response = response - response.request = self - response.toJSON = toJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && - !response.client.authorized) { - debug('strict ssl error', self.uri.href) - var sslErr = response.client.authorizationError - self.emit('error', new Error('SSL Error: '+ sslErr)) - return - } - - if (self.setHost && self.hasHeader('host')) delete self.headers[self.hasHeader('host')] - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var addCookie = function (cookie) { - if (self._jar){ - var targetCookieJar = self._jar.setCookie?self._jar:cookieJar; - - //set the cookie if it's domain in the href's domain. - targetCookieJar.setCookie(cookie, self.uri.href, function(err){ - if (err){ - console.warn('set cookie failed,'+ err) - } - }) - } - - } - - if (hasHeader('set-cookie', response.headers) && (!self._disableCookies)) { - var headerName = hasHeader('set-cookie', response.headers) - if (Array.isArray(response.headers[headerName])) response.headers[headerName].forEach(addCookie) - else addCookie(response.headers[headerName]) - } - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && hasHeader('location', response.headers)) { - var location = response.headers[hasHeader('location', response.headers)] - debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirect) { - switch (self.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode == 401 && self._hasAuth && !self._sentAuth) { - var authHeader = response.headers[hasHeader('www-authenticate', response.headers)] - var authVerb = authHeader && authHeader.split(' ')[0] - debug('reauth', authVerb) - - switch (authVerb) { - case 'Basic': - self.auth(self._user, self._pass, true) - redirectTo = self.uri - break - - case 'Digest': - // TODO: More complete implementation of RFC 2617. - // - check challenge.algorithm - // - support algorithm="MD5-sess" - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) break - challenge[match[1]] = match[2] || match[3]; - } - - var ha1 = md5(self._user + ':' + challenge.realm + ':' + self._pass) - var ha2 = md5(self.method + ':' + self.uri.path) - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var digestResponse = qop ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self._user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: self.uri.path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (!authValues[k]) { - //ignore - } else if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.setHeader('authorization', authHeader) - self._sentAuth = true - - redirectTo = self.uri - break - } - } - - if (redirectTo) { - debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - if (self._paused) response.resume() - - if (self._redirectsFollowed >= self.maxRedirects) { - self.emit('error', new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+self.uri.href)) - return - } - self._redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(self.uri.href, redirectTo) - } - - var uriPrev = self.uri - self.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (self.uri.protocol !== uriPrev.protocol) { - self._updateProtocol() - } - - self.redirects.push( - { statusCode : response.statusCode - , redirectUri: redirectTo - } - ) - if (self.followAllRedirects && response.statusCode != 401) self.method = 'GET' - // self.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete self.src - delete self.req - delete self.agent - delete self._started - if (response.statusCode != 401) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete self.body - delete self._form - if (self.headers) { - if (self.hasHeader('host')) delete self.headers[self.hasHeader('host')] - if (self.hasHeader('content-type')) delete self.headers[self.hasHeader('content-type')] - if (self.hasHeader('content-length')) delete self.headers[self.hasHeader('content-length')] - } - } - - self.emit('redirect'); - - self.init() - return // Ignore the rest of the response - } else { - self._redirectsFollowed = self._redirectsFollowed || 0 - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) self.response.emit('end') - }) - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.") - } else { - response.setEncoding(self.encoding) - } - } - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - response.on("data", function (chunk) { - self._destdata = true - self.emit("data", chunk) - }) - response.on("end", function (chunk) { - self._ended = true - self.emit("end", chunk) - }) - response.on("close", function () {self.emit("close")}) - - if (self.callback) { - var buffer = [] - var bodyLen = 0 - self.on("data", function (chunk) { - buffer.push(chunk) - bodyLen += chunk.length - }) - self.on("end", function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - - if (buffer.length && Buffer.isBuffer(buffer[0])) { - debug('has body', self.uri.href, bodyLen) - var body = new Buffer(bodyLen) - var i = 0 - buffer.forEach(function (chunk) { - chunk.copy(body, i, 0, chunk.length) - i += chunk.length - }) - if (self.encoding === null) { - response.body = body - } else { - response.body = body.toString(self.encoding) - } - } else if (buffer.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && buffer[0].length > 0 && buffer[0][0] === "\uFEFF") { - buffer[0] = buffer[0].substring(1) - } - response.body = buffer.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body) - } catch (e) {} - } - debug('emitting complete', self.uri.href) - if(response.body == undefined && !self._json) { - response.body = ""; - } - self.emit('complete', response, response.body) - }) - } - //if no callback - else{ - self.on("end", function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response); - }); - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.abort = function () { - this._aborted = true - - if (this.req) { - this.req.abort() - } - else if (this.response) { - this.response.abort() - } - - this.emit("abort") -} - -Request.prototype.pipeDest = function (dest) { - var response = this.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (hasHeader('content-type', response.headers)) { - var ctname = hasHeader('content-type', response.headers) - if (dest.setHeader) dest.setHeader(ctname, response.headers[ctname]) - else dest.headers[ctname] = response.headers[ctname] - } - - if (hasHeader('content-length', response.headers)) { - var clname = hasHeader('content-length', response.headers) - if (dest.setHeader) dest.setHeader(clname, response.headers[clname]) - else dest.headers[clname] = response.headers[clname] - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - dest.setHeader(i, response.headers[i]) - } - dest.statusCode = response.statusCode - } - if (this.pipefilter) this.pipefilter(response, dest) -} - -// Composable API -Request.prototype.setHeader = function (name, value, clobber) { - if (clobber === undefined) clobber = true - if (clobber || !this.hasHeader(name)) this.headers[name] = value - else this.headers[this.hasHeader(name)] += ',' + value - return this -} -Request.prototype.setHeaders = function (headers) { - for (var i in headers) {this.setHeader(i, headers[i])} - return this -} -Request.prototype.hasHeader = function (header, headers) { - var headers = Object.keys(headers || this.headers) - , lheaders = headers.map(function (h) {return h.toLowerCase()}) - ; - header = header.toLowerCase() - for (var i=0;i<lheaders.length;i++) { - if (lheaders[i] === header) return headers[i] - } - return false -} - -var hasHeader = Request.prototype.hasHeader - -Request.prototype.qs = function (q, clobber) { - var base - if (!clobber && this.uri.query) base = qs.parse(this.uri.query) - else base = {} - - for (var i in q) { - base[i] = q[i] - } - - if (qs.stringify(base) === ''){ - return this - } - - this.uri = url.parse(this.uri.href.split('?')[0] + '?' + qs.stringify(base)) - this.url = this.uri - this.path = this.uri.path - - return this -} -Request.prototype.form = function (form) { - if (form) { - this.setHeader('content-type', 'application/x-www-form-urlencoded; charset=utf-8') - this.body = qs.stringify(form).toString('utf8') - return this - } - // create form-data object - this._form = new FormData() - return this._form -} -Request.prototype.multipart = function (multipart) { - var self = this - self.body = [] - - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - var headerName = self.hasHeader('content-type'); - self.setHeader(headerName, self.headers[headerName].split(';')[0] + '; boundary=' + self.boundary) - } - - if (!multipart.forEach) throw new Error('Argument error, options.multipart.') - - if (self.preambleCRLF) { - self.body.push(new Buffer('\r\n')) - } - - multipart.forEach(function (part) { - var body = part.body - if(body == null) throw Error('Body attribute missing in multipart.') - delete part.body - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - self.body.push(new Buffer(preamble)) - self.body.push(new Buffer(body)) - self.body.push(new Buffer('\r\n')) - }) - self.body.push(new Buffer('--' + self.boundary + '--')) - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) self.setHeader('accept', 'application/json') - - this._json = true - if (typeof val === 'boolean') { - if (typeof this.body === 'object') { - this.body = safeStringify(this.body) - self.setHeader('content-type', 'application/json') - } - } else { - this.body = safeStringify(val) - self.setHeader('content-type', 'application/json') - } - return this -} -Request.prototype.getHeader = function (name, headers) { - var result, re, match - if (!headers) headers = this.headers - Object.keys(headers).forEach(function (key) { - re = new RegExp(name, 'i') - match = key.match(re) - if (match) result = headers[key] - }) - return result -} -var getHeader = Request.prototype.getHeader - -Request.prototype.auth = function (user, pass, sendImmediately) { - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - throw new Error('auth() received invalid user or password') - } - this._user = user - this._pass = pass - this._hasAuth = true - var header = typeof pass !== 'undefined' ? user + ':' + pass : user - if (sendImmediately || typeof sendImmediately == 'undefined') { - this.setHeader('authorization', 'Basic ' + toBase64(header)) - this._sentAuth = true - } - return this -} -Request.prototype.aws = function (opts, now) { - if (!now) { - this._aws = opts - return this - } - var date = new Date() - this.setHeader('date', date.toUTCString()) - var auth = - { key: opts.key - , secret: opts.secret - , verb: this.method.toUpperCase() - , date: date - , contentType: this.getHeader('content-type') || '' - , md5: this.getHeader('content-md5') || '' - , amazonHeaders: aws.canonicalizeHeaders(this.headers) - } - if (opts.bucket && this.path) { - auth.resource = '/' + opts.bucket + this.path - } else if (opts.bucket && !this.path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && this.path) { - auth.resource = this.path - } else if (!opts.bucket && !this.path) { - auth.resource = '/' - } - auth.resource = aws.canonicalizeResource(auth.resource) - this.setHeader('authorization', aws.authorization(auth)) - - return this -} -Request.prototype.httpSignature = function (opts) { - var req = this - httpSignature.signRequest({ - getHeader: function(header) { - return getHeader(header, req.headers) - }, - setHeader: function(header, value) { - req.setHeader(header, value) - }, - method: this.method, - path: this.path - }, opts) - debug('httpSignature authorization', this.getHeader('authorization')) - - return this -} - -Request.prototype.hawk = function (opts) { - this.setHeader('Authorization', hawk.client.header(this.uri, this.method, opts).field) -} - -Request.prototype.oauth = function (_oauth) { - var form - if (this.hasHeader('content-type') && - this.getHeader('content-type').slice(0, 'application/x-www-form-urlencoded'.length) === - 'application/x-www-form-urlencoded' - ) { - form = qs.parse(this.body) - } - if (this.uri.query) { - form = qs.parse(this.uri.query) - } - if (!form) form = {} - var oa = {} - for (var i in form) oa[i] = form[i] - for (var i in _oauth) oa['oauth_'+i] = _oauth[i] - if (!oa.oauth_version) oa.oauth_version = '1.0' - if (!oa.oauth_timestamp) oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() - if (!oa.oauth_nonce) oa.oauth_nonce = uuid().replace(/-/g, '') - - oa.oauth_signature_method = 'HMAC-SHA1' - - var consumer_secret = oa.oauth_consumer_secret - delete oa.oauth_consumer_secret - var token_secret = oa.oauth_token_secret - delete oa.oauth_token_secret - var timestamp = oa.oauth_timestamp - - var baseurl = this.uri.protocol + '//' + this.uri.host + this.uri.pathname - var signature = oauth.hmacsign(this.method, baseurl, oa, consumer_secret, token_secret) - - // oa.oauth_signature = signature - for (var i in form) { - if ( i.slice(0, 'oauth_') in _oauth) { - // skip - } else { - delete oa['oauth_'+i] - if (i !== 'x_auth_mode') delete oa[i] - } - } - oa.oauth_timestamp = timestamp - var authHeader = 'OAuth '+Object.keys(oa).sort().map(function (i) {return i+'="'+oauth.rfc3986(oa[i])+'"'}).join(',') - authHeader += ',oauth_signature="' + oauth.rfc3986(signature) + '"' - this.setHeader('Authorization', authHeader) - return this -} -Request.prototype.jar = function (jar) { - var cookies - - if (this._redirectsFollowed === 0) { - this.originalCookieHeader = this.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - this._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString)?jar:cookieJar; - var urihref = this.uri.href - - //fetch cookie in the Specified host - targetCookieJar.getCookieString(urihref, function(err, hrefCookie){ - if (err){ - console.warn('get cookieString failed,' +err) - } else { - cookies = hrefCookie - } - }) - - } - - //if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (this.originalCookieHeader) { - // Don't overwrite existing Cookie header - this.setHeader('cookie', this.originalCookieHeader + '; ' + cookies) - } else { - this.setHeader('cookie', cookies) - } - } - this._jar = jar - return this -} - - -// Stream API -Request.prototype.pipe = function (dest, opts) { - if (this.response) { - if (this._destdata) { - throw new Error("You cannot pipe after data has been emitted from the response.") - } else if (this._ended) { - throw new Error("You cannot pipe after the response has been ended.") - } else { - stream.Stream.prototype.pipe.call(this, dest, opts) - this.pipeDest(dest) - return dest - } - } else { - this.dests.push(dest) - stream.Stream.prototype.pipe.call(this, dest, opts) - return dest - } -} -Request.prototype.write = function () { - if (!this._started) this.start() - return this.req.write.apply(this.req, arguments) -} -Request.prototype.end = function (chunk) { - if (chunk) this.write(chunk) - if (!this._started) this.start() - this.req.end() -} -Request.prototype.pause = function () { - if (!this.response) this._paused = true - else this.response.pause.apply(this.response, arguments) -} -Request.prototype.resume = function () { - if (!this.response) this._paused = false - else this.response.resume.apply(this.response, arguments) -} -Request.prototype.destroy = function () { - if (!this._ended) this.end() - else if (this.response) this.response.destroy() -} - -function toJSON () { - return getSafe(this, '__' + (((1+Math.random())*0x10000)|0).toString(16)) -} - -Request.prototype.toJSON = toJSON - - -module.exports = Request diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc deleted file mode 100644 index c8ef3ca4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ ] - , "bitwise": false - , "camelcase": false - , "curly": false - , "eqeqeq": false - , "forin": false - , "immed": false - , "latedef": false - , "noarg": true - , "noempty": true - , "nonew": true - , "plusplus": false - , "quotmark": true - , "regexp": false - , "undef": true - , "unused": true - , "strict": false - , "trailing": true - , "maxlen": 120 - , "asi": true - , "boss": true - , "debug": true - , "eqnull": true - , "esnext": true - , "evil": true - , "expr": true - , "funcscope": false - , "globalstrict": false - , "iterator": false - , "lastsemic": true - , "laxbreak": true - , "laxcomma": true - , "loopfunc": true - , "multistr": false - , "onecase": false - , "proto": false - , "regexdash": false - , "scripturl": true - , "smarttabs": false - , "shadow": false - , "sub": true - , "supernew": false - , "validthis": true - , "browser": true - , "couch": false - , "devel": false - , "dojo": false - , "mootools": false - , "node": true - , "nonstandard": true - , "prototypejs": false - , "rhino": false - , "worker": true - , "wsh": false - , "nomen": false - , "onevar": false - , "passfail": false -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml deleted file mode 100644 index 12b1a310..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: node_js -node_js: -- '0.8' -- '0.10' -- '0.11' -branches: - only: - - master -notifications: - email: - - rod@vagg.org -script: npm test -env: - global: - - SAUCE_USER=through2-sauce - - secure: A8KyygIlklZOcTwTGhZHpkOu7Cn4tI1QQasg75CTSjudczGzkuh1pG2RDIkWqGcrWv9o5CjI6fFYYx0JvQu8o5PO+ZAtV1Z0AlnM965vE8kAx0XEC7giAV323bibfnHwyQu74vIhbOfdes7E4/cYerV2kAjK0T375D4DYEpDuvw= - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs License - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md deleted file mode 100644 index c9388b38..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# through2 - -<!-- - -soon ... - -[![Build Status](https://secure.travis-ci.org/rvagg/through2.png)](http://travis-ci.org/rvagg/through2) - -[![Build Status](https://saucelabs.com/browser-matrix/through2-sauce.svg)](https://travis-ci.org/rvagg/through2) - ---> - -[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) - -<!-- -not happy with these, we need to peg to readable-stream@1.0.x so it'll always report out-of-date - -[![david-dm](https://david-dm.org/rvagg/through2.png)](https://david-dm.org/rvagg/through2/) -[![david-dm](https://david-dm.org/rvagg/through2/dev-status.png)](https://david-dm.org/rvagg/through2#info=devDependencies/) ---> - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - - this.push(data) - - callback() - - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b> - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) { - - this.push(new Buffer('wut?')) - cb() - - }) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -If you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b> - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md deleted file mode 100644 index 34c11897..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index a2e0d8e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; -var util = require('util'); -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -Object.keys(Writable.prototype).forEach(function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 330c247d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); -var util = require('util'); -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 9a57f147..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,928 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -module.exports = Readable; -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -var Stream = require('stream'); -var util = require('util'); -var Buffer = require('buffer').Buffer; -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || n === null) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode && - !er) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (Array.isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - state.pipes.forEach(write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = state.pipes.indexOf(dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - if (!chunk || !state.objectMode && !chunk.length) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - events.forEach(function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 707e4b3b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); -var util = require('util'); -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 32fbab77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,378 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; -Writable.WritableState = WritableState; - -var util = require('util'); -var Buffer = require('buffer').Buffer; -var assert = require('assert'); -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320cc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa001..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index 2e44a03e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; -}; - - -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; - - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; - - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; - } - - var lenIncomplete = this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - - return i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} - -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 7f5d0011..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.25-1", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.25-1", - "_from": "string_decoder@~0.10.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json deleted file mode 100644 index 6e20ea26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.26-2", - "description": "An exploration of a new kind of readable streams for Node.js", - "main": "readable.js", - "dependencies": { - "string_decoder": "~0.10.x" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# readable-stream\n\n***Node-core streams for userland***\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/)\n\nThis package is a mirror of the Streams2 and Streams3 implementations in Node-core.\n\nIf you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core.\n\n**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.\n\n**readable-stream** uses proper patch-level versioning so if you pin to `\"~1.0.0\"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `\"~1.1.0\"`\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.26-2", - "_from": "readable-stream@~1.0.17" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js deleted file mode 100644 index 4d1ddfc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,6 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile deleted file mode 100644 index d583fcf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -browser: - node ./support/compile - -.PHONY: browser \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md deleted file mode 100644 index 389adae3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# xtend - -[![browser support][3]][4] - -Extend like a boss - -xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence. - -## Examples - -```js -var extend = require("xtend") - -var combination = extend({ - a: "a" -}, { - b: "b" -}) -// { a: "a", b: "b" } -``` - - -## MIT Licenced - - - [3]: http://ci.testling.com/Raynos/xtend.png - [4]: http://ci.testling.com/Raynos/xtend diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js deleted file mode 100644 index 62391e78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = hasKeys - -function hasKeys(source) { - return source !== null && - (typeof source === "object" || - typeof source === "function") -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js deleted file mode 100644 index 20937d19..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js deleted file mode 100644 index 17454ae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend(target) { - var sources = [].slice.call(arguments, 1) - - for (var i = 0; i < sources.length; i++) { - var source = sources[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml deleted file mode 100644 index 60d00ce1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md deleted file mode 100644 index ab32d0ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md +++ /dev/null @@ -1,39 +0,0 @@ -#object-keys <sup>[![Version Badge][2]][1]</sup> - -[![Build Status][3]][4] [![dependency status][5]][6] - -[![browser support][7]][8] - -An Object.keys shim. Uses Object.keys if available. - -## Example - -```js -var keys = require('object-keys'); -var assert = require('assert'); -var obj = { - a: true, - b: true, - c: true -}; - -assert.equal(keys(obj), ['a', 'b', 'c']); -``` - -## Source -Implementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]). - -## Tests -Simply clone the repo, `npm install`, and run `npm test` - -[1]: https://npmjs.org/package/object-keys -[2]: http://vb.teelaun.ch/ljharb/object-keys.svg -[3]: https://travis-ci.org/ljharb/object-keys.png -[4]: https://travis-ci.org/ljharb/object-keys -[5]: https://david-dm.org/ljharb/object-keys.png -[6]: https://david-dm.org/ljharb/object-keys -[7]: https://ci.testling.com/ljharb/object-keys.png -[8]: https://ci.testling.com/ljharb/object-keys -[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589 -[10]: https://github.com/bestiejs/lodash - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js deleted file mode 100644 index db32d458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = Object.prototype.hasOwnProperty; -var toString = Object.prototype.toString; - -var isFunction = function (fn) { - var isFunc = (typeof fn === 'function' && !(fn instanceof RegExp)) || toString.call(fn) === '[object Function]'; - if (!isFunc && typeof window !== 'undefined') { - isFunc = fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt; - } - return isFunc; -}; - -module.exports = function forEach(obj, fn) { - if (!isFunction(fn)) { - throw new TypeError('iterator must be a function'); - } - var i, k, - isString = typeof obj === 'string', - l = obj.length, - context = arguments.length > 2 ? arguments[2] : null; - if (l === +l) { - for (i = 0; i < l; i++) { - if (context === null) { - fn(isString ? obj.charAt(i) : obj[i], i, obj); - } else { - fn.call(context, isString ? obj.charAt(i) : obj[i], i, obj); - } - } - } else { - for (k in obj) { - if (hasOwn.call(obj, k)) { - if (context === null) { - fn(obj[k], k, obj); - } else { - fn.call(context, obj[k], k, obj); - } - } - } - } -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js deleted file mode 100644 index f5b24b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = Object.keys || require('./shim'); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js deleted file mode 100644 index 74a09897..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = Object.prototype.toString; - -module.exports = function isArguments(value) { - var str = toString.call(value); - var isArguments = str === '[object Arguments]'; - if (!isArguments) { - isArguments = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toString.call(value.callee) === '[object Function]'; - } - return isArguments; -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json deleted file mode 100644 index 1de9cbb3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "object-keys", - "version": "0.4.0", - "author": { - "name": "Jordan Harband" - }, - "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/kriskowal/es5-shim", - "license": "MIT", - "main": "index.js", - "scripts": { - "test": "node test/index.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/ljharb/object-keys.git" - }, - "keywords": [ - "Object.keys", - "keys", - "ES5", - "shim" - ], - "dependencies": {}, - "devDependencies": { - "foreach": "~2.0.3", - "is": "~0.2.6", - "tape": "~1.0.4", - "indexof": "~0.0.1" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "iexplore/6.0..latest", - "firefox/3.0..6.0", - "firefox/15.0..latest", - "firefox/nightly", - "chrome/4.0..10.0", - "chrome/20.0..latest", - "chrome/canary", - "opera/10.0..latest", - "opera/next", - "safari/4.0..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2" - ] - }, - "readme": "#object-keys <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4] [![dependency status][5]][6]\n\n[![browser support][7]][8]\n\nAn Object.keys shim. Uses Object.keys if available.\n\n## Example\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\nvar obj = {\n\ta: true,\n\tb: true,\n\tc: true\n};\n\nassert.equal(keys(obj), ['a', 'b', 'c']);\n```\n\n## Source\nImplementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]).\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/object-keys\n[2]: http://vb.teelaun.ch/ljharb/object-keys.svg\n[3]: https://travis-ci.org/ljharb/object-keys.png\n[4]: https://travis-ci.org/ljharb/object-keys\n[5]: https://david-dm.org/ljharb/object-keys.png\n[6]: https://david-dm.org/ljharb/object-keys\n[7]: https://ci.testling.com/ljharb/object-keys.png\n[8]: https://ci.testling.com/ljharb/object-keys\n[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589\n[10]: https://github.com/bestiejs/lodash\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ljharb/object-keys/issues" - }, - "homepage": "https://github.com/ljharb/object-keys", - "_id": "object-keys@0.4.0", - "_from": "object-keys@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js deleted file mode 100644 index b88421be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js +++ /dev/null @@ -1,62 +0,0 @@ -(function () { - "use strict"; - - // modified from https://github.com/kriskowal/es5-shim - var has = Object.prototype.hasOwnProperty, - toString = Object.prototype.toString, - forEach = require('./foreach'), - isArgs = require('./isArguments'), - hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'), - hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - keysShim; - - keysShim = function keys(object) { - var isObject = object !== null && typeof object === 'object', - isFunction = toString.call(object) === '[object Function]', - isArguments = isArgs(object), - theKeys = []; - - if (!isObject && !isFunction && !isArguments) { - throw new TypeError("Object.keys called on a non-object"); - } - - if (isArguments) { - forEach(object, function (value) { - theKeys.push(value); - }); - } else { - var name, - skipProto = hasProtoEnumBug && isFunction; - - for (name in object) { - if (!(skipProto && name === 'prototype') && has.call(object, name)) { - theKeys.push(name); - } - } - } - - if (hasDontEnumBug) { - var ctor = object.constructor, - skipConstructor = ctor && ctor.prototype === object; - - forEach(dontEnums, function (dontEnum) { - if (!(skipConstructor && dontEnum === 'constructor') && has.call(object, dontEnum)) { - theKeys.push(dontEnum); - } - }); - } - return theKeys; - }; - - module.exports = keysShim; -}()); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js deleted file mode 100644 index f29f065a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js +++ /dev/null @@ -1,156 +0,0 @@ -var test = require('tape'); -var forEach = require('../foreach.js'); - -test('second argument: iterator', function (t) { - var arr = []; - t.throws(function () { forEach(arr); }, TypeError, 'undefined is not a function'); - t.throws(function () { forEach(arr, null); }, TypeError, 'null is not a function'); - t.throws(function () { forEach(arr, ''); }, TypeError, 'string is not a function'); - t.throws(function () { forEach(arr, /a/); }, TypeError, 'regex is not a function'); - t.throws(function () { forEach(arr, true); }, TypeError, 'true is not a function'); - t.throws(function () { forEach(arr, false); }, TypeError, 'false is not a function'); - t.throws(function () { forEach(arr, NaN); }, TypeError, 'NaN is not a function'); - t.throws(function () { forEach(arr, 42); }, TypeError, '42 is not a function'); - t.doesNotThrow(function () { forEach(arr, function () {}); }, 'function is a function'); - t.doesNotThrow(function () { forEach(arr, setTimeout); }, 'setTimeout is a function'); - if (typeof window !== 'undefined') { - t.doesNotThrow(function () { forEach(arr, window.alert); }, 'alert is a function'); - } - t.end(); -}); - -test('array', function (t) { - var arr = [1, 2, 3]; - - t.test('iterates over every item', function (st) { - var index = 0; - forEach(arr, function () { index += 1; }); - st.equal(index, arr.length, 'iterates ' + arr.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(arr.length); - forEach(arr, function (item) { - st.equal(arr[index], item, 'item ' + index + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(arr.length); - forEach(arr, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(arr.length); - forEach(arr, function (item, index, array) { - st.deepEqual(arr, array, 'array is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(arr.length); - forEach(arr, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - -test('object', function (t) { - var obj = { - a: 1, - b: 2, - c: 3 - }; - var keys = ['a', 'b', 'c']; - - var F = function () { - this.a = 1; - this.b = 2; - }; - F.prototype.c = 3; - var fKeys = ['a', 'b']; - - t.test('iterates over every object literal key', function (st) { - var counter = 0; - forEach(obj, function () { counter += 1; }); - st.equal(counter, keys.length, 'iterated ' + counter + ' times'); - st.end(); - }); - - t.test('iterates only over own keys', function (st) { - var counter = 0; - forEach(new F(), function () { counter += 1; }); - st.equal(counter, fKeys.length, 'iterated ' + fKeys.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(keys.length); - forEach(obj, function (item) { - st.equal(obj[keys[index]], item, 'item at key ' + keys[index] + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(keys.length); - forEach(obj, function (item, key) { - st.equal(keys[counter], key, 'key ' + key + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(keys.length); - forEach(obj, function (item, key, object) { - st.deepEqual(obj, object, 'object is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(1); - forEach({foo: 'bar'}, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - - -test('string', function (t) { - var str = 'str'; - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(str.length * 2 + 1); - forEach(str, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - st.equal(str.charAt(index), item); - counter += 1; - }); - st.equal(counter, str.length, 'iterates ' + str.length + ' times'); - }); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js deleted file mode 100644 index 8b77b1fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -require('./foreach'); -require('./isArguments'); - -require('./shim'); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js deleted file mode 100644 index 62a07c2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js +++ /dev/null @@ -1,10 +0,0 @@ -var test = require('tape'); -var isArguments = require('../isArguments'); - -test('is.arguments', function (t) { - t.notOk(isArguments([]), 'array is not arguments'); - (function () { t.ok(isArguments(arguments), 'arguments is arguments'); }()); - (function () { t.notOk(isArguments(Array.prototype.slice.call(arguments)), 'sliced arguments is not arguments'); }()); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js deleted file mode 100644 index 9d932712..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js +++ /dev/null @@ -1,134 +0,0 @@ -var test = require('tape'); -var shimmedKeys = require('../index.js'); -var is = require('is'); -var keys = require('../shim.js'); -var forEach = require('foreach'); -var indexOf = require('indexof'); - -var obj = { - "str": "boz", - "obj": {}, - "arr": [], - "bool": true, - "num": 42, - "aNull": null, - "undef": undefined -}; -var objKeys = ['str', 'obj', 'arr', 'bool', 'num', 'aNull', 'undef']; - -test('exports a function', function (t) { - if (Object.keys) { - t.equal(Object.keys, shimmedKeys, 'Object.keys is supported and exported'); - } else { - t.equal(keys, shimmedKeys, 'Object.keys is not supported; shim is exported'); - } - t.end(); -}); - -test('working with actual shim', function (t) { - t.notEqual(Object.keys, keys, 'keys shim is not native Object.keys'); - t.end(); -}); - -test('works with an object literal', function (t) { - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, objKeys, 'Object has expected keys'); - t.end(); -}); - -test('works with an array', function (t) { - var arr = [1, 2, 3]; - var theKeys = keys(arr); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['0', '1', '2'], 'Array has expected keys'); - t.end(); -}); - -test('works with a function', function (t) { - var foo = function () {}; - foo.a = true; - - t.doesNotThrow(function () { return keys(foo); }, 'does not throw an error'); - t.deepEqual(keys(foo), ['a'], 'returns expected keys'); - t.end(); -}); - -test('returns names which are own properties', function (t) { - forEach(keys(obj), function (name) { - t.equal(obj.hasOwnProperty(name), true, name + ' should be returned'); - }); - t.end(); -}); - -test('returns names which are enumerable', function (t) { - var k, loopedValues = []; - for (k in obj) { - loopedValues.push(k); - } - forEach(keys(obj), function (name) { - t.notEqual(indexOf(loopedValues, name), -1, name + ' is not enumerable'); - }); - t.end(); -}); - -test('throws an error for a non-object', function (t) { - t.throws( - function () { return keys(42); }, - new TypeError('Object.keys called on a non-object'), - 'throws on a non-object' - ); - t.end(); -}); - -test('works with an object instance', function (t) { - var Prototype = function () {}; - Prototype.prototype.foo = true; - var obj = new Prototype(); - obj.bar = true; - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['bar'], 'Instance has expected keys'); - t.end(); -}); - -test('works in iOS 5 mobile Safari', function (t) { - var Foo = function () {}; - Foo.a = function () {}; - - // the bug is keys(Foo) => ['a', 'prototype'] instead of ['a'] - t.deepEqual(keys(Foo), ['a'], 'has expected keys'); - t.end(); -}); - -test('works in environments with the dontEnum bug (IE < 9)', function (t) { - var Foo = function () {}; - Foo.prototype.a = function () {}; - - // the bug is keys(Foo.prototype) => ['a', 'constructor'] instead of ['a'] - t.deepEqual(keys(Foo.prototype), ['a'], 'has expected keys'); - t.end(); -}); - -test('shadowed properties', function (t) { - var shadowedProps = [ - 'dummyControlProp', /* just to be sure */ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - shadowedProps.sort(); - var shadowedObject = {}; - forEach(shadowedProps, function (value, index) { - shadowedObject[value] = index; - }); - var shadowedObjectKeys = keys(shadowedObject); - shadowedObjectKeys.sort(); - t.deepEqual(shadowedObjectKeys, shadowedProps, 'troublesome shadowed properties are keys of object literals'); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json deleted file mode 100644 index c52e4efc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "xtend", - "version": "2.1.2", - "description": "extend like a boss", - "keywords": [ - "extend", - "merge", - "options", - "opts", - "object", - "array" - ], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/xtend.git" - }, - "main": "index", - "scripts": { - "test": "node test" - }, - "dependencies": { - "object-keys": "~0.4.0" - }, - "devDependencies": { - "tape": "~1.1.0" - }, - "homepage": "https://github.com/Raynos/xtend", - "contributors": [ - { - "name": "Jake Verbaten" - }, - { - "name": "Matt Esch" - } - ], - "bugs": { - "url": "https://github.com/Raynos/xtend/issues", - "email": "raynos2@gmail.com" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/raynos/xtend/raw/master/LICENSE" - } - ], - "testling": { - "files": "test.js", - "browsers": [ - "ie/7..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ] - }, - "engines": { - "node": ">=0.4" - }, - "readme": "# xtend\n\n[![browser support][3]][4]\n\nExtend like a boss\n\nxtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence.\n\n## Examples\n\n```js\nvar extend = require(\"xtend\")\n\nvar combination = extend({\n a: \"a\"\n}, {\n b: \"b\"\n})\n// { a: \"a\", b: \"b\" }\n```\n\n\n## MIT Licenced\n\n\n [3]: http://ci.testling.com/Raynos/xtend.png\n [4]: http://ci.testling.com/Raynos/xtend\n", - "readmeFilename": "README.md", - "_id": "xtend@2.1.2", - "_from": "xtend@~2.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js deleted file mode 100644 index 3369d796..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js +++ /dev/null @@ -1,63 +0,0 @@ -var test = require("tape") -var extend = require("./") -var mutableExtend = require("./mutable") - -test("merge", function(assert) { - var a = { a: "foo" } - var b = { b: "bar" } - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("replace", function(assert) { - var a = { a: "foo" } - var b = { a: "bar" } - - assert.deepEqual(extend(a, b), { a: "bar" }) - assert.end() -}) - -test("undefined", function(assert) { - var a = { a: undefined } - var b = { b: "foo" } - - assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) - assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) - assert.end() -}) - -test("handle 0", function(assert) { - var a = { a: "default" } - var b = { a: 0 } - - assert.deepEqual(extend(a, b), { a: 0 }) - assert.deepEqual(extend(b, a), { a: "default" }) - assert.end() -}) - -test("is immutable", function (assert) { - var record = {} - - extend(record, { foo: "bar" }) - assert.equal(record.foo, undefined) - assert.end() -}) - -test("null as argument", function (assert) { - var a = { foo: "bar" } - var b = null - var c = void 0 - - assert.deepEqual(extend(b, a, c), { foo: "bar" }) - assert.end() -}) - -test("mutable", function (assert) { - var a = { foo: "bar" } - - mutableExtend(a, { bar: "baz" }) - - assert.equal(a.bar, "baz") - assert.end() -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json deleted file mode 100644 index 3d0e0c8b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "through2", - "version": "0.4.1", - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "main": "through2.js", - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/rvagg/through2.git" - }, - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "author": { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - "license": "MIT", - "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "bl": "~0.6.0", - "stream-spigot": "~3.0.1", - "brtapsauce": "~0.2.2" - }, - "readme": "# through2\n\n<!--\n\nsoon ...\n\n[![Build Status](https://secure.travis-ci.org/rvagg/through2.png)](http://travis-ci.org/rvagg/through2)\n\n[![Build Status](https://saucelabs.com/browser-matrix/through2-sauce.svg)](https://travis-ci.org/rvagg/through2)\n\n-->\n\n[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) \n\n<!--\nnot happy with these, we need to peg to readable-stream@1.0.x so it'll always report out-of-date\n\n[![david-dm](https://david-dm.org/rvagg/through2.png)](https://david-dm.org/rvagg/through2/)\n[![david-dm](https://david-dm.org/rvagg/through2/dev-status.png)](https://david-dm.org/rvagg/through2#info=devDependencies/)\n-->\n\n**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise**\n\nInspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`.\n\n```js\nfs.createReadStream('ex.txt')\n .pipe(through2(function (chunk, enc, callback) {\n\n for (var i = 0; i < chunk.length; i++)\n if (chunk[i] == 97)\n chunk[i] = 122 // swap 'a' for 'z'\n\n this.push(chunk)\n \n callback()\n\n }))\n .pipe(fs.createWriteStream('out.txt'))\n```\n\nOr object streams:\n\n```js\nvar all = []\n\nfs.createReadStream('data.csv')\n .pipe(csv2())\n .pipe(through2.obj(function (chunk, enc, callback) {\n\n var data = {\n name : chunk[0]\n , address : chunk[3]\n , phone : chunk[10]\n }\n \n this.push(data)\n \n callback()\n\n }))\n .on('data', function (data) {\n all.push(data)\n })\n .on('end', function () {\n doSomethingSpecial(all)\n })\n```\n\nNote that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`.\n\n## API\n\n<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b>\n\nConsult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`).\n\n### options\n\nThe options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`).\n\nThe `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call:\n\n```js\nfs.createReadStream('/tmp/important.dat')\n .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) {\n\n this.push(new Buffer('wut?'))\n cb()\n\n })\n .pipe(fs.createWriteStream('/tmp/wut.txt'))\n```\n\n### transformFunction\n\nThe `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk.\n\nTo queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on.\n\nIf you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream.\n\n### flushFunction\n\nThe optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress.\n\n<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b>\n\nInstead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances.\n\n```js\nvar FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) {\n if (record.temp != null && record.unit = \"F\") {\n record.temp = ( ( record.temp - 32 ) * 5 ) / 9\n record.unit = \"C\"\n }\n this.push(record)\n callback()\n})\n\n// Create instances of FToC like so:\nvar converter = new FToC()\n// Or:\nvar converter = FToC()\n// Or specify/override options when you instantiate, if you prefer:\nvar converter = FToC({objectMode: true})\n```\n\n## License\n\n**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "homepage": "https://github.com/rvagg/through2", - "_id": "through2@0.4.1", - "_from": "through2@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js deleted file mode 100644 index 9d137c7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js +++ /dev/null @@ -1,334 +0,0 @@ -const test = require('tape') - , through2 = require('../') - , crypto = require('crypto') - , bl = require('bl') - , spigot = require('stream-spigot') - -test('plain through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('pipeable through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - // bl() acts like a proper streams2 stream and passes as much as it's - // asked for, so we really only get one write with such a small amount - // of data - t.equal(s, 'aaaaaaaaaaaaaaaaaaaaaaaaa', 'got transformed string') - t.end() - })) - - var bufs = bl() - bufs.append(crypto.randomBytes(10)) - bufs.append(crypto.randomBytes(5)) - bufs.append(crypto.randomBytes(10)) - bufs.pipe(th2) -}) - -test('object through', function (t) { - t.plan(3) - - var th2 = through2({ objectMode: true}, function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object through with through2.obj', function (t) { - t.plan(3) - - var th2 = through2.obj(function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('flushing through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }, function (callback) { - this.push(new Buffer([ 101, 110, 100 ])) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal(s, 'aaaaaaaaaabbbbbccccccccccend', 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('plain through ctor', function (t) { - var Th2 = through2.ctor(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - var th2 = new Th2() - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('reuse through ctor', function (t) { - t.plan(4) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - if (!this._i) { - t.ok(1, 'did not contain previous instance data (this._i)') - this._i = 97 // 'a' - } else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - var th2 = Th2() - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - - var newInstance = Th2() - newInstance.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaabbbbccccccc', s, 'got transformed string') - })) - - newInstance.write(crypto.randomBytes(7)) - newInstance.write(crypto.randomBytes(4)) - newInstance.write(crypto.randomBytes(7)) - newInstance.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('object through ctor', function (t) { - t.plan(3) - - var Th2 = through2.ctor({ objectMode: true}, function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = new Th2() - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('pipeable object through ctor', function (t) { - t.plan(4) - - var Th2 = through2.ctor({ objectMode: true}, function (record, enc, callback) { - if (record.temp != null && record.unit == 'F') { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = 'C' - } - this.push(record) - callback() - }) - - var th2 = Th2() - - var expect = [-19, -40, 100, 22] - th2.on('data', function (o) { - t.deepEqual(o, { temp: expect.shift(), unit: 'C' }, 'got transformed object') - }) - - spigot({objectMode: true}, [ - {temp: -2.2, unit: 'F'}, - {temp: -40, unit: 'F'}, - {temp: 212, unit: 'F'}, - {temp: 22, unit: 'C'} - ]).pipe(th2) -}) - -test('object through ctor override', function (t) { - t.plan(3) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({objectMode: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object settings available in transform', function (t) { - t.plan(6) - - var Th2 = through2.ctor({objectMode: true, peek: true}, function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2() - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object settings available in transform override', function (t) { - t.plan(6) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({objectMode: true, peek: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object override extends options', function (t) { - t.plan(6) - - var Th2 = through2.ctor({objectMode: true}, function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({peek: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js deleted file mode 100644 index cc10868b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -on rvagg@fletcher: - @0.2.3: Ran 36719 iterations in 10000 ms -*/ - -const through2 = require('../') - , bl = require('bl') - , crypto = require('crypto') - , assert = require('assert') - -function run (callback) { - var bufs = Array.apply(null, Array(10)).map(function () { return crypto.randomBytes(32) }) - , stream = through2(function (chunk, env, callback) { - callback(null, chunk.toString('hex')) - }) - - stream.pipe(bl(function (err, data) { - assert(!err) - assert.equal(data.toString(), Buffer.concat(bufs).toString('hex')) - callback() - })) - - bufs.forEach(function (b) { - stream.write(b) - }) - stream.end() -} - -var count = 0 - , start = Date.now() - -;(function exec () { - count++ - run(function () { - if (Date.now() - start < 1000 * 10) { - return setImmediate(exec) - } - console.log('Ran', count, 'iterations in', Date.now() - start, 'ms') - }) -}()) - -console.log('Running for ~10s') \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js deleted file mode 100644 index a6d28625..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node - -const user = process.env.SAUCE_USER - , key = process.env.SAUCE_KEY - , path = require('path') - , brtapsauce = require('brtapsauce') - , testFile = path.join(__dirname, 'basic-test.js') - - , capabilities = [ - { browserName: 'chrome' , platform: 'Windows XP', version: '' } - , { browserName: 'firefox' , platform: 'Windows 8' , version: '' } - , { browserName: 'firefox' , platform: 'Windows XP', version: '4' } - , { browserName: 'internet explorer' , platform: 'Windows 8' , version: '10' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '9' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '8' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '7' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '6' } - , { browserName: 'safari' , platform: 'Windows 7' , version: '5' } - , { browserName: 'safari' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '11' } - , { browserName: 'ipad' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'android' , platform: 'Linux' , version: '4.0', 'device-type': 'tablet' } - ] - -if (!user) - throw new Error('Must set a SAUCE_USER env var') -if (!key) - throw new Error('Must set a SAUCE_KEY env var') - -brtapsauce({ - name : 'Traversty' - , user : user - , key : key - , brsrc : testFile - , capabilities : capabilities - , options : { timeout: 60 * 6 } -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js deleted file mode 100644 index aa9b4877..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js +++ /dev/null @@ -1,9 +0,0 @@ -require('./basic-test') - -if (!process.env.SAUCE_KEY || !process.env.SAUCE_USER) - return console.log('SAUCE_KEY and/or SAUCE_USER not set, not running sauce tests') - -if (!/v0\.10/.test(process.version)) - return console.log('Not Node v0.10.x, not running sauce tests') - -require('./sauce.js') \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js deleted file mode 100644 index c1104848..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js +++ /dev/null @@ -1,78 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new Transform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - Transform.call(this, this.options) - } - - inherits(Through2, Transform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new Transform(xtend({ objectMode: true }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/package.json deleted file mode 100644 index 35533273..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/download/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "download", - "version": "0.1.10", - "description": "Download and extract files effortlessly", - "keywords": [ - "url", - "http", - "download", - "extract" - ], - "homepage": "https://github.com/kevva/download", - "bugs": { - "url": "https://github.com/kevva/download/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/download.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "download.js", - "files": [ - "download.js" - ], - "dependencies": { - "decompress": "~0.1.5", - "each-async": "~0.1.1", - "mkdirp": "~0.3.5", - "request": "~2.31.0", - "through2": "~0.4.0" - }, - "devDependencies": { - "mocha": "~1.17.0", - "nock": "~0.27.1", - "rimraf": "~2.2.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# download [![Build Status](https://secure.travis-ci.org/kevva/download.png?branch=master)](http://travis-ci.org/kevva/download)\n\nDownload and extract files effortlessly in Node.js.\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/download): `npm install download`\n\n## Examples\n\nIf you're fetching an archive you can set `extract: true` in options and\nit'll extract it for you.\n\n```js\nvar download = require('download');\n\n// download and extract `foo.tar.gz` into `bar/`\ndownload('foo.tar.gz', 'bar', { extract: true });\n\n// download and save `foo.exe` into `bar/foo.exe` with mode `0755`\ndownload('foo.exe', 'bar', { mode: '0755' });\n\n// download and save `foo.zip` into `bar/foobar.zip`\ndownload({ url: 'foo.zip', name: 'foobar.zip' }, 'bar');\n\n// download and save an array of files in `bar/`\nvar files = ['foo.jpg', 'bar.jpg', 'cat.jpg'];\ndownload(files, 'bar');\n\n// download, save and rename an array of files in `bar/`\nvar files = [{\n url: 'foo.jpg',\n name: 'foobar.jpg'\n}, {\n url: 'cat.jpg',\n name: 'dog.jpg'\n}];\ndownload(files, 'bar');\n```\n\n## API\n\n### download(url, dest, opts)\n\nDownload a file or an array of files to a given destination. Returns an EventEmitter \nthat emits the following possible events:\n\n* `response` — Relayed when the underlying `http.ClientRequest` emits the same \nevent. Listeners called with a `http.IncomingMessage` instance.\n* `data` — Relayed when the underlying `http.IncomingMessage` emits the same \nevent. Listeners called with a `Buffer` instance.\n* `error` — Relayed when the underlying `http.ClientRequest` emits the same event \nor when the response status code is not in the 200s. Listeners called with an \n`Error` instance (in the first case) or the response status code.\n* `close` — Relayed when the underlying `stream.Duplex` emits the same event.\n\n## Options\n\nYou can define options accepted by the [request](https://github.com/mikeal/request/) module besides from the options below.\n\n### extract\n\nType: `Boolean` \nDefault: `false`\n\nIf set to `true`, try extracting the file using [decompress](https://github.com/kevva/decompress/).\n\n### mode\n\nType: `String` \nDefault: `undefined`\n\nSet mode on the downloaded files.\n\n### strip\n\nType: `Number` \nDefault: `0`\n\nEquivalent to `--strip-components` for tar.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "download@0.1.10", - "_from": "download@~0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.npmignore deleted file mode 100644 index 2ccbe465..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.travis.yml deleted file mode 100644 index c1ffcb31..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/History.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/History.md deleted file mode 100644 index d1fa5334..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/History.md +++ /dev/null @@ -1,20 +0,0 @@ - -0.0.2 / 2013-05-29 -================== - - * Updated github url - * Fix bug calling isbin with list of paths - * Add tests for sync version - * Added travis CI passing image to readme - * Added node engines and keywords - * Added travis CI config - * Added basic readme - * Added basic test suite and Makefile - * Add async version - * Some refactorings using 'some' function - * Fixed issue with wrong paths if called multiple times - -0.0.1 / 2012-12-06 -================== - - * Initial release diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/Makefile deleted file mode 100644 index 1a2444a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -REPORTER ?= dot - -test: - @NODE_ENV=test ./node_modules/mocha/bin/mocha -R $(REPORTER) - -.PHONY: test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/README.md deleted file mode 100644 index 5224d614..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/README.md +++ /dev/null @@ -1,59 +0,0 @@ -[![Build Status](https://secure.travis-ci.org/mbehrendt/isbin.png?branch=master)](https://travis-ci.org/mbehrendt/isbin) - -# Isbin - -Tiny little helper library to determine if a certain binary is available within $PATH or any additional folder. - -# Installation - -```bash -$ npm install isbin -``` - -# Usage - -```js -var isbin = require('isbin'); - -// Test against $PATH -isbin('mysql', function(exists) { - console.log(exists); // ==> Boolean -}); - -// With additional path to test -isbin('mysql', '/usr/local/bin', function(exists) { - console.log(exists); // ==> Boolean -}); - -// Or multiple ones -isbin('mysql', ['/usr/local/bin', '/home/me/bins'], function(exists) { - console.log(exists); // ==> Boolean -}); -``` - -There are also synchronous versions available - -```js -var exists = isbin('mysql'); -var exists = isbin('mysql', '/usr/local/bin'); -var exists = isbin('mysql', ['/usr/local/bin', '/home/me/bins']); -``` - -# Running the tests - -```bash -$ npm install -$ make test -``` - -# License - -(The MIT License) - -Copyright (c) 2012 Mario Behrendt info@mario-behrendt.de, Stephan Hoyer <ste.hoyer@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/index.js deleted file mode 100644 index bb0a047c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/lib/index.js deleted file mode 100644 index 1b8a5cac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/lib/index.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Require dependencies - */ - -var fs = require('fs') - , async = require('async'); - -/** - * Check if given binary exists - * - * @param {String} bin Binary to test - * @param {String|Array} additional Additional paths to check - * @param {Function(result)} isbinChecked Callback when check is done async, optional - * @return {Boolean} True if binary was found - */ - -function isbin(bin, additional, isbinChecked) { - // isbin(bin, cb) - if (!isbinChecked) isbinChecked = additional; - - // Read $PATH to get set up bin folders - var paths = process.env.PATH.split(':') || []; - - // isbin(bin, 'path', cb) - if ('string' === typeof additional) { - paths.push(additional); - } - - // isbin(bin, ['path1', 'path2'], cb) - if ('object' === typeof additional && additional.length !== null) { - paths.concat(additional); - } - - // async check - if ('function' === typeof isbinChecked) { - return async.some(paths, function(path, pathChecked) { - fs.exists(path + '/' + bin, pathChecked); - }, isbinChecked); - } - - // sync check - return paths.reverse().some(function(path) { - return fs.existsSync(path + '/' + bin); - }); -}; - -/** - * Expose module - */ - -module.exports = isbin; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules deleted file mode 100644 index a9aae984..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "deps/nodeunit"] - path = deps/nodeunit - url = git://github.com/caolan/nodeunit.git -[submodule "deps/UglifyJS"] - path = deps/UglifyJS - url = https://github.com/mishoo/UglifyJS.git -[submodule "deps/nodelint"] - path = deps/nodelint - url = https://github.com/tav/nodelint.git diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore deleted file mode 100644 index 9bdfc97c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -deps -dist -test -nodelint.cfg \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE deleted file mode 100644 index b7f9d500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile deleted file mode 100644 index bad647c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -PACKAGE = asyncjs -NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node) -CWD := $(shell pwd) -NODEUNIT = $(CWD)/node_modules/nodeunit/bin/nodeunit -UGLIFY = $(CWD)/node_modules/uglify-js/bin/uglifyjs -NODELINT = $(CWD)/node_modules/nodelint/nodelint - -BUILDDIR = dist - -all: clean test build - -build: $(wildcard lib/*.js) - mkdir -p $(BUILDDIR) - $(UGLIFY) lib/async.js > $(BUILDDIR)/async.min.js - -test: - $(NODEUNIT) test - -clean: - rm -rf $(BUILDDIR) - -lint: - $(NODELINT) --config nodelint.cfg lib/async.js - -.PHONY: test build all diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md deleted file mode 100644 index 1bbbc477..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md +++ /dev/null @@ -1,1021 +0,0 @@ -# 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. - -Async provides around 20 functions that include the usual 'functional' -suspects (map, reduce, filter, forEach…) 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 - - 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'], path.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. - - -## Download - -Releases are available for download from -[GitHub](http://github.com/caolan/async/downloads). -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) - 17.5kb Uncompressed - -__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped - - -## In the Browser - -So far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage: - - <script type="text/javascript" src="async.js"></script> - <script type="text/javascript"> - - async.map(data, asyncProcess, function(err, results){ - alert(results); - }); - - </script> - - -## Documentation - -### Collections - -* [forEach](#forEach) -* [map](#map) -* [filter](#filter) -* [reject](#reject) -* [reduce](#reduce) -* [detect](#detect) -* [sortBy](#sortBy) -* [some](#some) -* [every](#every) -* [concat](#concat) - -### Control Flow - -* [series](#series) -* [parallel](#parallel) -* [whilst](#whilst) -* [until](#until) -* [waterfall](#waterfall) -* [queue](#queue) -* [auto](#auto) -* [iterator](#iterator) -* [apply](#apply) -* [nextTick](#nextTick) - -### Utils - -* [memoize](#memoize) -* [unmemoize](#unmemoize) -* [log](#log) -* [dir](#dir) -* [noConflict](#noConflict) - - -## Collections - -<a name="forEach" /> -### forEach(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 forEach 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 which must be called once it has completed. -* callback(err) - A callback which is called after all the iterator functions - have finished, or an error has occurred. - -__Example__ - - // assuming openFiles is an array of file names and saveFile is a function - // to save the modified contents of that file: - - async.forEach(openFiles, saveFile, function(err){ - // if any of the saves produced an error, err would equal that error - }); - ---------------------------------------- - -<a name="forEachSeries" /> -### forEachSeries(arr, iterator, callback) - -The same as forEach 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" /> -### forEachLimit(arr, limit, iterator, callback) - -The same as forEach only the iterator is applied to batches of items in the -array, in series. The next batch of iterators is only called once the current -one has completed processing. - -__Arguments__ - -* arr - An array to iterate over. -* limit - How many items should be in each batch. -* iterator(item, callback) - A function to apply to each item in the array. - The iterator is passed a callback which must be called once it has completed. -* callback(err) - A callback which is called after all the iterator functions - have finished, or an error has occurred. - -__Example__ - - // Assume documents is an array of JSON objects and requestApi is a - // function that interacts with a rate-limited REST api. - - async.forEachLimit(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 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__ - - 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="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 path.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 which must be called once it has completed. -* callback(results) - A callback which is called after all the iterator - functions have finished. - -__Example__ - - async.filter(['file1','file2','file3'], path.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 filter, 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 its 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 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__ - - 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 which must be called 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__ - - async.detect(['file1','file2','file3'], path.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 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__ - - 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 path.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 which must be called 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__ - - async.some(['file1','file2','file3'], path.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 path.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 which must be called 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__ - - async.every(['file1','file2','file3'], path.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 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__ - - 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 it must call on completion. -* callback(err, results) - An optional callback to run once all the functions - have completed. This function gets an array of all the arguments passed to - the callbacks used in the array. - -__Example__ - - 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 it must call on completion. -* callback(err, results) - An optional callback to run once all the functions - have completed. This function gets an array of all the arguments passed to - the callbacks used in the array. - -__Example__ - - 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="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 which must be called once it has completed with an optional - error as the first argument. -* callback(err) - A callback which is called after the test fails and repeated - execution of fn has stopped. - -__Example__ - - var count = 0; - - async.whilst( - function () { return count < 5; }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } - ); - - ---------------------------------------- - -<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="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 it - must call on completion. -* 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__ - - 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="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. -* 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. -* 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__ - - // 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'); - }); - - ---------------------------------------- - -<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. - -__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 - syntax is easier to understand by looking at the example. -* 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. If all tasks complete - successfully, it will receive an object containing their results. - -__Example__ - - 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: - - 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(results){ - async.series([ - function(callback){ - // once there is some data and the directory exists, - // write the data to a file in the directory - }, - email_link: 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. Its 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, each function is passed a callback it - must call on completion. - -__Example__ - - 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__ - - // 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: - - 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 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__ - - var call_order = []; - async.nextTick(function(){ - call_order.push('two'); - // call_order now equals ['one','two] - }); - call_order.push('one') - - -## 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. - -__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__ - - 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__ - - var hello = function(name, callback){ - setTimeout(function(){ - callback(null, 'hello ' + name); - }, 1000); - }; - - 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__ - - var hello = function(name, callback){ - setTimeout(function(){ - callback(null, {hello: name}); - }, 1000); - }; - - 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js deleted file mode 100644 index 8e238453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js +++ /dev/null @@ -1,3 +0,0 @@ -// This file is just added for convenience so this repository can be -// directly checked out into a project's deps folder -module.exports = require('./lib/async'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js deleted file mode 100644 index 7cc4f5ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js +++ /dev/null @@ -1,692 +0,0 @@ -/*global setTimeout: false, console: false */ -(function () { - - var async = {}; - - // global on the server, window in the browser - var root = this, - previous_async = root.async; - - if (typeof module !== 'undefined' && module.exports) { - module.exports = async; - } - else { - root.async = async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - //// cross-browser compatiblity functions //// - - var _forEach = 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 = []; - _forEach(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); - } - _forEach(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)) { - async.nextTick = function (fn) { - setTimeout(fn, 0); - }; - } - else { - async.nextTick = process.nextTick; - } - - async.forEach = function (arr, iterator, callback) { - callback = callback || function () {}; - if (!arr.length) { - return callback(); - } - var completed = 0; - _forEach(arr, function (x) { - iterator(x, function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(null); - } - } - }); - }); - }; - - async.forEachSeries = 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.forEachLimit = function (arr, limit, 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.forEach].concat(args)); - }; - }; - var doSeries = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEachSeries].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); - - - // 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.forEachSeries(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.forEach(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.forEach(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 () { - _forEach(listeners.slice(0), function (fn) { - fn(); - }); - }; - - addListener(function () { - if (_keys(results).length === keys.length) { - callback(null, results); - callback = function () {}; - } - }); - - _forEach(keys, function (k) { - var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; - var taskCallback = function (err) { - if (err) { - callback(err); - // stop subsequent errors hitting callback multiple times - callback = function () {}; - } - else { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - 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.length) { - return callback(); - } - var wrapIterator = function (iterator) { - return function (err) { - if (err) { - callback(err); - 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.nextTick(function () { - iterator.apply(null, args); - }); - } - }; - }; - wrapIterator(async.iterator(tasks))(); - }; - - async.parallel = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.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 = {}; - async.forEach(_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.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.forEachSeries(_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.until = function (test, iterator, callback) { - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.queue = function (worker, concurrency) { - var workers = 0; - var q = { - tasks: [], - concurrency: concurrency, - saturated: null, - empty: null, - drain: null, - push: function (data, callback) { - if(data.constructor !== Array) { - data = [data]; - } - _forEach(data, function(task) { - q.tasks.push({ - data: task, - callback: typeof callback === 'function' ? callback : null - }); - if (q.saturated && q.tasks.length == concurrency) { - q.saturated(); - } - async.nextTick(q.process); - }); - }, - 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; - worker(task.data, function () { - workers -= 1; - if (task.callback) { - task.callback.apply(task, arguments); - } - if(q.drain && q.tasks.length + workers == 0) q.drain(); - q.process(); - }); - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - } - }; - return q; - }; - - 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]) { - _forEach(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.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - -}()); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json deleted file mode 100644 index 5c6bf41e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "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": "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" - }, - "readme": "# Async.js\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), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, forEach…) 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 async.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n async.parallel([\n function(){ ... },\n function(){ ... }\n ], callback);\n\n async.series([\n function(){ ... },\n function(){ ... }\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\n## Download\n\nReleases are available for download from\n[GitHub](http://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\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* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, 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 this callback, the main\ncallback for the forEach 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.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled 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, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.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<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The 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. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its 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 which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.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<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator 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 array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at 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 the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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.\n\n__Example__\n\n async.detect(['file1','file2','file3'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (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 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 the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.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---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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__Example__\n\n async.some(['file1','file2','file3'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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__Example__\n\n async.every(['file1','file2','file3'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators 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 the arguments 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 the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.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<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions 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 the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\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\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.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\n function(err, results){\n // results is now equal to ['one', 'two']\n });\n\n\n // an example using an object instead of an array\n async.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 },\n function(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 an 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\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.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\n function(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\n async.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 },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the 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 to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first 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 var count = 0;\n\n async.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=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the 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 callback it\n must call on completion.\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 async.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\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\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\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* 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, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks 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\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log('all items have been processed');\n }\n\n // add some items to the queue\n\n q.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n });\n q.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n });\n\n // add some items to the queue (batch-wise)\n\n q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n });\n\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\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 },\n write_file: ['get_data', 'make_folder', function(callback){\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 // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\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 async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\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 }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n'peek' the next iterator by doing 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, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n ]);\n\n node> var iterator2 = iterator();\n 'one'\n node> var iterator3 = iterator2();\n 'two'\n node> iterator3();\n 'three'\n node> var nextfn = iterator2.next();\n node> 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, a useful\nshorthand 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 // using apply\n\n async.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\n async.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n },\n ]);\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, 'one');\n node> fn('two', 'three');\n one\n two\n three\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the 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 var call_order = [];\n async.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two]\n });\n call_order.push('one')\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\n__Arguments__\n\n* fn - the function you 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 var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn('some name', function () {\n // callback\n });\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\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 var hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n };\n\n node> 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 var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> 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\nasync object.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/caolan/async", - "_id": "async@0.1.22", - "_from": "async@0.1.22" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/package.json deleted file mode 100644 index f24b8f9a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "isbin", - "version": "0.0.2", - "description": "Checks for available binaries on unix machines", - "main": "index.js", - "engines": { - "node": ">= 0.8.0" - }, - "keywords": [ - "fs", - "bin", - "binary", - "exists", - "check", - "path" - ], - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/behrendtio/isbin.git" - }, - "author": "", - "license": "MIT", - "dependencies": { - "async": "0.1.22" - }, - "devDependencies": { - "mocha": "1.7.3", - "should": "1.2.1" - }, - "readme": "[![Build Status](https://secure.travis-ci.org/mbehrendt/isbin.png?branch=master)](https://travis-ci.org/mbehrendt/isbin)\n\n# Isbin\n\nTiny little helper library to determine if a certain binary is available within $PATH or any additional folder.\n\n# Installation\n\n```bash\n$ npm install isbin\n```\n\n# Usage\n\n```js\nvar isbin = require('isbin');\n\n// Test against $PATH\nisbin('mysql', function(exists) {\n console.log(exists); // ==> Boolean\n});\n\n// With additional path to test\nisbin('mysql', '/usr/local/bin', function(exists) {\n console.log(exists); // ==> Boolean\n});\n\n// Or multiple ones\nisbin('mysql', ['/usr/local/bin', '/home/me/bins'], function(exists) {\n console.log(exists); // ==> Boolean\n});\n```\n\nThere are also synchronous versions available\n\n```js\nvar exists = isbin('mysql');\nvar exists = isbin('mysql', '/usr/local/bin');\nvar exists = isbin('mysql', ['/usr/local/bin', '/home/me/bins']);\n```\n\n# Running the tests\n\n```bash\n$ npm install\n$ make test\n```\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2012 Mario Behrendt info@mario-behrendt.de, Stephan Hoyer <ste.hoyer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/behrendtio/isbin/issues" - }, - "homepage": "https://github.com/behrendtio/isbin", - "_id": "isbin@0.0.2", - "_from": "isbin@0.0.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js deleted file mode 100644 index 068a38a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js +++ /dev/null @@ -1,39 +0,0 @@ -var isbin = require('../'); - -describe('isbin', function() { - it('accepts binary, additional path and callback', function(done) { - isbin('ls', '/etc', function(exists) { - exists.should.be.a('boolean'); - done(); - }) - }); - - it('accepts array of paths', function(done) { - isbin('ls', ['/etc', '/home'], function(exists) { - exists.should.be.a('boolean'); - done(); - }); - }); - - it('accepts just binary and callback', function(done) { - isbin('ls', function(exists) { - exists.should.be.a('boolean'); - done(); - }); - }); - - it('accepts binary, additional path and callback', function() { - var exists = isbin('ls', '/etc'); - exists.should.be.a('boolean'); - }); - - it('accepts array of paths', function() { - var exists = isbin('ls', ['/etc', '/home']); - exists.should.be.a('boolean'); - }); - - it('accepts just binary', function() { - var exists = isbin('ls'); - exists.should.be.a('boolean'); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts deleted file mode 100644 index e5eb9f87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts +++ /dev/null @@ -1,4 +0,0 @@ ---require should ---bail ---ui bdd ---slow 100 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.editorconfig b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.editorconfig deleted file mode 100644 index e036e247..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -; EditorConfig is awesome: http://EditorConfig.org - -; top-most EditorConfig file -root = true - -; base rules -[*] -end_of_line = lf -insert_final_newline = false -indent_style = space -indent_size = 4 -charset = utf-8 -trim_trailing_whitespace = true - -; The default indent on package.json is 2 spaces, better to keep it so we can -; use `npm install --save` and other features that rewrites the package.json -; file automatically -[package.json] -indent_style = space -indent_size = 2 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.jshintrc deleted file mode 100644 index bbdb29cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.jshintrc +++ /dev/null @@ -1,69 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 50, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : true, // Standard browser globals e.g. `window`, `document`. - "couch" : false, - "dojo" : false, - "jquery" : true, - "mootools" : false, - "node" : false, - "prototypejs" : false, - "rhino" : false, - "wsh" : false, - - // Custom globals. - "predef" : [ - "define", - "require" - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : false, // Allow EcmaScript 5 syntax. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - "strict" : false, // Require `use strict` pragma in every file. - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "bitwise" : false, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : true, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : true, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : false, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexdash" : true, // Tolerate unescaped last dash i.e. `[-...]`. - "regexp" : false, // Prohibit `.` and `[^...]` in regular expressions. - "scripturl" : false, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : false, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "nonew" : true, // Prohibit use of constructors for side-effects. - "onevar" : false, // Allow only one `var` statement per function. - "plusplus" : false, // Prohibit use of `++` & `--`. - "sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.npmignore deleted file mode 100644 index 1341acd9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.npmignore +++ /dev/null @@ -1,30 +0,0 @@ -# dumb files -# ========== - -.tmp* -.project -.settings/ -.livereload -.DS_Store? -ehthumbs.db -Icon? -Thumbs.db - - -# stuff not needed by node -# ======================== - -node_modules/ -tests/ -_build/ -doc_html/ -coverage/ - -# we keep the doc/ folder in case npm decides to display it in the future -# also good in case user is using an old version or working offline - -# we also keep the src/ folder in case the user still needs the AMD modules -# after build (see issue #102) - -bower.json -build.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.travis.yml deleted file mode 100644 index 36de1532..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ - language: node_js - node_js: - - "0.8" - script: "npm test --coverage" - notifications: - irc: - channels: - - "irc.freenode.org#moutjs" - on_success: always - on_failure: always - use_notice: true - skip_join: true - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md deleted file mode 100644 index 0f5eac12..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md +++ /dev/null @@ -1,93 +0,0 @@ -mout changelog -============== - -v0.6.0 (2013/05/22) -------------------- - - - add optional delimeter to `string/unCamelCase` - - allow custom char on `number/pad` - - allow underscore characters in `string/removeNonWord` - - accept `level` on `array/flatten` instead of a flag - - convert underscores to camelCase in `string/camelCase` - - remove `create()` from number/currencyFormat - - add `date/dayOfTheYear` - - add `date/diff` - - add `date/isSame` - - add `date/startOf` - - add `date/strftime` - - add `date/timezoneAbbr` - - add `date/timezoneOffset` - - add `date/totalDaysInYear` - - add `date/weekOfTheYear` - - add `function/timeout` - - add `object/bindAll` - - add `object/functions` - - add `time/convert` - - -v0.5.0 (2013/04/04) -------------------- - - - add `array/collect` - - add `callback` parameter to `object/equals` and `object/deepEquals` to allow - custom compare operations. - - normalize behavior in `array/*` methods to treat `null` values as empty - arrays when reading from array - - add `date/parseIso` - - add `date/isLeapYear` - - add `date/totalDaysInMonth` - - add `object/deepMatches` - - change `function/makeIterator_` to use `deepMatches` (affects nearly all - iteration methods) - - add `thisObj` parameter to `array/min` and `array/max` - - -v0.4.0 (2013/02/26) -------------------- - - - add `object/equals` - - add `object/deepEquals` - - add `object/matches`. - - add `lang/is` and `lang/isnt`. - - add `lang/isInteger`. - - add `array/findIndex`. - - add shorthand syntax to `array/*`, `object/*` and `collection/*` methods. - - improve `number/sign` behavior when value is NaN or +0 or -0. - - improve `lang/isNaN` to actually check if value *is not a number* without - coercing value; so `[]`, `""`, `null` and `"12"` are considered NaN (#39). - - improve `string/contains` to match ES6 behavior (add fromIndex argument). - - -v0.3.0 (2013/02/01) -------------------- - - - add `lang/clone`. - - add `lang/toString`. - - add `string/replace`. - - add `string/WHITE_SPACES` - - rename `function/curry` to `function/partial`. - - allow custom chars in `string/trim`, `ltrim`, and `rtrim`. - - convert values to strings in the `string/*` functions. - - -v0.2.0 (2013/01/13) -------------------- - - - fix bug in `math/ceil` for negative radixes. - - change `object/deepFillIn` and `object/deepMixIn` to recurse only if both - existing and new values are plain objects. Will not recurse into arrays - or objects not created by the Object constructor. - - add `lang/isPlainObject` to check if a file is a valid object and is created - by the Object constructor - - change `lang/clone` behavior when dealing with custom types (avoid cloning - it by default) and add second argument to allow custom behavior if needed. - - rename `lang/clone` to `lang/deepClone`. - - add VERSION property to index.js - - simplify `math/floor`, `math/round`, `math/ceil` and `math/countSteps`. - - -v0.1.0 (2013/01/09) -------------------- - -- Rename project from "amd-utils" to "mout" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md deleted file mode 100644 index 65d9add1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md +++ /dev/null @@ -1,61 +0,0 @@ -# Contributing - -Fork the repo at https://github.com/mout/mout - - > "Write clearly, don't be too clever" - The Elements of Programming Style - -Avoid unnamed functions and follow the other modules structure. By only using named functions it will be easier to extract the code from the AMD module if needed and it will also give better error messages, JavaScript minifiers like [Google Closure Compiler](http://code.google.com/closure/compiler/) and [UglifyJS](https://github.com/mishoo/UglifyJS) will make sure code is as small/optimized as possible. - - > "Make it clear before you make it faster." - The Elements of Programming Style - -Be sure to always create tests for each proposed module. Features will only be merged if they contain proper tests and documentation. - - > "Good code is its own best documentation." - Steve McConnell - -We should do a code review before merging to make sure names makes sense and implementation is as good as possible. - -Try to split your pull requests into logical groups, the smaller the easier to be reviewed/merged. - - - -## Tests & Code Coverage ## - -Tests can be found inside the `tests` folder, to execute them in the browser open the `tests/runner.html`. The same tests also work on node.js by running `npm test`. - -We should have tests for all methods and ensure we have a high code coverage through our continuous integration server ([travis](https://travis-ci.org/mout/mout)). When you ask for a pull request Travis will automatically run the tests on node.js and check the code coverage as well. - -We run `node build pkg` automatically before any `npm test`, so specs and packages should always be in sync. (will avoid human mistakes) - -To check code coverage run `npm test --coverage`, it will generate the reports inside the `coverage` folder and also log the results. Please note that node.js doesn't execute all code branches since we have some conditionals that are only met on old JavaScript engines (eg. IE 7-8), so we will never have 100% code coverage (but should be close to it). - - - -## Build Script ## - -The [build script](https://github.com/mout/mout/wiki/Build-Script) can be extremely helpful and can avoid human mistakes, use it. - - - -## Admins / Pull Requests ## - -Even if you are an admin (have commit rights) please do pull requests when adding new features or changing current behavior, that way we can review the work and discuss. Feel free to push changes that doesn't affect behavior without asking for a pull request (readme, changelog, build script, typos, refactoring, ...). - - - -## Large changes ## - -If you are proposing some major change, please create an issue to discuss it first. (maybe it's outside the scope of the project) - - - -## Questions / IRC / Wiki / Issue Tracker ## - -When in doubt ask someone on IRC to help you ([#moutjs on irc.freenode.net](http://webchat.freenode.net/?channels=moutjs)) or create a [new issue](http://github.com/mout/mout/issues). - -The [project wiki](https://github.com/mout/mout/wiki) can also be a good resource of information. - - ---- - -Check the [contributors list at github](https://github.com/mout/mout/contributors). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/LICENSE.md deleted file mode 100644 index e9ccc2be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) -## Copyright (c) 2012, 2013 moutjs team and contributors (http://moutjs.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/README.md deleted file mode 100644 index 872943bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/README.md +++ /dev/null @@ -1,63 +0,0 @@ -![mout](http://moutjs.com/logo.png "Modular JavaScript Utilties") - -http://moutjs.com/ - -[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout) - -All code is library agnostic and consist mostly of helper methods that aren't -directly related with the DOM, the purpose of this library isn't to replace -Dojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common -problems that aren't solved by most of them. Consider it as a crossbrowser -JavaScript standard library. - - - -## Main goals ## - - - increase code reuse; - - be clear (code should be clean/readable); - - be easy to debug; - - be easy to maintain; - - follow best practices; - - follow standards when possible; - - **don't convert JavaScript into another language!** - - be compatible with other frameworks; - - be modular; - - have unit tests for all modules; - - work on multiple environments (IE7+, modern browsers, node.js); - - - -## What shouldn't be here ## - - - UI components; - - CSS selector engine; - - Event system - pub/sub; - - Template engine; - - Anything that isn't generic enough to be on a standard library; - - Anything that could be a separate library and/or isn't a modular utility... - - - -## API Documentation ## - -Online documentation can be found at http://moutjs.com/ or inside the -`doc` folder. - - - -## FAQ / Wiki / IRC ## - -For more info about project structure, design decisions, tips, how to -contribute, build system, etc, please check the [project -wiki](https://github.com/mout/mout/wiki). - -We also have an IRC channel [#moutjs on -irc.freenode.net](http://webchat.freenode.net/?channels=moutjs) - - - -## License ## - -Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array.js deleted file mode 100644 index 89d388ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array.js +++ /dev/null @@ -1,46 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/append.js deleted file mode 100644 index bf74037e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ - - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - module.exports = append; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/collect.js deleted file mode 100644 index 58637493..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/collect.js +++ /dev/null @@ -1,27 +0,0 @@ -var append = require('./append'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - module.exports = collect; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/combine.js deleted file mode 100644 index d66e6212..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - module.exports = combine; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/compact.js deleted file mode 100644 index 74c176ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -var filter = require('./filter'); - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - module.exports = compact; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/contains.js deleted file mode 100644 index 92bb6ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/difference.js deleted file mode 100644 index d0570510..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/difference.js +++ /dev/null @@ -1,22 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var some = require('./some'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = difference; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/every.js deleted file mode 100644 index ac598832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - module.exports = every; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/filter.js deleted file mode 100644 index ebeb58dc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/filter.js +++ /dev/null @@ -1,27 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/find.js deleted file mode 100644 index b4a73131..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -var findIndex = require('./findIndex'); - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js deleted file mode 100644 index 53f22a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - module.exports = findIndex; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/flatten.js deleted file mode 100644 index aa9757ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/flatten.js +++ /dev/null @@ -1,43 +0,0 @@ -var isArray = require('../lang/isArray'); -var append = require('./append'); - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - module.exports = flatten; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/forEach.js deleted file mode 100644 index 268e506f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - module.exports = forEach; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js deleted file mode 100644 index 6a9ac832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - module.exports = indexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/insert.js deleted file mode 100644 index f1f95b75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/insert.js +++ /dev/null @@ -1,15 +0,0 @@ -var difference = require('./difference'); -var toArray = require('../lang/toArray'); - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - module.exports = insert; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/intersection.js deleted file mode 100644 index e6170062..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/intersection.js +++ /dev/null @@ -1,23 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var every = require('./every'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = intersection; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/invoke.js deleted file mode 100644 index c01aab1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - module.exports = invoke; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/join.js deleted file mode 100644 index 71d8bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -var filter = require('./filter'); - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - module.exports = join; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js deleted file mode 100644 index ee44a25b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - module.exports = lastIndexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/map.js deleted file mode 100644 index 54064f6b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/max.js deleted file mode 100644 index 183b10ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/max.js +++ /dev/null @@ -1,35 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = max; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/min.js deleted file mode 100644 index dd00b6cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/min.js +++ /dev/null @@ -1,35 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = min; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pick.js deleted file mode 100644 index 6a54846c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pick.js +++ /dev/null @@ -1,14 +0,0 @@ -var randInt = require('../random/randInt'); - - /** - * Remove a random item from the Array and return it - */ - function pick(arr){ - if (arr == null || !arr.length) return; - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pluck.js deleted file mode 100644 index fef4043b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/range.js deleted file mode 100644 index 31d3c770..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - module.exports = range; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduce.js deleted file mode 100644 index 1a350c6e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -var forEach = require('./forEach'); - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - module.exports = reduce; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js deleted file mode 100644 index e36fd4aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ - - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - module.exports = reduceRight; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reject.js deleted file mode 100644 index 685f2918..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/reject.js +++ /dev/null @@ -1,26 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = reject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/remove.js deleted file mode 100644 index aa6517db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - module.exports = remove; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js deleted file mode 100644 index d5f7f3b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - module.exports = removeAll; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js deleted file mode 100644 index 97805ec8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js +++ /dev/null @@ -1,29 +0,0 @@ -var randInt = require('../random/randInt'); -var forEach = require('./forEach'); - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - module.exports = shuffle; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/some.js deleted file mode 100644 index 8d17772b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - module.exports = some; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/sort.js deleted file mode 100644 index 7807339b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ - - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - module.exports = mergeSort; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/split.js deleted file mode 100644 index 4f3ba50c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ - - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - module.exports = split; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js deleted file mode 100644 index ce4c55dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -var isFunction = require('../lang/isFunction'); - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - module.exports = toLookup; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/union.js deleted file mode 100644 index f1334a91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/union.js +++ /dev/null @@ -1,19 +0,0 @@ -var unique = require('./unique'); -var append = require('./append'); - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - module.exports = union; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/unique.js deleted file mode 100644 index 0192b2df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/unique.js +++ /dev/null @@ -1,17 +0,0 @@ -var indexOf = require('./indexOf'); -var filter = require('./filter'); - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - module.exports = unique; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/xor.js deleted file mode 100644 index c125a996..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/xor.js +++ /dev/null @@ -1,26 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var contains = require('./contains'); - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - module.exports = xor; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/zip.js deleted file mode 100644 index 931eb818..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/array/zip.js +++ /dev/null @@ -1,29 +0,0 @@ -var max = require('./max'); -var pluck = require('./pluck'); -var map = require('./map'); - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1, - item; - while (++i < len) { - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - module.exports = zip; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection.js deleted file mode 100644 index d5cf6cad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection.js +++ /dev/null @@ -1,22 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/contains.js deleted file mode 100644 index a73f994b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/contains.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrContains = require('../array/contains'); -var objContains = require('../object/contains'); - - /** - */ - module.exports = make(arrContains, objContains); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/every.js deleted file mode 100644 index 300e03c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/every.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrEvery = require('../array/every'); -var objEvery = require('../object/every'); - - /** - */ - module.exports = make(arrEvery, objEvery); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/filter.js deleted file mode 100644 index 38757005..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/filter.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/find.js deleted file mode 100644 index 14317e64..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/find.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrFind = require('../array/find'); -var objFind = require('../object/find'); - - /** - * Find value that returns true on iterator check. - */ - module.exports = make(arrFind, objFind); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js deleted file mode 100644 index 6e28dcb1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrForEach = require('../array/forEach'); -var objForEach = require('../object/forOwn'); - - /** - */ - module.exports = make(arrForEach, objForEach); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/make_.js deleted file mode 100644 index 029d27bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ - - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - module.exports = makeCollectionMethod; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/map.js deleted file mode 100644 index fc157f53..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var isObject = require('../lang/isObject'); -var values = require('../object/values'); -var arrMap = require('../array/map'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - module.exports = map; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/max.js deleted file mode 100644 index a8490e7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/max.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMax = require('../array/max'); -var objMax = require('../object/max'); - - /** - * Get maximum value inside collection - */ - module.exports = make(arrMax, objMax); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/min.js deleted file mode 100644 index 51d9f148..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/min.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMin = require('../array/min'); -var objMin = require('../object/min'); - - /** - * Get minimum value inside collection. - */ - module.exports = make(arrMin, objMin); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js deleted file mode 100644 index 9b283776..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js deleted file mode 100644 index 4c075735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrReduce = require('../array/reduce'); -var objReduce = require('../object/reduce'); - - /** - */ - module.exports = make(arrReduce, objReduce); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reject.js deleted file mode 100644 index 2a92e3b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/size.js deleted file mode 100644 index 244e33e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/size.js +++ /dev/null @@ -1,19 +0,0 @@ -var isArray = require('../lang/isArray'); -var objSize = require('../object/size'); - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/some.js deleted file mode 100644 index 48fd252e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/collection/some.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrSome = require('../array/some'); -var objSome = require('../object/some'); - - /** - */ - module.exports = make(arrSome, objSome); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date.js deleted file mode 100644 index 1cde1a95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js deleted file mode 100644 index 85905c5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - module.exports = dayOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/diff.js deleted file mode 100644 index 1131cdcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/diff.js +++ /dev/null @@ -1,130 +0,0 @@ -var totalDaysInMonth = require('./totalDaysInMonth'); -var totalDaysInYear = require('./totalDaysInYear'); -var convert = require('../time/convert'); - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - module.exports = diff; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js deleted file mode 100644 index f9526ce4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ - - // en-US (English, United States) - module.exports = { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js deleted file mode 100644 index 71ebadb5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ - - // pt-BR (Brazillian Portuguese) - module.exports = { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js deleted file mode 100644 index 723fc103..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js +++ /dev/null @@ -1,14 +0,0 @@ -var mixIn = require('../object/mixIn'); -var enUS = require('./i18n/en-US'); - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - module.exports = activeLocale; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js deleted file mode 100644 index 4212870b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - module.exports = isLeapYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isSame.js deleted file mode 100644 index 4097d29b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -var startOf = require('./startOf'); - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - module.exports = isSame; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js deleted file mode 100644 index 8ea2b171..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -var some = require('../array/some'); - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - var match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else if ((match = TIME_ZONE.exec(str))) { - var match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - module.exports = parseISO8601; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/startOf.js deleted file mode 100644 index 072bc0ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -var clone = require('../lang/clone'); - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - module.exports = startOf; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/strftime.js deleted file mode 100644 index f033d10f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/strftime.js +++ /dev/null @@ -1,118 +0,0 @@ -var pad = require('../number/pad'); -var i18n = require('./i18n_'); -var dayOfTheYear = require('./dayOfTheYear'); -var timezoneOffset = require('./timezoneOffset'); -var timezoneAbbr = require('./timezoneAbbr'); -var weekOfTheYear = require('./weekOfTheYear'); - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - module.exports = strftime; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js deleted file mode 100644 index b1006875..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -var timezoneOffset = require('./timezoneOffset'); - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - module.exports = timezoneAbbr; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js deleted file mode 100644 index 9492dceb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -var pad = require('../number/pad'); - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - module.exports = timezoneOffset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js deleted file mode 100644 index 8aafeb84..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js +++ /dev/null @@ -1,25 +0,0 @@ -var isDate = require('../lang/isDate'); -var isLeapYear = require('./isLeapYear'); - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - module.exports = totalDaysInMonth; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js deleted file mode 100644 index b4b7e9b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isLeapYear = require('./isLeapYear'); - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - module.exports = totalDaysInYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js deleted file mode 100644 index dd51b7f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -var dayOfTheYear = require('./dayOfTheYear'); - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - module.exports = weekOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/array.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/array.md deleted file mode 100644 index 1f390fbc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/array.md +++ /dev/null @@ -1,773 +0,0 @@ -# array # - -Array utilities. - - - - -## append(arr1, arr2):Array - -Appends an array to the end of the other. -The first array will be modified and will contain the appended items. - -See: [`union()`](#union), [`combine()`](#combine) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -append(foo, bar); // ['a', 'b', 'b', 'd'] -``` - - - -## collect(arr, callback, [thisObj]):Array - -Maps the items in `arr` and concatenates the resulting arrays. - -See: [`map()`](#map) - -```js -collect([1, 2, 3], function(val) { - return [val, val % 2]; -}); // [1, 1, 2, 0, 3, 1]; - -collect(['a', 'bb', ''], function(val) { - return val.split(''); -}); // ['a', 'b', 'b'] -``` - -It also supports a shorthand syntax: - -```js -var items = [{ a: [1] }, { b: 'foo' }, { a: [2, 3] }]; -collect(items, 'a'); // [1, 2, 3]; -``` - - - -## combine(arr1, arr2):Array - -Combines an array with all the items of another. -The first array will be modified and will contain the combined items. -Does not allow duplicates and is case and type sensitive. - -See: [`union()`](#union), [`append()`](#append) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -combine(foo, bar); // ['a', 'b', 'd'] -``` - - - -## compact(arr):Array - -Returns a new Array without any `null` or `undefined` values. Note that it will -keep empty strings and other falsy values (simillar to Ruby Array#compact). - -```js -var arr = [0, 1, null, false, '', 'foo', undefined, 'bar']; -compact(arr); // [0, 1, false, '', 'foo', 'bar']; -``` - - - -## contains(arr, value):Boolean - -Checks if Array contains value. Alias to `indexOf(arr, val) !== -1`. - -```js -var arr = [1, 2, 3]; -contains(arr, 2); // true -contains(arr, 'foo'); // false -``` - - - -## difference(...arrs):Array - -Return a new Array with elements that aren't present in the other Arrays -besides the first one. - -Works like [Python set#difference](http://docs.python.org/library/stdtypes.html#set.difference). - -It will remove duplicates. - -See: [`xor()`](#xor), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -difference(a, b); // ['a', 'b'] -``` - - - -## every(arr, callback, [thisObj]):Array - -Crossbrowser `Array.every()`. - -Tests whether all elements in the array pass the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -every(items, isString); // false -every(items, isFunction); // false -every(items, function(val, key, arr){ - return val != null; -}); // true -``` - -more info at [MDN Array#every](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:true}, {id:8, active:true}]; -// all items with `id === 8` -every(items, {id:8}); // false -// `active` is truthy on all items -every(items, 'active'); // true -``` - - - -## filter(arr, callback, [thisObj]):Array - -Crossbrowser `Array.filter()`. - -Creates a new array with all elements that pass the callback test. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var nums = [1, 2, 3, 4, 5, 6]; -var oddNumbers = filter(nums, function(val, key, arr){ - return (val % 2) !== 0; -}); -// > [1, 3, 5] -``` - -more info at [MDN Array#filter](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter) - -Filter also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// filter item that matches all properties/values pairs -filter(arr, {name:'john', beard:false}); -// > [{name:'john', surnname:'connor', beard:false}] -// items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'doe', beard:true}] -``` - -See [`reject()`](#reject) - - - -## find(arr, callback, [thisObj]):void - -Loops through all the items in the Array and returns the first one that passes -a truth test (callback). - -```js -var arr = [123, {a:'b'}, 'foo', 'bar']; -find(arr, isString); // "foo" -find(arr, isNumber); // 123 -find(arr, isObject); // {a:'b'} -``` - -Find also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true} -]; -// first item that matches all properties/values pairs -find(arr, {name:'john'}); // {name:'john', surnname:'connor', beard:false} -// first item where 'beard' is a truthy value -find(arr, 'beard'); // {name:'john', surnname:'doe', beard:true} -``` - -See: [findIndex()](#findIndex) - - - -## findIndex(arr, iterator, [thisObj]):Number - -Loops through the items in the Array and returns the index of the first one -that passes a truth test (callback). - -Returns `-1` if no item was found that passes the truth test. - -```js -var arr = [1, { a: 1 }, 'foo', 'bar']; -findIndex(arr, isString); // 2 -findIndex(arr, isNumber); // 0 -findIndex(arr, isObject); // 1 -findIndex(arr, isRegExp); // -1 -``` - -`findIndex` also supports shorthand notation: - -```js -var pets = [ - { pet: 'dog', name: 'Sam' }, - { pet: 'dog', name: 'Maggie' } -]; - -findIndex(pets, { pet: 'dog' }); // 0 -findIndex(pets, { name: 'Maggie' }); // 1 -``` - -See: [find()](#find) - - - -## flatten(arr, [level]):Array - -Recursively flattens an array. A new array containing all the elements is -returned. If `level` is specified, it will only flatten up to that level. - -### Example - -```js -flatten([1, [2], [3, [4, 5]]]); -// > [1, 2, 3, 4, 5] -flatten([1, [2], [3, [4, 5]]], 1); -// > [1, 2, 3, [4, 5]] -``` - - - -## forEach(arr, callback, [thisObj]):void - -Crossbrowser `Array.forEach()`. - -It allows exiting the iteration early by returning `false` on the callback. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = ['foo', 'bar', 'lorem', 'ipsum']; -forEach(items, function(val, key, arr){ - console.log(key +' : '+ val); - if (val === 'lorem') { - // stop iteration (break) - return false; - } -}); -``` - -more info at [MDN Array#forEach](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach) - - - -## indexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.indexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#indexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf) - - - - -## insert(arr, ...items):Number - -Push items into array only if they aren't contained by it. Returns the new -`length` of the array. - -See: [`remove()`](#remove), [`removeAll()`](#removeAll), -[`contains()`](#contains) - -```js -var arr = ['a', 'b']; -insert(arr, 'a'); // 2 : ['a', 'b'] -insert(arr, 'c'); // 3 : ['a', 'b', 'c'] -insert(arr, 1, 2, 'b'); // 5 : ['a', 'b', 'c', 1, 2] -``` - - - -## intersection(...arrs):Array - -Return a new Array with elements common to all Arrays. - -Similar to Python set#intersection and underscore.js intersection. - -It will remove duplicates. - -See: [`difference()`](#difference), [`xor()`](#xor) - -```js -var a = ['a', 'b', 1], - b = ['c', 1], - c = [1, 2, 3]; -intersection(a, b, c); // [1] -``` - - - -## invoke(arr, methodName[, ...args]):Array - -Call `methodName` on each item of the array passing custom arguments if needed. - -```js -invoke([[3,2,1], [9,5,2]], 'sort'); // [[1,2,3], [2,5,9]] -``` - - - -## join(arr, [separator]):String - -Joins the strings in `arr`, inserting `separator` between each value. - -This ignores null values and empty strings that are in the array. `separator` -defaults to an empty string. This will convert all non-string objects in the -array to a string. - -### Example - -```js -join(['a', 'b', 'c']); // 'abc' -join(['foo', 'bar'], ', '); // 'foo, bar' -join([null, 'foo', '', 'bar', undefined], ':'); // 'foo:bar' -``` - - - -## lastIndexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.lastIndexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#lastIndexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf) - - - -## map(arr, callback, [thisObj]]):Array - -Crossbrowser `Array.map()`. - -Creates a new array with the results of calling a provided function on every -element in this array. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -See: [`collect()`](#collect) - -```js -var nums = [1,2,3,4]; -var double = map(nums, function(val, key, arr){ - return val * 2; -}); -// > [2, 4, 6, 8] -``` - -more info at [MDN Array#map](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map) - -It also supports a shorthand notation which can be used to achieve same result -as [`array/pluck`](#pluck): - -```js -var src = ['lorem', 'ipsum', 'foo', 'amet']; -// grab the "length" property of all items -var lengths = map(src, 'length'); // [5, 5, 3, 4] -``` - - - -## max(arr, [iterator], [thisObj]):* - -Returns maximum value inside array or use a custom iterator to define how items -should be compared. - -See: [`min()`](#min) - -```js -max([10, 2, 7]); // 10 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - -It also supports a shorthand notation: - -```js -max(['foo', 'lorem', 'amet'], 'length'); // "lorem" -``` - - - -## min(arr, [iterator], [thisObj]):* - -Returns minimum value inside array or use a custom iterator to define how items -should be compared. - -See: [`max()`](#max) - -```js -min([10, 2, 7]); // 2 -min(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'foo' -``` - -It also supports a shorthand notation: - -```js -min(['foo', 'lorem', 'amet'], 'length'); // "foo" -``` - - - -## pick(arr):* - -Gets a random item and remove it from the array. - -### Example: - - var arr = [1, 2, 3, 4, 5, 6]; - var item_1 = pick(arr); // 4 - var item_2 = pick(arr); // 1 - console.log(arr); // [2, 3, 5, 6] - - - -## pluck(arr, propName):Array - -Extract a list of property values. - -See: [`function/prop()`](function.html#prop) - -```js -var users = [{name : 'John', age: 21}, {name: 'Jane', age : 27}]; -var names = pluck(users, 'name'); // ["John", "Jane"] -var ages = pluck(users, 'age'); // [21, 27] -``` - - - -## range([start], stop[, step]):Array - -Creates a new Array with all the values inside the range. Works similarly to -Python#range or PHP#range. - -### Arguments - - 1. `[start]` (Number) : Range start. Default is `0`. - 2. `stop` (Number) : Range limit. - 3. `[step]` (Number) : Step size. Default is `1`. - -### Example - -```js -range(5); // [0, 1, 2, 3, 4, 5] -range(0, 5); // [0, 1, 2, 3, 4, 5] -range(0, 5, 2); // [0, 2, 4] -range(20, 40, 5); // [20, 25, 30, 35, 40] -``` - - - -## reduce(arr, fn):* - -Crossbrowser `Array.reduce()`. - -Apply a function against an accumulator and each value of the array (from -left-to-right) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduce](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce) - - - -## reduceRight(arr, fn):* - -Crossbrowser `Array.reduceRight()`. - -Apply a function simultaneously against two values of the array (from -right-to-left) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) - - - -## reject(arr, fn, thisObj):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var numbers = [1, 2, 3, 4, 5, 6]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4, 6] -``` - -It also supports a shorthand syntax: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// reject items that matches all properties/values pairs -reject(arr, {name:'john'}); -// > [{name:'jane', surnname:'doe', beard:false}] -// reject items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'connor', beard:false}, -// {name:'jane', surname:'doe', beard:false}] -``` - - - -## remove(arr, item):void - -Remove a single item from the array. - -IMPORTANT: it won't remove duplicates, just a single item. - -### Example - -```js -var foo = [1, 2, 3, 4]; -remove(foo, 2); -console.log(foo); // [1, 3, 4] -``` - - - -## removeAll(arr, item):void - -Remove all instances of an item from the array. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2]; -removeAll(foo, 2); -console.log(foo); // [1, 3, 4]; -``` - - - -## shuffle(arr):Array - -Returns a new Array with items randomly sorted (shuffled). Similar to Ruby Array#shuffle. - -### Example - -```js -var arr = ['a', 'b', 'c', 'd', 'e']; -shuffle(arr); // ['b', 'd', 'e', 'c', 'a'] -``` - - - -## some(arr, callback, [thisObj]):Array - -Crossbrowser `Array.some()`. - -Tests whether some element in the array passes the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -some(items, isString); // true -some(items, isFunction); // false -``` - -more info at [MDN Array#some](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:false}, {id:8, active:false}]; -// at least one item with `id === 8` -some(items, {id:8}); // true -// `active` is truthy on at least one item -some(items, 'active'); // true -``` - -see also: [`object/matches`](object.html#matches) - - - -## sort(arr, [compareFn]):Array - -Returns a sorted Array using the [Merge Sort](http://en.wikipedia.org/wiki/Merge_sort) algorithm (stable sort). - -The `Array.prototype.sort` browser implementations differ since the sorting algorithm isn't described in the ES spec - [in V8 it isn't stable](http://code.google.com/p/v8/issues/detail?id=90) and [on Firefox it is stable](https://bugzilla.mozilla.org/show_bug.cgi?id=224128) - so this function doesn't use the browser native implementation and is recommended in cases where a stable sort is required (items should preserve same order if already sorted). - -**Important:** It does logical comparisson by default (greater/less than) and -not a string comparisson like the native `Array#sort`. - -### compareFn - -If `compareFn` is supplied elements are sorted based on the value returned by -the `compareFn`. - - - If `compareFn(a, b)` is less than `0`, sort `a` to a lower index than `b`. - - If `compareFn(a, b)` returns `0`, leave `a` and `b` unchanged with respect - to each other, but sorted with respect to all different elements. - - If `compareFn(a, b)` is greater than `0`, sort `b` to a lower index than - `a`. - -### Example - -```js -sort([187, 23, 47, 987, 12, 59, 0]); // [0, 12, 23, 47, 59, 187, 987] -sort(['a', 'z', 'c', 'beta', 'b']); // ['a', 'b', 'beta', 'c', 'z'] - -// ['sit', 'amet', 'lorem', 'ipsum'] -sort(['lorem', 'ipsum', 'sit', 'amet'], function(a, b){ - // sort by length, items with same length - // will keep the relative order (stable) - return a.length - b.length; -}); - -// [4, 3, 2, 1] -sort([2, 3, 1, 4], function(a, b){ - // reverse sort - return b - a; -}); -``` - - - -## split(arr, [segments]):Array - -Splits an array into a fixed number of segments. - -The number of segments is specified by `segments` and defaults to 2. If the -array cannot be evenly split, the first segments will contain the extra items. -If `arr` is empty, an empty array is returned. If `arr.length` is less than -`segments`, then the resulting array will have `arr.length` number of -single-element arrays. - -### Example -```js -split([1, 2, 3, 4, 5], 3) // [ [1, 2], [3, 4], [5] ] -split([1, 2, 3, 4, 5]) // [ [1, 2, 3], [4, 5] ] -split([]) // [] -split([1, 2], 3) // [ [1], [2] ] -``` - - - -## toLookup(arr, key):Object - -Create an object that indexes the items in the array by a key. If `key` is a function, the key for each value in the resulting object will be the result of calling the function with the value as an argument. Otherwise `key` specifies the property on each value to use as the key. - -### Example - -```js -var foo = [{ name: 'a', thing: 1 }, { name: 'b', thing: 2 }]; -// { a: { name: 'a', thing: 1 }, b: { name: 'b', thing: 2 } } -toLookup(foo, 'name'); -// same as above -toLookup(foo, function (value) { return value.name; }); -``` - - - -## union(...arrs):Array - -Concat multiple arrays removing duplicates. - -```js -var a = ['a', 'b'], - b = ['c', 'a'], - c = [1, 'b', 2, 3, 'a']; - -//note that unique remove from begin to end -union(a, b, c); // ['c', 1, 'b', 2, 3, 'a'] -``` - - - -## unique(arr):Array - -Return a new Array of unique items. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2, 3, 4]; -var bar = unique(foo); -console.log(foo); // [1, 2, 3, 4]; -``` - - - -## xor(arr1, arr2):Array - -Exclusive OR. Returns items that are present in a single array. - -Works like [Python set#symmetric_difference](http://docs.python.org/library/stdtypes.html#set.symmetric_difference) renamed for brevity. - -It will remove duplicates. - -See: [`difference()`](#difference), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -xor(a, b); // ['a', 'b', 'c'] -``` - - - -## zip(...arrs):Array - -Groups the elements of each array at their corresponding indexes. - -Useful for separate data sources that are coordinated through matching array -indexes. For a matrix of nested arrays, `zip.apply(...)` can transpose the -matrix in a similar fashion. - -```js -// [['moe', 30, true], ['larry', 40, false], ['curly', 50, false]] -zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); -``` - - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/collection.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/collection.md deleted file mode 100644 index 2ffcab10..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/collection.md +++ /dev/null @@ -1,233 +0,0 @@ -# collection # - -Methods for dealing with collections (Array or Objects). - - - -## contains(list, value):Boolean - -Checks if collection contains value. - -```js -contains({a: 1, b: 2, c: 'bar'}, 2); // true -contains([1, 2, 3], 'foo'); // false -``` - -See: [array/contains](array.html#contains), [object/contains](object.html#contains) - - - -## every(list, callback, [thisObj]):Boolean - -Tests whether all values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - -See: [array/every](array.html#every), [object/every](object.html#every) - - - -## filter(list, callback, [thisObj]):Array - -Filter collection properties. - -See: [array/filter](array.html#filter), [object/filter](object.html#filter) - - - -## find(list, callback, [thisObj]):* - -Loops through all the values in the collection and returns the first one that -passes a truth test (callback). - -**Important:** loop order over objects properties isn't guaranteed to be the -same on all environments. - -```js -find({a: 'foo', b: 12}, isString); // 'foo' -find(['foo', 12], isNumber); // 12 -``` - -See: [array/find](array.html#find), [object/find](object.html#find) - - - -## forEach(list, callback, [thisObj]) - -Loop through all values of the collection. - -See: [array/forEach](array.html#forEach), [object/forOwn](object.html#forOwn) - - - -## map(list, callback, [thisObj]):Array - -Returns a new collection where the properties values are the result of calling -the callback for each property in the original collection. - -See: [array/map](array.html#map), [object/map](object.html#map) - - - -## max(list, [iterator]):* - -Returns maximum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`min()`](#min), [array/max](array.html#max), [object/max](object.html#max) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(list, [iterator]):* - -Returns minimum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`max()`](#max), [array/min](array.html#min), [object/min](object.html#min) - -```js -min([10, 2, 7]); // 2 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## pluck(list, propName):Array - -Extract a list of property values. - -```js -var users = [ - { - name : 'John', - age : 21 - }, - { - name : 'Jane', - age : 27 - } -]; - -pluck(users, 'name'); // ["John", "Jane"] -pluck(users, 'age'); // [21, 27] - -users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // ['John', 'Mary'] -``` - -See: [array/pluck](array.html#pluck), [object/pluck](object.html#pluck) - - - -## reduce(list, callback, initial, [thisObj]):* - -Apply a function against an accumulator and each value in the collection as to -reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - -See: [array/reduce](array.html#reduce), [object/reduce](object.html#reduce) - - - -## reject(list, fn, [thisObj]):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -### Example - -```js -var numbers = [1, 2, 3, 4, 5]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4] - -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // [2, 4] -``` - -See: [array/reject](array.html#reject), [object/reject](object.html#reject) - - - -## size(list):Number - -Returns the number of values in the collection. - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -size([1,2,3]); // 3 -size(null); // 0 -``` - -See: [object/size](object.html#size) - - - -## some(list, callback, [thisObj]):Boolean - -Tests whether any values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -some(obj, isString); // true -some([1, 2, 3], isNumber) // true -some([1, 2, 3], isString) // false -``` - -See: [array/some](array.html#some), [object/some](object.html#some) - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/date.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/date.md deleted file mode 100644 index b3f7f40e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/date.md +++ /dev/null @@ -1,295 +0,0 @@ -# date # - -Date utilities. - - -## dayOfTheYear(date):Number - -How many days elapsed since begining of the year (following gregorian -calendar). - -```js -// Jan 1st -dayOfTheYear(new Date(2013, 0, 1)); // 1 -// Dec 31th -dayOfTheYear(new Date(2013, 11, 31)); // 364 -``` - - - -## diff(date1, date2, [unitName]):Number - -Calculate the difference between dates (range). - -The returned value is always positive. The default `unitName` is `"ms"`. - -Available units: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`, -`millisecond`. - -See: [`time/convert()`](time.html#convert) - -```js -var d1 = new Date(2012, 4, 5); -var d2 = new Date(2013, 4, 8); -diff(d1, d2); // 31795200000 -diff(d1, d2, 'hour'); // 8832 -diff(d1, d2, 'week'); // 52.57142857142857 -diff(d1, d2, 'month'); // 12.096774193548388 -diff(d1, d2, 'year'); // 1.0082191780821919 -``` - - - -## isLeapYear(fullYear|date):Boolean - -Checks if it's a [leap year](http://en.wikipedia.org/wiki/Leap_year) according -to the Gregorian calendar. - -see: [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -isLeapYear(2012); // true -isLeapYear(2013); // false -isLeapYear(new Date(2012, 2, 28)); // true -``` - - -## isSame(date1, date2[, period]):Boolean - -Check if both dates are the "same". - -You can pass an optional *period* used to set the comparisson precision. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -var date1 = new Date(2013, 1, 3); -var date2 = new Date(2013, 2, 9); -isSame(date1, date2); // false -isSame(date1, date2, 'day'); // false -isSame(date1, date2, 'month'); // false -isSame(date1, date2, 'year'); // true -``` - - - -## parseIso(str):Number - -Parses an [ISO8601](http://en.wikipedia.org/wiki/Iso8601) date and returns the -number of milliseconds since January 1, 1970, 00:00:00 UTC, or `NaN` if it is -not a valid ISO8601 date. - -This parses *all* ISO8601 dates, including dates without times, [ordinal -dates](https://en.wikipedia.org/wiki/ISO_8601#Ordinal_dates), and the compact -representation (omitting delimeters). The only exception is [ISO week -dates](https://en.wikipedia.org/wiki/ISO_week_date), which are not parsed. - -If no time zone offset is specified, it assumes UTC time. - -```js -// Jan 01, 1970 00:00 GMT -parseIso('1970-01-01T00:00:00') // 0 -parseIso('1970-001') // 0 -parseIso('1970-01-01') // 0 -parseIso('19700101T000000.00') // 0 -parseIso('1970-01-01T02:00+02:00') // 0 - -// Jan 02, 2000 20:10 GMT+04:00 -parseIso('2000-01-02T20:10+04:00') // 946829400000 -``` - - - -## startOf(date, period):Date - -Get a new Date at the start of the period. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -// Apr 05 2013 11:27:43 -var date = new Date(2013, 3, 5, 11, 27, 43, 123); -startOf(date, 'year'); // Jan 01 2013 00:00:00 -startOf(date, 'month'); // Apr 01 2013 00:00:00 -startOf(date, 'day'); // Apr 05 2013 00:00:00 -startOf(date, 'hour'); // Apr 05 2013 11:00:00 -``` - - - -## strftime(date, format, [l10n]):String - -Format date based on strftime format. - -Replaced tokens: - -<dl> -<dt>%a</dt><dd> locale's abbreviated weekday name.</dd> -<dt>%A</dt><dd> locale's full weekday name.</dd> -<dt>%b</dt><dd> locale's abbreviated month name.</dd> -<dt>%B</dt><dd> locale's full month name.</dd> -<dt>%c</dt><dd> locale's appropriate date and time representation.</dd> -<dt>%C</dt><dd> century number (the year divided by 100 and truncated -to an integer) as a decimal number [00..99].</dd> -<dt>%d</dt><dd> day of the month as a decimal number [01..31].</dd> -<dt>%D</dt><dd>same as %m/%d/%y.</dd> -<dt>%e</dt><dd> day of the month as a decimal number [1..31]; -a single digit is preceded by a space.</dd> -<dt>%F</dt><dd>The ISO 8601 date format (%Y-%m-%d)</dd> -<dt>%h</dt><dd>same as %b.</dd> -<dt>%H</dt><dd> hour (24-hour clock) as a decimal number [00..23].</dd> -<dt>%I</dt><dd> hour (12-hour clock) as a decimal number [01..12].</dd> -<dt>%j</dt><dd> day of the year as a decimal number [001..366].</dd> -<dt>%L</dt><dd> zero-padded milliseconds [000..999]</dd> -<dt>%m</dt><dd> month as a decimal number [01..12].</dd> -<dt>%M</dt><dd> minute as a decimal number [00..59].</dd> -<dt>%n</dt><dd> newline character.</dd> -<dt>%p</dt><dd> locale's equivalent of either "am" or "pm"</dd> -<dt>%P</dt><dd> locale's equivalent of either "AM" or "PM"</dd> -<dt>%r</dt><dd> time in a.m. and -p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p.</dd> -<dt>%R</dt><dd> time in 24 hour notation (%H:%M).</dd> -<dt>%s</dt><dd> seconds since Epoch (1970-01-01 00:00:00 UTC)</dd> -<dt>%S</dt><dd> second as a decimal number [00..60].</dd> -<dt>%t</dt><dd> tab character.</dd> -<dt>%T</dt><dd> time (%H:%M:%S).</dd> -<dt>%u</dt><dd> weekday as a decimal number [1..7], with 1 representing -Monday.</dd> -<dt>%U</dt><dd> week number of the year (Sunday as the first day of -the week) as a decimal number [00..53].</dd> -<del><dt>%V</dt><dd> week number of the year (Monday as the first day of the -week) as a decimal number [01..53]. If the week containing 1 January has -four or more days in the new year, then it is considered week 1. Otherwise, -it is the last week of the previous year, and the next week is week 1.</dd></del> -<dt>%w</dt><dd> weekday as a decimal number [0..6], with 0 representing -Sunday.</dd> -<dt>%W</dt><dd> week number of the year (Monday as the first day of -the week) as a decimal number [00..53]. All days in a new year preceding -the first Monday are considered to be in week 0.</dd> -<dt>%x</dt><dd> locale's appropriate date representation.</dd> -<dt>%X</dt><dd> locale's appropriate time representation.</dd> -<dt>%y</dt><dd> year without century as a decimal number [00..99].</dd> -<dt>%Y</dt><dd> year with century as a decimal number.</dd> -<dt>%Z</dt><dd> timezone name or abbreviation, or by no bytes -if no timezone information exists.</dd> -<dt>%%</dt><dd>is replaced by %.</dd> -</dl> - -```js -var date = new Date(2013, 3, 8, 9, 2, 4); -strftime(date, '%Y-%m-%d'); // "2013-04-08" -strftime(date, '%R'); // "09:02" -strftime(date, '%Y-%m-%dT%H:%M:%S%z'); // "2013-04-08T09:02:04+0000" -``` - -You can also set a custom locale: - -```js -var ptBr = require('mout/date/i18n/pt-BR'); -strftime(date, '%a, %d %b', ptBr); // 'Seg, 08 Abr' -strftime(date, '%A, %d %B', ptBr); // 'Segunda, 08 Abril' -``` - -To set it globally: - -```js -require('mout/date/i18n_').set( customLocaleData ); -``` - -See [date/i18n](https://github.com/mout/mout/tree/master/src/date/i18n) -for localization examples. - - - -## timezoneAbbr(date):String - -Return timezone abbreviation or similar data. - -The result will vary based on the OS/browser since some environments doesn't -provide enough info about the current locale. - -```js -// IE 7-8 -timezoneAbbr(new Date()); // "-0500" -// Chrome, FF, V8 -timezoneAbbr(new Date()); // "EST" -``` - - - -## timezoneOffset(date):String - -Return time zone as hour and minute offset from UTC (e.g. +0900). - -It's important to note that JavaScript Date object will use the system locale -info to determinate the [timezone -offset](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) -and that daylight saving time affects the result. - -```js -// if system locale is EST -timezoneOffset(new Date()); // -0500 -``` - - - -## totalDaysInMonth(fullYear, monthIndex):Number - -Returns the amount of days in the month taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear) - -```js -totalDaysInMonth(2008, 1); // 29 (leap year) -totalDaysInMonth(2009, 1); // 28 - -// you can also pass a Date object as single argument -totalDaysInMonth( new Date(2013, 0, 1) ); // 31 -``` - - -## totalDaysInYear(fullYear):Number - -Returns the amount of days in the year taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear), [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -totalDaysInYear(2008); // 366 (leap year) -totalDaysInYear(2009); // 365 - -// you can also pass a Date object as single argument -totalDaysInYear( new Date(2013, 0, 1) ); // 365 -``` - - - -## weekOfTheYear(date, [firstDayOfWeek]):Number - -Returns how many weeks elapsed since start of the year (`0..53`). - -`firstDayOfWeek` can be `0` (Sunday) or `1` (Monday). By default weeks start at -Sunday. - -It will return `0` if `date` is before the first `firstDayOfWeek` of the year. - -```js -// Tue Jan 01 2013 -weekOfTheYear( new Date(2013,0,1) ); // 0 -// Wed Jan 09 2013 -weekOfTheYear( new Date(2013,0,9) ); // 1 -// Sun Jan 01 2012 -weekOfTheYear( new Date(2012,0,1) ); // 1 -// Mon Jan 09 2012 -weekOfTheYear( new Date(2012,0,9) ); // 2 -``` - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/function.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/function.md deleted file mode 100644 index 2695a025..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/function.md +++ /dev/null @@ -1,174 +0,0 @@ -# function # - -Function*(al)* utilities. - - - -## bind(fn, context, [...args]):Function - -Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - -### Arguments - - 1. `fn` (Function) : Target Function - 2. `context` (Object) : Execution context (object used as `this`) - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`partial()`](#partial), [object/bindAll](./object.html#bindAll) - - - -## compose(...fn):Function - -Returns the composition of a list of functions, where each function consumes -the return value of the function that follows. In math terms, composing the -functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - -```js -function add2(x) { return x + 2 } -function multi2(x) { return x * 2 } -map([1, 2, 3], compose(add2, multi2)); // [4, 6, 8] - -//same as -map([1, 2, 3], function(x){ - return add2( multi2(x) ); -}); -``` - - - -## debounce(fn, delay[, isAsap]):Function - -Creates a function that will delay the execution of `fn` until after `delay` -milliseconds have elapsed since the last time it was invoked. - -Subsequent calls to the debounced function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = debounce(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a debounced-function call and `X` is the actual -callback execution: - - Default - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - - Debounced with `isAsap == true`: - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - -See: [`throttle()`](#throttle) - - -## func(name):Function - -Returns a function that calls a method with given `name` on supplied object. -Useful for iteration methods like `array/map` and `array/forEach`. - -See: [`prop()`](#prop) - -```js -// will call the method `getName()` for each `user` -var names = map(users, func('getName')); -``` - - - -## partial(fn, [...args]):Function - -Return a partially applied function supplying default arguments. - -This method is similar to [`bind`](#bind), except it does not alter the this -binding. - -### Arguments - - 1. `fn` (Function) : Target Function - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`bind()`](#bind) - -```js -function add(a, b){ return a + b } -var add10 = partial(add, 10); -console.log( add10(2) ); // 12 -``` - - - -## prop(name):Function - -Returns a function that gets a property with given `name` from supplied object. -Useful for using in conjunction with `array/map` and/or for creating getters. - -See: [`array/pluck()`](array.html#pluck) - -```js -var users = [{name:"John", age:21}, {name:"Jane", age:25}]; -// ["John", "Jane"] -var names = map(users, prop('name')); -``` - - - -## series(...fn):Function - -Returns a function that will execute all the supplied functions in order and -passing the same parameters to all of them. Useful for combining multiple -`array/forEach` into a single one and/or for debugging. - - -```js -// call `console.log()` and `doStuff()` for each item item in the array -forEach(arr, series(console.log, doStuff)); -``` - - - -## throttle(fn, interval):Function - -Creates a function that, when executed, will only call the `fn` function at -most once per every `interval` milliseconds. - -If the throttled function is invoked more than once during the wait timeout, -`fn` will also be called on the trailing edge of the timeout. - -Subsequent calls to the throttled function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = throttle(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a throttled-function call and `X` is the actual -`fn` execution: - - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X X X X X X X X X X X - -See: [`debounce()`](#debounce) - - -## timeout(fn, millis, context, [...args]):Number - -Functions as a wrapper for `setTimeout`. Calls a the function `fn` after a given delay `millis` in milliseconds. -The function is called within the specified context. The return value can be used to clear the timeout using `clearTimeout`. - -```js -var id = timeout(doStuff, 300, this); - -clearTimeout(id); -``` - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/lang.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/lang.md deleted file mode 100644 index 56d7879b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/lang.md +++ /dev/null @@ -1,385 +0,0 @@ -# lang # - -Language Utilities. Easier inheritance, scope handling, type checks. - - - -## clone(val):* - -Clone native types like Object, Array, RegExp, Date and primitives. - -This method will not clone values that are referenced within `val`. It will -only copy the value reference to the new value. If the value is not a plain -object but is an object, it will return the value unchanged. - -### Example - -```js -var a = { foo: 'bar' }; -var b = clone(a); -console.log(a === b); // false -console.log(a.foo === b.foo); // true - -var c = [1, 2, 3]; -var d = clone(b); -console.log(c === d); // false -console.log(c); // [1, 2, 3] -``` - -See: [`deepClone()`](#deepClone) - - - -## createObject(parent, [props]):Object - -Create Object using prototypal inheritance and setting custom properties. - -Mix between [Douglas Crockford Prototypal Inheritance](http://javascript.crockford.com/prototypal.html) and the EcmaScript 5 `Object.create()` method. - -### Arguments - - 1. `parent` (Object) : Parent Object - 2. `[props]` (Object) : Object properties - -### Example - -```js -var base = { - trace : function(){ - console.log(this.name); - } -}; - -var myObj = createObject(base, { - name : 'Lorem Ipsum' -}); - -myObject.trace(); // "Lorem Ipsum" -``` - - - -## ctorApply(constructor, args):Object - -Do `Function.prototype.apply()` on a constructor while maintaining prototype -chain. - -```js -function Person(name, surname) { - this.name = name; - this.surname = surname; -} - -Person.prototype.walk = function(){ - console.log(this.name +' is walking'); -}; - -var args = ['John', 'Doe']; - -// "similar" effect as calling `new Person("John", "Doe")` -var john = ctorApply(Person, args); -john.walk(); // "John is walking" -``` - - - -## deepClone(val, [instanceClone]):* - -Deep clone native types like Object, Array, RegExp, Date and primitives. - -The `instanceClone` function will be invoked to clone objects that are not -"plain" objects (as defined by [`isPlainObject`](#isPlainObject)) if it is -provided. If `instanceClone` is not specified, it will not attempt to clone -non-plain objects, and will copy the object reference. - -### Example - -```js -var a = {foo:'bar', obj: {a:1, b:2}}; -var b = deepClone(a); // {foo:'bar', obj: {a:1, b:2}} -console.log( a === b ); // false -console.log( a.obj === b.obj ); // false - -var c = [1, 2, [3, 4]]; -var d = deepClone(c); // [1, 2, [3, 4]] -var e = c.concat(); // [1, 2, [3, 4]] - -console.log( c[2] === d[2] ); // false -// concat doesn't do a deep clone, arrays are passed by reference -console.log( e[2] === d[2] ); // true - -function Custom() { } -function cloneCustom(x) { return new Custom(); } -var f = { test: new Custom() }; -var g = deepClone(f, cloneCustom); -g.test === f.test // false, since new Custom instance will be created -``` - -See: [`clone()`](#clone) - - - -## defaults(val, ...defaults):void - -Return first value that isn't `null` or `undefined`. - - function doSomethingAwesome(foo, bar) { - // default arguments - foo = defaults(foo, 'lorem'); - bar = defaults(bar, 123); - // ... - } - - - -## inheritPrototype(child, parent):void - -Inherit prototype from another Object. - -```js -function Foo(name){ - this.name = name; -} -Foo.prototype = { - getName : function(){ - return this.name; - } -}; - -function Bar(name){ - this.name = name; -} -//should be called before calling constructor -inheritPrototype(Bar, Foo); - -var myObj = new Bar('lorem ipsum'); -myObj.getName(); // "lorem ipsum" -``` - - -## is(x, y):Boolean - -Check if both values are identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -is(NaN, NaN); // true -is(-0, +0); // false -is('a', 'b'); // false -``` - -See: [`isnt()`](#isnt) - - - -## isnt(x, y):Boolean - -Check if both values are not identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -isnt(NaN, NaN); // false -isnt(-0, +0); // true -isnt('a', 'b'); // true -``` - -See: [`is()`](#is) - - - - -## isArguments(val):Boolean - -If value is an "Arguments" object. - - - -## isArray(val):Boolean - -If value is an Array. Uses native ES5 `Array.isArray()` if available. - - - -## isBoolean(val):Boolean - -If value is a Boolean. - - - -## isDate(val):Boolean - -If value is a Date. - - - -## isEmpty(val):Boolean - -Checks if Array/Object/String is empty. - - -```js -isEmpty(''); // true -isEmpty('bar'); // false -isEmpty([]); // true -isEmpty([1, 2]); // false -isEmpty({}); // true -isEmpty({a:1, b:2}); // false -``` - - -## isFinite(val):Boolean - -Checks if value is Finite. - -Note: This is not the same as native `isFinite`, which will return `true` for -booleans and empty strings. See http://es5.github.com/#x15.1.2.5. - - - -## isFunction(val):Boolean - -If value is a Function. - - - -## isKind(val, kind):Boolean - -If value is of "kind". (used internally by some of the *isSomething* checks). - -Favor the other methods since strings are commonly mistyped and also because -some "kinds" can only be accurately checked by using other methods (e.g. -`Arguments`), some of the other checks are also faster. - -```js -isKind([1,2], 'Array'); // true -isKind(3, 'Array'); // false -isKind(3, 'Number'); // true -``` - -See: [`kindOf()`](#kindOf) - - - -## isInteger(val):Boolean - -Check if value is an integer. - -```js -isInteger(123); // true -isInteger(123.45); // false -isInteger({}); // false -isInteger('foo'); // false -isInteger('123'); // false -``` - - - -## isNaN(val):Boolean - -Check if value is `NaN`. - -Note: This is not the same as native `isNaN`, which will return `true` for -`undefined` and other values. See [ES5 isNaN](http://es5.github.com/#x15.1.2.4) - - - -## isNull(val):Boolean - -If value is `null`. - - - -## isNumber(val):Boolean - -If value is a Number. - - - -## isObject(val):Boolean - -If value is an Object. - - - -## isPlainObject(val):Boolean - -If the value is an Object created by the Object constructor. - - - -## isRegExp(val):Boolean - -If value is a RegExp. - - - -## isString(val):Boolean - -If value is a String. - - - -## isUndefined(val):Boolean - -If value is `undefined`. - - - -## kindOf(val):String - -Gets kind of value (e.g. "String", "Number", "RegExp", "Null", "Date"). -Used internally by `isKind()` and most of the other *isSomething* checks. - -```js -kindOf([1,2]); // "Array" -kindOf('foo'); // "String" -kindOf(3); // "Number" -``` - -See: [`isKind()`](#isKind) - - -## toArray(val):Array - -Convert array-like object into Array or wrap value into Array. - -```js -toArray({ - "0" : "foo", - "1" : "bar", - "length" : 2 -}); // ["foo", "bar"] - -function foo(){ - return toArray(arguments); -} -foo("lorem", 123); // ["lorem", 123] - -toArray("lorem ipsum"); // ["lorem ipsum"] -toArray(window); // [window] -toArray({foo:"bar", lorem:123}); // [{foo:"bar", lorem:123}] -``` - -See: object/values() - - - -## toString(val):String - -Convert any value to its string representation. - -Will return an empty string for `undefined` or `null`, otherwise will convert -the value to its string representation. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/math.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/math.md deleted file mode 100644 index f45be3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/math.md +++ /dev/null @@ -1,298 +0,0 @@ -# math # - -Math utilities. - - -## ceil(val[, step]):Number - -Round value up to full steps. Similar to `Math.ceil()` but can round value -to an arbitrary *radix*. - - ceil(7.2); // 8 - ceil(7.8); // 8 - ceil(7, 5); // 10 - ceil(11, 5); // 15 - ceil(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`floor()`](#floor), [`countSteps()`](#countSteps) - - - -## clamp(val, min, max):Number - -Clamps value inside range. - -`clamp()` is extremely useful in cases where you need to limit a value inside -a certain range. So instead of doing a complex `if/else` to filter/process the -value you can restrict it to always be inside the desired range: - - clamp(-5, 0, 10); // 0 - clamp(7, 1, 10); // 7 - clamp(8, 1, 10); // 8 - clamp(10, 1, 10); // 10 - clamp(11, 1, 10); // 10 - -If the value is smaller than `min` it returns the `min`, if `val` is higher -than `max` it returns `max`. - -### Common use cases - -Any situation where you need to limit a number inside a range like: slider -position, image galleries <small>(so user can't skip to an image that doesn't -exist)</small>, drag and drop, scroll boundaries, etc. - -See: [`loop()`](#loop) - - - - -## countSteps(val, step[, overflow]):Number - -Count number of full steps. - -### Arguments: - - 1. `val` (Number) : Value. - 2. `step` (Number) : Step size. - 3. `[overflow]` (Number) : Maximum number of steps, nSteps will loop if -`>=` than overflow. - - -Count steps is very useful for cases where you need to know how many "full -steps" the number *completed*. Think of it as a division that only returns -integers and ignore remainders. - - countSteps(3, 5); // 0 - countSteps(6, 5); // 1 - countSteps(12, 5); // 2 - countSteps(18, 5); // 3 - countSteps(21, 5); // 4 - -You can also set an `overflow` which will reset the *counter* before reaching -this number. - - countSteps(3, 5, 3); // 0 - countSteps(6, 5, 3); // 1 - countSteps(12, 5, 3); // 2 - countSteps(18, 5, 3); // 0 - countSteps(21, 5, 3); // 1 - -### Common use cases - -#### How many items fit inside an area: - - var containerWidth = 100; - var itemWidth = 8; - var howManyFit = countSteps(containerWidth, itemWidth); // 12 - -#### Split value into different scales or convert value from one scale to another - -From [mout/time/parseMs](time.html#parseMs): - - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - // {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} - parseMs(2348765454); - - - -## floor(val[, step]):Number - -Round value down to full steps. Similar to `Math.floor()` but can round value -to an arbitrary *radix*. (formerly `snap`) - - floor(7.2); // 7 - floor(7.8); // 7 - floor(7, 5); // 5 - floor(11, 5); // 10 - floor(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -## inRange(val, min, max[, threshold]):Boolean - -Checks if value is inside the range. - - inRange(-6, 1, 10); // false - inRange( 5, 1, 10); // true - inRange(12, 1, 10); // false - -The threshold can be useful when you want granular control of what should match -and/or the precision could change at runtime or by some configuration option, -avoids the clutter of adding/subtracting the `threshold` from `mix` and `max`. - - inRange(12, 1, 10, 2); // true - inRange(13, 1, 10, 2); // false - -### Common use cases - -Anything that needs to check if value is inside a range, be it collision -detection, limiting interaction by mouse position, ignoring parts of the logic -that shouldn't happen if value isn't valid, simplify `if/else` conditions, -making code more readable, etc... - - - - -## isNear(val, target, threshold):Boolean - -Check if value is close to target. - -Similar to `inRange()` but used to check if value is close to a certain value -or match the desired value. Basically to simplify `if/else` conditions and to -make code clearer. - - isNear( 10.2, 10, 0.5); // true - isNear( 10.5, 10, 0.5); // true - isNear(10.51, 10, 0.5); // false - -### Common use cases - -Games where a certain action should happen if an *actor* is close to a target, -gravity fields, any numeric check that has some tolerance. - - - - -## lerp(ratio, start, end):Number - -Linear interpolation. - - lerp(0.5, 0, 10); // 5 - lerp(0.75, 0, 10); // 7.5 - -### Common use cases - -Linear interpolation is commonly used to create animations of elements moving -from one point to another, where you simply update the current ratio (which in -this case represents time) and get back the position of the element at that -"frame". - -The core idea of `lerp` is that you are using a number that goes from `0` to -`1` to specify a ratio inside that scale. This concept can be applied to -convert numbers from different scales easily. - -See: [`map()`](#map), [`norm()`](#norm) - - - - -## loop(val, min, max):Number - -Loops value inside range. Will return `min` if `val > max` and `max` if `val -< min`, otherwise it returns `val`. - - loop(-1, 0, 10); // 10 - loop( 1, 0, 10); // 1 - loop( 5, 0, 10); // 5 - loop( 9, 0, 10); // 9 - loop(10, 0, 10); // 10 - loop(11, 0, 10); // 0 - -Similar to [`clamp()`](#clamp) but *loops* the value inside the range when an -overflow occurs. - -### Common use cases - -Image galleries, infinite scroll, any kind of logic that requires that the -first item should be displayed after the last one or the last one should be -displayed after first if going on the opposite direction. - -See: [`clamp()`](#clamp) - - - - -## map(val, min1, max1, min2, max2):Number - -Maps a number from one scale to another. - - map(3, 0, 4, -1, 1) // 0.5 - map(3, 0, 10, 0, 100) // 30 - -### Common use cases - -Very useful to convert values from/to multiple scales. - -Let's suppose we have a slider that needs to go from `2000` to `5000` and that slider -has `300px` of width, here is how we would translate the knob position into the -current value: - - var knobX = 123; - var sliderWid = 300; - var minVal = 2000; - var maxVal = 5000; - - var curVal = map(knobX, 0, sliderWid, minVal, maxVal); // 3230 - -See: [`lerp()`](#lerp), [`norm()`](#norm) - - - - -## norm(val, min, max):Number - -Gets normalized ratio of value inside range. - - norm(50, 0, 100); // 0.5 - norm(75, 0, 100); // 0.75 - -### Common use cases - -Convert values between scales, used by [`map()`](#map) internally. Direct -opposite of [`lerp()`](#lerp). - -See: [`lerp()`](#lerp), [`map()`](#map) - - - -## round(val[, step]):Number - -Round value to full steps. Similar to `Math.round()` but allow setting an -arbitrary *radix*. - - // default - round(0.22); // 0 - round(0.49); // 0 - round(0.51); // 1 - - // custom radix - round(0.22, 0.5); // 0 - round(0.49, 0.5); // 0.5 - round(0.51, 0.5); // 0.5 - round(0.74, 0.5); // 0.5 - round(0.75, 0.5); // 1 - round(1.24, 0.5); // 1 - round(1.25, 0.5); // 1.5 - round(1.74, 0.5); // 1.5 - -### Common use cases - -Round values by increments of 0.5/5/10/1000/etc. - -See: [`floor()`](#floor), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -------------------------------------------------------------------------------- - -For more usage more info check the specs and source code. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/number.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/number.md deleted file mode 100644 index 8d93865b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/number.md +++ /dev/null @@ -1,225 +0,0 @@ -# number # - -Number utilities. - - -## abbreviate(val[, nDecimalDigits, dictionary]):String - -Abbreviate number to thousands (K), millions (M) or billions (B). - -The default value for `nDecimalDigits` is `1`. - -### Example - - abbreviate(123456); // "123.5K" - abbreviate(12345678); // "12.3M" - abbreviate(1234567890); // "1.2B" - -You can set the amount of decimal digits (default is `1`): - - abbreviate(543); // "0.5K" - abbreviate(543, 1); // "0.5K" - abbreviate(543, 2); // "0.54K" - abbreviate(543, 3); // "0.543K" - -You can customize the abbreviation by passing a custom "dictionary": - - var _ptbrDict = { - thousands : ' mil', - millions : ' Mi', - billions : ' Bi' - }; - function customAbbr(val) { - return abbreviate(val, 1, _ptbrDict); - } - - customAbbr(123456); // "123.5 mil" - customAbbr(12345678); // "12.3 Mi" - customAbbr(1234567890); // "1.2 Bi" - - - -## currencyFormat(val[, nDecimalDigits, decimalSeparator, thousandsSeparator]):String - -Format a number as currency. - -### Example: - - currencyFormat(1000); // "1,000.00" - currencyFormat(1000, 1); // "1,000.0" - currencyFormat(1000, 2, ',', '.'); // "1.000,00" - - - -## enforcePrecision(val, nDecimalDigits):Number - -Enforce a specific amount of decimal digits and also fix floating point -rounding issues. - -### Example: - -```js -enforcePrecision(0.615, 2); // 0.62 -enforcePrecision(0.625, 2); // 0.63 -//floating point rounding "error" (rounds to odd number) -+(0.615).toFixed(2); // 0.61 -+(0.625).toFixed(2); // 0.63 -``` - - - -## MAX_INT:Number - -Maximum 32-bit signed integer value. `Math.pow(2, 31) - 1` - -### Example: - -```js -console.log( MAX_INT ); // 2147483647 -``` - - -## MAX_UINT:Number - -Maximum 32-bit unsigned integer value. `Math.pow(2, 32) - 1` - -### Example: - -```js -console.log( MAX_UINT ); // 4294967295 -``` - - -## MIN_INT:Number - -Minimum 32-bit signed integer value. `Math.pow(2, 31) * -1`. - -### Example: - -```js -console.log( MIN_INT ); // -2147483648 -``` - - -## pad(n, minLength[, char]):String - -Add padding zeros if `n.length` < `minLength`. - -### Example: - -```js -pad(1, 5); // "00001" -pad(12, 5); // "00012" -pad(123, 5); // "00123" -pad(1234, 5); // "01234" -pad(12345, 5); // "12345" -pad(123456, 5); // "123456" - -// you can also specify the "char" used for padding -pad(12, 5, '_'); // "___12" -``` - -see: [string/lpad](./string.html#lpad) - - - -## rol(val, shift):Number - -Bitwise circular shift left. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## ror(val, shift):Number - -Bitwise circular shift right. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## sign(val):Number - -Returns `-1` if value is negative, `0` if the value is `0` and `1` if value is positive. Useful for -multiplications. - -```js -sign(-123); // -1 -sign(123); // 1 -sign(0); // 0 -``` - - - -## toInt(val):Number - -"Convert" value into an 32-bit integer. Works like `Math.floor` if `val > 0` and -`Math.ceil` if `val < 0`. - -**IMPORTANT:** val will wrap at [number/MIN_INT](#MIN_INT) and -[number/MAX_INT](#MAX_INT). - -Created because most people don't know bitwise operations and also because this -feature is commonly needed. - -[Perf tests](http://jsperf.com/vs-vs-parseint-bitwise-operators/7) - -### Example: - -```js -toInt(1.25); // 1 -toInt(0.75); // 0 -toInt(-0.55); // 0 -toInt(-5.0001) // -5 -``` - - - -## toUInt(val):Number - -"Convert" value into an 32-bit unsigned integer. - -Works like AS3#uint(). - -**IMPORTANT:** val will wrap at 2^32. - -### Example: - -```js -toUInt(1.25); // 1 -toUInt(0.75); // 0 -toUInt(-0.55); // 0 -toUInt(-5.0001); // 4294967291 -toUInt(Math.pow(2,32) - 0.5); // 4294967295 -toUInt(Math.pow(2,32) + 0.5); // 0 -``` - - -## toUInt31(val):Number - -"Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - -Useful since all bitwise operators besides `>>>` treat numbers as signed -integers. - -**IMPORTANT:** val will wrap at 2^31 and negative numbers will be treated as -`zero`. - -### Example: - -```js -toUInt31(1.25); // 1 -toUInt31(0.75); // 0 -toUInt31(-0.55); // 0 -toUInt31(-5.0001); // 0 -toUInt31(Math.pow(2,31) - 0.5); // 21474836470 -toUInt31(Math.pow(2,31) + 0.5); // 0 -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/object.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/object.md deleted file mode 100644 index b4d5e483..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/object.md +++ /dev/null @@ -1,780 +0,0 @@ -# object # - -Object utilities. - - - -## bindAll(obj, [...methodNames]):void - -Bind methods of the target object to always execute on its own context -(ovewritting the original function). - -See: [function/bind](./function.html#bind) - -```js -var view = { - name: 'Lorem Ipsum', - logNameOnClick: function() { - console.log(this.name); - } -}; - -// binds all methods by default -bindAll(view); -jQuery('#docs').on('click', view.logNameOnClick); -``` - -You can also specify the list of methods that you want to bind (in case you -just want to bind a few of them). - -```js -// only the listed methods will be bound to `obj` context -bindAll(obj, 'logNameOnClick', 'doAwesomeStuffOnDrag'); -``` - - - -## contains(obj, value):Boolean - -Similar to [Array/contains](array.html#contains). Checks if Object contains -value. - -```js -var obj = { - a: 1, - b: 2, - c: 'bar' -}; -contains(obj, 2); // true -contains(obj, 'foo'); // false -``` - - - -## deepEquals(a, b, [callback]):Boolean - -Recursively tests whether two objects contain the same keys and equal values. - -`callback` specifies the equality comparison function used to compare -non-object values. It defaults to using the strict equals (`===`) operator. - -If the values are both an object, it will recurse into the objects, checking if -their keys/values are equal. It will only check the keys and values contained -by the objects; it will not check the objects' prototypes. If the either of -the values are not objects, they will be checked using the `callback` function. - -Example: - -```js -deepEquals({ a: 1 }, { a: 1 }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 1 } }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 2 } }); // false -deepEquals({ value: { a: 1 } }, { value: { a: 1, b: 2 } }); // false -deepEquals({}, null); // false -deepEquals(null, null); // true -deepEquals( - { a: { b: 1 } }, - { a: { b: '1' } }, - function(a, b) { return a == b; }); // true -``` - -See: [`equals()`](#equals) - - - -## deepFillIn(target, ...objects):Object - -Fill missing properties recursively. - -It's different from `deepMixIn` since it won't override any existing property. -It's also different from `merge` since it won't clone child objects during the -process. - -It returns the target object and mutates it in place. - -See: [`fillIn()`](#fillIn), [`deepMixIn()`](#deepMixIn), [`merge()`](#merge) - -```js -var base = { - foo : { - bar : 123 - }, - lorem : 'ipsum' -}; -var options = deepFillIn({foo : { baz : 45 }, lorem : 'amet'}, base); -// > {foo: {bar:123, baz : 45}, lorem : 'amet'} -``` - - - -## deepMatches(target, pattern):Boolean - -Recursively checks if object contains all properties/value pairs. When both -the target and pattern values are arrays, it checks that the target value -contain matches for all the items in the pattern array (independent of order). - -```js -var john = { - name: 'John', - age: 22, - pets: [ - { type: 'cat', name: 'Grumpy Cat' }, - { type: 'dog', name: 'Hawk' } - ] -}; - -deepMatches(john, { name: 'John' }); // true -deepMatches(john, { age: 21 }); // false -deepMatches(john, { pets: [ { type: 'cat' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hawk' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hairball' } ] }); // false -``` - -See [`matches()`](#matches) - - - -## deepMixIn(target, ...objects):Object - -Mixes objects into the target object, recursively mixing existing child objects -as well. - -It will only recursively mix objects if both (existing and new) values are -plain objects. - -Returns the target object. Like [`merge()`](#merge), but mutates the target -object, and does not clone child objects. - -```js -var target = { - foo: { - name: "foo", - id: 1 - } -}; - -deepMixIn(target, { foo: { id: 2 } }); -console.log(target); // { foo: { name: "foo", id: 2 } } -``` - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## equals(a, b, [callback]):Boolean - -Tests whether two objects contain the same keys and values. - -`callback` specifies the equality comparison function used to compare the -values. It defaults to using the strict equals (`===`) operator. - -It will only check the keys and values contained by the objects; it will not -check the objects' prototypes. If either of the values are not objects, they -will be compared using the `callback` function. - -```js -equals({}, {}); // true -equals({ a: 1 }, { a: 1 }); // true -equals({ a: 1 }, { a: 2 }); // false -equals({ a: 1, b: 2 }, { a: 1 }); // false -equals({ a: 1 }, { a: 1, b: 2 }); // false -equals(null, null); // true -equals(null, {}); // false -equals({ a: 1 }, { a: '1' }, function(a, b) { return a == b; }); // true -``` - - - -## every(obj, callback, [thisObj]):Boolean - -Similar to [Array/every](array.html#every). Tests whether all properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - - - -## fillIn(obj, ...default):Object - -Fill in missing properties in object with values from the *defaults* objects. - - var base = { - foo : 'bar', - num : 123 - }; - - fillIn({foo:'ipsum'}, base); // {foo:'ipsum', num:123} - -PS: it allows merging multiple objects at once, the first ones will take -precedence. - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## filter(obj, callback, [thisObj]) - -Returns a new object containing all properties where `callback` returns true, -similar to Array/filter. It does not use properties from the object's -prototype. - -Callback receives the same arguments as `forOwn()`. - -See: [`forOwn()`](#forOwn), [`forIn()`](#forIn), [`pick()`](#pick) - -```js -var obj = { - foo: 'value', - bar: 'bar value' -}; - -// returns { bar: 'bar value' } -filter(obj, function(v) { return value.length > 5; }); - -// returns { foo: 'value' } -filter(obj, function(v, k) { return k === 'foo'; }); -``` - - - -## find(obj, callback, [thisObj]) - -Loops through all the properties in the Object and returns the first one that -passes a truth test (callback), similar to [Array/find](array.html#find). -Unlike Array/find, order of iteration is not guaranteed. - -```js -var obj = { - a: 'foo', - b: 12 -}; - -find(obj, isString); // 'foo' -find(obj, isNumber); // 12 -``` - - - -## forIn(obj, callback[, thisObj]) - -Iterate over all properties of an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -It **will** iterate over inherited (enumerable) properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forIn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 7 -console.log(keys); // ['foo', 'bar', 'lorem'] -``` - - - -## forOwn(obj, callback[, thisObj]) - -Iterate over all own properties from an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -Notice that it **won't** iterate over properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forIn()`](#forIn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -// will be ignored -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forOwn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 3 -console.log(keys); // ['foo', 'bar'] -``` - - - -## functions(obj):Array - -Returns a sorted list of all enumerable properties that have function values -(including inherited properties). - -```js -var obj = { - foo : function(){}, - bar : 'baz' -}; -functions(obj); // ['foo'] -``` - - - -## get(obj, propName):* - -Returns nested property value. Will return `undefined` if property doesn't -exist. - -See: [`set()`](#set), [`namespace()`](#namespace), [`has()`](#has) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -get(lorem, 'ipsum.dolor.sit'); // "amet" -get(lorem, 'foo.bar'); // undefined -``` - - - -## has(obj, propName):Boolean - -Checks if object contains a child property. Useful for cases where you need to -check if an object contain a *nested* property. It will get properties -inherited by the prototype. - -see: [`hasOwn()`](#hasOwn), [`get()`](#get) - -```js -var a = { - b : { - c : 123 - } - }; - -has(a, 'b.c'); // true -has(a, 'foo.c'); // false -``` - -### Common use case - -```js -if( has(a, 'foo.c') ){ // false - // ... -} - -if( a.foo.c ){ // ReferenceError: `foo` is not defined - // ... -} -``` - - - -## hasOwn(obj, propName):Boolean - -Safer `Object.hasOwnProperty`. Returns a boolean indicating whether the object -has the specified property. - -see: [`has()`](#has) - -```js -var obj = { - foo: 1, - hasOwnProperty : 'bar' -}; - -obj.hasOwnProperty('foo'); // ERROR! hasOwnProperty is not a function - -hasOwn(obj, 'foo'); // true -hasOwn(obj, 'hasOwnProperty'); // true -hasOwn(obj, 'toString'); // false -``` - - - -## keys(obj):Array - -Returns an array of all own enumerable properties found upon a given object. -It will use the native `Object.keys` if present. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`values()`](#values) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -keys(obj); // ['foo', 'bar', 'lorem'] -``` - - - -## map(obj, callback, [thisObj]):Object - -Returns a new object where the property values are the result of calling the -callback for each property in the original object, similar to Array/map. - -The callback function receives the same arguments as in `forOwn()`. - -See: [`forOwn()`](#forOwn) - -```js -var obj = { foo: 1, bar: 2 }, - data = { foo: 0, bar: 1 }; - -map(obj, function(v) { return v + 1; }); // { foo: 2, bar: 3 } -map(obj, function(v, k) { return k; }); // { foo: "foo", bar: "bar" } -map(obj, function(v, k) { return this[k]; }, data); // { foo: 0, bar: 1 } -``` - - - -## matches(obj, props):Boolean - -Checks if object contains all properties/values pairs. Useful for validation -and filtering. - -```js -var john = {age:25, hair:'long', beard:true}; -var mark = {age:27, hair:'short', beard:false}; -var hippie = {hair:'long', beard:true}; -matches(john, hippie); // true -matches(mark, hippie); // false -``` - -See [`deepMatches()`](#deepMatches) - - - -## merge(...objects):Object - -Deep merges objects. Note that objects and properties will be cloned during the -process to avoid undesired side effects. It return a new object and won't -affect source objects. - -```js -var obj1 = {a: {b: 1, c: 1, d: {e: 1, f: 1}}}; -var obj2 = {a: {b: 2, d : {f : 'yeah'} }}; - -merge(obj1, obj2); // {a: {b : 2, c : 1, d : {e : 1, f : 'yeah'}}} -``` - -See: [`deepMixIn()`](#deppMixIn), [`deepFillIn()`](#deepFillIn) - - - -## max(obj[, iterator]):* - -Returns maximum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/max](array.html#max). - -See: [`min()`](#min) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(obj[, iterator]):* - -Returns minimum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/min](array.html#min). - -See: [`max()`](#max) - -```js -min({a: 100, b: 2, c: 1, d: 3, e: 200}); // 1 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## mixIn(target, ...objects):Object - -Combine properties from all the objects into first one. - -This method affects target object in place, if you want to create a new Object -pass an empty object as first parameter. - -### Arguments - - 1. `target` (Object) : Target Object. - 2. `...objects` (...Object) : Objects to be combined (0...n objects). - -### Example - -```js -var a = {foo: "bar"}; -var b = {lorem: 123}; - -mixIn({}, a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar"} - -mixIn(a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar", lorem: 123} -``` - -See: [`fillIn()`](#fillIn), [`merge()`](#merge) - - - - -## namespace(obj, propName):Object - -Creates an empty object inside namespace if not existent. Will return created -object or existing object. - -See: [`get()`](#get), [`set()`](#set) - -```js -var obj = {}; -namespace(obj, 'foo.bar'); // {} -console.log(obj); // {foo:{bar:{}}} -``` - - - -## pick(obj, ...keys):Object - -Return a copy of the object that contains only the whitelisted keys. - -See: [`filter()`](#filter) - -```js -var user = { - firstName : 'John', - lastName : 'Doe', - dob : '1985/07/23', - gender : 'male' -}; - -// can pass an array of keys as second argument -var keys = ['firstName', 'dob'] -pick(user, keys); // {firstName:"John", dob: "1985/07/23"} - -// or multiple arguments -pick(user, 'firstName', 'lastName'); // {firstName:"John", lastName: "Doe"} -``` - - - -## pluck(obj, propName):Object - -Extract an object containing property values with keys as they appear in the -passed object. - -```js -var users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // {first: 'John', second: 'Mary'} ); -pluck(users, 'age'); // {first: 21, second: 25} ); -``` - - - -## reduce(obj, callback, initial, [thisObj]):* - -Similar to [Array/reduce](array.html#reduce). - -Apply a function against an accumulator and each property of the object (order -is undefined) as to reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - compare1.push(prev); - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - - - -## reject(obj, callback, thisObj):Object - -Returns a new object containing all properties where `callback` returns true, -similar to [Array/reject](array.html#reject). It does not use properties from -the object's prototype. Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // {b: 2, d: 4} -``` - - - -## values(obj):Array - -Returns an array of all own enumerable properties values found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -values(obj); // [1, 2, 3] -``` - - - -## set(obj, propName, value) - -Sets a nested property value. - -See: [`get()`](#get), [`namespace()`](#namespace) - -```js -var obj = {}; -set(obj, 'foo.bar', 123); -console.log(obj.foo.bar); // 123 -console.log(obj); // {foo:{bar:123}} -``` - - - -## size(obj):Number - -Returns the count of own enumerable properties found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -``` - - - -## some(obj, callback, [thisObj]):Boolean - -Similar to [Array/some](array.html#some). Tests whether any properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -``` - - - -## unset(obj, propName):Boolean - -Delete object property if existent and returns a boolean indicating succes. It -will also return `true` if property doesn't exist. - -Some properties can't be deleted, to understand why [check this -article](http://perfectionkills.com/understanding-delete/). - -See: [`set()`](#set) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -unset(lorem, 'ipsum.dolor.sit'); // true -console.log(lorem.ipsum.dolor); // {} -unset(lorem, 'foo.bar'); // true -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md deleted file mode 100644 index 1be3c102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md +++ /dev/null @@ -1,115 +0,0 @@ -# queryString # - -Utilities for query string manipulation. - - - -## contains(url, paramName):Boolen - -Checks if query string contains parameter. - -### Arguments: - - 1. `url` (String) : URL or query string. - 2. `paramName` (String) : Parameter name. - -### Example: - -```js -var url = 'example.com/?lorem=ipsum'; -contains(url, 'lorem'); // true -contains(url, 'foo'); //false -``` - - - -## decode(queryStr[, shouldTypecast]):Object - -Parses query string and creates an object of keys => vals. - -Will typecast value with [`string/typecast`](string.html#typecast) by default -and decode string parameters using `decodeURIComponent()`. - -```js -var query = '?foo=bar&lorem=123'; -decode(query); // {foo: "bar", lorem: 123} -decode(query, false); // {foo: "bar", lorem: "123"} -``` - - -## encode(obj):String - -Encode object into a query string. - -Will encode parameters with `encodeURIComponent()`. - -```js -encode({foo: "bar", lorem: 123}); // "?foo=bar&lorem=123" -``` - - -## getParam(url, param[, shouldTypecast]):* - -Get query parameter value. - -Will typecast value with [`string/typecast`](string.html#typecast) by default. - -See: [`setParam()`](#setParam) - -### Arguments: - - 1. `url` (String) : Url. - 2. `param` (String) : Parameter name. - 3. `[shouldTypecast]` (Boolean) : If it should typecast value. - -### Example: - -```js -var url = 'example.com/?foo=bar&lorem=123&ipsum=false'; -getParam(url, 'dolor'); // "amet" -getParam(url, 'lorem'); // 123 -getParam(url, 'lorem', false); // "123" -``` - - -## parse(url[, shouldTypecast]):Object - -Parses URL, extracts query string and decodes it. - -It will typecast all properties of the query object unless second argument is -`false`. - -Alias to: `decode(getQuery(url))`. - -```js -var url = 'example.com/?lorem=ipsum&a=123'; -parse(url); // {lorem: "ipsum", a: 123} -parse(url, false); // {lorem: "ipsum", a: "123"} -``` - - -## getQuery(url):String - -Gets full query as string with all special chars decoded. - -```js -getQuery('example.com/?lorem=ipsum'); // "?lorem=ipsum" -``` - - -## setParam(url, paramName, value):String - -Add new query string parameter to URL or update existing value. - -See: [`getParam()`](#getParam) - -```js -setParam('?foo=bar&lorem=0', 'lorem', 'ipsum'); // '?foo=bar&lorem=ipsum' -setParam('?lorem=1', 'foo', 123); // '?lorem=1&foo=123' -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/random.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/random.md deleted file mode 100644 index b058b4e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/random.md +++ /dev/null @@ -1,218 +0,0 @@ -# random # - -Pseudo-random generators. - -mout uses `Math.random` by default on all the pseudo-random generators, if -you need a seeded random or a better algorithm see the [`random()`](#random) -documentation for instructions. - - - -## choice(...items):* - -Returns a random element from the supplied arguments or from an array if single -argument is an array. - -### Example: - -```js -choice(1, 2, 3, 4, 5); // 3 - -var arr = ['lorem', 'ipsum', 'dolor']; -choice(arr); // 'dolor' -``` - - - -## guid():String - -Generates a pseudo-random [Globally Unique Identifier](http://en.wikipedia.org/wiki/Globally_unique_identifier) (v4). - -Since the total number of GUIDs is 2<sup>122</sup> the chance of generating the -same value twice is negligible. - -**Important:** this method uses `Math.random` by default so the UUID isn't -*safe* (sequence of outputs can be predicted in some cases), check the -[`random()`](#random) documentation for more info on how to replace the default -PRNG if you need extra safety or need *seeded* results. - -See: [`randHex()`](#randHex), [`random()`](#random) - -### Example: - -```js -guid(); // 830e9f50-ac7f-4369-a14f-ed0e62b2fa0b -guid(); // 5de3d09b-e79c-4727-932b-48c49228d508 -``` - - - -## rand([min], [max]):Number - -Gets a random number inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -rand(); // 448740433.55274725 -rand(); // -31797596.097682 -rand(0, 10); // 7.369723 -rand(0, 10); // 5.987042 -``` - -See: [`random()`](#random) - - - -## randBit():Number - -Returns a random "bit" (0 or 1). Useful for addition/subtraction. - -It's slightly faster than `choice(0, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randBit(); // 1 -randBit(); // 0 - -//same effect as -choice(0, 1); -``` - - - -## randHex([size]):String - -Returns a random hexadecimal string. - -The default `size` is `6`. - -### Example: - -```js -randHex(); // "dd8575" -randHex(); // "e6baeb" -randHex(2); // "a2" -randHex(30); // "effd7e2ad9a4a3067e30525fab983a" -``` - - - -## randInt([min], [max]):Number - -Gets a random integer inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -randInt(); // 448740433 -randInt(); // -31797596 -randInt(0, 10); // 7 -randInt(0, 10); // 5 -``` - - - -## randSign():Number - -Returns a random "sign" (-1 or 1). Useful for multiplications. - -It's slightly faster than `choice(-1, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randSign(); // -1 -randSign(); // 1 - -//same effect as -choice(-1, 1); -``` - - - -## random():Number - -Returns a random number between `0` and `1`. Same as `Math.random()`. - -```js -random(); // 0.35435103671625257 -random(); // 0.8768321881070733 -``` - -**Important:** No methods inside mout should call `Math.random()` -directly, they all use `random/random` as a proxy, that way we can -inject/replace the pseudo-random number generator if needed (ie. in case we -need a seeded random or a better algorithm than the native one). - -### Replacing the PRNG - -In some cases we might need better/different algorithms than the one provided -by `Math.random` (ie. safer, seeded). - -Because of licensing issues, file size limitations and different needs we -decided to **not** implement a custom PRNG and instead provide a easy way to -override the default behavior. - [issue #99](https://github.com/millermedeiros/amd-utils/issues/99) - -If you are using mout with a loader that supports the [AMD map -config](https://github.com/amdjs/amdjs-api/wiki/Common-Config), such as -[RequireJS](http://requirejs.org/), you can use it to replace the PRNG -(recommended approach): - -```js -requirejs.config({ - map : { - // all modules will load "my_custom_prng" instead of - // "mout/random/random" - '*' : { - 'mout/random/random' : 'my_custom_prng' - } - } -}); -``` - -You also have the option to override `random.get` in case you are using -mout on node.js or with a loader which doesn't support the map config: - -```js -// replace the PRNG -var n = 0; -random.get = function(){ - return ++n % 2? 0 : 1; // not so random :P -}; -random(); // 0 -random(); // 1 -random(); // 0 -random(); // 1 -``` - -See this [detailed explanation about PRNG in -JavaScript](http://baagoe.org/en/w/index.php/Better_random_numbers_for_javascript) -to understand the issues with the native `Math.random` and also for a list of -algorithms that could be used instead. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/string.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/string.md deleted file mode 100644 index 2b282315..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/string.md +++ /dev/null @@ -1,594 +0,0 @@ -# string # - -String utilities. - - -## camelCase(str):String - -Convert string to "camelCase" text. - -See: [`pascalCase()`](#pascalCase), [`unCamelCase()`](#unCamelCase) - -### Example - -```js -camelCase('lorem-ipsum-dolor'); // "loremIpsumDolor" -camelCase('lorem ipsum dolor'); // "loremIpsumDolor" -``` - - - -## contains(str, substring, [fromIndex]):Boolean - -Checks if string contains the given substring. - -See: [`startsWith()`](#startsWith), [`endsWith()`](#endsWith) - -### Example - -```js -contains('lorem', 'or'); // true -contains('lorem', 'bar'); // false -``` - - - -## crop(str, maxChars, [append]):String - -Truncate string at full words. Alias to `truncate(str, maxChars, append, true);`. - -See: [`truncate()`](#truncate) - -### Example - -```js -crop('lorem ipsum dolor', 10); // "lorem..." -crop('lorem ipsum dolor', 10, '+'); // "lorem+" -``` - - - -## endsWith(str, suffix):Boolean - -Checks if string ends with specified suffix. - -See: [`startsWith()`](#startsWith), [`contains()`](#contains) - -### Example - -```js -endsWith('lorem ipsum', 'lorem'); // false -endsWith('lorem ipsum', 'ipsum'); // true -``` - - - -## escapeHtml(str):String - -Escapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`unescapeHtml()`](#unescapeHtml) - -### Example - -```js -escapeHtml('lorem & "ipsum"'); // "lorem &amp; &quot;ipsum&quot;" -``` - - - -## escapeRegExp(str):String - -Escape special chars to be used as literals in RegExp constructors. - -### Example - -```js -str = escapeRegExp('[lorem.ipsum]'); // "\\[lorem\\.ipsum\\]" -reg = new RegExp(str); // /\[lorem\.ipsum\]/ -``` - - - -## escapeUnicode(str[, shouldEscapePrintable]):String - -Unicode escape chars. - -It will only escape non-printable ASCII chars unless `shouldEscapePrintable` is -set to `true`. - -See: [`unescapeUnicode()`](#unescapeUnicode) - -```js -escapeUnicode('føo bÃ¥r'); -// > "f\u00f8o b\u00e5r" -escapeUnicode('føo bÃ¥r', true); -// > "\u0066\u00f8\u006f\u0020\u0062\u00e5\u0072" -``` - - - -## hyphenate(str):String - -Replaces spaces with hyphens, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`underscore()`](#underscore), -[`unhyphenate`](#unhyphenate) - -```js -hyphenate(' %# lorem ipsum ? $ dolor'); // "lorem-ipsum-dolor" -hyphenate('spéçïãl çhârs'); // "special-chars" -hyphenate('loremIpsum'); // "lorem-ipsum" -``` - - - -## interpolate(str, replacements[, syntax]):String - -String interpolation. Format/replace tokens with object properties. - -```js -var tmpl = 'Hello {{name}}!'; -interpolate(tmpl, {name: 'World'}); // "Hello World!" -interpolate(tmpl, {name: 'Lorem Ipsum'}); // "Hello Lorem Ipsum!" -``` - -It uses a mustache-like syntax by default but you can set your own format if -needed. You can also use Arrays for the replacements (since Arrays are -objects as well): - -```js -// matches everything inside "${}" -var syntax = /\$\{([^}]+)\}/g; -var tmpl = "Hello ${0}!"; -interpolate(tmpl, ['Foo Bar'], syntax); // "Hello Foo Bar!" -``` - - - -## lowerCase(str):String - -"Safer" `String.toLowerCase()`. (Used internally) - -### Example - -```js -(null).toLowerCase(); // Error! -(undefined).toLowerCase(); // Error! -lowerCase(null); // "" -lowerCase(undefined); // "" -``` - - - -## lpad(str, minLength[, char]):String - -Pad string from left with `char` if its' length is smaller than `minLen`. - -See: [`rpad()`](#rpad) - -### Example - -```js -lpad('a', 5); // " a" -lpad('a', 5, '-'); // "----a" -lpad('abc', 3, '-'); // "abc" -lpad('abc', 4, '-'); // "-abc" -``` - - - -## ltrim(str, [chars]):String - -Remove chars or white-spaces from beginning of string. - -`chars` is an array of chars to remove from the beginning of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`rtrim()`](#rtrim), [`trim()`](#trim) - -### Example - -```js -ltrim(' lorem ipsum '); // "lorem ipsum " -ltrim('--lorem ipsum--', ['-']); // "lorem ipsum--" -``` - - - -## makePath(...args):String - -Group arguments as path segments, if any of the args is `null` or `undefined` -it will be ignored from resulting path. It will also remove duplicate "/". - -See: [`array/join()`](array.html#join) - -### Example - -```js -makePath('lorem', 'ipsum', null, 'dolor'); // "lorem/ipsum/dolor" -makePath('foo///bar/'); // "foo/bar/" -``` - - - -## normalizeLineBreaks(str, [lineBreak]):String - -Normalize line breaks to a single format. Defaults to Unix `\n`. - -It handles DOS (`\r\n`), Mac (`\r`) and Unix (`\n`) formats. - -### Example - -```js -// "foo\nbar\nlorem\nipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum'); - -// "foo\rbar\rlorem\ripsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', '\r'); - -// "foo bar lorem ipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', ' '); -``` - - - -## pascalCase(str):String - -Convert string to "PascalCase" text. - -See: [`camelCase()`](#camelCase) - -### Example - -```js -pascalCase('lorem-ipsum-dolor'); // "LoremIpsumDolor" -pascalCase('lorem ipsum dolor'); // "LoremIpsumDolor" -``` - - - -## properCase(str):String - -UPPERCASE first char of each word, lowercase other chars. - -### Example - -```js -properCase('loRem iPSum'); // "Lorem Ipsum" -``` - - - -## removeNonASCII(str):String - -Remove [non-printable ASCII -chars](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters). - -### Example - -```js -removeNonASCII('äÄçÇéÉêlorem-ipsumöÖÃþúÚ'); // "lorem-ipsum" -``` - - - -## removeNonWord(str):String - -Remove non-word chars. - -### Example - -```js -var str = 'lorem ~!@#$%^&*()_+`-={}[]|\\:";\'/?><., ipsum'; -removeNonWord(str); // "lorem - ipsum" -``` - - - -## repeat(str, n):String - -Repeat string n-times. - -### Example - -```js -repeat('a', 3); // "aaa" -repeat('bc', 2); // "bcbc" -repeat('a', 0); // "" -``` - - - -## replace(str, search, replacements):String - -Replace string(s) with the replacement(s) in the source. - -`search` and `replacements` can be an array, or a single item. For every item -in `search`, it will call `str.replace` with the search item and the matching -replacement in `replacements`. If `replacements` only contains one replacement, -it will be used for all the searches, otherwise it will use the replacement at -the same index as the search. - -### Example - -```js -replace('foo bar', 'foo', 'test'); // "test bar" -replace('test 1 2', ['1', '2'], 'n'); // "test n n" -replace('test 1 2', ['1', '2'], ['one', 'two']); // "test one two" -replace('123abc', [/\d/g, /[a-z]/g], ['0', '.']); // "000..." -``` - - - -## replaceAccents(str):String - -Replaces all accented chars with regular ones. - -**Important:** Only covers **Basic Latin** and **Latin-1** unicode chars. - -### Example - -```js -replaceAccents('spéçïãl çhârs'); // "special chars" -``` - - - -## rpad(str, minLength[, char]):String - -Pad string from right with `char` if its' length is smaller than `minLen`. - -See: [`lpad()`](#lpad) - -### Example - -```js -rpad('a', 5); // "a " -rpad('a', 5, '-'); // "a----" -rpad('abc', 3, '-'); // "abc" -rpad('abc', 4, '-'); // "abc-" -``` - - - -## rtrim(str, [chars]):String - -Remove chars or white-spaces from end of string. - -`chars` is an array of chars to remove from the end of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`trim()`](#trim), [`ltrim()`](#ltrim) - -### Example - -```js -rtrim(' lorem ipsum '); // " lorem ipsum" -rtrim('--lorem ipsum--', ['-']); // "--lorem ipsum" -``` - - - -## sentenceCase(str):String - -UPPERCASE first char of each sentence and lowercase other chars. - -### Example - -```js -var str = 'Lorem IpSum DoLOr. maeCeNnas Ullamcor.'; -sentenceCase(str); // "Lorem ipsum dolor. Maecennas ullamcor." -``` - - - -## stripHtmlTags(str):String - -Remove HTML/XML tags from string. - -### Example - -```js -var str = '<p><em>lorem</em> <strong>ipsum</strong></p>'; -stripHtmlTags(str); // "lorem ipsum" -``` - - - -## startsWith(str, prefix):Boolean - -Checks if string starts with specified prefix. - -See: [`endsWith()`](#endsWith), [`contains()`](#contains) - -### Example - -```js -startsWith('lorem ipsum', 'lorem'); // true -startsWith('lorem ipsum', 'ipsum'); // false -``` - - - -## slugify(str[, delimeter]):String - -Convert to lower case, remove accents, remove non-word chars and replace spaces -with the delimeter. The default delimeter is a hyphen. - -Note that this does not split camelCase text. - -See: [`hyphenate()`](#hyphenate) and [`underscore()`](#underscore) - -### Example - -```js -var str = 'loremIpsum dolor spéçïãl chârs'; -slugify(str); // "loremipsum-dolor-special-chars" -slugify(str, '_'); // "loremipsum_dolor_special_chars" -``` - - - -## trim(str, [chars]):String - -Remove chars or white-spaces from beginning and end of string. - -`chars` is an array of chars to remove from the beginning and end of the -string. If `chars` is not specified, Unicode whitespace chars will be used -instead. - -See: [`rtrim()`](#rtrim), [`ltrim()`](#ltrim) - -### Example - -```js -trim(' lorem ipsum '); // "lorem ipsum" -trim('-+-lorem ipsum-+-', ['-', '+']); // "lorem ipsum" -``` - - - -## truncate(str, maxChars, [append], [onlyFullWords]):String - -Limit number of chars. Returned string `length` will be `<= maxChars`. - -See: [`crop()`](#crop) - -### Arguments - - 1. `str` (String) : String - 2. `maxChars` (Number) : Maximum number of characters including `append.length`. - 3. `[append]` (String) : Value that should be added to the end of string. - Defaults to "...". - 4. `[onlyFullWords]` (Boolean) : If it shouldn't break words. Default is - `false`. (favor [`crop()`](#crop) since code will be clearer). - -### Example - -```js -truncate('lorem ipsum dolor', 11); // "lorem ip..." -truncate('lorem ipsum dolor', 11, '+'); // "lorem ipsu+" -truncate('lorem ipsum dolor', 11, null, true); // "lorem..." -``` - - - -## typecast(str):* - -Parses string and convert it into a native value. - -### Example - -```js -typecast('lorem ipsum'); // "lorem ipsum" -typecast('123'); // 123 -typecast('123.45'); // 123.45 -typecast('false'); // false -typecast('true'); // true -typecast('null'); // null -typecast('undefined'); // undefined -``` - - - -## unCamelCase(str, [delimiter]):String - -Add the delimiter between camelCase text and convert first char of each word to -lower case. - -The delimiter defaults to a space character. - -See: [`camelCase()`][#camelCase] - -### Example - -```js -unCamelCase('loremIpsumDolor'); // "lorem ipsum dolor" -unCamelCase('loremIpsumDolor', '-'); // "lorem-ipsum-color" -``` - - -## underscore(str):String - -Replaces spaces with underscores, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`hyphenate()`](#hyphenate) - -```js -underscore(' %# lorem ipsum ? $ dolor'); // "lorem_ipsum_dolor" -underscore('spéçïãl çhârs'); // "special_chars" -underscore('loremIpsum'); // "lorem_ipsum" -``` - - - -## unescapeHtml(str):String - -Unescapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`escapeHtml()`](#escapeHtml) - -### Example - -```js -unescapeHtml('lorem &amp; &quot;ipsum&quot;'); // 'lorem & "ipsum"' -``` - - - -## unescapeUnicode(str):String - -Unescapes unicode char sequences. - -See: [`escapeUnicode()`](#escapeUnicode) - -```js -unescapeUnicode('\\u0066\\u00f8\\u006f\\u0020\\u0062\\u00e5\\u0072'); -// > 'føo bÃ¥r' -``` - - - -## unhyphenate(str):String - -Replaces hyphens with spaces. (only hyphens between word chars) - -See : [`hyphenate()`](#hyphenate) - -### Example - -```js -unhyphenate('lorem-ipsum-dolor'); // "lorem ipsum dolor" -``` - - -## upperCase(str):String - -"Safer" `String.toUpperCase()`. (Used internally) - -### Example - -```js -(null).toUpperCase(); // Error! -(undefined).toUpperCase(); // Error! -upperCase(null); // "" -upperCase(undefined); // "" -``` - - - -## WHITE_SPACES:Array - -Constant array of all [Unicode white-space -characters](http://en.wikipedia.org/wiki/Whitespace_character). - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/time.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/time.md deleted file mode 100644 index 628c2a9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/doc/time.md +++ /dev/null @@ -1,64 +0,0 @@ -# time # - -Utilities for time manipulation. - - -## convert(value, sourceUnit, [destinationUnit]):Number - -Converts time between units. - -Available units: `millisecond`, `second`, `minute`, `hour`, `day`, `week`. -Abbreviations: `ms`, `s`, `m`, `h`, `d`, `w`. - -We do **not** support year and month as a time unit since their values are not -fixed. - -The default `destinationUnit` is `ms`. - -```js -convert(1, 'minute'); // 60000 -convert(2.5, 's', 'ms'); // 2500 -convert(2, 'm', 's'); // 120 -convert(500, 'ms', 's'); // 0.5 -``` - - - -## now():Number - -Returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. -Uses `Date.now()` if available. - -### Example - -```js -now(); // 1335449614650 -``` - - - -## parseMs(ms):Object - -Parse timestamp (milliseconds) into an object `{milliseconds:number, -seconds:number, minutes:number, hours:number, days:number}`. - -### Example - -```js -// {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} -parseMs(2348765454); -``` - - - -## toTimeString(ms):String - -Convert timestamp (milliseconds) into a time string in the format "[H:]MM:SS". - -### Example - -```js -toTimeString(12513); // "00:12" -toTimeString(951233); // "15:51" -toTimeString(8765235); // "2:26:05" -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function.js deleted file mode 100644 index 43a16ef4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function.js +++ /dev/null @@ -1,18 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/bind.js deleted file mode 100644 index 71bc1257..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - module.exports = bind; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/compose.js deleted file mode 100644 index 8cd5c5f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - module.exports = compose; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/debounce.js deleted file mode 100644 index a0ed07f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/debounce.js +++ /dev/null @@ -1,29 +0,0 @@ - - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - return debounced; - } - - module.exports = debounce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/func.js deleted file mode 100644 index b81bf0a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - module.exports = func; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js deleted file mode 100644 index 767610a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js +++ /dev/null @@ -1,34 +0,0 @@ -var prop = require('./prop'); -var deepMatches = require('../object/deepMatches'); - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'object': - // typeof null == "object" - return (src != null)? function(val, key, target){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - case 'function': - if (typeof thisObj === 'undefined') { - return src; - } else { - return function(val, i, arr){ - return src.call(thisObj, val, i, arr); - }; - } - default: - return src; - } - } - - module.exports = makeIterator; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/partial.js deleted file mode 100644 index d63ff1be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - module.exports = partial; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/prop.js deleted file mode 100644 index 734acb7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - module.exports = prop; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/series.js deleted file mode 100644 index 25159c2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ - - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - module.exports = series; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/throttle.js deleted file mode 100644 index 619dc540..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/throttle.js +++ /dev/null @@ -1,32 +0,0 @@ -var now = require('../time/now'); - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - return throttled; - } - - module.exports = throttle; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/timeout.js deleted file mode 100644 index e0d21a66..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - module.exports = timeout; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/index.js deleted file mode 100644 index 32a1c639..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/**@license - * mout v0.6.0 | http://moutjs.com | MIT license - */ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'VERSION' : '0.6.0', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang.js deleted file mode 100644 index b9816218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang.js +++ /dev/null @@ -1,36 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toString' : require('./lang/toString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/clone.js deleted file mode 100644 index 33c4e949..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/clone.js +++ /dev/null @@ -1,49 +0,0 @@ -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); -var mixIn = require('../object/mixIn'); - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - module.exports = clone; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js deleted file mode 100644 index bbc14c1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -var mixIn = require('../object/mixIn'); - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - module.exports = createObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js deleted file mode 100644 index d68dc506..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ - - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - module.exports = ctorApply; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js deleted file mode 100644 index 25fd95f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js +++ /dev/null @@ -1,48 +0,0 @@ -var clone = require('./clone'); -var forOwn = require('../object/forOwn'); -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - module.exports = deepClone; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js deleted file mode 100644 index 1111b2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js +++ /dev/null @@ -1,17 +0,0 @@ -var toArray = require('./toArray'); -var find = require('../array/find'); - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - module.exports = defaults; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js deleted file mode 100644 index cd8a379e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -var createObject = require('./createObject'); - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - } - - module.exports = inheritPrototype; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/is.js deleted file mode 100644 index 4a835739..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - module.exports = is; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js deleted file mode 100644 index f7b08ba4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -var isKind = require('./isKind'); - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - module.exports = isArgs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js deleted file mode 100644 index 262ee400..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - module.exports = isArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js deleted file mode 100644 index 86557cb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - module.exports = isBoolean; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js deleted file mode 100644 index 4a5130f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - module.exports = isDate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js deleted file mode 100644 index 0e9f77da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js +++ /dev/null @@ -1,24 +0,0 @@ -var forOwn = require('../object/forOwn'); -var isArray = require('./isArray'); - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - module.exports = isEmpty; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js deleted file mode 100644 index 6d4006f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -var isNumber = require('./isNumber'); - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - module.exports = isFinite; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js deleted file mode 100644 index 216879f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - module.exports = isFunction; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js deleted file mode 100644 index 29f95d96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - module.exports = isInteger; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js deleted file mode 100644 index 02301e04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -var kindOf = require('./kindOf'); - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - module.exports = isKind; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js deleted file mode 100644 index f6efeb1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js +++ /dev/null @@ -1,15 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - return !isNumber(val) || val != +val; - } - - module.exports = isNaN; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js deleted file mode 100644 index 6252f9ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - */ - function isNull(val){ - return val === null; - } - module.exports = isNull; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js deleted file mode 100644 index 126c1cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - module.exports = isNumber; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js deleted file mode 100644 index 7350c891..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - module.exports = isObject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js deleted file mode 100644 index 0d2d7b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value - && typeof value === 'object' - && value.constructor === Object); - } - - module.exports = isPlainObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js deleted file mode 100644 index fc5459a9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - module.exports = isRegExp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isString.js deleted file mode 100644 index f8906584..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - module.exports = isString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js deleted file mode 100644 index fb2261df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ - - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - module.exports = isUndef; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js deleted file mode 100644 index 9dad58ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -var is = require('./is'); - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - module.exports = isnt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js deleted file mode 100644 index 663464d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ - - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - module.exports = kindOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js deleted file mode 100644 index e39b8734..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -var kindOf = require('./kindOf'); - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - module.exports = toArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toString.js deleted file mode 100644 index ae5c2b0f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - module.exports = toString; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math.js deleted file mode 100644 index c6ee889b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math.js +++ /dev/null @@ -1,19 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/ceil.js deleted file mode 100644 index a279e158..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - module.exports = ceil; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/clamp.js deleted file mode 100644 index e929a9a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - module.exports = clamp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js deleted file mode 100644 index 60ac90c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ - - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - module.exports = countSteps; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/floor.js deleted file mode 100644 index 9de50531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - module.exports = floor; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/inRange.js deleted file mode 100644 index 763218f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - module.exports = inRange; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/isNear.js deleted file mode 100644 index 45486b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - module.exports = isNear; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/lerp.js deleted file mode 100644 index 111e2717..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - module.exports = lerp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/loop.js deleted file mode 100644 index 35207c1a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - module.exports = loop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/map.js deleted file mode 100644 index 96c4b787..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/map.js +++ /dev/null @@ -1,11 +0,0 @@ -var lerp = require('./lerp'); -var norm = require('./norm'); - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/norm.js deleted file mode 100644 index 54caf78a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - module.exports = norm; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/round.js deleted file mode 100644 index d108e6cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - module.exports = round; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number.js deleted file mode 100644 index 0b6186cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js deleted file mode 100644 index 1d6f0e48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ - - module.exports = 2147483647; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js deleted file mode 100644 index 700da0f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ - - module.exports = 4294967295; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js deleted file mode 100644 index b34ab2ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ - - module.exports = -2147483648; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js deleted file mode 100644 index dd6716b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -var enforcePrecision = require('./enforcePrecision'); - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - module.exports = abbreviateNumber; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js deleted file mode 100644 index 1cf02497..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js +++ /dev/null @@ -1,26 +0,0 @@ - - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - module.exports = currencyFormat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js deleted file mode 100644 index f73a92d7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js +++ /dev/null @@ -1,13 +0,0 @@ - - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) -> - * 0.61` - */ - function enforcePrecision(val, nDecimalDigits){ - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - module.exports = enforcePrecision; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/pad.js deleted file mode 100644 index da752706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -var lpad = require('../string/lpad'); - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - return lpad(''+ n, minLength, char || '0'); - } - - module.exports = pad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/rol.js deleted file mode 100644 index ecd58da4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - module.exports = rol; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/ror.js deleted file mode 100644 index 2eda81da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - module.exports = ror; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/sign.js deleted file mode 100644 index b854a4ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * Get sign of the value. - */ - function sign(val) { - var num = Number(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - module.exports = sign; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toInt.js deleted file mode 100644 index bcefae0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toInt.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - return ~~val; - } - - module.exports = toInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js deleted file mode 100644 index 5290b627..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - return val >>> 0; - } - - module.exports = toUInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js deleted file mode 100644 index fcc5a97c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js +++ /dev/null @@ -1,13 +0,0 @@ -var MAX_INT = require('./MAX_INT'); - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - module.exports = toUInt31; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object.js deleted file mode 100644 index 76c06424..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object.js +++ /dev/null @@ -1,42 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js deleted file mode 100644 index b2f27d08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js +++ /dev/null @@ -1,18 +0,0 @@ -var functions = require('./functions'); -var bind = require('../function/bind'); -var forEach = require('../array/forEach'); - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - module.exports = bindAll; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/contains.js deleted file mode 100644 index 8076e2c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -var some = require('./some'); - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js deleted file mode 100644 index fcde9449..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js +++ /dev/null @@ -1,27 +0,0 @@ -var isObject = require('../lang/isObject'); -var equals = require('./equals'); - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - module.exports = deepEquals; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js deleted file mode 100644 index d27db44d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js +++ /dev/null @@ -1,32 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) - && isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - module.exports = deepFillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js deleted file mode 100644 index 3366c52d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js +++ /dev/null @@ -1,55 +0,0 @@ -var forOwn = require('./forOwn'); -var isArray = require('../lang/isArray'); - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - module.exports = deepMatches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js deleted file mode 100644 index a97e98d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js +++ /dev/null @@ -1,34 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - module.exports = deepMixIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/equals.js deleted file mode 100644 index f50cbe4e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/equals.js +++ /dev/null @@ -1,36 +0,0 @@ -var hasOwn = require('./hasOwn'); -var every = require('./every'); -var isObject = require('../lang/isObject'); - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - module.exports = equals; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/every.js deleted file mode 100644 index 01106e5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/every.js +++ /dev/null @@ -1,23 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - module.exports = every; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js deleted file mode 100644 index 80dcdf07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js +++ /dev/null @@ -1,20 +0,0 @@ -var forEach = require('../array/forEach'); -var forOwn = require('./forOwn'); - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - module.exports = fillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/filter.js deleted file mode 100644 index 3a83a92f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/filter.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - module.exports = filterValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/find.js deleted file mode 100644 index d39c0706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/find.js +++ /dev/null @@ -1,21 +0,0 @@ -var some = require('./some'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forIn.js deleted file mode 100644 index 367f08ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ - - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - module.exports = forIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js deleted file mode 100644 index 5f2dfbfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js +++ /dev/null @@ -1,19 +0,0 @@ -var hasOwn = require('./hasOwn'); -var forIn = require('./forIn'); - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - module.exports = forOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/functions.js deleted file mode 100644 index f5717979..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -var forIn = require('./forIn'); - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - module.exports = functions; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/get.js deleted file mode 100644 index 6673561e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ - - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object') return; - } - - return obj[last]; - } - - module.exports = get; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/has.js deleted file mode 100644 index ca9f2289..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -var get = require('./get'); - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - module.exports = has; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js deleted file mode 100644 index 7e3c82ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - module.exports = hasOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/keys.js deleted file mode 100644 index dd2f4f55..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - module.exports = keys; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/map.js deleted file mode 100644 index dd449a78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/map.js +++ /dev/null @@ -1,18 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - module.exports = mapValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/matches.js deleted file mode 100644 index 6074faa2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - module.exports = matches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/max.js deleted file mode 100644 index 3e8e92c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/max.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMax = require('../array/max'); -var values = require('./values'); - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - module.exports = max; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/merge.js deleted file mode 100644 index 6961f608..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/merge.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = require('./hasOwn'); -var deepClone = require('../lang/deepClone'); -var isObject = require('../lang/isObject'); - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - module.exports = merge; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/min.js deleted file mode 100644 index e1e66976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/min.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMin = require('../array/min'); -var values = require('./values'); - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - module.exports = min; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js deleted file mode 100644 index 55ec8fd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - module.exports = mixIn; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/namespace.js deleted file mode 100644 index c6e79f63..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -var forEach = require('../array/forEach'); - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - module.exports = namespace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pick.js deleted file mode 100644 index 74e56f98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pluck.js deleted file mode 100644 index e844df47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/pluck.js +++ /dev/null @@ -1,13 +0,0 @@ -var map = require('./map'); -var prop = require('../function/prop'); - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reduce.js deleted file mode 100644 index 6f19a3a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reduce.js +++ /dev/null @@ -1,29 +0,0 @@ -var forOwn = require('./forOwn'); -var size = require('./size'); - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - module.exports = reduce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reject.js deleted file mode 100644 index 74643795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/set.js deleted file mode 100644 index 9b3cdc48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -var namespace = require('./namespace'); - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - module.exports = set; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/size.js deleted file mode 100644 index 97885953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/some.js deleted file mode 100644 index 384c6f3c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/some.js +++ /dev/null @@ -1,21 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - module.exports = some; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/unset.js deleted file mode 100644 index 343bca0a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -var has = require('./has'); - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - module.exports = unset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/values.js deleted file mode 100644 index 265a6938..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - module.exports = values; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/package.json deleted file mode 100644 index a3c16824..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "mout", - "description": "Modular Utilities", - "version": "0.6.0", - "homepage": "http://moutjs.com/", - "contributors": [ - { - "name": "Adam Nowotny" - }, - { - "name": "André Cruz", - "email": "amdfcruz@gmail.com" - }, - { - "name": "Conrad Zimmerman", - "url": "http://www.conradz.com" - }, - { - "name": "Friedemann Altrock", - "email": "frodenius@gmail.com" - }, - { - "name": "Jarrod Overson", - "url": "http://jarrodoverson.com" - }, - { - "name": "Miller Medeiros", - "email": "contact@millermedeiros.com", - "url": "http://blog.millermedeiros.com" - }, - { - "name": "Zach Shipley" - } - ], - "keywords": [ - "utilities", - "functional", - "amd-utils", - "stdlib" - ], - "repository": { - "type": "git", - "url": "git://github.com/mout/mout.git" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - } - ], - "bugs": { - "url": "https://github.com/mout/mout/issues/" - }, - "main": "./index.js", - "scripts": { - "prepublish": "node build cjs .", - "pretest": "node build pkg", - "test": "node node_modules/istanbul/lib/cli test tests/runner.js --hook-run-in-context" - }, - "directories": { - "doc": "./doc" - }, - "devDependencies": { - "istanbul": "~0.1.27", - "jasmine-node": "~1.2.2", - "requirejs": "2.x", - "nodefy": "*", - "mdoc": "~0.3.2", - "handlebars": "~1.0.6", - "commander": "~1.0.5", - "rocambole": "~0.2.3" - }, - "testling": { - "preprocess": "node build testling", - "browsers": { - "ie": [ - 7, - 8, - 9, - 10 - ], - "firefox": [ - 17, - "nightly" - ], - "chrome": [ - 23, - "canary" - ], - "opera": [ - 12, - "next" - ], - "safari": [ - 5.1, - 6 - ], - "iphone": [ - 6 - ], - "ipad": [ - 6 - ] - }, - "scripts": [ - "tests/lib/jasmine/jasmine.js", - "tests/lib/jasmine/jasmine.async.js", - "tests/lib/jasmine/jasmine-tap.js", - "tests/lib/requirejs/require.js", - "tests/testling/src.js", - "tests/testling/specs.js", - "tests/runner.js" - ] - }, - "readme": "![mout](http://moutjs.com/logo.png \"Modular JavaScript Utilties\")\n\nhttp://moutjs.com/\n\n[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout)\n\nAll code is library agnostic and consist mostly of helper methods that aren't\ndirectly related with the DOM, the purpose of this library isn't to replace\nDojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common\nproblems that aren't solved by most of them. Consider it as a crossbrowser\nJavaScript standard library.\n\n\n\n## Main goals ##\n\n - increase code reuse;\n - be clear (code should be clean/readable);\n - be easy to debug;\n - be easy to maintain;\n - follow best practices;\n - follow standards when possible;\n - **don't convert JavaScript into another language!**\n - be compatible with other frameworks;\n - be modular;\n - have unit tests for all modules;\n - work on multiple environments (IE7+, modern browsers, node.js);\n\n\n\n## What shouldn't be here ##\n\n - UI components;\n - CSS selector engine;\n - Event system - pub/sub;\n - Template engine;\n - Anything that isn't generic enough to be on a standard library;\n - Anything that could be a separate library and/or isn't a modular utility...\n\n\n\n## API Documentation ##\n\nOnline documentation can be found at http://moutjs.com/ or inside the\n`doc` folder.\n\n\n\n## FAQ / Wiki / IRC ##\n\nFor more info about project structure, design decisions, tips, how to\ncontribute, build system, etc, please check the [project\nwiki](https://github.com/mout/mout/wiki).\n\nWe also have an IRC channel [#moutjs on\nirc.freenode.net](http://webchat.freenode.net/?channels=moutjs)\n\n\n\n## License ##\n\nReleased under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n\n", - "readmeFilename": "README.md", - "_id": "mout@0.6.0", - "_from": "mout@~0.6.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString.js deleted file mode 100644 index 22685a7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js deleted file mode 100644 index da678cf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -var getQuery = require('./getQuery'); - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js deleted file mode 100644 index 7e689990..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js +++ /dev/null @@ -1,21 +0,0 @@ -var typecast = require('../string/typecast'); -var isString = require('../lang/isString'); - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - n = queryArr.length, - obj = {}, - item, val; - while (n--) { - item = queryArr[n].split('='); - val = shouldTypecast === false? item[1] : typecast(item[1]); - obj[item[0]] = isString(val)? decodeURIComponent(val) : val; - } - return obj; - } - - module.exports = decode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js deleted file mode 100644 index 6d2b12f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js +++ /dev/null @@ -1,15 +0,0 @@ -var forOwn = require('../object/forOwn'); - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = []; - forOwn(obj, function(val, key){ - query.push( key +'='+ encodeURIComponent(val) ); - }); - return (query.length)? '?'+ query.join('&') : ''; - } - - module.exports = encode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js deleted file mode 100644 index f149c3ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js +++ /dev/null @@ -1,15 +0,0 @@ -var typecast = require('../string/typecast'); -var getQuery = require('./getQuery'); - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - module.exports = getParam; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js deleted file mode 100644 index 5194af2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - module.exports = getQuery; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js deleted file mode 100644 index 532906c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js +++ /dev/null @@ -1,13 +0,0 @@ -var decode = require('./decode'); -var getQuery = require('./getQuery'); - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - module.exports = parse; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js deleted file mode 100644 index 052a9ba6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - module.exports = setParam; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random.js deleted file mode 100644 index d9267f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random.js +++ /dev/null @@ -1,16 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/choice.js deleted file mode 100644 index 51aa82a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/choice.js +++ /dev/null @@ -1,15 +0,0 @@ -var randInt = require('./randInt'); -var isArray = require('../lang/isArray'); - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - module.exports = choice; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/guid.js deleted file mode 100644 index 41f6eddc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/guid.js +++ /dev/null @@ -1,24 +0,0 @@ -var randHex = require('./randHex'); -var choice = require('./choice'); - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - module.exports = guid; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/rand.js deleted file mode 100644 index 782dec88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/rand.js +++ /dev/null @@ -1,15 +0,0 @@ -var random = require('./random'); -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - module.exports = rand; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randBit.js deleted file mode 100644 index bd20b4a0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - module.exports = randomBit; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randHex.js deleted file mode 100644 index d8d711c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -var choice = require('./choice'); - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - module.exports = randHex; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randInt.js deleted file mode 100644 index e237d964..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randInt.js +++ /dev/null @@ -1,18 +0,0 @@ -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); -var rand = require('./rand'); - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - module.exports = randInt; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randSign.js deleted file mode 100644 index 5a9fed76..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - module.exports = randomSign; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/random.js deleted file mode 100644 index 670a3cc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - module.exports = random; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array.js deleted file mode 100644 index 7bcc961b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array.js +++ /dev/null @@ -1,46 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/append.js deleted file mode 100644 index 549d8754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - return append; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js deleted file mode 100644 index 8f60cda2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./append', '../function/makeIterator_'], function (append, makeIterator) { - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - return collect; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js deleted file mode 100644 index 22efb860..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - return combine; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js deleted file mode 100644 index 02a81098..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./filter'], function (filter) { - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - return compact; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js deleted file mode 100644 index fca4f7cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js deleted file mode 100644 index 819bda3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./unique', './filter', './some', './contains'], function (unique, filter, some, contains) { - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return difference; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/every.js deleted file mode 100644 index 78ba46d3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - return every; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js deleted file mode 100644 index 52cf685a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/find.js deleted file mode 100644 index 3957dcd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./findIndex'], function (findIndex) { - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js deleted file mode 100644 index 59dfeeb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - return findIndex; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js deleted file mode 100644 index 42e87f43..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js +++ /dev/null @@ -1,42 +0,0 @@ -define(['../lang/isArray', './append'], function (isArray, append) { - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - return flatten; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js deleted file mode 100644 index 0e045868..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - return forEach; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js deleted file mode 100644 index 0e75f99b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - return indexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js deleted file mode 100644 index d8d831f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./difference', '../lang/toArray'], function (difference, toArray) { - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - return insert; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js deleted file mode 100644 index 64e6ee97..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./unique', './filter', './every', './contains'], function (unique, filter, every, contains) { - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return intersection; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js deleted file mode 100644 index a2e78b39..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./forEach'], function (forEach) { - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - return invoke; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/join.js deleted file mode 100644 index 2c618d29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./filter'], function(filter) { - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - return join; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js deleted file mode 100644 index 931235f4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - return lastIndexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/map.js deleted file mode 100644 index 1580b481..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/map.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/max.js deleted file mode 100644 index a7326c89..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/max.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return max; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/min.js deleted file mode 100644 index 41644480..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/min.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return min; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js deleted file mode 100644 index 97d7f595..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../random/randInt'], function (randInt) { - - /** - * Remove a random item from the Array and return it - */ - function pick(arr){ - if (arr == null || !arr.length) return; - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js deleted file mode 100644 index c908856e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/range.js deleted file mode 100644 index 148ebf96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../math/countSteps'], function (countSteps) { - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - return range; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js deleted file mode 100644 index 88aacfd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forEach'], function (forEach) { - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - return reduce; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js deleted file mode 100644 index ddae0e7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ -define(function () { - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - return reduceRight; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js deleted file mode 100644 index db105dde..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js +++ /dev/null @@ -1,25 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function(forEach, makeIterator) { - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return reject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js deleted file mode 100644 index dec9134d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - return remove; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js deleted file mode 100644 index e81022b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - return removeAll; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js deleted file mode 100644 index f5a60972..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../random/randInt', './forEach'], function (randInt, forEach) { - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - return shuffle; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/some.js deleted file mode 100644 index e46a9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - return some; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js deleted file mode 100644 index 4c194042..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ -define(function () { - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - return mergeSort; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/split.js deleted file mode 100644 index a17275eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ -define(function() { - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - return split; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js deleted file mode 100644 index aac8fd1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../lang/isFunction'], function (isFunction) { - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - return toLookup; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/union.js deleted file mode 100644 index 5f9922e5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/union.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./unique', './append'], function (unique, append) { - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - return union; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js deleted file mode 100644 index c4bd23b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./indexOf', './filter'], function(indexOf, filter){ - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - return unique; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js deleted file mode 100644 index 7df89d9c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['./unique', './filter', './contains'], function (unique, filter, contains) { - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - return xor; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js deleted file mode 100644 index 374cd282..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['./max', './pluck', './map'], function (max, pluck, map) { - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1, - item; - while (++i < len) { - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - return zip; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection.js deleted file mode 100644 index 386e6da9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js deleted file mode 100644 index 192167e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/contains', '../object/contains'], function (make, arrContains, objContains) { - - /** - */ - return make(arrContains, objContains); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js deleted file mode 100644 index 6317f503..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/every', '../object/every'], function (make, arrEvery, objEvery) { - - /** - */ - return make(arrEvery, objEvery); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js deleted file mode 100644 index 4e7fadc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js deleted file mode 100644 index 681f9414..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/find', '../object/find'], function(make, arrFind, objFind) { - - /** - * Find value that returns true on iterator check. - */ - return make(arrFind, objFind); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js deleted file mode 100644 index 3b39d3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/forEach', '../object/forOwn'], function (make, arrForEach, objForEach) { - - /** - */ - return make(arrForEach, objForEach); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js deleted file mode 100644 index 312e0564..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(){ - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - return makeCollectionMethod; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js deleted file mode 100644 index 96e24987..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/isObject', '../object/values', '../array/map', '../function/makeIterator_'], function (isObject, values, arrMap, makeIterator) { - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - return map; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js deleted file mode 100644 index de9a6da5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/max', '../object/max'], function (make, arrMax, objMax) { - - /** - * Get maximum value inside collection - */ - return make(arrMax, objMax); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js deleted file mode 100644 index f0c239a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/min', '../object/min'], function (make, arrMin, objMin) { - - /** - * Get minimum value inside collection. - */ - return make(arrMin, objMin); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js deleted file mode 100644 index ef784a7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js deleted file mode 100644 index bd05d43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/reduce', '../object/reduce'], function (make, arrReduce, objReduce) { - - /** - */ - return make(arrReduce, objReduce); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js deleted file mode 100644 index 581adfdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js deleted file mode 100644 index 4e5ab419..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/isArray', '../object/size'], function (isArray, objSize) { - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js deleted file mode 100644 index c0aebee2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/some', '../object/some'], function (make, arrSome, objSome) { - - /** - */ - return make(arrSome, objSome); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date.js deleted file mode 100644 index 4d449150..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js deleted file mode 100644 index dc77ae1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - return dayOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js deleted file mode 100644 index 667165fe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js +++ /dev/null @@ -1,128 +0,0 @@ -define(['./totalDaysInMonth', './totalDaysInYear', '../time/convert'], function(totalDaysInMonth, totalDaysInYear, convert){ - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - return diff; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js deleted file mode 100644 index 5e640c22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // en-US (English, United States) - return { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js deleted file mode 100644 index 47256dd2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // pt-BR (Brazillian Portuguese) - return { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js deleted file mode 100644 index c04ce885..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../object/mixIn', './i18n/en-US'], function(mixIn, enUS){ - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - return activeLocale; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js deleted file mode 100644 index e400b43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - return isLeapYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js deleted file mode 100644 index f30531fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./startOf'], function (startOf) { - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - return isSame; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js deleted file mode 100644 index 9a2aacb0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -define(['../array/some'], function (some) { - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - var match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else if ((match = TIME_ZONE.exec(str))) { - var match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - return parseISO8601; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js deleted file mode 100644 index 747f114d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['../lang/clone'], function (clone) { - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - return startOf; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js deleted file mode 100644 index dd782505..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js +++ /dev/null @@ -1,113 +0,0 @@ -define(['../number/pad', './i18n_', './dayOfTheYear', './timezoneOffset', './timezoneAbbr', './weekOfTheYear'], function (pad, i18n, dayOfTheYear, timezoneOffset, timezoneAbbr, weekOfTheYear) { - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - return strftime; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js deleted file mode 100644 index 225a6856..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./timezoneOffset'], function(timezoneOffset) { - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - return timezoneAbbr; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js deleted file mode 100644 index ca06705d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/pad'], function (pad) { - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - return timezoneOffset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js deleted file mode 100644 index 98f7e9d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['../lang/isDate', './isLeapYear'], function (isDate, isLeapYear) { - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - return totalDaysInMonth; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js deleted file mode 100644 index e9036b42..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./isLeapYear'], function (isLeapYear) { - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - return totalDaysInYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js deleted file mode 100644 index 8dabc458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./dayOfTheYear'], function (dayOfTheYear) { - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - return weekOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function.js deleted file mode 100644 index 23f4fd74..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js deleted file mode 100644 index 09e5e20a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function(){ - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - return bind; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js deleted file mode 100644 index d8b228fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - return compose; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js deleted file mode 100644 index 21644ecc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - return debounced; - } - - return debounce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/func.js deleted file mode 100644 index b920e00e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - return func; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js deleted file mode 100644 index deb6e137..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./prop', '../object/deepMatches'], function(prop, deepMatches) { - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'object': - // typeof null == "object" - return (src != null)? function(val, key, target){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - case 'function': - if (typeof thisObj === 'undefined') { - return src; - } else { - return function(val, i, arr){ - return src.call(thisObj, val, i, arr); - }; - } - default: - return src; - } - } - - return makeIterator; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js deleted file mode 100644 index ad730746..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - return partial; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js deleted file mode 100644 index c9df78ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - return prop; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/series.js deleted file mode 100644 index c8856a27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function () { - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - return series; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js deleted file mode 100644 index 8ce3929a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../time/now'], function (now) { - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - return throttled; - } - - return throttle; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js deleted file mode 100644 index 15388bdd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - return timeout; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/index.js deleted file mode 100644 index 744bb119..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/**@license - * mout v0.6.0 | http://moutjs.com | MIT license - */ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'VERSION' : '0.6.0', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang.js deleted file mode 100644 index de16b597..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang.js +++ /dev/null @@ -1,36 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toString' : require('./lang/toString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js deleted file mode 100644 index 468489a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js +++ /dev/null @@ -1,47 +0,0 @@ -define(['./kindOf', './isPlainObject', '../object/mixIn'], function (kindOf, isPlainObject, mixIn) { - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - return clone; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js deleted file mode 100644 index f7661500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../object/mixIn'], function(mixIn){ - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - return createObject; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js deleted file mode 100644 index a9ac1c54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function () { - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - return ctorApply; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js deleted file mode 100644 index d45c10aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js +++ /dev/null @@ -1,45 +0,0 @@ -define(['./clone', '../object/forOwn', './kindOf', './isPlainObject'], function (clone, forOwn, kindOf, isPlainObject) { - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - return deepClone; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js deleted file mode 100644 index 5156b1bb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./toArray', '../array/find'], function (toArray, find) { - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - return defaults; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js deleted file mode 100644 index c1fda3a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./createObject'], function(createObject){ - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - } - - return inheritPrototype; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js deleted file mode 100644 index 261a2077..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - return is; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js deleted file mode 100644 index f889ee8e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isKind'], function (isKind) { - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - return isArgs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js deleted file mode 100644 index 886e2aa5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - return isArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js deleted file mode 100644 index 1ca27a69..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - return isBoolean; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js deleted file mode 100644 index 2708d676..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - return isDate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js deleted file mode 100644 index 4cc3d2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../object/forOwn', './isArray'], function (forOwn, isArray) { - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - return isEmpty; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js deleted file mode 100644 index 5a982f4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - return isFinite; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js deleted file mode 100644 index ff5df7f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - return isFunction; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js deleted file mode 100644 index 1931f516..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - return isInteger; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js deleted file mode 100644 index 6937a12f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -define(['./kindOf'], function (kindOf) { - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - return isKind; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js deleted file mode 100644 index 9467a3c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - return !isNumber(val) || val != +val; - } - - return isNaN; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js deleted file mode 100644 index 506e05ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function () { - /** - */ - function isNull(val){ - return val === null; - } - return isNull; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js deleted file mode 100644 index 9a832c5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - return isNumber; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js deleted file mode 100644 index 0befb063..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - return isObject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js deleted file mode 100644 index 6c5854fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value - && typeof value === 'object' - && value.constructor === Object); - } - - return isPlainObject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js deleted file mode 100644 index d78a03da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - return isRegExp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js deleted file mode 100644 index 8a42fe01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - return isString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js deleted file mode 100644 index c57b28eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function () { - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - return isUndef; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js deleted file mode 100644 index d4336222..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./is'], function (is) { - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - return isnt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js deleted file mode 100644 index 97d21d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - return kindOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js deleted file mode 100644 index 552916f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./kindOf'], function (kindOf) { - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - return toArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js deleted file mode 100644 index c28b89af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - return toString; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math.js deleted file mode 100644 index e2ba8705..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js deleted file mode 100644 index d73b0581..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - return ceil; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js deleted file mode 100644 index fb5a1484..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - return clamp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js deleted file mode 100644 index 0ecb32f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(){ - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - return countSteps; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js deleted file mode 100644 index 8a4456b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - return floor; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js deleted file mode 100644 index 0c890536..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - return inRange; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js deleted file mode 100644 index b308a0b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - return isNear; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js deleted file mode 100644 index 26b99d04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - return lerp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js deleted file mode 100644 index c735ecf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - return loop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/map.js deleted file mode 100644 index bf7dc5d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/map.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./lerp', './norm'], function(lerp, norm){ - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js deleted file mode 100644 index fccae20e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - return norm; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/round.js deleted file mode 100644 index b43e4ac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - return round; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number.js deleted file mode 100644 index cb52fc75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js deleted file mode 100644 index 23a6e1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ -define(function(){ - return 2147483647; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js deleted file mode 100644 index a035096c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ -define(function(){ - return 4294967295; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js deleted file mode 100644 index 9b3e9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ -define(function(){ - return -2147483648; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js deleted file mode 100644 index 7e7405ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -define(['./enforcePrecision'], function (enforcePrecision) { - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - return abbreviateNumber; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js deleted file mode 100644 index dcde8fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js +++ /dev/null @@ -1,26 +0,0 @@ -define(function () { - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - return currencyFormat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js deleted file mode 100644 index 84554d0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function(){ - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) -> - * 0.61` - */ - function enforcePrecision(val, nDecimalDigits){ - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - return enforcePrecision; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js deleted file mode 100644 index 3b2c062a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../string/lpad'], function(lpad){ - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - return lpad(''+ n, minLength, char || '0'); - } - - return pad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js deleted file mode 100644 index a148f444..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - return rol; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js deleted file mode 100644 index b5c66f92..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - return ror; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js deleted file mode 100644 index dfc131d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function () { - - /** - * Get sign of the value. - */ - function sign(val) { - var num = Number(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - return sign; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js deleted file mode 100644 index 1e9b4c0b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(){ - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - return ~~val; - } - - return toInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js deleted file mode 100644 index d5b25b2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - return val >>> 0; - } - - return toUInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js deleted file mode 100644 index 9785a054..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./MAX_INT'], function(MAX_INT){ - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - return toUInt31; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object.js deleted file mode 100644 index 343e7826..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object.js +++ /dev/null @@ -1,42 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js deleted file mode 100644 index b131ed15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./functions', '../function/bind', '../array/forEach'], function (functions, bind, forEach) { - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - return bindAll; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js deleted file mode 100644 index 297e8986..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./some'], function (some) { - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js deleted file mode 100644 index 8b7d5d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['../lang/isObject', './equals'], function (isObject, equals) { - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - return deepEquals; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js deleted file mode 100644 index 84ba154a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) - && isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - return deepFillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js deleted file mode 100644 index 2eae6297..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['./forOwn', '../lang/isArray'], function(forOwn, isArray) { - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - return deepMatches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js deleted file mode 100644 index 1b4178ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - return deepMixIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js deleted file mode 100644 index 596cb952..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./hasOwn', './every', '../lang/isObject'], function(hasOwn, every, isObject) { - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - return equals; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/every.js deleted file mode 100644 index 52983a5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/every.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - return every; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js deleted file mode 100644 index 0845d3c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach', './forOwn'], function (forEach, forOwn) { - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - return fillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js deleted file mode 100644 index f213b915..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - return filterValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/find.js deleted file mode 100644 index 47e6b09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/find.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./some', '../function/makeIterator_'], function(some, makeIterator) { - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js deleted file mode 100644 index 2058e9cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ -define(function () { - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - return forIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js deleted file mode 100644 index b40cbaf1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./hasOwn', './forIn'], function (hasOwn, forIn) { - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - return forOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js deleted file mode 100644 index 60fee3dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./forIn'], function (forIn) { - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - return functions; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/get.js deleted file mode 100644 index ca80b059..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object') return; - } - - return obj[last]; - } - - return get; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/has.js deleted file mode 100644 index cc29817f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./get'], function (get) { - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - return has; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js deleted file mode 100644 index 5c53bcf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - return hasOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js deleted file mode 100644 index ed7c4f91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - return keys; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/map.js deleted file mode 100644 index 2958f6b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/map.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - return mapValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js deleted file mode 100644 index 73ff427c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - return matches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/max.js deleted file mode 100644 index ef311dcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/max.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/max', './values'], function(arrMax, values) { - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - return max; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js deleted file mode 100644 index d7cfedec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js +++ /dev/null @@ -1,38 +0,0 @@ -define(['./hasOwn', '../lang/deepClone', '../lang/isObject'], function (hasOwn, deepClone, isObject) { - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - return merge; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/min.js deleted file mode 100644 index 9fb4c1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/min.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/min', './values'], function(arrMin, values) { - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - return min; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js deleted file mode 100644 index 6210b7e7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn'], function(forOwn){ - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - return mixIn; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js deleted file mode 100644 index 7ed65db8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach'], function (forEach) { - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - return namespace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js deleted file mode 100644 index 76e22bfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(){ - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js deleted file mode 100644 index d47744bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map', '../function/prop'], function (map, prop) { - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js deleted file mode 100644 index d3a57788..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn', './size'], function(forOwn, size) { - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - return reduce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js deleted file mode 100644 index 84296428..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/set.js deleted file mode 100644 index b8fa25a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./namespace'], function (namespace) { - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - return set; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/size.js deleted file mode 100644 index c6e377cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/some.js deleted file mode 100644 index 1bd6fdae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/some.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - return some; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js deleted file mode 100644 index 787fc19a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./has'], function (has) { - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - return unset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/values.js deleted file mode 100644 index b311fd09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - return values; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString.js deleted file mode 100644 index 44346127..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js deleted file mode 100644 index a6d11cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./getQuery'], function (getQuery) { - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js deleted file mode 100644 index 02bc1609..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../string/typecast', '../lang/isString'], function (typecast, isString) { - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - n = queryArr.length, - obj = {}, - item, val; - while (n--) { - item = queryArr[n].split('='); - val = shouldTypecast === false? item[1] : typecast(item[1]); - obj[item[0]] = isString(val)? decodeURIComponent(val) : val; - } - return obj; - } - - return decode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js deleted file mode 100644 index bd72a5b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../object/forOwn'], function (forOwn) { - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = []; - forOwn(obj, function(val, key){ - query.push( key +'='+ encodeURIComponent(val) ); - }); - return (query.length)? '?'+ query.join('&') : ''; - } - - return encode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js deleted file mode 100644 index d9813724..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../string/typecast', './getQuery'], function (typecast, getQuery) { - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - return getParam; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js deleted file mode 100644 index aa3d99f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - return getQuery; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js deleted file mode 100644 index ac153e3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./decode', './getQuery'], function (decode, getQuery) { - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - return parse; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js deleted file mode 100644 index 97081aa7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - return setParam; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random.js deleted file mode 100644 index b2641ee3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js deleted file mode 100644 index 0d0c38df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./randInt', '../lang/isArray'], function (randInt, isArray) { - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - return choice; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js deleted file mode 100644 index 82f3a2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./randHex', './choice'], function (randHex, choice) { - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - return guid; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js deleted file mode 100644 index b8c231dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./random', '../number/MIN_INT', '../number/MAX_INT'], function(random, MIN_INT, MAX_INT){ - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - return rand; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js deleted file mode 100644 index b3422d2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - return randomBit; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js deleted file mode 100644 index 6e9bf1c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./choice'], function (choice) { - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - return randHex; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js deleted file mode 100644 index 1750e9de..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/MIN_INT', '../number/MAX_INT', './rand'], function(MIN_INT, MAX_INT, rand){ - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - return randInt; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js deleted file mode 100644 index 4141cdf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - return randomSign; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/random.js deleted file mode 100644 index 4270822e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function () { - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - return random; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string.js deleted file mode 100644 index 3f5fd804..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string.js +++ /dev/null @@ -1,45 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js deleted file mode 100644 index e830d86d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function() { - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - return [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js deleted file mode 100644 index 02e6c04d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './upperCase', './lowerCase'], function(toString, replaceAccents, removeNonWord, upperCase, lowerCase){ - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - return camelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js deleted file mode 100644 index 825b5a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js deleted file mode 100644 index 3c073f05..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './truncate'], function (toString, truncate) { - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - return crop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js deleted file mode 100644 index 31a73f20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString) { - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - return endsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js deleted file mode 100644 index de34b61b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - return escapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js deleted file mode 100644 index 32facac0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - return escapeRegExp; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js deleted file mode 100644 index bd5e8c4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - return escapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js deleted file mode 100644 index 679c405c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - return hyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js deleted file mode 100644 index ecb8ba80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - return interpolate; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js deleted file mode 100644 index b045d69c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - return lowerCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js deleted file mode 100644 index ea4f5fbf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './repeat'], function(toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return ((str.length < minLen) - ? repeat(ch, minLen - str.length) + str : str); - } - - return lpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js deleted file mode 100644 index 477df953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - return ltrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js deleted file mode 100644 index 7aa7baba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../array/join'], function(join){ - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - return result.replace(/\/{2,}/g, '/'); - } - - return makePath; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js deleted file mode 100644 index 44e4194f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - return normalizeLineBreaks; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js deleted file mode 100644 index ead9ead4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './camelCase', './upperCase'], function(toString, camelCase, upperCase){ - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - return pascalCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js deleted file mode 100644 index 2987b507..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - return properCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js deleted file mode 100644 index 4905869d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - return removeNonASCII; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js deleted file mode 100644 index 2b1a2040..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - return removeNonWord; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js deleted file mode 100644 index 02f5659f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString){ - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - return repeat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js deleted file mode 100644 index 8b762fdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', '../lang/toArray'], function (toString, toArray) { - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - return replace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js deleted file mode 100644 index 3a63f55a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - return replaceAccents; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js deleted file mode 100644 index 2efd9c88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString', './repeat'], function (toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - return rpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js deleted file mode 100644 index a4cc282d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - return rtrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js deleted file mode 100644 index cfe45af5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - return sentenceCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js deleted file mode 100644 index c6d68c7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './trim'], function(toString, replaceAccents, removeNonWord, trim){ - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - return slugify; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js deleted file mode 100644 index 88ae5453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function (toString) { - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - return startsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js deleted file mode 100644 index e8da956d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - return stripHtmlTags; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js deleted file mode 100644 index 55526041..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES', './ltrim', './rtrim'], function(toString, WHITE_SPACES, ltrim, rtrim){ - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - return trim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js deleted file mode 100644 index 34000d9f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/toString', './trim'], function(toString, trim){ - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - return truncate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js deleted file mode 100644 index a7c83153..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - return typecast; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js deleted file mode 100644 index eeef39b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../lang/toString'], function(toString){ - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - return unCamelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js deleted file mode 100644 index 75dd4649..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - return underscore; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js deleted file mode 100644 index 173c69c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - return unescapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js deleted file mode 100644 index d4a7ba1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - return unescapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js deleted file mode 100644 index 6ac2fa4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - return unhyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js deleted file mode 100644 index 8b2073e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - return upperCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time.js deleted file mode 100644 index 67c90685..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js deleted file mode 100644 index 2de0cf2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ -define(function () { - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - return convert; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/now.js deleted file mode 100644 index a3a38bcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - return now; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js deleted file mode 100644 index 964929ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['../math/countSteps'], function(countSteps){ - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - return parseMs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js deleted file mode 100644 index edf18218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../math/countSteps', '../number/pad'], function(countSteps, pad){ - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - return toTimeString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string.js deleted file mode 100644 index 7f0ca3bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string.js +++ /dev/null @@ -1,45 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js deleted file mode 100644 index 03e01254..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - module.exports = [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js deleted file mode 100644 index aadb69a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js +++ /dev/null @@ -1,20 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var upperCase = require('./upperCase'); -var lowerCase = require('./lowerCase'); - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - module.exports = camelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/contains.js deleted file mode 100644 index cb22cae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/crop.js deleted file mode 100644 index 53b93b49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/crop.js +++ /dev/null @@ -1,12 +0,0 @@ -var toString = require('../lang/toString'); -var truncate = require('./truncate'); - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - module.exports = crop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js deleted file mode 100644 index d504e9dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - module.exports = endsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js deleted file mode 100644 index e67c4b21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - module.exports = escapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js deleted file mode 100644 index 70cb84ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - module.exports = escapeRegExp; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js deleted file mode 100644 index ec649adf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - module.exports = escapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js deleted file mode 100644 index 95e32436..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - module.exports = hyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js deleted file mode 100644 index ac88fac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - module.exports = interpolate; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js deleted file mode 100644 index 30bb7ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - module.exports = lowerCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lpad.js deleted file mode 100644 index 694d711e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/lpad.js +++ /dev/null @@ -1,17 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return ((str.length < minLen) - ? repeat(ch, minLen - str.length) + str : str); - } - - module.exports = lpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js deleted file mode 100644 index 23d7b33f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js +++ /dev/null @@ -1,34 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - module.exports = ltrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/makePath.js deleted file mode 100644 index 69aef310..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/makePath.js +++ /dev/null @@ -1,13 +0,0 @@ -var join = require('../array/join'); - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - return result.replace(/\/{2,}/g, '/'); - } - - module.exports = makePath; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js deleted file mode 100644 index 8a8dccfd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - module.exports = normalizeLineBreaks; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js deleted file mode 100644 index fd190353..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var camelCase = require('./camelCase'); -var upperCase = require('./upperCase'); - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - module.exports = pascalCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/properCase.js deleted file mode 100644 index 61636be4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/properCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - module.exports = properCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js deleted file mode 100644 index fb463816..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - module.exports = removeNonASCII; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js deleted file mode 100644 index bdd153b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - module.exports = removeNonWord; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/repeat.js deleted file mode 100644 index 0f9b4754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - module.exports = repeat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replace.js deleted file mode 100644 index 14433fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replace.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var toArray = require('../lang/toArray'); - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - module.exports = replace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js deleted file mode 100644 index bb221265..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - module.exports = replaceAccents; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rpad.js deleted file mode 100644 index 99f6378d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rpad.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - module.exports = rpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js deleted file mode 100644 index 66ba80e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - module.exports = rtrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js deleted file mode 100644 index 354104c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - module.exports = sentenceCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/slugify.js deleted file mode 100644 index 142f0d9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/slugify.js +++ /dev/null @@ -1,24 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var trim = require('./trim'); - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - module.exports = slugify; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js deleted file mode 100644 index bce2bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - module.exports = startsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js deleted file mode 100644 index 01d17b0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - module.exports = stripHtmlTags; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/trim.js deleted file mode 100644 index 9652b0c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/trim.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); -var ltrim = require('./ltrim'); -var rtrim = require('./rtrim'); - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - module.exports = trim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/truncate.js deleted file mode 100644 index a98d6c7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/truncate.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); -var trim = require('./trim'); - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - module.exports = truncate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/typecast.js deleted file mode 100644 index c1386a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ - - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - module.exports = typecast; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js deleted file mode 100644 index 4968f378..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -var toString = require('../lang/toString'); - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - module.exports = unCamelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/underscore.js deleted file mode 100644 index ebd6e2b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/underscore.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - module.exports = underscore; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js deleted file mode 100644 index 52cf3f45..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - module.exports = unescapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js deleted file mode 100644 index 0b7fb73b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - module.exports = unescapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js deleted file mode 100644 index 311dfa17..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - module.exports = unhyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js deleted file mode 100644 index 6c92552c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - module.exports = upperCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time.js deleted file mode 100644 index 9f533296..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time.js +++ /dev/null @@ -1,12 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/convert.js deleted file mode 100644 index 852a0f03..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ - - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - module.exports = convert; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/now.js deleted file mode 100644 index effcfbe3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - module.exports = now; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js deleted file mode 100644 index 6d997976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - module.exports = parseMs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js deleted file mode 100644 index 101d69fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js +++ /dev/null @@ -1,24 +0,0 @@ -var countSteps = require('../math/countSteps'); -var pad = require('../number/pad'); - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - module.exports = toTimeString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/.npmignore deleted file mode 100644 index f1250e58..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/History.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/History.md deleted file mode 100644 index 88119480..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/History.md +++ /dev/null @@ -1,42 +0,0 @@ - -1.0.0 / 2013-06-18 -================== - - * remove .version - * >=. Closes #19 - * Merge pull request #15 from davglass/readline-osx - * On OSX revert back to terminal hack to avoid a readline bug - -0.1.0 / 2012-09-19 -================== - - * Fixed logic bug that caused bar to jump one extra space at the end [davglass] - * Working with readline impl, even on Windows [davglass] - * Using readline instead of the \r hack [davglass] - -0.0.5 / 2012-08-07 -================== - - * add ability to tick by zero chunks - tick(0) - * fix ETA. Closes #4 [lwille] - -0.0.4 / 2011-11-14 -================== - - * Allow more recent versions of node - -0.0.3 / 2011-04-20 -================== - - * Changed; erase the line when complete - -0.0.2 / 2011-04-20 -================== - - * Added custom tokens support - * Fixed; clear line before writing - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Makefile deleted file mode 100644 index 36a3ed7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Makefile +++ /dev/null @@ -1,5 +0,0 @@ - -test: - @echo "populate me" - -.PHONY: test \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Readme.md deleted file mode 100644 index 4e08a49b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/Readme.md +++ /dev/null @@ -1,117 +0,0 @@ -# node-progress - - Flexible ascii progress bar - -## Installation - - npm install progress - -## Usage - - First we create a `ProgressBar`, giving it a format string - as well as the `total`, telling the progress bar when it will - be considered complete. After that all we need to do is `tick()` appropriately. - -```javascript -var ProgressBar = require('progress'); - -var bar = new ProgressBar(':bar', { total: 10 }); -var timer = setInterval(function(){ - bar.tick(); - if (bar.complete) { - console.log('\ncomplete\n'); - clearInterval(timer); - } -}, 100); -``` - -## Options: - - - `total` total number of ticks to complete - - `width` the displayed width of the progress bar defaulting to total - - `stream` the output stream defaulting to stdout - - `complete` completion character defaulting to "=" - - `incomplete` incomplete character defaulting to "-" - - `clear` option to clear the bar on completion defaulting to false - - `callback` optional function to call when the progress bar completes - -## Tokens: - - - `:bar` the progress bar itself - - `:current` current tick number - - `:total` total ticks - - `:elapsed` time elapsed in seconds - - `:percent` completion percentage - - `:eta` estimated completion time in seconds - -## Examples - -### Download - - In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length. - -```javascript -var ProgressBar = require('../') - , https = require('https'); - -var req = https.request({ - host: 'download.github.com' - , port: 443 - , path: '/visionmedia-node-jscoverage-0d4608a.zip' -}); - -req.on('response', function(res){ - var len = parseInt(res.headers['content-length'], 10); - - console.log(); - var bar = new ProgressBar(' downloading [:bar] :percent :etas', { - complete: '=' - , incomplete: ' ' - , width: 20 - , total: len - }); - - res.on('data', function(chunk){ - bar.tick(chunk.length); - }); - - res.on('end', function(){ - console.log('\n'); - }); -}); - -req.end(); -``` - - The code above will generate a progress bar that looks like this: - -``` -downloading [===== ] 29% 3.7s -``` - -You can see more examples in the `examples` folder. - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk `<tj@vision-media.ca>` - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/index.js deleted file mode 100644 index 4449dd30..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/node-progress'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js deleted file mode 100644 index ca0ce4f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js +++ /dev/null @@ -1,183 +0,0 @@ -/*! - * node-progress - * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca> - * MIT Licensed - */ - -/** - * Expose `ProgressBar`. - */ - -exports = module.exports = ProgressBar; - -/** - * Initialize a `ProgressBar` with the given - * `fmt` string and `options` or `total`. - * - * Options: - * - * - `total` total number of ticks to complete - * - `width` the displayed width of the progress bar defaulting to total - * - `stream` the output stream defaulting to stdout - * - `complete` completion character defaulting to "=" - * - `incomplete` incomplete character defaulting to "-" - * - `callback` optional function to call when the progress bar completes - * - * Tokens: - * - * - `:bar` the progress bar itself - * - `:current` current tick number - * - `:total` total ticks - * - `:elapsed` time elapsed in seconds - * - `:percent` completion percentage - * - `:eta` eta in seconds - * - * @param {String} fmt - * @param {Object|Number} options or total - * @api public - */ - -function ProgressBar(fmt, options) { - this.rl = require('readline').createInterface({ - input: process.stdin, - output: options.stream || process.stdout - }); - this.rl.setPrompt('', 0); - this.rl.clearLine = function() { - this.write(null, {ctrl: true, name: 'u'}); - }; - - if (typeof(options) == 'number') { - var total = options; - options = {}; - options.total = total; - } else { - options = options || {}; - if ('string' != typeof fmt) throw new Error('format required'); - if ('number' != typeof options.total) throw new Error('total required'); - } - - this.fmt = fmt; - this.curr = 0; - this.total = options.total; - this.width = options.width || this.total; - this.clear = options.clear - this.chars = { - complete: options.complete || '=' - , incomplete: options.incomplete || '-' - }; - this.callback = options.callback || function () {}; -} - -/** - * "tick" the progress bar with optional `len` and - * optional `tokens`. - * - * @param {Number|Object} len or tokens - * @param {Object} tokens - * @api public - */ - -ProgressBar.prototype.tick = function(len, tokens){ - if (len !== 0) - len = len || 1; - - // swap tokens - if ('object' == typeof len) tokens = len, len = 1; - - // start time for eta - if (0 == this.curr) this.start = new Date; - - this.curr += len - this.render(tokens); - - // progress complete - if (this.curr >= this.total) { - this.complete = true; - this.terminate(); - this.callback(this); - return; - } -}; - -/** - * Method to render the progress bar with optional `tokens` to - * place in the progress bar's `fmt` field. - * - * @param {Object} tokens - * @api public - */ - -ProgressBar.prototype.render = function(tokens){ - if(!process.stdout.isTTY) { - return; - } - - var ratio = this.curr / this.total; - ratio = Math.min(Math.max(ratio, 0), 1); - - var percent = ratio * 100 - , complete = Math.round(this.width * ratio) - , incomplete - , elapsed = new Date - this.start - , eta = (percent == 100) ? 0 : elapsed * (this.total / this.curr - 1); - - complete = Array(complete).join(this.chars.complete); - incomplete = Array(this.width - complete.length).join(this.chars.incomplete); - - var str = this.fmt - .replace(':bar', complete + incomplete) - .replace(':current', this.curr) - .replace(':total', this.total) - .replace(':elapsed', isNaN(elapsed) ? "0.0" : (elapsed / 1000).toFixed(1)) - .replace(':eta', (isNaN(eta) || !isFinite(eta)) ? "0.0" : (eta / 1000).toFixed(1)) - .replace(':percent', percent.toFixed(0) + '%'); - - if (tokens) { - for (var key in tokens) { - str = str.replace(':' + key, tokens[key]); - } - } - - this.rl.clearLine(); - this.rl.write(str); -}; - -/** - * "update" the progress bar to represent an exact percentage. - * The ratio (between 0 and 1) specified will be multiplied by `total` and - * floored, representing the closest available "tick." For example, if a - * progress bar has a length of 3 and `update(0.5)` is called, the progress - * will be set to 1. - * - * A ratio of 0.5 will attempt to set the progress to halfway. - * - * @param {Number} ratio The ratio (between 0 and 1 inclusive) to set the - * overall completion to. - * @api public - */ - -ProgressBar.prototype.update = function(ratio, tokens) { - var goal = Math.floor(ratio * this.total); - var delta = goal - this.curr; - - this.tick(delta, tokens); -}; - -/** - * Terminates a progress bar. - * - * @api public - */ - -ProgressBar.prototype.terminate = function() { - this.rl.resume(); - - if (this.clear) { - this.rl.clearLine(); - this.rl.close(); - } else { - this.rl.close(); - console.log(); - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/package.json deleted file mode 100644 index c5ad2ccb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/progress/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "progress", - "version": "1.1.3", - "description": "Flexible ascii progress bar", - "keywords": [ - "cli", - "progress" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "main": "index", - "engines": { - "node": ">=0.4.0" - }, - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-progress" - }, - "readme": "# node-progress\n\n Flexible ascii progress bar\n\n## Installation\n\n npm install progress\n\n## Usage\n\n First we create a `ProgressBar`, giving it a format string\n as well as the `total`, telling the progress bar when it will\n be considered complete. After that all we need to do is `tick()` appropriately.\n\n```javascript\nvar ProgressBar = require('progress');\n\nvar bar = new ProgressBar(':bar', { total: 10 });\nvar timer = setInterval(function(){\n bar.tick();\n if (bar.complete) {\n console.log('\\ncomplete\\n');\n clearInterval(timer);\n }\n}, 100);\n```\n\n## Options:\n\n - `total` total number of ticks to complete\n - `width` the displayed width of the progress bar defaulting to total\n - `stream` the output stream defaulting to stdout\n - `complete` completion character defaulting to \"=\"\n - `incomplete` incomplete character defaulting to \"-\"\n - `clear` option to clear the bar on completion defaulting to false\n - `callback` optional function to call when the progress bar completes\n\n## Tokens:\n\n - `:bar` the progress bar itself\n - `:current` current tick number\n - `:total` total ticks\n - `:elapsed` time elapsed in seconds\n - `:percent` completion percentage\n - `:eta` estimated completion time in seconds\n\n## Examples\n\n### Download\n\n In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length.\n\n```javascript\nvar ProgressBar = require('../')\n , https = require('https');\n\nvar req = https.request({\n host: 'download.github.com'\n , port: 443\n , path: '/visionmedia-node-jscoverage-0d4608a.zip'\n});\n\nreq.on('response', function(res){\n var len = parseInt(res.headers['content-length'], 10);\n\n console.log();\n var bar = new ProgressBar(' downloading [:bar] :percent :etas', {\n complete: '='\n , incomplete: ' '\n , width: 20\n , total: len\n });\n\n res.on('data', function(chunk){\n bar.tick(chunk.length);\n });\n\n res.on('end', function(){\n console.log('\\n');\n });\n});\n\nreq.end();\n```\n\n The code above will generate a progress bar that looks like this:\n\n```\ndownloading [===== ] 29% 3.7s\n```\n\nYou can see more examples in the `examples` folder.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk `<tj@vision-media.ca>`\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-progress/issues" - }, - "homepage": "https://github.com/visionmedia/node-progress", - "_id": "progress@1.1.3", - "_from": "progress@~1.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/README.md deleted file mode 100644 index ff1eb531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The "which" util from npm's guts. - -Finds the first instance of a specified executable in the PATH -environment variable. Does not cache the results, so `hash -r` is not -needed when the PATH changes. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/bin/which b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/bin/which deleted file mode 100755 index 8432ce2f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/bin/which +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env node -var which = require("../") -if (process.argv.length < 3) { - console.error("Usage: which <thing>") - process.exit(1) -} - -which(process.argv[2], function (er, thing) { - if (er) { - console.error(er.message) - process.exit(er.errno || 127) - } - console.log(thing) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/package.json deleted file mode 100644 index 37965061..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "which", - "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.", - "version": "1.0.5", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-which.git" - }, - "main": "which.js", - "bin": { - "which": "./bin/which" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": {}, - "readme": "The \"which\" util from npm's guts.\n\nFinds the first instance of a specified executable in the PATH\nenvironment variable. Does not cache the results, so `hash -r` is not\nneeded when the PATH changes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-which/issues" - }, - "homepage": "https://github.com/isaacs/node-which", - "_id": "which@1.0.5", - "_from": "which@~1.0.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/which.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/which.js deleted file mode 100644 index db7e8f74..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/node_modules/which/which.js +++ /dev/null @@ -1,104 +0,0 @@ -module.exports = which -which.sync = whichSync - -var path = require("path") - , fs - , COLON = process.platform === "win32" ? ";" : ":" - , isExe - -try { - fs = require("graceful-fs") -} catch (ex) { - fs = require("fs") -} - -if (process.platform == "win32") { - // On windows, there is no good way to check that a file is executable - isExe = function isExe () { return true } -} else { - isExe = function isExe (mod, uid, gid) { - //console.error(mod, uid, gid); - //console.error("isExe?", (mod & 0111).toString(8)) - var ret = (mod & 0001) - || (mod & 0010) && process.getgid && gid === process.getgid() - || (mod & 0100) && process.getuid && uid === process.getuid() - //console.error("isExe?", ret) - return ret - } -} - - - -function which (cmd, cb) { - if (isAbsolute(cmd)) return cb(null, cmd) - var pathEnv = (process.env.PATH || "").split(COLON) - , pathExt = [""] - if (process.platform === "win32") { - pathEnv.push(process.cwd()) - pathExt = (process.env.PATHEXT || ".EXE").split(COLON) - if (cmd.indexOf(".") !== -1) pathExt.unshift("") - } - //console.error("pathEnv", pathEnv) - ;(function F (i, l) { - if (i === l) return cb(new Error("not found: "+cmd)) - var p = path.resolve(pathEnv[i], cmd) - ;(function E (ii, ll) { - if (ii === ll) return F(i + 1, l) - var ext = pathExt[ii] - //console.error(p + ext) - fs.stat(p + ext, function (er, stat) { - if (!er && - stat && - stat.isFile() && - isExe(stat.mode, stat.uid, stat.gid)) { - //console.error("yes, exe!", p + ext) - return cb(null, p + ext) - } - return E(ii + 1, ll) - }) - })(0, pathExt.length) - })(0, pathEnv.length) -} - -function whichSync (cmd) { - if (isAbsolute(cmd)) return cmd - var pathEnv = (process.env.PATH || "").split(COLON) - , pathExt = [""] - if (process.platform === "win32") { - pathEnv.push(process.cwd()) - pathExt = (process.env.PATHEXT || ".EXE").split(COLON) - if (cmd.indexOf(".") !== -1) pathExt.unshift("") - } - for (var i = 0, l = pathEnv.length; i < l; i ++) { - var p = path.join(pathEnv[i], cmd) - for (var j = 0, ll = pathExt.length; j < ll; j ++) { - var cur = p + pathExt[j] - var stat - try { stat = fs.statSync(cur) } catch (ex) {} - if (stat && - stat.isFile() && - isExe(stat.mode, stat.uid, stat.gid)) return cur - } - } - throw new Error("not found: "+cmd) -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/package.json deleted file mode 100644 index ed2dcc0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/bin-wrapper/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "bin-wrapper", - "version": "0.1.9", - "description": "Binary wrapper for Node.js that makes your programs seamlessly available as local dependencies", - "keywords": [ - "bin", - "build", - "make", - "wrapper" - ], - "homepage": "https://github.com/kevva/bin-wrapper", - "bugs": { - "url": "https://github.com/kevva/bin-wrapper/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/bin-wrapper.git" - }, - "scripts": { - "test": "mocha --reporter list --timeout 0" - }, - "main": "bin-wrapper.js", - "files": [ - "bin-wrapper.js" - ], - "dependencies": { - "download": "~0.1.2", - "isbin": "0.0.2", - "mout": "~0.6.0", - "progress": "~1.1.0", - "which": "~1.0.5" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# bin-wrapper [![Build Status](https://secure.travis-ci.org/kevva/bin-wrapper.png?branch=master)](http://travis-ci.org/kevva/bin-wrapper)\r\n\r\nBinary wrapper for Node.js that makes your programs seamlessly available as local dependencies\r\n\r\n## Getting started\r\n\r\nInstall with [npm](https://npmjs.org/package/bin-wrapper): `npm install bin-wrapper`\r\n\r\n## Examples\r\n\r\nAll `platform` and `arch` specific options takes precedence over the base \r\noptions. See [test.js](test.js) for a full fleshed example.\r\n\r\n```js\r\nvar Bin = require('bin-wrapper');\r\n\r\nvar opts = {\r\n name: 'Gifsicle',\r\n bin: 'gifsicle',\r\n path: 'vendor',\r\n url: 'http://url/to/gifsicle',\r\n src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz',\r\n buildScript: './configure --bindir=\"vendor\" && make install',\r\n platform: {\r\n win32: {\r\n bin: 'gifsicle.exe',\r\n url: [\r\n 'http://url/to/gifsicle.exe'\r\n 'http://url/to/gifsicle.dll'\r\n ]\r\n }\r\n }\r\n}\r\nvar bin = new Bin(opts);\r\n\r\nbin.check('--version', function (works) {\r\n if (!works) {\r\n console.log('Pre-build test failed, compiling from source');\r\n return bin.build();\r\n }\r\n\r\n console.log('Binary passed the test');\r\n});\r\n```\r\n\r\nGet the path to your binary with `bin.path`.\r\n\r\n```js\r\nconsole.log(bin.path);\r\n// => path/to/vendor/gifsicle\r\n```\r\n\r\n## API\r\n\r\n### .check(cmd, cb)\r\n\r\nCheck if a binary is present and working. If it isn't, download and test it by \r\nrunning the binary with `cmd` and see if it exits correctly.\r\n\r\n### .build(cb)\r\n\r\nDownload the source archive defined in the `src` property and build it using the \r\nbuild script defined in the `buildScript` property.\r\n\r\n## License\r\n\r\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\r\n", - "readmeFilename": "README.md", - "_id": "bin-wrapper@0.1.9", - "_from": "bin-wrapper@~0.1.3" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/chalk.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/chalk.js deleted file mode 100644 index 17c6dbab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/chalk.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; -var ansi = require('ansi-styles'); -var defineProps = Object.defineProperties; - -ansi.grey = ansi.gray; - -var styles = (function () { - var ret = {}; - - Object.keys(ansi).forEach(function (key) { - ret[key] = { - get: function () { - this._styles.push(key); - return this; - } - }; - }); - - return ret; -})(); - -var chalk = module.exports = defineProps({}, init()); - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - var obj = defineProps(function self(str) { - if (!chalk.enabled) { - return str; - } - - return self._styles.reduce(function (str, name) { - var code = ansi[name]; - return code[0] + (str || '') + code[1]; - }, str); - }, styles); - - obj._styles = []; - - return obj[name]; - } - } - }); - - return ret; -} - -chalk.styles = ansi; - -chalk.stripColor = function (str) { - return str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, ''); -}; - -chalk.supportsColor = require('has-color'); - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js deleted file mode 100644 index 56a5d19b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -module.exports = { - reset: ['\x1b[0m', '\x1b[0m'], - - bold: ['\x1b[1m', '\x1b[22m'], - italic: ['\x1b[3m', '\x1b[23m'], - underline: ['\x1b[4m', '\x1b[24m'], - inverse: ['\x1b[7m', '\x1b[27m'], - strikethrough: ['\x1b[9m', '\x1b[29m'], - - black: ['\x1b[30m', '\x1b[39m'], - red: ['\x1b[31m', '\x1b[39m'], - green: ['\x1b[32m', '\x1b[39m'], - yellow: ['\x1b[33m', '\x1b[39m'], - blue: ['\x1b[34m', '\x1b[39m'], - magenta: ['\x1b[35m', '\x1b[39m'], - cyan: ['\x1b[36m', '\x1b[39m'], - white: ['\x1b[37m', '\x1b[39m'], - gray: ['\x1B[90m', '\x1b[39m'], - - bgBlack: ['\x1b[40m', '\x1b[49m'], - bgRed: ['\x1b[41m', '\x1b[49m'], - bgGreen: ['\x1b[42m', '\x1b[49m'], - bgYellow: ['\x1b[43m', '\x1b[49m'], - bgBlue: ['\x1b[44m', '\x1b[49m'], - bgMagenta: ['\x1b[45m', '\x1b[49m'], - bgCyan: ['\x1b[46m', '\x1b[49m'], - bgWhite: ['\x1b[47m', '\x1b[49m'] -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index c2f556a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "ansi-styles", - "version": "0.2.0", - "description": "ANSI escape codes for colorizing strings in the terminal", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/ansi-styles", - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "ansi-styles.js" - ], - "main": "ansi-styles", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles)\n\n> ANSI escape codes for colorizing strings in the terminal.\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![screenshot](screenshot.png)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles`\n\n\n## Example\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green[0] + 'Hello world!' + ansi.green[1]);\n```\n\n## API\n\nEach style is an array of a start and end escape code.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT License • © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "ansi-styles@0.2.0", - "_from": "ansi-styles@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 646837c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles) - -> ANSI escape codes for colorizing strings in the terminal. - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -Install with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles` - - -## Example - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green[0] + 'Hello world!' + ansi.green[1]); -``` - -## API - -Each style is an array of a start and end escape code. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/has-color.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/has-color.js deleted file mode 100644 index 27316b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/has-color.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (!process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - return /^screen|^xterm|color|ansi|cygwin|linux/i.test(process.env.TERM); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/package.json deleted file mode 100644 index e55a6244..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "has-color", - "version": "0.1.4", - "description": "Detect whether a terminal supports color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "capability", - "detect" - ], - "homepage": "https://github.com/sindresorhus/has-color", - "bugs": { - "url": "https://github.com/sindresorhus/has-color/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "has-color.js" - ], - "main": "has-color", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-color.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color)\n\n> Detect whether a terminal supports color.\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/has-color): `npm install --save has-color`\n\n\n## Example\n\n```js\nvar hasColor = require('has-color');\n\nif (hasColor) {\n\tconsole.log('Terminal supports color.');\n}\n```\n\nIt obeys the CLI flags `--color` and `--no-color`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "has-color@0.1.4", - "_from": "has-color@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/readme.md deleted file mode 100644 index 0918c851..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/node_modules/has-color/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color) - -> Detect whether a terminal supports color. - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install with [npm](https://npmjs.org/package/has-color): `npm install --save has-color` - - -## Example - -```js -var hasColor = require('has-color'); - -if (hasColor) { - console.log('Terminal supports color.'); -} -``` - -It obeys the CLI flags `--color` and `--no-color`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/package.json deleted file mode 100644 index fa15ac29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "chalk", - "version": "0.2.1", - "description": "Terminal string styling done right", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/chalk", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "chalk.js" - ], - "main": "chalk", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk.git" - }, - "scripts": { - "test": "mocha" - }, - "dependencies": { - "has-color": "~0.1.0", - "ansi-styles": "~0.2.0" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk)\n\n> Terminal string styling done right.\n\n[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](screenshot.png)\n\n\n## Why\n\n- **Doesn't extend String.prototype**\n- Expressive API\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/chalk): `npm install --save chalk`\n\n\n## Example\n\nChalk comes with an easy to use composable API where you just chain the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nconsole.log(chalk.blue('Hello world!'));\n\n// combine styled and normal strings\nconsole.log(chalk.blue('Hello') + 'World' + chalk.red('!'));\n\n// compose multiple styles using the chainable API\nconsole.log(chalk.blue.bgRed.bold('Hello world!'));\n\n// nest styles\nchalk.red('Hello' + chalk.underline.bgBlue('world') + '!');\n```\n\nYou can easily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\n\n## API\n\n### chalk.\\<style>\\[.\\<style>...](string)\n\nChain [styles](#styles) and call the last one as a method with a string argument.\n\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it.\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/has-color).\n\nCan be overridden by the user with the flags `--color` and `--no-color`.\n\nUsed internally and handled for you, but exposed for convenience.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> ['\\x1b[31m', '\\x1b[39m']\n\nconsole.log(chalk.styles.red[0] + 'Hello' + chalk.styles.red[1]);\n// first item is the style escape code and second is the reset escape code\n```\n\n### chalk.stripColor(string)\n\nStrip color from a string.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT License • © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "chalk@0.2.1", - "_from": "chalk@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/readme.md deleted file mode 100644 index d369d2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/node_modules/chalk/readme.md +++ /dev/null @@ -1,130 +0,0 @@ -# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) - -> Terminal string styling done right. - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](screenshot.png) - - -## Why - -- **Doesn't extend String.prototype** -- Expressive API -- Clean and focused -- Auto-detects color support -- Actively maintained - - -## Install - -Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` - - -## Example - -Chalk comes with an easy to use composable API where you just chain the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log(chalk.blue('Hello world!')); - -// combine styled and normal strings -console.log(chalk.blue('Hello') + 'World' + chalk.red('!')); - -// compose multiple styles using the chainable API -console.log(chalk.blue.bgRed.bold('Hello world!')); - -// nest styles -chalk.red('Hello' + chalk.underline.bgBlue('world') + '!'); -``` - -You can easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - - -## API - -### chalk.\<style>\[.\<style>...](string) - -Chain [styles](#styles) and call the last one as a method with a string argument. - - -### chalk.enabled - -Color support is automatically detected, but you can override it. - -### chalk.supportsColor - -Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). - -Can be overridden by the user with the flags `--color` and `--no-color`. - -Used internally and handled for you, but exposed for convenience. - -### chalk.styles - -Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). - -```js -var chalk = require('chalk'); - -console.log(chalk.styles.red); -//=> ['\x1b[31m', '\x1b[39m'] - -console.log(chalk.styles.red[0] + 'Hello' + chalk.styles.red[1]); -// first item is the style escape code and second is the reset escape code -``` - -### chalk.stripColor(string) - -Strip color from a string. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/package.json deleted file mode 100644 index d1ca8213..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "gifsicle", - "version": "0.1.4", - "description": "gifsicle wrapper that makes it seamlessly available as a local dependency on OS X, Linux and Windows", - "keywords": [ - "gif", - "img", - "image", - "compress", - "minify", - "optimize" - ], - "homepage": "https://github.com/yeoman/node-gifsicle", - "bugs": { - "url": "https://github.com/yeoman/node-gifsicle/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "BSD", - "repository": { - "type": "git", - "url": "git://github.com/yeoman/node-gifsicle.git" - }, - "main": "lib/gifsicle", - "bin": { - "gifsicle": "bin/gifsicle.js" - }, - "scripts": { - "test": "mocha", - "postinstall": "node lib/check.js" - }, - "dependencies": { - "bin-wrapper": "~0.1.3", - "chalk": "~0.2.0" - }, - "devDependencies": { - "mocha": "~1.13.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "files": [ - "bin", - "lib" - ], - "readme": "# node-gifsicle [![Build Status](https://secure.travis-ci.org/yeoman/node-gifsicle.png?branch=master)](http://travis-ci.org/yeoman/node-gifsicle)\n\n[gifsicle](http://www.lcdf.org/gifsicle/) 1.71 Node.js wrapper that makes it seamlessly available as a local dependency on OS X, Linux and Windows.\n\n> gifsicle manipulates GIF image files in many different ways. Depending on command line options, it can merge several GIFs into a GIF animation; explode an animation into its component frames; change individual frames in an animation; turn interlacing on and off; add transparency and much more.\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/gifsicle): `npm install --save gifsicle`\n\n\n## Example usage\n\n```js\nvar execFile = require('child_process').execFile;\nvar gifsiclePath = require('gifsicle').path;\n\nexecFile(gifsiclePath, ['-o', 'output.gif', 'input.gif'], function() {\n\tconsole.log('Image minified');\n});\n```\n\nCan also be run directly from `./node_modules/.bin/gifsicle`.\n\n\n## Dev\n\nNote to self on how to update the binaries.\n\n### OS X\n\nRun `npm install` on a OS X 10.7 machine to build the binary.\n\n### Linux\n\nRun `npm install` to build the binary.\n\n### Windows\n\n- Download the [Windows files 32/64-bit](http://www.lcdf.org/gifsicle/) on a Windows machine.\n- Run the downloaded file to extract.\n- Go to the `bin` folder at the destination and copy `gifsicle.exe`.\n\n\n## License\n\nEverything excluding the binaries licensed under the [BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google.\n\ngifsicle licensed under the GNU General Public License, Version 2.\n", - "readmeFilename": "readme.md", - "_id": "gifsicle@0.1.4", - "_from": "gifsicle@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/readme.md deleted file mode 100644 index 4d0c7602..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/readme.md +++ /dev/null @@ -1,50 +0,0 @@ -# node-gifsicle [![Build Status](https://secure.travis-ci.org/yeoman/node-gifsicle.png?branch=master)](http://travis-ci.org/yeoman/node-gifsicle) - -[gifsicle](http://www.lcdf.org/gifsicle/) 1.71 Node.js wrapper that makes it seamlessly available as a local dependency on OS X, Linux and Windows. - -> gifsicle manipulates GIF image files in many different ways. Depending on command line options, it can merge several GIFs into a GIF animation; explode an animation into its component frames; change individual frames in an animation; turn interlacing on and off; add transparency and much more. - - -## Install - -Install with [npm](https://npmjs.org/package/gifsicle): `npm install --save gifsicle` - - -## Example usage - -```js -var execFile = require('child_process').execFile; -var gifsiclePath = require('gifsicle').path; - -execFile(gifsiclePath, ['-o', 'output.gif', 'input.gif'], function() { - console.log('Image minified'); -}); -``` - -Can also be run directly from `./node_modules/.bin/gifsicle`. - - -## Dev - -Note to self on how to update the binaries. - -### OS X - -Run `npm install` on a OS X 10.7 machine to build the binary. - -### Linux - -Run `npm install` to build the binary. - -### Windows - -- Download the [Windows files 32/64-bit](http://www.lcdf.org/gifsicle/) on a Windows machine. -- Run the downloaded file to extract. -- Go to the `bin` folder at the destination and copy `gifsicle.exe`. - - -## License - -Everything excluding the binaries licensed under the [BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google. - -gifsicle licensed under the GNU General Public License, Version 2. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/vendor/gifsicle b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/gifsicle/vendor/gifsicle deleted file mode 100755 index 675d7751ae2c3135d1002dc2358a91264d4bed6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170964 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%0D0%04&S@Rw-+)?`Sh{ir$mjCXy-+><}ITfJxa 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®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 TwQY1?Jq)y@@B_)KgDCo+it{Vx diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/bin/jpegtran.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/bin/jpegtran.js deleted file mode 100755 index 3f8cb0ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/bin/jpegtran.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node -'use strict'; - -var binPath = require('../lib/jpegtran').path; -var spawn = require('child_process').spawn; - -spawn(binPath, process.argv.slice(2), { stdio: 'inherit' }) - .on('exit', process.exit); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/check.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/check.js deleted file mode 100644 index e257bb64..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/check.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -var bin = require('./jpegtran').bin; -var chalk = require('chalk'); -var path = require('path'); - -var args = [ - '-copy', 'none', - '-optimize', - '-outfile', path.join(__dirname, '../test/minified.jpg'), - path.join(__dirname, '../test/fixtures/test.jpg') -]; - -bin.check(args, function (w) { - if (!w) { - console.log(chalk.red('✗ pre-build test failed, compiling from source...')); - - if (process.platform === 'win32') { - return console.log(chalk.red('✗ building is not supported on ' + process.platform)); - } - - return bin.build(function (err) { - if (err) { - return console.log(chalk.red('✗ ' + err.message)); - } - - console.log(chalk.green('✓ jpegtran rebuilt successfully')); - }); - } - - console.log(chalk.green('✓ pre-build test passed successfully')); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/jpegtran.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/jpegtran.js deleted file mode 100644 index 30270277..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/lib/jpegtran.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -var Bin = require('bin-wrapper'); -var path = require('path'); - -var options = { - name: 'jpegtran', - bin: 'jpegtran', - path: path.join(__dirname, '../vendor'), - src: 'http://downloads.sourceforge.net/project/libjpeg-turbo/1.3.0/libjpeg-turbo-1.3.0.tar.gz', - buildScript: './configure --disable-shared --prefix="' + path.join(__dirname, '../vendor') + '" && ' + 'make install', - platform: { - darwin: { - url: 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/osx/jpegtran' - }, - freebsd: { - url: 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/freebsd/jpegtran', - }, - linux: { - url: 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/linux/x86/jpegtran', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/linux/x64/jpegtran' - } - } - }, - sunos: { - url: 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/sunos/x86/jpegtran', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/sunos/x64/jpegtran' - } - } - }, - win32: { - bin: 'jpegtran.exe', - url: [ - 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/win/x86/jpegtran.exe', - 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/win/x86/libjpeg-62.dll' - ], - arch: { - x64: { - url: [ - 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/win/x64/jpegtran.exe', - 'https://raw.github.com/yeoman/node-jpegtran-bin/master/vendor/win/x64/libjpeg-62.dll' - ] - } - } - } - } -}; -var bin = new Bin(options); - -exports.bin = bin; -exports.options = options; -exports.path = bin.path; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/README.md deleted file mode 100644 index 81dbc571..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# bin-wrapper [![Build Status](https://secure.travis-ci.org/kevva/bin-wrapper.png?branch=master)](http://travis-ci.org/kevva/bin-wrapper) - -Binary wrapper for Node.js that makes your programs seamlessly available as local dependencies - -## Getting started - -Install with [npm](https://npmjs.org/package/bin-wrapper): `npm install bin-wrapper` - -## Examples - -All `platform` and `arch` specific options takes precedence over the base -options. See [test.js](test.js) for a full fleshed example. - -```js -var Bin = require('bin-wrapper'); - -var opts = { - name: 'Gifsicle', - bin: 'gifsicle', - path: 'vendor', - url: 'http://url/to/gifsicle', - src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz', - buildScript: './configure --bindir="vendor" && make install', - platform: { - win32: { - bin: 'gifsicle.exe', - url: [ - 'http://url/to/gifsicle.exe' - 'http://url/to/gifsicle.dll' - ] - } - } -} -var bin = new Bin(opts); - -bin.check('--version', function (works) { - if (!works) { - console.log('Pre-build test failed, compiling from source'); - return bin.build(); - } - - console.log('Binary passed the test'); -}); -``` - -Get the path to your binary with `bin.path`. - -```js -console.log(bin.path); -// => path/to/vendor/gifsicle -``` - -## API - -### .check(cmd, cb) - -Check if a binary is present and working. If it isn't, download and test it by -running the binary with `cmd` and see if it exits correctly. - -### .build(cb) - -Download the source archive defined in the `src` property and build it using the -build script defined in the `buildScript` property. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/bin-wrapper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/bin-wrapper.js deleted file mode 100644 index d84d5874..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/bin-wrapper.js +++ /dev/null @@ -1,223 +0,0 @@ -'use strict'; - -var download = require('download'); -var exec = require('child_process').exec; -var fs = require('fs'); -var hasOwn = require('mout/object/hasOwn'); -var isbin = require('isbin'); -var isFunction = require('mout/lang/isFunction'); -var mixIn = require('mout/object/mixIn'); -var os = require('os'); -var path = require('path'); -var ProgressBar = require('progress'); -var spawn = require('child_process').spawn; -var which = require('which'); - -/** - * Initialize BinWrapper with options - * - * @param {Object} opts - * @api public - */ - -function BinWrapper(opts) { - opts = opts || {}; - this.opts = this._parse(opts); - this.name = this.opts.name; - this.bin = this.opts.bin; - this.dest = this.opts.path; - this.path = this._path() || path.join(this.dest, this.bin); - this.url = this.opts.url; - this.src = this.opts.src; - this.buildScript = this.opts.buildScript; - this.proxy = process.env.http_proxy || - process.env.HTTP_PROXY || - process.env.https_proxy || - process.env.HTTPS_PROXY || - null; -} - -/** - * Check if a binary is present and working - * - * @param {String|Array} cmd - * @param {Function} cb - * @api public - */ - -BinWrapper.prototype.check = function (cmd, cb) { - var self = this; - - if (!cb && isFunction(cmd)) { - cb = cmd; - cmd = ['--help']; - } - - cmd = cmd; - cmd = Array.isArray(cmd) ? cmd : [cmd]; - - if (this._path()) { - return self._test(cmd, cb); - } - - this._download(this.url, this.dest, { mode: '0755', proxy: this.proxy }) - .once('close', function () { - return self._test(cmd, cb); - }); -}; - -/** - * Download source and build a binary - * - * @param {Function} cb - * @api public - */ - -BinWrapper.prototype.build = function (cb) { - var self = this; - var tmpDir = os.tmpdir ? os.tmpdir() : os.tmpDir(); - var tmp = path.join(tmpDir, this.name); - var get = this._download(this.src, tmp, { extract: true, strip: '1', proxy: this.proxy }); - - if (!cb || !isFunction(cb)) { - cb = function () {}; - } - - if (!isbin('make')) { - throw new Error('failed to find make'); - } - - get.once('close', function () { - exec(self.buildScript, { cwd: tmp }, function (err) { - if (err) { - return cb(err); - } - - return cb(); - }); - }); -}; - -/** - * Download a string or an array of files - * - * @param {String|Array} src - * @param {String} dest - * @param {Object} opts - * @api private - */ - -BinWrapper.prototype._download = function (src, dest, opts) { - var get = download(src, dest, opts); - - get.on('response', function (res) { - var len = parseInt(res.headers['content-length'], 10); - var bar = new ProgressBar(' ' + path.basename(src) + ': downloading [:bar] :percent :etas', { - complete: '=', - incomplete: ' ', - width: 20, - total: len - }); - - res.on('data', function (data) { - bar.tick(data.length); - }); - - res.on('end', function () { - console.log('\n'); - }); - }); - - return get; -}; - -/** - * If a binary exists, get its path - * - * @api private - */ - -BinWrapper.prototype._path = function () { - var self = this; - - if (fs.existsSync(path.join(this.dest, this.bin))) { - return path.join(self.dest, self.bin); - } - - if (isbin(this.bin)) { - if (which.sync(self.bin).indexOf('node_modules/.bin') === -1) { - return which.sync(self.bin); - } - } - - return false; -}; - -/** - * Test if a binary is working by checking its exit code - * - * @param {Array} cmd - * @param {Function} cb - * @api private - */ - -BinWrapper.prototype._test = function (cmd, cb) { - var working; - var bin = spawn(this.path, cmd); - - bin.on('error', function () { - working = false; - return cb(working); - }); - - bin.on('exit', function (code) { - working = code === 0; - return cb(working); - }); -}; - -/** - * Parse options - * - * @param {Object} opts - * @api private - */ - -BinWrapper.prototype._parse = function (opts) { - opts.platform = opts.platform || {}; - opts.arch = opts.arch || {}; - - var platform = process.platform; - var arch = process.arch === 'x64' ? 'x64' : process.arch === 'arm' ? 'arm' : 'x86'; - var required = [ - 'bin', - 'name', - 'path', - 'url' - ]; - - if (hasOwn(opts.platform, [platform])) { - opts = mixIn(opts, opts.platform[platform]); - } - - if (hasOwn(opts.arch, [arch])) { - opts = mixIn(opts, opts.arch[arch]); - } - - required.forEach(function (val) { - if (!hasOwn(opts, val)) { - throw new Error(val + ' option is required'); - } - }); - - delete opts.platform; - delete opts.arch; - - return opts; -}; - -/** - * Module exports - */ - -module.exports = BinWrapper; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/.bin/which b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/.bin/which deleted file mode 120000 index f62471c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/.bin/which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/which \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/README.md deleted file mode 100644 index f57b2f41..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# download [![Build Status](https://secure.travis-ci.org/kevva/download.png?branch=master)](http://travis-ci.org/kevva/download) - -Download and extract files effortlessly in Node.js. - -## Getting started - -Install with [npm](https://npmjs.org/package/download): `npm install download` - -## Examples - -If you're fetching an archive you can set `extract: true` in options and -it'll extract it for you. - -```js -var download = require('download'); - -// download and extract `foo.tar.gz` into `bar/` -download('foo.tar.gz', 'bar', { extract: true }); - -// download and save `foo.exe` into `bar/foo.exe` with mode `0755` -download('foo.exe', 'bar', { mode: '0755' }); - -// download and save `foo.zip` into `bar/foobar.zip` -download({ url: 'foo.zip', name: 'foobar.zip' }, 'bar'); - -// download and save an array of files in `bar/` -var files = ['foo.jpg', 'bar.jpg', 'cat.jpg']; -download(files, 'bar'); - -// download, save and rename an array of files in `bar/` -var files = [{ - url: 'foo.jpg', - name: 'foobar.jpg' -}, { - url: 'cat.jpg', - name: 'dog.jpg' -}]; -download(files, 'bar'); -``` - -## API - -### download(url, dest, opts) - -Download a file or an array of files to a given destination. Returns an EventEmitter -that emits the following possible events: - -* `response` — Relayed when the underlying `http.ClientRequest` emits the same -event. Listeners called with a `http.IncomingMessage` instance. -* `data` — Relayed when the underlying `http.IncomingMessage` emits the same -event. Listeners called with a `Buffer` instance. -* `error` — Relayed when the underlying `http.ClientRequest` emits the same event -or when the response status code is not in the 200s. Listeners called with an -`Error` instance (in the first case) or the response status code. -* `close` — Relayed when the underlying `stream.Duplex` emits the same event. - -## Options - -You can define options accepted by the [request](https://github.com/mikeal/request/) module besides from the options below. - -### extract - -Type: `Boolean` -Default: `false` - -If set to `true`, try extracting the file using [decompress](https://github.com/kevva/decompress/). - -### mode - -Type: `String` -Default: `undefined` - -Set mode on the downloaded files. - -### strip - -Type: `Number` -Default: `0` - -Equivalent to `--strip-components` for tar. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/download.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/download.js deleted file mode 100644 index 4b9c05e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/download.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict'; - -var decompress = require('decompress'); -var eachAsync = require('each-async'); -var fs = require('fs'); -var mkdir = require('mkdirp'); -var path = require('path'); -var request = require('request'); -var through = require('through2'); - -/** - * Download a file to a given destination - * - * Options: - * - * - `extract` Try extracting the file - * - `mode` Set mode on the downloaded files - * - `strip` Equivalent to --strip-components for tar - * - * @param {String|Array|Object} url - * @param {String} dest - * @param {Object} opts - * @api public - */ - -module.exports = function (url, dest, opts) { - url = Array.isArray(url) ? url : [url]; - opts = opts || {}; - - var stream = through(); - var strip = opts.strip || '0'; - - eachAsync(url, function (url, index, done) { - opts.url = url; - var target = path.join(dest, path.basename(url)); - - if (url.url && url.name) { - target = path.join(dest, url.name); - opts.url = url.url; - } - - var req = request.get(opts) - .on('response', function (res) { - stream.emit('response', res); - }) - .on('data', function (data) { - stream.emit('data', data); - }) - .on('error', function (err) { - stream.emit('error', err); - }); - - req.on('response', function (res) { - var mime = res.headers['content-type']; - var status = res.statusCode; - var end; - - if (status < 200 || status >= 300) { - stream.emit('error', status); - return; - } - - if (opts.extract && decompress.canExtract(url, mime)) { - var ext; - - if (decompress.canExtract(url)) { - ext = url; - } else { - ext = mime; - } - - end = decompress.extract({ - ext: ext, - path: dest, - strip: strip - }); - } else { - if (!fs.existsSync(dest)) { - mkdir.sync(dest); - } - - end = fs.createWriteStream(target); - } - - req.pipe(end); - - end.on('close', function () { - if (!opts.extract && opts.mode) { - fs.chmodSync(target, opts.mode); - } - - done(); - }); - }); - }, function () { - stream.emit('close'); - }); - - return stream; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md deleted file mode 100644 index 4226d3f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# decompress [![Build Status](https://secure.travis-ci.org/kevva/decompress.png?branch=master)](http://travis-ci.org/kevva/decompress) - -Easily extract `.zip`, `.tar` and `.tar.gz` archives. Based on the extract -utility in [Bower](https://github.com/bower/bower). - -## Getting started - -Install with [npm](https://npmjs.org/package/decompress): `npm install decompress` - -## Examples - -You'll only need to pass a type into `ext` and it'll figure the rest out for -you. - -```js -var decompress = require('decompress'); -var fs = require('fs'); - -var src = fs.createReadStream('foo.tar.gz'); -var dest = decompress.extract({ ext: '.tar.gz' }); - -src.pipe(dest); -``` - -## API - -### .extract(opts) - -Extract an archive using the `ext` option to determine which extractor to use. -If no `path` is specified it'll extract it to your current location. - -### .canExtract(src, mime) - -Determine if a file can be extracted or not by checking the file extension -and/or the MIME type. - -```js -decompress.canExtract('foo.zip'); -// => true - -decompress.canExtract('application/zip'); -// => true -``` - -## Options - -### `ext` - -Type: `String` -Default: `''` - -String that can be a file name, URL, MIME type etc. - -### `path` - -Type: `String` -Default: `process.cwd()` - -Path to extract the archive to. If no `path` is defined it'll extract it to your -current location. - -### strip - -Type: `Number` -Default: `0` - -Equivalent to `--strip-components` for tar. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js deleted file mode 100644 index 3b477c1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -var AdmZip = require('adm-zip'); -var endsWith = require('mout/string/endsWith'); -var find = require('mout/array/find'); -var fs = require('fs'); -var mkdir = require('mkdirp'); -var path = require('path'); -var pipeline = require('stream-combiner'); -var rm = require('rimraf'); -var tar = require('tar'); -var tempfile = require('tempfile'); -var zlib = require('zlib'); - -/** - * Initialize Decompress with options - * - * Options: - * - * - `ext` String with file name, MIME type, etc - * - `path` Path to extract to - * - * @param {Object} opts - * @api private - */ - -function Decompress(opts) { - opts = opts || {}; - opts.strip = opts.strip || 0; - this.opts = opts; - this.path = opts.path || process.cwd(); - this.ext = opts.ext || ''; - this.strip = opts.strip >= 0 ? opts.strip : 0; - this.extractors = { - '.zip': this._extractZip, - '.tar': this._extractTar, - '.tar.gz': this._extractTarGz, - '.tgz': this._extractTarGz, - 'application/zip': this._extractZip, - 'application/x-tar': this._extractTar, - 'application/x-tgz': this._extractTarGz - }; - this.extractorTypes = Object.keys(this.extractors); - this.extractor = this._getExtractor(this.ext); -} - -/** - * Extract an archive - * - * @api public - */ - -Decompress.prototype.extract = function () { - var self = this; - var stream = this.extractor(); - - if (!fs.existsSync(this.path)) { - mkdir.sync(self.path); - } - - return stream; -}; - -/** - * Check if a file can be extracted - * - * @param {String} src - * @param {String} mime - * @api public - */ - -Decompress.prototype.canExtract = function (src, mime) { - if (this._getExtractor(src)) { - return true; - } - - if (mime && this._getExtractor(mime)) { - return true; - } - - return false; -}; - -/** - * Get the extractor for a desired file - * - * @param {String} src - * @api private - */ - -Decompress.prototype._getExtractor = function (src) { - src = src.toLowerCase(); - - var ext = find(this.extractorTypes, function (ext) { - return endsWith(src, ext); - }); - - return ext ? this.extractors[ext] : null; -}; - -/** - * Extract a zip file - * - * @api private - */ - -Decompress.prototype._extractZip = function () { - var self = this; - var tmp = tempfile('.zip'); - - var stream = fs.createWriteStream(tmp).on('close', function () { - var zip = new AdmZip(tmp); - var zipEntries = zip.getEntries(); - - zipEntries.forEach(function (entry) { - if (!entry.isDirectory) { - var ef = path.basename(entry.entryName.toString()); - var ed = path.dirname(entry.entryName.toString().split('/').slice(self.strip).join('/')); - var d = path.join(self.path, ed, ef); - - mkdir.sync(path.dirname(d)); - fs.writeFileSync(d, entry.getData()); - } - }); - }); - - return stream.on('close', function () { - rm.sync(tmp); - }); -}; - -/** - * Extract a tar file - * - * @api private - */ - -Decompress.prototype._extractTar = function () { - var stream = tar.Extract(this.opts); - return stream; -}; - -/** - * Extract a tar.gz file - * - * @api private - */ - -Decompress.prototype._extractTarGz = function () { - var stream = zlib.Unzip(); - var dest = tar.Extract(this.opts); - - return pipeline(stream, dest); -}; - -/** - * Module exports - */ - -module.exports.extract = function (opts) { - var decompress = new Decompress(opts); - return decompress.extract(); -}; - -module.exports.canExtract = function (src, mime) { - var decompress = new Decompress(); - return decompress.canExtract(src, mime); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml deleted file mode 100644 index 0d5175ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ -<component name="DependencyValidationManager"> - <state> - <option name="SKIP_IMPORT_STATEMENTS" value="false" /> - </state> -</component> \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt deleted file mode 100644 index 14c3ee5c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2012 Another-D-Mention Software and other contributors, -http://www.another-d-mention.ro/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md deleted file mode 100644 index 030fab8a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# ADM-ZIP for NodeJS - -ADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). - -# Installation - -With [npm](http://npmjs.org) do: - - $ npm install adm-zip - -## What is it good for? -The library allows you to: - -* decompress zip files directly to disk or in memory buffers -* compress files and store them to disk in .zip format or in compressed buffers -* update content of/add new/delete files from an existing .zip - -# Dependencies -There are no other nodeJS libraries that ADM-ZIP is dependent of - -# Examples - -## Basic usage -```javascript - - var AdmZip = require('adm-zip'); - - // reading archives - var zip = new AdmZip("./my_file.zip"); - var zipEntries = zip.getEntries(); // an array of ZipEntry records - - zipEntries.forEach(function(zipEntry) { - console.log(zipEntry.toString()); // outputs zip entries information - if (zipEntry.entryName == "my_file.txt") { - console.log(zipEntry.data.toString('utf8')); - } - }); - // outputs the content of some_folder/my_file.txt - console.log(zip.readAsText("some_folder/my_file.txt")); - // extracts the specified file to the specified location - zip.extractEntryTo(/*entry name*/"some_folder/my_file.txt", /*target path*/"/home/me/tempfolder", /*maintainEntryPath*/false, /*overwrite*/true); - // extracts everything - zip.extractAllTo(/*target path*/"/home/me/zipcontent/", /*overwrite*/true); - - - // creating archives - var zip = new AdmZip(); - - // add file directly - zip.addFile("test.txt", new Buffer("inner content of the file"), "entry comment goes here"); - // add local file - zip.addLocalFile("/home/me/some_picture.png"); - // get everything as a buffer - var willSendthis = zip.toBuffer(); - // or write everything to disk - zip.writeZip(/*target file name*/"/home/me/files.zip"); - - - // ... more examples in the wiki -``` - -For more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki). - -[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js deleted file mode 100644 index 46595fc5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js +++ /dev/null @@ -1,404 +0,0 @@ -var fs = require("fs"), - pth = require("path"); - -fs.existsSync = fs.existsSync || pth.existsSync; - -var ZipEntry = require("./zipEntry"), - ZipFile = require("./zipFile"), - Utils = require("./util"); - -module.exports = function(/*String*/input) { - var _zip = undefined, - _filename = ""; - - if (input && typeof input === "string") { // load zip file - if (fs.existsSync(input)) { - _filename = input; - _zip = new ZipFile(input, Utils.Constants.FILE); - } else { - throw Utils.Errors.INVALID_FILENAME; - } - } else if(input && Buffer.isBuffer(input)) { // load buffer - _zip = new ZipFile(input, Utils.Constants.BUFFER); - } else { // create new zip file - _zip = new ZipFile(null, Utils.Constants.NONE); - } - - function getEntry(/*Object*/entry) { - if (entry && _zip) { - var item; - // If entry was given as a file name - if (typeof entry === "string") - item = _zip.getEntry(entry); - // if entry was given as a ZipEntry object - if (typeof entry === "object" && entry.entryName != undefined && entry.header != undefined) - item = _zip.getEntry(entry.entryName); - - if (item) { - return item; - } - } - return null; - } - - return { - /** - * Extracts the given entry from the archive and returns the content as a Buffer object - * @param entry ZipEntry object or String with the full path of the entry - * - * @return Buffer or Null in case of error - */ - readFile : function(/*Object*/entry) { - var item = getEntry(entry); - return item && item.getData() || null; - }, - - /** - * Asynchronous readFile - * @param entry ZipEntry object or String with the full path of the entry - * @param callback - * - * @return Buffer or Null in case of error - */ - readFileAsync : function(/*Object*/entry, /*Function*/callback) { - var item = getEntry(entry); - if (item) { - item.getDataAsync(callback); - } else { - callback(null,"getEntry failed for:" + entry) - } - }, - - /** - * Extracts the given entry from the archive and returns the content as plain text in the given encoding - * @param entry ZipEntry object or String with the full path of the entry - * @param encoding Optional. If no encoding is specified utf8 is used - * - * @return String - */ - readAsText : function(/*Object*/entry, /*String - Optional*/encoding) { - var item = getEntry(entry); - if (item) { - var data = item.getData(); - if (data && data.length) { - return data.toString(encoding || "utf8"); - } - } - return ""; - }, - - /** - * Asynchronous readAsText - * @param entry ZipEntry object or String with the full path of the entry - * @param callback - * @param encoding Optional. If no encoding is specified utf8 is used - * - * @return String - */ - readAsTextAsync : function(/*Object*/entry, /*Function*/callback, /*String - Optional*/encoding) { - var item = getEntry(entry); - if (item) { - item.getDataAsync(function(data) { - if (data && data.length) { - callback(data.toString(encoding || "utf8")); - } else { - callback(""); - } - }) - } else { - callback(""); - } - }, - - /** - * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory - * - * @param entry - */ - deleteFile : function(/*Object*/entry) { // @TODO: test deleteFile - var item = getEntry(entry); - if (item) { - _zip.deleteEntry(item.entryName); - } - }, - - /** - * Adds a comment to the zip. The zip must be rewritten after adding the comment. - * - * @param comment - */ - addZipComment : function(/*String*/comment) { // @TODO: test addZipComment - _zip.comment = comment; - }, - - /** - * Returns the zip comment - * - * @return String - */ - getZipComment : function() { - return _zip.comment || ''; - }, - - /** - * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment - * The comment cannot exceed 65535 characters in length - * - * @param entry - * @param comment - */ - addZipEntryComment : function(/*Object*/entry,/*String*/comment) { - var item = getEntry(entry); - if (item) { - item.comment = comment; - } - }, - - /** - * Returns the comment of the specified entry - * - * @param entry - * @return String - */ - getZipEntryComment : function(/*Object*/entry) { - var item = getEntry(entry); - if (item) { - return item.comment || ''; - } - return '' - }, - - /** - * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content - * - * @param entry - * @param content - */ - updateFile : function(/*Object*/entry, /*Buffer*/content) { - var item = getEntry(entry); - if (item) { - item.setData(content); - } - }, - - /** - * Adds a file from the disk to the archive - * - * @param localPath - */ - addLocalFile : function(/*String*/localPath, /*String*/zipPath) { - if (fs.existsSync(localPath)) { - if(zipPath){ - zipPath=zipPath.split("\\").join("/"); - if(zipPath.charAt(zipPath.length - 1) != "/"){ - zipPath += "/"; - } - }else{ - zipPath=""; - } - var p = localPath.split("\\").join("/").split("/").pop(); - - this.addFile(zipPath+p, fs.readFileSync(localPath), "", 0) - } else { - throw Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath); - } - }, - - /** - * Adds a local directory and all its nested files and directories to the archive - * - * @param localPath - */ - addLocalFolder : function(/*String*/localPath, /*String*/zipPath) { - if(zipPath){ - zipPath=zipPath.split("\\").join("/"); - if(zipPath.charAt(zipPath.length - 1) != "/"){ - zipPath += "/"; - } - }else{ - zipPath=""; - } - localPath = localPath.split("\\").join("/"); //windows fix - if (localPath.charAt(localPath.length - 1) != "/") - localPath += "/"; - - if (fs.existsSync(localPath)) { - - var items = Utils.findFiles(localPath), - self = this; - - if (items.length) { - items.forEach(function(path) { - var p = path.split("\\").join("/").replace(localPath, ""); //windows fix - if (p.charAt(p.length - 1) !== "/") { - self.addFile(zipPath+p, fs.readFileSync(path), "", 0) - } else { - self.addFile(zipPath+p, new Buffer(0), "", 0) - } - }); - } - } else { - throw Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath); - } - }, - - /** - * Allows you to create a entry (file or directory) in the zip file. - * If you want to create a directory the entryName must end in / and a null buffer should be provided. - * Comment and attributes are optional - * - * @param entryName - * @param content - * @param comment - * @param attr - */ - addFile : function(/*String*/entryName, /*Buffer*/content, /*String*/comment, /*Number*/attr) { - var entry = new ZipEntry(); - entry.entryName = entryName; - entry.comment = comment || ""; - entry.attr = attr || 438; //0666; - if (entry.isDirectory && content.length) { - // throw Utils.Errors.DIRECTORY_CONTENT_ERROR; - } - entry.setData(content); - _zip.setEntry(entry); - }, - - /** - * Returns an array of ZipEntry objects representing the files and folders inside the archive - * - * @return Array - */ - getEntries : function() { - if (_zip) { - return _zip.entries; - } else { - return []; - } - }, - - /** - * Returns a ZipEntry object representing the file or folder specified by ``name``. - * - * @param name - * @return ZipEntry - */ - getEntry : function(/*String*/name) { - return getEntry(name); - }, - - /** - * Extracts the given entry to the given targetPath - * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted - * - * @param entry ZipEntry object or String with the full path of the entry - * @param targetPath Target folder where to write the file - * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder - * will be created in targetPath as well. Default is TRUE - * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true. - * Default is FALSE - * - * @return Boolean - */ - extractEntryTo : function(/*Object*/entry, /*String*/targetPath, /*Boolean*/maintainEntryPath, /*Boolean*/overwrite) { - overwrite = overwrite || false; - maintainEntryPath = typeof maintainEntryPath == "undefined" ? true : maintainEntryPath; - - var item = getEntry(entry); - if (!item) { - throw Utils.Errors.NO_ENTRY; - } - - var target = pth.resolve(targetPath, maintainEntryPath ? item.entryName : pth.basename(item.entryName)); - - if (item.isDirectory) { - target = pth.resolve(target, ".."); - var children = _zip.getEntryChildren(item); - children.forEach(function(child) { - if (child.isDirectory) return; - var content = child.getData(); - if (!content) { - throw Utils.Errors.CANT_EXTRACT_FILE; - } - Utils.writeFileTo(pth.resolve(targetPath, maintainEntryPath ? child.entryName : child.entryName.substr(item.entryName.length)), content, overwrite); - }); - return true; - } - - var content = item.getData(); - if (!content) throw Utils.Errors.CANT_EXTRACT_FILE; - - if (fs.existsSync(targetPath) && !overwrite) { - throw Utils.Errors.CANT_OVERRIDE; - } - Utils.writeFileTo(target, content, overwrite); - - return true; - }, - - /** - * Extracts the entire archive to the given location - * - * @param targetPath Target location - * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true. - * Default is FALSE - */ - extractAllTo : function(/*String*/targetPath, /*Boolean*/overwrite) { - overwrite = overwrite || false; - if (!_zip) { - throw Utils.Errors.NO_ZIP; - } - - _zip.entries.forEach(function(entry) { - if (entry.isDirectory) { - Utils.makeDir(pth.resolve(targetPath, entry.entryName.toString())); - return; - } - var content = entry.getData(); - if (!content) { - throw Utils.Errors.CANT_EXTRACT_FILE + "2"; - } - Utils.writeFileTo(pth.resolve(targetPath, entry.entryName.toString()), content, overwrite); - }) - }, - - /** - * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip - * - * @param targetFileName - * @param callback - */ - writeZip : function(/*String*/targetFileName, /*Function*/callback) { - if (arguments.length == 1) { - if (typeof targetFileName == "function") { - callback = targetFileName; - targetFileName = ""; - } - } - - if (!targetFileName && _filename) { - targetFileName = _filename; - } - if (!targetFileName) return; - - var zipData = _zip.compressToBuffer(); - if (zipData) { - Utils.writeFileTo(targetFileName, zipData, true); - } - }, - - /** - * Returns the content of the entire zip file as a Buffer object - * - * @return Buffer - */ - toBuffer : function(/*Function*/onSuccess,/*Function*/onFail,/*Function*/onItemStart,/*Function*/onItemEnd) { - this.valueOf = 2; - if (typeof onSuccess == "function") { - _zip.toAsyncBuffer(onSuccess,onFail,onItemStart,onItemEnd); - return null; - } - return _zip.compressToBuffer() - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js deleted file mode 100644 index a29c70f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js +++ /dev/null @@ -1,261 +0,0 @@ -var Utils = require("../util"), - Constants = Utils.Constants; - -/* The central directory file header */ -module.exports = function () { - var _verMade = 0x0A, - _version = 0x0A, - _flags = 0, - _method = 0, - _time = 0, - _crc = 0, - _compressedSize = 0, - _size = 0, - _fnameLen = 0, - _extraLen = 0, - - _comLen = 0, - _diskStart = 0, - _inattr = 0, - _attr = 0, - _offset = 0; - - var _dataHeader = {}; - - function setTime(val) { - var val = new Date(val); - _time = (val.getFullYear() - 1980 & 0x7f) << 25 // b09-16 years from 1980 - | (val.getMonth() + 1) << 21 // b05-08 month - | val.getDay() << 16 // b00-04 hour - - // 2 bytes time - | val.getHours() << 11 // b11-15 hour - | val.getMinutes() << 5 // b05-10 minute - | val.getSeconds() >> 1; // b00-04 seconds divided by 2 - } - - setTime(+new Date()); - - return { - get made () { return _verMade; }, - set made (val) { _verMade = val; }, - - get version () { return _version; }, - set version (val) { _version = val }, - - get flags () { return _flags }, - set flags (val) { _flags = val; }, - - get method () { return _method; }, - set method (val) { _method = val; }, - - get time () { return new Date( - ((_time >> 25) & 0x7f) + 1980, - ((_time >> 21) & 0x0f) - 1, - (_time >> 16) & 0x1f, - (_time >> 11) & 0x1f, - (_time >> 5) & 0x3f, - (_time & 0x1f) << 1 - ); - }, - set time (val) { - setTime(val); - }, - - get crc () { return _crc; }, - set crc (val) { _crc = val; }, - - get compressedSize () { return _compressedSize; }, - set compressedSize (val) { _compressedSize = val; }, - - get size () { return _size; }, - set size (val) { _size = val; }, - - get fileNameLength () { return _fnameLen; }, - set fileNameLength (val) { _fnameLen = val; }, - - get extraLength () { return _extraLen }, - set extraLength (val) { _extraLen = val; }, - - get commentLength () { return _comLen }, - set commentLength (val) { _comLen = val }, - - get diskNumStart () { return _diskStart }, - set diskNumStart (val) { _diskStart = val }, - - get inAttr () { return _inattr }, - set inAttr (val) { _inattr = val }, - - get attr () { return _attr }, - set attr (val) { _attr = val }, - - get offset () { return _offset }, - set offset (val) { _offset = val }, - - get encripted () { return (_flags & 1) == 1 }, - - get entryHeaderSize () { - return Constants.CENHDR + _fnameLen + _extraLen + _comLen; - }, - - get realDataOffset () { - return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen; - }, - - get dataHeader () { - return _dataHeader; - }, - - loadDataHeaderFromBinary : function(/*Buffer*/input) { - var data = input.slice(_offset, _offset + Constants.LOCHDR); - // 30 bytes and should start with "PK\003\004" - if (data.readUInt32LE(0) != Constants.LOCSIG) { - throw Utils.Errors.INVALID_LOC; - } - _dataHeader = { - // version needed to extract - version : data.readUInt16LE(Constants.LOCVER), - // general purpose bit flag - flags : data.readUInt16LE(Constants.LOCFLG), - // compression method - method : data.readUInt16LE(Constants.LOCHOW), - // modification time (2 bytes time, 2 bytes date) - time : data.readUInt32LE(Constants.LOCTIM), - // uncompressed file crc-32 value - crc : data.readUInt32LE(Constants.LOCCRC), - // compressed size - compressedSize : data.readUInt32LE(Constants.LOCSIZ), - // uncompressed size - size : data.readUInt32LE(Constants.LOCLEN), - // filename length - fnameLen : data.readUInt16LE(Constants.LOCNAM), - // extra field length - extraLen : data.readUInt16LE(Constants.LOCEXT) - } - }, - - loadFromBinary : function(/*Buffer*/data) { - // data should be 46 bytes and start with "PK 01 02" - if (data.length != Constants.CENHDR || data.readUInt32LE(0) != Constants.CENSIG) { - throw Utils.Errors.INVALID_CEN; - } - // version made by - _verMade = data.readUInt16LE(Constants.CENVEM); - // version needed to extract - _version = data.readUInt16LE(Constants.CENVER); - // encrypt, decrypt flags - _flags = data.readUInt16LE(Constants.CENFLG); - // compression method - _method = data.readUInt16LE(Constants.CENHOW); - // modification time (2 bytes time, 2 bytes date) - _time = data.readUInt32LE(Constants.CENTIM); - // uncompressed file crc-32 value - _crc = data.readUInt32LE(Constants.CENCRC); - // compressed size - _compressedSize = data.readUInt32LE(Constants.CENSIZ); - // uncompressed size - _size = data.readUInt32LE(Constants.CENLEN); - // filename length - _fnameLen = data.readUInt16LE(Constants.CENNAM); - // extra field length - _extraLen = data.readUInt16LE(Constants.CENEXT); - // file comment length - _comLen = data.readUInt16LE(Constants.CENCOM); - // volume number start - _diskStart = data.readUInt16LE(Constants.CENDSK); - // internal file attributes - _inattr = data.readUInt16LE(Constants.CENATT); - // external file attributes - _attr = data.readUInt32LE(Constants.CENATX); - // LOC header offset - _offset = data.readUInt32LE(Constants.CENOFF); - }, - - dataHeaderToBinary : function() { - // LOC header size (30 bytes) - var data = new Buffer(Constants.LOCHDR); - // "PK\003\004" - data.writeUInt32LE(Constants.LOCSIG, 0); - // version needed to extract - data.writeUInt16LE(_version, Constants.LOCVER); - // general purpose bit flag - data.writeUInt16LE(_flags, Constants.LOCFLG); - // compression method - data.writeUInt16LE(_method, Constants.LOCHOW); - // modification time (2 bytes time, 2 bytes date) - data.writeUInt32LE(_time, Constants.LOCTIM); - // uncompressed file crc-32 value - data.writeUInt32LE(_crc, Constants.LOCCRC); - // compressed size - data.writeUInt32LE(_compressedSize, Constants.LOCSIZ); - // uncompressed size - data.writeUInt32LE(_size, Constants.LOCLEN); - // filename length - data.writeUInt16LE(_fnameLen, Constants.LOCNAM); - // extra field length - data.writeUInt16LE(_extraLen, Constants.LOCEXT); - return data; - }, - - entryHeaderToBinary : function() { - // CEN header size (46 bytes) - var data = new Buffer(Constants.CENHDR + _fnameLen + _extraLen + _comLen); - // "PK\001\002" - data.writeUInt32LE(Constants.CENSIG, 0); - // version made by - data.writeUInt16LE(_verMade, Constants.CENVEM); - // version needed to extract - data.writeUInt16LE(_version, Constants.CENVER); - // encrypt, decrypt flags - data.writeUInt16LE(_flags, Constants.CENFLG); - // compression method - data.writeUInt16LE(_method, Constants.CENHOW); - // modification time (2 bytes time, 2 bytes date) - data.writeUInt32LE(_time, Constants.CENTIM); - // uncompressed file crc-32 value - data.writeInt32LE(_crc, Constants.CENCRC, true); - // compressed size - data.writeUInt32LE(_compressedSize, Constants.CENSIZ); - // uncompressed size - data.writeUInt32LE(_size, Constants.CENLEN); - // filename length - data.writeUInt16LE(_fnameLen, Constants.CENNAM); - // extra field length - data.writeUInt16LE(_extraLen, Constants.CENEXT); - // file comment length - data.writeUInt16LE(_comLen, Constants.CENCOM); - // volume number start - data.writeUInt16LE(_diskStart, Constants.CENDSK); - // internal file attributes - data.writeUInt16LE(_inattr, Constants.CENATT); - // external file attributes - data.writeUInt32LE(_attr, Constants.CENATX); - // LOC header offset - data.writeUInt32LE(_offset, Constants.CENOFF); - // fill all with - data.fill(0x00, Constants.CENHDR); - return data; - }, - - toString : function() { - return '{\n' + - '\t"made" : ' + _verMade + ",\n" + - '\t"version" : ' + _version + ",\n" + - '\t"flags" : ' + _flags + ",\n" + - '\t"method" : ' + Utils.methodToString(_method) + ",\n" + - '\t"time" : ' + _time + ",\n" + - '\t"crc" : 0x' + _crc.toString(16).toUpperCase() + ",\n" + - '\t"compressedSize" : ' + _compressedSize + " bytes,\n" + - '\t"size" : ' + _size + " bytes,\n" + - '\t"fileNameLength" : ' + _fnameLen + ",\n" + - '\t"extraLength" : ' + _extraLen + " bytes,\n" + - '\t"commentLength" : ' + _comLen + " bytes,\n" + - '\t"diskNumStart" : ' + _diskStart + ",\n" + - '\t"inAttr" : ' + _inattr + ",\n" + - '\t"attr" : ' + _attr + ",\n" + - '\t"offset" : ' + _offset + ",\n" + - '\t"entryHeaderSize" : ' + (Constants.CENHDR + _fnameLen + _extraLen + _comLen) + " bytes\n" + - '}'; - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js deleted file mode 100644 index b8c67b96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.EntryHeader = require("./entryHeader"); -exports.MainHeader = require("./mainHeader"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js deleted file mode 100644 index 002bc8a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js +++ /dev/null @@ -1,80 +0,0 @@ -var Utils = require("../util"), - Constants = Utils.Constants; - -/* The entries in the end of central directory */ -module.exports = function () { - var _volumeEntries = 0, - _totalEntries = 0, - _size = 0, - _offset = 0, - _commentLength = 0; - - return { - get diskEntries () { return _volumeEntries }, - set diskEntries (/*Number*/val) { _volumeEntries = _totalEntries = val; }, - - get totalEntries () { return _totalEntries }, - set totalEntries (/*Number*/val) { _totalEntries = _volumeEntries = val; }, - - get size () { return _size }, - set size (/*Number*/val) { _size = val; }, - - get offset () { return _offset }, - set offset (/*Number*/val) { _offset = val; }, - - get commentLength () { return _commentLength }, - set commentLength (/*Number*/val) { _commentLength = val; }, - - get mainHeaderSize () { - return Constants.ENDHDR + _commentLength; - }, - - loadFromBinary : function(/*Buffer*/data) { - // data should be 22 bytes and start with "PK 05 06" - if (data.length != Constants.ENDHDR || data.readUInt32LE(0) != Constants.ENDSIG) - throw Utils.Errors.INVALID_END; - - // number of entries on this volume - _volumeEntries = data.readUInt16LE(Constants.ENDSUB); - // total number of entries - _totalEntries = data.readUInt16LE(Constants.ENDTOT); - // central directory size in bytes - _size = data.readUInt32LE(Constants.ENDSIZ); - // offset of first CEN header - _offset = data.readUInt32LE(Constants.ENDOFF); - // zip file comment length - _commentLength = data.readUInt16LE(Constants.ENDCOM); - }, - - toBinary : function() { - var b = new Buffer(Constants.ENDHDR + _commentLength); - // "PK 05 06" signature - b.writeUInt32LE(Constants.ENDSIG, 0); - b.writeUInt32LE(0, 4); - // number of entries on this volume - b.writeUInt16LE(_volumeEntries, Constants.ENDSUB); - // total number of entries - b.writeUInt16LE(_totalEntries, Constants.ENDTOT); - // central directory size in bytes - b.writeUInt32LE(_size, Constants.ENDSIZ); - // offset of first CEN header - b.writeUInt32LE(_offset, Constants.ENDOFF); - // zip file comment length - b.writeUInt16LE(_commentLength, Constants.ENDCOM); - // fill comment memory with spaces so no garbage is left there - b.fill(" ", Constants.ENDHDR); - - return b; - }, - - toString : function() { - return '{\n' + - '\t"diskEntries" : ' + _volumeEntries + ",\n" + - '\t"totalEntries" : ' + _totalEntries + ",\n" + - '\t"size" : ' + _size + " bytes,\n" + - '\t"offset" : 0x' + _offset.toString(16).toUpperCase() + ",\n" + - '\t"commentLength" : 0x' + _commentLength + "\n" + - '}'; - } - } -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js deleted file mode 100644 index 32679434..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js +++ /dev/null @@ -1,1578 +0,0 @@ -/* - * $Id: rawdeflate.js,v 0.5 2013/04/09 14:25:38 dankogai Exp dankogai $ - * - * GNU General Public License, version 2 (GPL-2.0) - * http://opensource.org/licenses/GPL-2.0 - * Original: - * http://www.onicos.com/staff/iz/amuse/javascript/expert/deflate.txt - */ -function JSDeflater(/*inbuff*/inbuf) { - - /* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp> - * Version: 1.0.1 - * LastModified: Dec 25 1999 - */ - - var WSIZE = 32768, // Sliding Window size - zip_STORED_BLOCK = 0, - zip_STATIC_TREES = 1, - zip_DYN_TREES = 2, - zip_DEFAULT_LEVEL = 6, - zip_FULL_SEARCH = true, - zip_INBUFSIZ = 32768, // Input buffer size - zip_INBUF_EXTRA = 64, // Extra buffer - zip_OUTBUFSIZ = 1024 * 8, - zip_window_size = 2 * WSIZE, - MIN_MATCH = 3, - MAX_MATCH = 258, - zip_BITS = 16, - LIT_BUFSIZE = 0x2000, - zip_HASH_BITS = 13, - zip_DIST_BUFSIZE = LIT_BUFSIZE, - zip_HASH_SIZE = 1 << zip_HASH_BITS, - zip_HASH_MASK = zip_HASH_SIZE - 1, - zip_WMASK = WSIZE - 1, - zip_NIL = 0, // Tail of hash chains - zip_TOO_FAR = 4096, - zip_MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1, - zip_MAX_DIST = WSIZE - zip_MIN_LOOKAHEAD, - zip_SMALLEST = 1, - zip_MAX_BITS = 15, - zip_MAX_BL_BITS = 7, - zip_LENGTH_CODES = 29, - zip_LITERALS = 256, - zip_END_BLOCK = 256, - zip_L_CODES = zip_LITERALS + 1 + zip_LENGTH_CODES, - zip_D_CODES = 30, - zip_BL_CODES = 19, - zip_REP_3_6 = 16, - zip_REPZ_3_10 = 17, - zip_REPZ_11_138 = 18, - zip_HEAP_SIZE = 2 * zip_L_CODES + 1, - zip_H_SHIFT = parseInt((zip_HASH_BITS + MIN_MATCH - 1) / MIN_MATCH); - - var zip_free_queue, zip_qhead, zip_qtail, zip_initflag, zip_outbuf = null, zip_outcnt, zip_outoff, zip_complete, - zip_window, zip_d_buf, zip_l_buf, zip_prev, zip_bi_buf, zip_bi_valid, zip_block_start, zip_ins_h, zip_hash_head, - zip_prev_match, zip_match_available, zip_match_length, zip_prev_length, zip_strstart, zip_match_start, zip_eofile, - zip_lookahead, zip_max_chain_length, zip_max_lazy_match, zip_compr_level, zip_good_match, zip_nice_match, - zip_dyn_ltree, zip_dyn_dtree, zip_static_ltree, zip_static_dtree, zip_bl_tree, zip_l_desc, zip_d_desc, zip_bl_desc, - zip_bl_count, zip_heap, zip_heap_len, zip_heap_max, zip_depth, zip_length_code, zip_dist_code, zip_base_length, - zip_base_dist, zip_flag_buf, zip_last_lit, zip_last_dist, zip_last_flags, zip_flags, zip_flag_bit, zip_opt_len, - zip_static_len, zip_deflate_data, zip_deflate_pos; - - var zip_DeflateCT = function () { - this.fc = 0; // frequency count or bit string - this.dl = 0; // father node in Huffman tree or length of bit string - }; - - var zip_DeflateTreeDesc = function () { - this.dyn_tree = null; // the dynamic tree - this.static_tree = null; // corresponding static tree or NULL - this.extra_bits = null; // extra bits for each code or NULL - this.extra_base = 0; // base index for extra_bits - this.elems = 0; // max number of elements in the tree - this.max_length = 0; // max bit length for the codes - this.max_code = 0; // largest code with non zero frequency - }; - - /* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ - var zip_DeflateConfiguration = function (a, b, c, d) { - this.good_length = a; // reduce lazy search above this match length - this.max_lazy = b; // do not perform lazy search above this match length - this.nice_length = c; // quit search above this match length - this.max_chain = d; - }; - - var zip_DeflateBuffer = function () { - this.next = null; - this.len = 0; - this.ptr = new Array(zip_OUTBUFSIZ); - this.off = 0; - }; - - /* constant tables */ - var zip_extra_lbits = new Array( - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0); - var zip_extra_dbits = new Array( - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13); - var zip_extra_blbits = new Array( - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7); - var zip_bl_order = new Array( - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15); - var zip_configuration_table = new Array( - new zip_DeflateConfiguration(0, 0, 0, 0), - new zip_DeflateConfiguration(4, 4, 8, 4), - new zip_DeflateConfiguration(4, 5, 16, 8), - new zip_DeflateConfiguration(4, 6, 32, 32), - new zip_DeflateConfiguration(4, 4, 16, 16), - new zip_DeflateConfiguration(8, 16, 32, 32), - new zip_DeflateConfiguration(8, 16, 128, 128), - new zip_DeflateConfiguration(8, 32, 128, 256), - new zip_DeflateConfiguration(32, 128, 258, 1024), - new zip_DeflateConfiguration(32, 258, 258, 4096)); - - - /* routines (deflate) */ - - var zip_deflate_start = function (level) { - var i; - - if (!level) - level = zip_DEFAULT_LEVEL; - else if (level < 1) - level = 1; - else if (level > 9) - level = 9; - - zip_compr_level = level; - zip_initflag = false; - zip_eofile = false; - if (zip_outbuf != null) - return; - - zip_free_queue = zip_qhead = zip_qtail = null; - zip_outbuf = new Array(zip_OUTBUFSIZ); - zip_window = new Array(zip_window_size); - zip_d_buf = new Array(zip_DIST_BUFSIZE); - zip_l_buf = new Array(zip_INBUFSIZ + zip_INBUF_EXTRA); - zip_prev = new Array(1 << zip_BITS); - zip_dyn_ltree = new Array(zip_HEAP_SIZE); - for (i = 0; i < zip_HEAP_SIZE; i++) zip_dyn_ltree[i] = new zip_DeflateCT(); - zip_dyn_dtree = new Array(2 * zip_D_CODES + 1); - for (i = 0; i < 2 * zip_D_CODES + 1; i++) zip_dyn_dtree[i] = new zip_DeflateCT(); - zip_static_ltree = new Array(zip_L_CODES + 2); - for (i = 0; i < zip_L_CODES + 2; i++) zip_static_ltree[i] = new zip_DeflateCT(); - zip_static_dtree = new Array(zip_D_CODES); - for (i = 0; i < zip_D_CODES; i++) zip_static_dtree[i] = new zip_DeflateCT(); - zip_bl_tree = new Array(2 * zip_BL_CODES + 1); - for (i = 0; i < 2 * zip_BL_CODES + 1; i++) zip_bl_tree[i] = new zip_DeflateCT(); - zip_l_desc = new zip_DeflateTreeDesc(); - zip_d_desc = new zip_DeflateTreeDesc(); - zip_bl_desc = new zip_DeflateTreeDesc(); - zip_bl_count = new Array(zip_MAX_BITS + 1); - zip_heap = new Array(2 * zip_L_CODES + 1); - zip_depth = new Array(2 * zip_L_CODES + 1); - zip_length_code = new Array(MAX_MATCH - MIN_MATCH + 1); - zip_dist_code = new Array(512); - zip_base_length = new Array(zip_LENGTH_CODES); - zip_base_dist = new Array(zip_D_CODES); - zip_flag_buf = new Array(parseInt(LIT_BUFSIZE / 8)); - }; - - var zip_deflate_end = function () { - zip_free_queue = zip_qhead = zip_qtail = null; - zip_outbuf = null; - zip_window = null; - zip_d_buf = null; - zip_l_buf = null; - zip_prev = null; - zip_dyn_ltree = null; - zip_dyn_dtree = null; - zip_static_ltree = null; - zip_static_dtree = null; - zip_bl_tree = null; - zip_l_desc = null; - zip_d_desc = null; - zip_bl_desc = null; - zip_bl_count = null; - zip_heap = null; - zip_depth = null; - zip_length_code = null; - zip_dist_code = null; - zip_base_length = null; - zip_base_dist = null; - zip_flag_buf = null; - }; - - var zip_reuse_queue = function (p) { - p.next = zip_free_queue; - zip_free_queue = p; - }; - - var zip_new_queue = function () { - var p; - - if (zip_free_queue != null) { - p = zip_free_queue; - zip_free_queue = zip_free_queue.next; - } - else - p = new zip_DeflateBuffer(); - p.next = null; - p.len = p.off = 0; - - return p; - }; - - var zip_head1 = function (i) { - return zip_prev[WSIZE + i]; - }; - - var zip_head2 = function (i, val) { - return zip_prev[WSIZE + i] = val; - }; - - /* put_byte is used for the compressed output, put_ubyte for the - * uncompressed output. However unlzw() uses window for its - * suffix table instead of its output buffer, so it does not use put_ubyte - * (to be cleaned up). - */ - var zip_put_byte = function (c) { - zip_outbuf[zip_outoff + zip_outcnt++] = c; - if (zip_outoff + zip_outcnt == zip_OUTBUFSIZ) - zip_qoutbuf(); - }; - - /* Output a 16 bit value, lsb first */ - var zip_put_short = function (w) { - w &= 0xffff; - if (zip_outoff + zip_outcnt < zip_OUTBUFSIZ - 2) { - zip_outbuf[zip_outoff + zip_outcnt++] = (w & 0xff); - zip_outbuf[zip_outoff + zip_outcnt++] = (w >>> 8); - } else { - zip_put_byte(w & 0xff); - zip_put_byte(w >>> 8); - } - }; - - /* ========================================================================== - * Insert string s in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of s are valid - * (except for the last MIN_MATCH-1 bytes of the input file). - */ - var zip_INSERT_STRING = function () { - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) - ^ (zip_window[zip_strstart + MIN_MATCH - 1] & 0xff)) - & zip_HASH_MASK; - zip_hash_head = zip_head1(zip_ins_h); - zip_prev[zip_strstart & zip_WMASK] = zip_hash_head; - zip_head2(zip_ins_h, zip_strstart); - }; - - /* Send a code of the given tree. c and tree must not have side effects */ - var zip_SEND_CODE = function (c, tree) { - zip_send_bits(tree[c].fc, tree[c].dl); - }; - - /* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. dist_code[256] and dist_code[257] are never - * used. - */ - var zip_D_CODE = function (dist) { - return (dist < 256 ? zip_dist_code[dist] - : zip_dist_code[256 + (dist >> 7)]) & 0xff; - }; - - /* ========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ - var zip_SMALLER = function (tree, n, m) { - return tree[n].fc < tree[m].fc || - (tree[n].fc == tree[m].fc && zip_depth[n] <= zip_depth[m]); - }; - - /* ========================================================================== - * read string data - */ - var zip_read_buff = function (buff, offset, n) { - var i; - for (i = 0; i < n && zip_deflate_pos < zip_deflate_data.length; i++) - buff[offset + i] = - zip_deflate_data[zip_deflate_pos++] & 0xff; - return i; - }; - - /* ========================================================================== - * Initialize the "longest match" routines for a new file - */ - var zip_lm_init = function () { - var j; - - /* Initialize the hash table. */ - for (j = 0; j < zip_HASH_SIZE; j++) - zip_prev[WSIZE + j] = 0; - zip_max_lazy_match = zip_configuration_table[zip_compr_level].max_lazy; - zip_good_match = zip_configuration_table[zip_compr_level].good_length; - if (!zip_FULL_SEARCH) - zip_nice_match = zip_configuration_table[zip_compr_level].nice_length; - zip_max_chain_length = zip_configuration_table[zip_compr_level].max_chain; - - zip_strstart = 0; - zip_block_start = 0; - - zip_lookahead = zip_read_buff(zip_window, 0, 2 * WSIZE); - if (zip_lookahead <= 0) { - zip_eofile = true; - zip_lookahead = 0; - return; - } - zip_eofile = false; - /* Make sure that we always have enough lookahead. This is important - * if input comes from a device such as a tty. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - - /* If lookahead < MIN_MATCH, ins_h is garbage, but this is - * not important since only literal bytes will be emitted. - */ - zip_ins_h = 0; - for (j = 0; j < MIN_MATCH - 1; j++) { - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) ^ (zip_window[j] & 0xff)) & zip_HASH_MASK; - } - }; - - /* ========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - */ - var zip_longest_match = function (cur_match) { - var chain_length = zip_max_chain_length; // max hash chain length - var scanp = zip_strstart; // current string - var matchp; // matched string - var len; // length of current match - var best_len = zip_prev_length; // best match length so far - - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - var limit = (zip_strstart > zip_MAX_DIST ? zip_strstart - zip_MAX_DIST : zip_NIL); - - var strendp = zip_strstart + MAX_MATCH; - var scan_end1 = zip_window[scanp + best_len - 1]; - var scan_end = zip_window[scanp + best_len]; - - /* Do not waste too much time if we already have a good match: */ - if (zip_prev_length >= zip_good_match) - chain_length >>= 2; - - do { - matchp = cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2: - */ - if (zip_window[matchp + best_len] != scan_end || - zip_window[matchp + best_len - 1] != scan_end1 || - zip_window[matchp] != zip_window[scanp] || - zip_window[++matchp] != zip_window[scanp + 1]) { - continue; - } - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scanp += 2; - matchp++; - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - scanp < strendp); - - len = MAX_MATCH - (strendp - scanp); - scanp = strendp - MAX_MATCH; - - if (len > best_len) { - zip_match_start = cur_match; - best_len = len; - if (zip_FULL_SEARCH) { - if (len >= MAX_MATCH) break; - } else { - if (len >= zip_nice_match) break; - } - - scan_end1 = zip_window[scanp + best_len - 1]; - scan_end = zip_window[scanp + best_len]; - } - } while ((cur_match = zip_prev[cur_match & zip_WMASK]) > limit - && --chain_length != 0); - - return best_len; - }; - - /* ========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead, and sets eofile if end of input file. - * IN assertion: lookahead < MIN_LOOKAHEAD && strstart + lookahead > 0 - * OUT assertions: at least one byte has been read, or eofile is set; - * file reads are performed for at least two bytes (required for the - * translate_eol option). - */ - var zip_fill_window = function () { - var n, m; - - // Amount of free space at the end of the window. - var more = zip_window_size - zip_lookahead - zip_strstart; - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (more == -1) { - /* Very unlikely, but possible on 16 bit machine if strstart == 0 - * and lookahead == 1 (input done one byte at time) - */ - more--; - } else if (zip_strstart >= WSIZE + zip_MAX_DIST) { - /* By the IN assertion, the window is not empty so we can't confuse - * more == 0 with more == 64K on a 16 bit machine. - */ - for (n = 0; n < WSIZE; n++) - zip_window[n] = zip_window[n + WSIZE]; - - zip_match_start -= WSIZE; - zip_strstart -= WSIZE; - /* we now have strstart >= MAX_DIST: */ - zip_block_start -= WSIZE; - - for (n = 0; n < zip_HASH_SIZE; n++) { - m = zip_head1(n); - zip_head2(n, m >= WSIZE ? m - WSIZE : zip_NIL); - } - for (n = 0; n < WSIZE; n++) { - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - m = zip_prev[n]; - zip_prev[n] = (m >= WSIZE ? m - WSIZE : zip_NIL); - } - more += WSIZE; - } - // At this point, more >= 2 - if (!zip_eofile) { - n = zip_read_buff(zip_window, zip_strstart + zip_lookahead, more); - if (n <= 0) - zip_eofile = true; - else - zip_lookahead += n; - } - }; - - /* ========================================================================== - * Processes a new input file and return its compressed length. This - * function does not perform lazy evaluationof matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ - var zip_deflate_fast = function () { - while (zip_lookahead != 0 && zip_qhead == null) { - var flush; // set if current block must be flushed - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - zip_INSERT_STRING(); - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (zip_hash_head != zip_NIL && - zip_strstart - zip_hash_head <= zip_MAX_DIST) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - zip_match_length = zip_longest_match(zip_hash_head); - /* longest_match() sets match_start */ - if (zip_match_length > zip_lookahead) - zip_match_length = zip_lookahead; - } - if (zip_match_length >= MIN_MATCH) { - flush = zip_ct_tally(zip_strstart - zip_match_start, - zip_match_length - MIN_MATCH); - zip_lookahead -= zip_match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ - if (zip_match_length <= zip_max_lazy_match) { - zip_match_length--; // string at strstart already in hash table - do { - zip_strstart++; - zip_INSERT_STRING(); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH - * these bytes are garbage, but it does not matter since - * the next lookahead bytes will be emitted as literals. - */ - } while (--zip_match_length != 0); - zip_strstart++; - } else { - zip_strstart += zip_match_length; - zip_match_length = 0; - zip_ins_h = zip_window[zip_strstart] & 0xff; - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) ^ (zip_window[zip_strstart + 1] & 0xff)) & zip_HASH_MASK; - } - } else { - /* No match, output a literal byte */ - flush = zip_ct_tally(0, zip_window[zip_strstart] & 0xff); - zip_lookahead--; - zip_strstart++; - } - if (flush) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - } - }; - - var zip_deflate_better = function () { - /* Process the input block. */ - while (zip_lookahead != 0 && zip_qhead == null) { - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - zip_INSERT_STRING(); - - /* Find the longest match, discarding those <= prev_length. - */ - zip_prev_length = zip_match_length; - zip_prev_match = zip_match_start; - zip_match_length = MIN_MATCH - 1; - - if (zip_hash_head != zip_NIL && - zip_prev_length < zip_max_lazy_match && - zip_strstart - zip_hash_head <= zip_MAX_DIST) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - zip_match_length = zip_longest_match(zip_hash_head); - /* longest_match() sets match_start */ - if (zip_match_length > zip_lookahead) - zip_match_length = zip_lookahead; - - /* Ignore a length 3 match if it is too distant: */ - if (zip_match_length == MIN_MATCH && - zip_strstart - zip_match_start > zip_TOO_FAR) { - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - zip_match_length--; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (zip_prev_length >= MIN_MATCH && - zip_match_length <= zip_prev_length) { - var flush; // set if current block must be flushed - flush = zip_ct_tally(zip_strstart - 1 - zip_prev_match, - zip_prev_length - MIN_MATCH); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. - */ - zip_lookahead -= zip_prev_length - 1; - zip_prev_length -= 2; - do { - zip_strstart++; - zip_INSERT_STRING(); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH - * these bytes are garbage, but it does not matter since the - * next lookahead bytes will always be emitted as literals. - */ - } while (--zip_prev_length != 0); - zip_match_available = 0; - zip_match_length = MIN_MATCH - 1; - zip_strstart++; - if (flush) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - } else if (zip_match_available != 0) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - if (zip_ct_tally(0, zip_window[zip_strstart - 1] & 0xff)) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - zip_strstart++; - zip_lookahead--; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - zip_match_available = 1; - zip_strstart++; - zip_lookahead--; - } - - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - } - }; - - var zip_init_deflate = function () { - if (zip_eofile) - return; - zip_bi_buf = 0; - zip_bi_valid = 0; - zip_ct_init(); - zip_lm_init(); - - zip_qhead = null; - zip_outcnt = 0; - zip_outoff = 0; - zip_match_available = 0; - - if (zip_compr_level <= 3) { - zip_prev_length = MIN_MATCH - 1; - zip_match_length = 0; - } - else { - zip_match_length = MIN_MATCH - 1; - zip_match_available = 0; - zip_match_available = 0; - } - - zip_complete = false; - }; - - /* ========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ - var zip_deflate_internal = function (buff, off, buff_size) { - var n; - - if (!zip_initflag) { - zip_init_deflate(); - zip_initflag = true; - if (zip_lookahead == 0) { // empty - zip_complete = true; - return 0; - } - } - - if ((n = zip_qcopy(buff, off, buff_size)) == buff_size) - return buff_size; - - if (zip_complete) - return n; - - if (zip_compr_level <= 3) // optimized for speed - zip_deflate_fast(); - else - zip_deflate_better(); - if (zip_lookahead == 0) { - if (zip_match_available != 0) - zip_ct_tally(0, zip_window[zip_strstart - 1] & 0xff); - zip_flush_block(1); - zip_complete = true; - } - return n + zip_qcopy(buff, n + off, buff_size - n); - }; - - var zip_qcopy = function (buff, off, buff_size) { - var n, i, j; - - n = 0; - while (zip_qhead != null && n < buff_size) { - i = buff_size - n; - if (i > zip_qhead.len) - i = zip_qhead.len; - for (j = 0; j < i; j++) - buff[off + n + j] = zip_qhead.ptr[zip_qhead.off + j]; - - zip_qhead.off += i; - zip_qhead.len -= i; - n += i; - if (zip_qhead.len == 0) { - var p; - p = zip_qhead; - zip_qhead = zip_qhead.next; - zip_reuse_queue(p); - } - } - - if (n == buff_size) - return n; - - if (zip_outoff < zip_outcnt) { - i = buff_size - n; - if (i > zip_outcnt - zip_outoff) - i = zip_outcnt - zip_outoff; - // System.arraycopy(outbuf, outoff, buff, off + n, i); - for (j = 0; j < i; j++) - buff[off + n + j] = zip_outbuf[zip_outoff + j]; - zip_outoff += i; - n += i; - if (zip_outcnt == zip_outoff) - zip_outcnt = zip_outoff = 0; - } - return n; - }; - - /* ========================================================================== - * Allocate the match buffer, initialize the various tables and save the - * location of the internal file attribute (ascii/binary) and method - * (DEFLATE/STORE). - */ - var zip_ct_init = function () { - var n; // iterates over tree elements - var bits; // bit counter - var length; // length value - var code; // code value - var dist; // distance index - - if (zip_static_dtree[0].dl != 0) return; // ct_init already called - - zip_l_desc.dyn_tree = zip_dyn_ltree; - zip_l_desc.static_tree = zip_static_ltree; - zip_l_desc.extra_bits = zip_extra_lbits; - zip_l_desc.extra_base = zip_LITERALS + 1; - zip_l_desc.elems = zip_L_CODES; - zip_l_desc.max_length = zip_MAX_BITS; - zip_l_desc.max_code = 0; - - zip_d_desc.dyn_tree = zip_dyn_dtree; - zip_d_desc.static_tree = zip_static_dtree; - zip_d_desc.extra_bits = zip_extra_dbits; - zip_d_desc.extra_base = 0; - zip_d_desc.elems = zip_D_CODES; - zip_d_desc.max_length = zip_MAX_BITS; - zip_d_desc.max_code = 0; - - zip_bl_desc.dyn_tree = zip_bl_tree; - zip_bl_desc.static_tree = null; - zip_bl_desc.extra_bits = zip_extra_blbits; - zip_bl_desc.extra_base = 0; - zip_bl_desc.elems = zip_BL_CODES; - zip_bl_desc.max_length = zip_MAX_BL_BITS; - zip_bl_desc.max_code = 0; - - // Initialize the mapping length (0..255) -> length code (0..28) - length = 0; - for (code = 0; code < zip_LENGTH_CODES - 1; code++) { - zip_base_length[code] = length; - for (n = 0; n < (1 << zip_extra_lbits[code]); n++) - zip_length_code[length++] = code; - } - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - zip_length_code[length - 1] = code; - - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - dist = 0; - for (code = 0; code < 16; code++) { - zip_base_dist[code] = dist; - for (n = 0; n < (1 << zip_extra_dbits[code]); n++) { - zip_dist_code[dist++] = code; - } - } - dist >>= 7; // from now on, all distances are divided by 128 - for (; code < zip_D_CODES; code++) { - zip_base_dist[code] = dist << 7; - for (n = 0; n < (1 << (zip_extra_dbits[code] - 7)); n++) - zip_dist_code[256 + dist++] = code; - } - // Construct the codes of the static literal tree - for (bits = 0; bits <= zip_MAX_BITS; bits++) - zip_bl_count[bits] = 0; - n = 0; - while (n <= 143) { - zip_static_ltree[n++].dl = 8; - zip_bl_count[8]++; - } - while (n <= 255) { - zip_static_ltree[n++].dl = 9; - zip_bl_count[9]++; - } - while (n <= 279) { - zip_static_ltree[n++].dl = 7; - zip_bl_count[7]++; - } - while (n <= 287) { - zip_static_ltree[n++].dl = 8; - zip_bl_count[8]++; - } - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - zip_gen_codes(zip_static_ltree, zip_L_CODES + 1); - - /* The static distance tree is trivial: */ - for (n = 0; n < zip_D_CODES; n++) { - zip_static_dtree[n].dl = 5; - zip_static_dtree[n].fc = zip_bi_reverse(n, 5); - } - - // Initialize the first block of the first file: - zip_init_block(); - }; - - /* ========================================================================== - * Initialize a new block. - */ - var zip_init_block = function () { - var n; // iterates over tree elements - - // Initialize the trees. - for (n = 0; n < zip_L_CODES; n++) zip_dyn_ltree[n].fc = 0; - for (n = 0; n < zip_D_CODES; n++) zip_dyn_dtree[n].fc = 0; - for (n = 0; n < zip_BL_CODES; n++) zip_bl_tree[n].fc = 0; - - zip_dyn_ltree[zip_END_BLOCK].fc = 1; - zip_opt_len = zip_static_len = 0; - zip_last_lit = zip_last_dist = zip_last_flags = 0; - zip_flags = 0; - zip_flag_bit = 1; - }; - - /* ========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ - var zip_pqdownheap = function (tree, // the tree to restore - k) { // node to move down - var v = zip_heap[k]; - var j = k << 1; // left son of k - - while (j <= zip_heap_len) { - // Set j to the smallest of the two sons: - if (j < zip_heap_len && - zip_SMALLER(tree, zip_heap[j + 1], zip_heap[j])) - j++; - - // Exit if v is smaller than both sons - if (zip_SMALLER(tree, v, zip_heap[j])) - break; - - // Exchange v with the smallest son - zip_heap[k] = zip_heap[j]; - k = j; - - // And continue down the tree, setting j to the left son of k - j <<= 1; - } - zip_heap[k] = v; - }; - - /* ========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ - var zip_gen_bitlen = function (desc) { // the tree descriptor - var tree = desc.dyn_tree; - var extra = desc.extra_bits; - var base = desc.extra_base; - var max_code = desc.max_code; - var max_length = desc.max_length; - var stree = desc.static_tree; - var h; // heap index - var n, m; // iterate over the tree elements - var bits; // bit length - var xbits; // extra bits - var f; // frequency - var overflow = 0; // number of elements with bit length too large - - for (bits = 0; bits <= zip_MAX_BITS; bits++) - zip_bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[zip_heap[zip_heap_max]].dl = 0; // root of the heap - - for (h = zip_heap_max + 1; h < zip_HEAP_SIZE; h++) { - n = zip_heap[h]; - bits = tree[tree[n].dl].dl + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n].dl = bits; - // We overwrite tree[n].dl which is no longer needed - - if (n > max_code) - continue; // not a leaf node - - zip_bl_count[bits]++; - xbits = 0; - if (n >= base) - xbits = extra[n - base]; - f = tree[n].fc; - zip_opt_len += f * (bits + xbits); - if (stree != null) - zip_static_len += f * (stree[n].dl + xbits); - } - if (overflow == 0) - return; - - // This happens for example on obj2 and pic of the Calgary corpus - - // Find the first bit length which could increase: - do { - bits = max_length - 1; - while (zip_bl_count[bits] == 0) - bits--; - zip_bl_count[bits]--; // move one leaf down the tree - zip_bl_count[bits + 1] += 2; // move one overflow item as its brother - zip_bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = zip_bl_count[bits]; - while (n != 0) { - m = zip_heap[--h]; - if (m > max_code) - continue; - if (tree[m].dl != bits) { - zip_opt_len += (bits - tree[m].dl) * tree[m].fc; - tree[m].fc = bits; - } - n--; - } - } - }; - - /* ========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ - var zip_gen_codes = function (tree, // the tree to decorate - max_code) { // largest code with non zero frequency - var next_code = new Array(zip_MAX_BITS + 1); // next code value for each bit length - var code = 0; // running code value - var bits; // bit index - var n; // code index - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= zip_MAX_BITS; bits++) { - code = ((code + zip_bl_count[bits - 1]) << 1); - next_code[bits] = code; - } - - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - for (n = 0; n <= max_code; n++) { - var len = tree[n].dl; - if (len == 0) - continue; - // Now reverse the bits - tree[n].fc = zip_bi_reverse(next_code[len]++, len); - } - }; - - /* ========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ - var zip_build_tree = function (desc) { // the tree descriptor - var tree = desc.dyn_tree; - var stree = desc.static_tree; - var elems = desc.elems; - var n, m; // iterate over heap elements - var max_code = -1; // largest code with non zero frequency - var node = elems; // next internal node of the tree - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - zip_heap_len = 0; - zip_heap_max = zip_HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].fc != 0) { - zip_heap[++zip_heap_len] = max_code = n; - zip_depth[n] = 0; - } else - tree[n].dl = 0; - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (zip_heap_len < 2) { - var xnew = zip_heap[++zip_heap_len] = (max_code < 2 ? ++max_code : 0); - tree[xnew].fc = 1; - zip_depth[xnew] = 0; - zip_opt_len--; - if (stree != null) - zip_static_len -= stree[xnew].dl; - // new is 0 or 1 so it does not have extra bits - } - desc.max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = zip_heap_len >> 1; n >= 1; n--) - zip_pqdownheap(tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - do { - n = zip_heap[zip_SMALLEST]; - zip_heap[zip_SMALLEST] = zip_heap[zip_heap_len--]; - zip_pqdownheap(tree, zip_SMALLEST); - - m = zip_heap[zip_SMALLEST]; // m = node of next least frequency - - // keep the nodes sorted by frequency - zip_heap[--zip_heap_max] = n; - zip_heap[--zip_heap_max] = m; - - // Create a new node father of n and m - tree[node].fc = tree[n].fc + tree[m].fc; - if (zip_depth[n] > zip_depth[m] + 1) - zip_depth[node] = zip_depth[n]; - else - zip_depth[node] = zip_depth[m] + 1; - tree[n].dl = tree[m].dl = node; - - // and insert the new node in the heap - zip_heap[zip_SMALLEST] = node++; - zip_pqdownheap(tree, zip_SMALLEST); - - } while (zip_heap_len >= 2); - - zip_heap[--zip_heap_max] = zip_heap[zip_SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - zip_gen_bitlen(desc); - - // The field len is now set, we can generate the bit codes - zip_gen_codes(tree, max_code); - }; - - /* ========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. Updates opt_len to take into account the repeat - * counts. (The contribution of the bit length codes will be added later - * during the construction of bl_tree.) - */ - var zip_scan_tree = function (tree,// the tree to be scanned - max_code) { // and its largest code of non zero frequency - var n; // iterates over all tree elements - var prevlen = -1; // last emitted length - var curlen; // length of current code - var nextlen = tree[0].dl; // length of next code - var count = 0; // repeat count of the current code - var max_count = 7; // max repeat count - var min_count = 4; // min repeat count - - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } - tree[max_code + 1].dl = 0xffff; // guard - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].dl; - if (++count < max_count && curlen == nextlen) - continue; - else if (count < min_count) - zip_bl_tree[curlen].fc += count; - else if (curlen != 0) { - if (curlen != prevlen) - zip_bl_tree[curlen].fc++; - zip_bl_tree[zip_REP_3_6].fc++; - } else if (count <= 10) - zip_bl_tree[zip_REPZ_3_10].fc++; - else - zip_bl_tree[zip_REPZ_11_138].fc++; - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - }; - - /* ========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ - var zip_send_tree = function (tree, // the tree to be scanned - max_code) { // and its largest code of non zero frequency - var n; // iterates over all tree elements - var prevlen = -1; // last emitted length - var curlen; // length of current code - var nextlen = tree[0].dl; // length of next code - var count = 0; // repeat count of the current code - var max_count = 7; // max repeat count - var min_count = 4; // min repeat count - - /* tree[max_code+1].dl = -1; */ - /* guard already set */ - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].dl; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { - zip_SEND_CODE(curlen, zip_bl_tree); - } while (--count != 0); - } else if (curlen != 0) { - if (curlen != prevlen) { - zip_SEND_CODE(curlen, zip_bl_tree); - count--; - } - // Assert(count >= 3 && count <= 6, " 3_6?"); - zip_SEND_CODE(zip_REP_3_6, zip_bl_tree); - zip_send_bits(count - 3, 2); - } else if (count <= 10) { - zip_SEND_CODE(zip_REPZ_3_10, zip_bl_tree); - zip_send_bits(count - 3, 3); - } else { - zip_SEND_CODE(zip_REPZ_11_138, zip_bl_tree); - zip_send_bits(count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - }; - - /* ========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ - var zip_build_bl_tree = function () { - var max_blindex; // index of last bit length code of non zero freq - - // Determine the bit length frequencies for literal and distance trees - zip_scan_tree(zip_dyn_ltree, zip_l_desc.max_code); - zip_scan_tree(zip_dyn_dtree, zip_d_desc.max_code); - - // Build the bit length tree: - zip_build_tree(zip_bl_desc); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = zip_BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (zip_bl_tree[zip_bl_order[max_blindex]].dl != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - zip_opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - return max_blindex; - }; - - /* ========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ - var zip_send_all_trees = function (lcodes, dcodes, blcodes) { // number of codes for each tree - var rank; // index in bl_order - zip_send_bits(lcodes - 257, 5); // not +255 as stated in appnote.txt - zip_send_bits(dcodes - 1, 5); - zip_send_bits(blcodes - 4, 4); // not -3 as stated in appnote.txt - for (rank = 0; rank < blcodes; rank++) { - zip_send_bits(zip_bl_tree[zip_bl_order[rank]].dl, 3); - } - - // send the literal tree - zip_send_tree(zip_dyn_ltree, lcodes - 1); - - // send the distance tree - zip_send_tree(zip_dyn_dtree, dcodes - 1); - }; - - /* ========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ - var zip_flush_block = function (eof) { // true if this is the last block for a file - var opt_lenb, static_lenb; // opt_len and static_len in bytes - var max_blindex; // index of last bit length code of non zero freq - var stored_len; // length of input block - - stored_len = zip_strstart - zip_block_start; - zip_flag_buf[zip_last_flags] = zip_flags; // Save the flags for the last 8 items - - // Construct the literal and distance trees - zip_build_tree(zip_l_desc); - zip_build_tree(zip_d_desc); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = zip_build_bl_tree(); - - // Determine the best encoding. Compute first the block length in bytes - opt_lenb = (zip_opt_len + 3 + 7) >> 3; - static_lenb = (zip_static_len + 3 + 7) >> 3; - if (static_lenb <= opt_lenb) - opt_lenb = static_lenb; - if (stored_len + 4 <= opt_lenb // 4: two words for the lengths - && zip_block_start >= 0) { - var i; - - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - zip_send_bits((zip_STORED_BLOCK << 1) + eof, 3); - /* send block type */ - zip_bi_windup(); - /* align on byte boundary */ - zip_put_short(stored_len); - zip_put_short(~stored_len); - - // copy block - for (i = 0; i < stored_len; i++) - zip_put_byte(zip_window[zip_block_start + i]); - - } else if (static_lenb == opt_lenb) { - zip_send_bits((zip_STATIC_TREES << 1) + eof, 3); - zip_compress_block(zip_static_ltree, zip_static_dtree); - } else { - zip_send_bits((zip_DYN_TREES << 1) + eof, 3); - zip_send_all_trees(zip_l_desc.max_code + 1, - zip_d_desc.max_code + 1, - max_blindex + 1); - zip_compress_block(zip_dyn_ltree, zip_dyn_dtree); - } - - zip_init_block(); - - if (eof != 0) - zip_bi_windup(); - }; - - /* ========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ - var zip_ct_tally = function (dist, // distance of matched string - lc) { // match length-MIN_MATCH or unmatched char (if dist==0) - zip_l_buf[zip_last_lit++] = lc; - if (dist == 0) { - // lc is the unmatched char - zip_dyn_ltree[lc].fc++; - } else { - // Here, lc is the match length - MIN_MATCH - dist--; // dist = match distance - 1 - zip_dyn_ltree[zip_length_code[lc] + zip_LITERALS + 1].fc++; - zip_dyn_dtree[zip_D_CODE(dist)].fc++; - - zip_d_buf[zip_last_dist++] = dist; - zip_flags |= zip_flag_bit; - } - zip_flag_bit <<= 1; - - // Output the flags if they fill a byte - if ((zip_last_lit & 7) == 0) { - zip_flag_buf[zip_last_flags++] = zip_flags; - zip_flags = 0; - zip_flag_bit = 1; - } - // Try to guess if it is profitable to stop the current block here - if (zip_compr_level > 2 && (zip_last_lit & 0xfff) == 0) { - // Compute an upper bound for the compressed length - var out_length = zip_last_lit * 8; - var in_length = zip_strstart - zip_block_start; - var dcode; - - for (dcode = 0; dcode < zip_D_CODES; dcode++) { - out_length += zip_dyn_dtree[dcode].fc * (5 + zip_extra_dbits[dcode]); - } - out_length >>= 3; - if (zip_last_dist < parseInt(zip_last_lit / 2) && - out_length < parseInt(in_length / 2)) - return true; - } - return (zip_last_lit == LIT_BUFSIZE - 1 || - zip_last_dist == zip_DIST_BUFSIZE); - /* We avoid equality with LIT_BUFSIZE because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ - }; - - /* ========================================================================== - * Send the block data compressed using the given Huffman trees - */ - var zip_compress_block = function (ltree, // literal tree - dtree) { // distance tree - var dist; // distance of matched string - var lc; // match length or unmatched char (if dist == 0) - var lx = 0; // running index in l_buf - var dx = 0; // running index in d_buf - var fx = 0; // running index in flag_buf - var flag = 0; // current flags - var code; // the code to send - var extra; // number of extra bits to send - - if (zip_last_lit != 0) do { - if ((lx & 7) == 0) - flag = zip_flag_buf[fx++]; - lc = zip_l_buf[lx++] & 0xff; - if ((flag & 1) == 0) { - zip_SEND_CODE(lc, ltree); - /* send a literal byte */ - } else { - // Here, lc is the match length - MIN_MATCH - code = zip_length_code[lc]; - zip_SEND_CODE(code + zip_LITERALS + 1, ltree); // send the length code - extra = zip_extra_lbits[code]; - if (extra != 0) { - lc -= zip_base_length[code]; - zip_send_bits(lc, extra); // send the extra length bits - } - dist = zip_d_buf[dx++]; - // Here, dist is the match distance - 1 - code = zip_D_CODE(dist); - zip_SEND_CODE(code, dtree); // send the distance code - extra = zip_extra_dbits[code]; - if (extra != 0) { - dist -= zip_base_dist[code]; - zip_send_bits(dist, extra); // send the extra distance bits - } - } // literal or match pair ? - flag >>= 1; - } while (lx < zip_last_lit); - - zip_SEND_CODE(zip_END_BLOCK, ltree); - }; - - /* ========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ - var zip_Buf_size = 16; // bit size of bi_buf - var zip_send_bits = function (value, // value to send - length) { // number of bits - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (zip_bi_valid > zip_Buf_size - length) { - zip_bi_buf |= (value << zip_bi_valid); - zip_put_short(zip_bi_buf); - zip_bi_buf = (value >> (zip_Buf_size - zip_bi_valid)); - zip_bi_valid += length - zip_Buf_size; - } else { - zip_bi_buf |= value << zip_bi_valid; - zip_bi_valid += length; - } - }; - - /* ========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ - var zip_bi_reverse = function (code, // the value to invert - len) { // its bit length - var res = 0; - do { - res |= code & 1; - code >>= 1; - res <<= 1; - } while (--len > 0); - return res >> 1; - }; - - /* ========================================================================== - * Write out any remaining bits in an incomplete byte. - */ - var zip_bi_windup = function () { - if (zip_bi_valid > 8) { - zip_put_short(zip_bi_buf); - } else if (zip_bi_valid > 0) { - zip_put_byte(zip_bi_buf); - } - zip_bi_buf = 0; - zip_bi_valid = 0; - }; - - var zip_qoutbuf = function () { - if (zip_outcnt != 0) { - var q, i; - q = zip_new_queue(); - if (zip_qhead == null) - zip_qhead = zip_qtail = q; - else - zip_qtail = zip_qtail.next = q; - q.len = zip_outcnt - zip_outoff; - for (i = 0; i < q.len; i++) - q.ptr[i] = zip_outbuf[zip_outoff + i]; - zip_outcnt = zip_outoff = 0; - } - }; - - function deflate(buffData, level) { - zip_deflate_data = buffData; - zip_deflate_pos = 0; - zip_deflate_start(level); - - var buff = new Array(1024), - pages = [], - totalSize = 0, - i; - - for (i = 0; i < 1024; i++) buff[i] = 0; - while ((i = zip_deflate_internal(buff, 0, buff.length)) > 0) { - var buf = new Buffer(buff.slice(0, i)); - pages.push(buf); - totalSize += buf.length; - } - - if (pages.length == 1) { - return pages[0]; - } - - var result = new Buffer(totalSize), - index = 0; - - for (i = 0; i < pages.length; i++) { - pages[i].copy(result, index); - index = index + pages[i].length - } - - return result; - } - - return { - deflate: function () { - return deflate(inbuf, 8); - } - } -} - -module.exports = function (/*Buffer*/inbuf) { - - var zlib = require("zlib"); - - return { - deflate: function () { - return new JSDeflater(inbuf).deflate(); - }, - - deflateAsync: function (/*Function*/callback) { - var tmp = zlib.createDeflateRaw({chunkSize:(parseInt(inbuf.length / 1024) + 1)*1024}), - parts = [], total = 0; - tmp.on('data', function(data) { - parts.push(data); - total += data.length; - }); - tmp.on('end', function() { - var buf = new Buffer(total), written = 0; - buf.fill(0); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - part.copy(buf, written); - written += part.length; - } - callback && callback(buf); - }); - tmp.end(inbuf); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js deleted file mode 100644 index ddcbba60..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.Deflater = require("./deflater"); -exports.Inflater = require("./inflater"); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js deleted file mode 100644 index 59536c90..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js +++ /dev/null @@ -1,448 +0,0 @@ -var Buffer = require("buffer").Buffer; - -function JSInflater(/*Buffer*/input) { - - var WSIZE = 0x8000, - slide = new Buffer(0x10000), - windowPos = 0, - fixedTableList = null, - fixedTableDist, - fixedLookup, - bitBuf = 0, - bitLen = 0, - method = -1, - eof = false, - copyLen = 0, - copyDist = 0, - tblList, tblDist, bitList, bitdist, - - inputPosition = 0, - - MASK_BITS = [0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff], - LENS = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], - LEXT = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99], - DISTS = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], - DEXT = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], - BITORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - - function HuffTable(clen, cnum, cval, blist, elist, lookupm) { - - this.status = 0; - this.root = null; - this.maxbit = 0; - - var el, f, tail, - offsets = [], - countTbl = [], - sTbl = [], - values = [], - tentry = {extra: 0, bitcnt: 0, lbase: 0, next: null}; - - tail = this.root = null; - for(var i = 0; i < 0x11; i++) { countTbl[i] = 0; sTbl[i] = 0; offsets[i] = 0; } - for(i = 0; i < 0x120; i++) values[i] = 0; - - el = cnum > 256 ? clen[256] : 16; - - var pidx = -1; - while (++pidx < cnum) countTbl[clen[pidx]]++; - - if(countTbl[0] == cnum) return; - - for(var j = 1; j <= 16; j++) if(countTbl[j] != 0) break; - var bitLen = j; - for(i = 16; i != 0; i--) if(countTbl[i] != 0) break; - var maxLen = i; - - lookupm < j && (lookupm = j); - - var dCodes = 1 << j; - for(; j < i; j++, dCodes <<= 1) - if((dCodes -= countTbl[j]) < 0) { - this.status = 2; - this.maxbit = lookupm; - return; - } - - if((dCodes -= countTbl[i]) < 0) { - this.status = 2; - this.maxbit = lookupm; - return; - } - - countTbl[i] += dCodes; - offsets[1] = j = 0; - pidx = 1; - var xp = 2; - while(--i > 0) offsets[xp++] = (j += countTbl[pidx++]); - pidx = 0; - i = 0; - do { - (j = clen[pidx++]) && (values[offsets[j]++] = i); - } while(++i < cnum); - cnum = offsets[maxLen]; - offsets[0] = i = 0; - pidx = 0; - - var level = -1, - w = sTbl[0] = 0, - cnode = null, - tblCnt = 0, - tblStack = []; - - for(; bitLen <= maxLen; bitLen++) { - var kccnt = countTbl[bitLen]; - while(kccnt-- > 0) { - while(bitLen > w + sTbl[1 + level]) { - w += sTbl[1 + level]; - level++; - tblCnt = (tblCnt = maxLen - w) > lookupm ? lookupm : tblCnt; - if((f = 1 << (j = bitLen - w)) > kccnt + 1) { - f -= kccnt + 1; - xp = bitLen; - while(++j < tblCnt) { - if((f <<= 1) <= countTbl[++xp]) break; - f -= countTbl[xp]; - } - } - if(w + j > el && w < el) j = el - w; - tblCnt = 1 << j; - sTbl[1 + level] = j; - cnode = []; - while (cnode.length < tblCnt) cnode.push({extra: 0, bitcnt: 0, lbase: 0, next: null}); - if (tail == null) { - tail = this.root = {next:null, list:null}; - } else { - tail = tail.next = {next:null, list:null} - } - tail.next = null; - tail.list = cnode; - - tblStack[level] = cnode; - - if(level > 0) { - offsets[level] = i; - tentry.bitcnt = sTbl[level]; - tentry.extra = 16 + j; - tentry.next = cnode; - j = (i & ((1 << w) - 1)) >> (w - sTbl[level]); - - tblStack[level-1][j].extra = tentry.extra; - tblStack[level-1][j].bitcnt = tentry.bitcnt; - tblStack[level-1][j].lbase = tentry.lbase; - tblStack[level-1][j].next = tentry.next; - } - } - tentry.bitcnt = bitLen - w; - if(pidx >= cnum) - tentry.extra = 99; - else if(values[pidx] < cval) { - tentry.extra = (values[pidx] < 256 ? 16 : 15); - tentry.lbase = values[pidx++]; - } else { - tentry.extra = elist[values[pidx] - cval]; - tentry.lbase = blist[values[pidx++] - cval]; - } - - f = 1 << (bitLen - w); - for(j = i >> w; j < tblCnt; j += f) { - cnode[j].extra = tentry.extra; - cnode[j].bitcnt = tentry.bitcnt; - cnode[j].lbase = tentry.lbase; - cnode[j].next = tentry.next; - } - for(j = 1 << (bitLen - 1); (i & j) != 0; j >>= 1) - i ^= j; - i ^= j; - while((i & ((1 << w) - 1)) != offsets[level]) { - w -= sTbl[level]; - level--; - } - } - } - - this.maxbit = sTbl[1]; - this.status = ((dCodes != 0 && maxLen != 1) ? 1 : 0); - } - - function addBits(n) { - while(bitLen < n) { - bitBuf |= input[inputPosition++] << bitLen; - bitLen += 8; - } - return bitBuf; - } - - function cutBits(n) { - bitLen -= n; - return bitBuf >>= n; - } - - function maskBits(n) { - while(bitLen < n) { - bitBuf |= input[inputPosition++] << bitLen; - bitLen += 8; - } - var res = bitBuf & MASK_BITS[n]; - bitBuf >>= n; - bitLen -= n; - return res; - } - - function codes(buff, off, size) { - var e, t; - if(size == 0) return 0; - - var n = 0; - for(;;) { - t = tblList.list[addBits(bitList) & MASK_BITS[bitList]]; - e = t.extra; - while(e > 16) { - if(e == 99) return -1; - cutBits(t.bitcnt); - e -= 16; - t = t.next[addBits(e) & MASK_BITS[e]]; - e = t.extra; - } - cutBits(t.bitcnt); - if(e == 16) { - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = t.lbase; - if(n == size) return size; - continue; - } - if(e == 15) break; - - copyLen = t.lbase + maskBits(e); - t = tblDist.list[addBits(bitdist) & MASK_BITS[bitdist]]; - e = t.extra; - - while(e > 16) { - if(e == 99) return -1; - cutBits(t.bitcnt); - e -= 16; - t = t.next[addBits(e) & MASK_BITS[e]]; - e = t.extra - } - cutBits(t.bitcnt); - copyDist = windowPos - t.lbase - maskBits(e); - - while(copyLen > 0 && n < size) { - copyLen--; - copyDist &= WSIZE - 1; - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = slide[copyDist++]; - } - - if(n == size) return size; - } - - method = -1; // done - return n; - } - - function stored(buff, off, size) { - cutBits(bitLen & 7); - var n = maskBits(0x10); - if(n != ((~maskBits(0x10)) & 0xffff)) return -1; - copyLen = n; - - n = 0; - while(copyLen > 0 && n < size) { - copyLen--; - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = maskBits(8); - } - - if(copyLen == 0) method = -1; - return n; - } - - function fixed(buff, off, size) { - var fixed_bd = 0; - if(fixedTableList == null) { - var lengths = []; - - for(var symbol = 0; symbol < 144; symbol++) lengths[symbol] = 8; - for(; symbol < 256; symbol++) lengths[symbol] = 9; - for(; symbol < 280; symbol++) lengths[symbol] = 7; - for(; symbol < 288; symbol++) lengths[symbol] = 8; - - fixedLookup = 7; - - var htbl = new HuffTable(lengths, 288, 257, LENS, LEXT, fixedLookup); - - if(htbl.status != 0) return -1; - - fixedTableList = htbl.root; - fixedLookup = htbl.maxbit; - - for(symbol = 0; symbol < 30; symbol++) lengths[symbol] = 5; - fixed_bd = 5; - - htbl = new HuffTable(lengths, 30, 0, DISTS, DEXT, fixed_bd); - if(htbl.status > 1) { - fixedTableList = null; - return -1; - } - fixedTableDist = htbl.root; - fixed_bd = htbl.maxbit; - } - - tblList = fixedTableList; - tblDist = fixedTableDist; - bitList = fixedLookup; - bitdist = fixed_bd; - return codes(buff, off, size); - } - - function dynamic(buff, off, size) { - var ll = new Array(0x023C); - - for (var m = 0; m < 0x023C; m++) ll[m] = 0; - - var llencnt = 257 + maskBits(5), - dcodescnt = 1 + maskBits(5), - bitlencnt = 4 + maskBits(4); - - if(llencnt > 286 || dcodescnt > 30) return -1; - - for(var j = 0; j < bitlencnt; j++) ll[BITORDER[j]] = maskBits(3); - for(; j < 19; j++) ll[BITORDER[j]] = 0; - - // build decoding table for trees--single level, 7 bit lookup - bitList = 7; - var hufTable = new HuffTable(ll, 19, 19, null, null, bitList); - if(hufTable.status != 0) - return -1; // incomplete code set - - tblList = hufTable.root; - bitList = hufTable.maxbit; - var lencnt = llencnt + dcodescnt, - i = 0, - lastLen = 0; - while(i < lencnt) { - var hufLcode = tblList.list[addBits(bitList) & MASK_BITS[bitList]]; - j = hufLcode.bitcnt; - cutBits(j); - j = hufLcode.lbase; - if(j < 16) - ll[i++] = lastLen = j; - else if(j == 16) { - j = 3 + maskBits(2); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = lastLen; - } else if(j == 17) { - j = 3 + maskBits(3); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = 0; - lastLen = 0; - } else { - j = 11 + maskBits(7); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = 0; - lastLen = 0; - } - } - bitList = 9; - hufTable = new HuffTable(ll, llencnt, 257, LENS, LEXT, bitList); - bitList == 0 && (hufTable.status = 1); - - if (hufTable.status != 0) return -1; - - tblList = hufTable.root; - bitList = hufTable.maxbit; - - for(i = 0; i < dcodescnt; i++) ll[i] = ll[i + llencnt]; - bitdist = 6; - hufTable = new HuffTable(ll, dcodescnt, 0, DISTS, DEXT, bitdist); - tblDist = hufTable.root; - bitdist = hufTable.maxbit; - - if((bitdist == 0 && llencnt > 257) || hufTable.status != 0) return -1; - - return codes(buff, off, size); - } - - return { - inflate : function(/*Buffer*/outputBuffer) { - tblList = null; - - var size = outputBuffer.length, - offset = 0, i; - - while(offset < size) { - if(eof && method == -1) return; - if(copyLen > 0) { - if(method != 0) { - while(copyLen > 0 && offset < size) { - copyLen--; - copyDist &= WSIZE - 1; - windowPos &= WSIZE - 1; - outputBuffer[offset++] = (slide[windowPos++] = slide[copyDist++]); - } - } else { - while(copyLen > 0 && offset < size) { - copyLen--; - windowPos &= WSIZE - 1; - outputBuffer[offset++] = (slide[windowPos++] = maskBits(8)); - } - copyLen == 0 && (method = -1); // done - } - if (offset == size) return; - } - - if(method == -1) { - if(eof) break; - eof = maskBits(1) != 0; - method = maskBits(2); - tblList = null; - copyLen = 0; - } - switch(method) { - case 0: i = stored(outputBuffer, offset, size - offset); break; - case 1: i = tblList != null ? codes(outputBuffer, offset, size - offset) : fixed(outputBuffer, offset, size - offset); break; - case 2: i = tblList != null ? codes(outputBuffer, offset, size - offset) : dynamic(outputBuffer, offset, size - offset); break; - default: i = -1; break; - } - - if(i == -1) return; - offset += i; - } - } - }; -} - -module.exports = function(/*Buffer*/inbuf) { - var zlib = require("zlib"); - return { - inflateAsync : function(/*Function*/callback) { - var tmp = zlib.createInflateRaw(), - parts = [], total = 0; - tmp.on('data', function(data) { - parts.push(data); - total += data.length; - }); - tmp.on('end', function() { - var buf = new Buffer(total), written = 0; - buf.fill(0); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - part.copy(buf, written); - written += part.length; - } - callback && callback(buf); - }); - tmp.end(inbuf) - }, - - inflate : function(/*Buffer*/outputBuffer) { - var x = { - x: new JSInflater(inbuf) - }; - x.x.inflate(outputBuffer); - delete(x.x); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json deleted file mode 100644 index 6f8f7597..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "adm-zip", - "version": "0.4.4", - "description": "A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk", - "keywords": [ - "zip", - "methods", - "archive", - "unzip" - ], - "homepage": "http://github.com/cthackers/adm-zip", - "author": { - "name": "Nasca Iacob", - "email": "sy@another-d-mention.ro", - "url": "https://github.com/cthackers" - }, - "bugs": { - "url": "https://github.com/cthackers/adm-zip/issues", - "email": "sy@another-d-mention.ro" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/cthackers/adm-zip/master/MIT-LICENSE.txt" - } - ], - "main": "adm-zip.js", - "repository": { - "type": "git", - "url": "https://github.com/cthackers/adm-zip.git" - }, - "engines": { - "node": ">=0.3.0" - }, - "readme": "# ADM-ZIP for NodeJS\r\n\r\nADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). \r\n\r\n# Installation\r\n\r\nWith [npm](http://npmjs.org) do:\r\n\r\n $ npm install adm-zip\r\n\t\r\n## What is it good for?\r\nThe library allows you to:\r\n\r\n* decompress zip files directly to disk or in memory buffers\r\n* compress files and store them to disk in .zip format or in compressed buffers\r\n* update content of/add new/delete files from an existing .zip\r\n\r\n# Dependencies\r\nThere are no other nodeJS libraries that ADM-ZIP is dependent of\r\n\r\n# Examples\r\n\r\n## Basic usage\r\n```javascript\r\n\r\n\tvar AdmZip = require('adm-zip');\r\n\r\n\t// reading archives\r\n\tvar zip = new AdmZip(\"./my_file.zip\");\r\n\tvar zipEntries = zip.getEntries(); // an array of ZipEntry records\r\n\r\n\tzipEntries.forEach(function(zipEntry) {\r\n\t console.log(zipEntry.toString()); // outputs zip entries information\r\n\t\tif (zipEntry.entryName == \"my_file.txt\") {\r\n\t\t console.log(zipEntry.data.toString('utf8')); \r\n\t\t}\r\n\t});\r\n\t// outputs the content of some_folder/my_file.txt\r\n\tconsole.log(zip.readAsText(\"some_folder/my_file.txt\")); \r\n\t// extracts the specified file to the specified location\r\n\tzip.extractEntryTo(/*entry name*/\"some_folder/my_file.txt\", /*target path*/\"/home/me/tempfolder\", /*maintainEntryPath*/false, /*overwrite*/true);\r\n\t// extracts everything\r\n\tzip.extractAllTo(/*target path*/\"/home/me/zipcontent/\", /*overwrite*/true);\r\n\t\r\n\t\r\n\t// creating archives\r\n\tvar zip = new AdmZip();\r\n\t\r\n\t// add file directly\r\n\tzip.addFile(\"test.txt\", new Buffer(\"inner content of the file\"), \"entry comment goes here\");\r\n\t// add local file\r\n\tzip.addLocalFile(\"/home/me/some_picture.png\");\r\n\t// get everything as a buffer\r\n\tvar willSendthis = zip.toBuffer();\r\n\t// or write everything to disk\r\n\tzip.writeZip(/*target file name*/\"/home/me/files.zip\");\r\n\t\r\n\t\r\n\t// ... more examples in the wiki\r\n```\r\n\r\nFor more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki).\r\n\r\n[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip)\r\n", - "readmeFilename": "README.md", - "_id": "adm-zip@0.4.4", - "_from": "adm-zip@~0.4.3" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip deleted file mode 100644 index d57bfc075800e3f49b0a3e0ceca9a199d82c4c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4189 zcmWIWW@h1H00FMbOb0LnN(cby#FCPt%%swi)Z%y`F3}HwtL8vcErLaLVsQ!{9hx|F z_@$OBgrruKD7fS&m*%GCmFSgJlprkrS%K<IIV{E`<s{~1E2L%Sq@wEmgQiy&x8D4m zl++?5*DIj;R~m~}kjv8$8buhG7&sWjfEtf9@wEjpF);jNW?)douQ4MtB_%Zv<m}kM zvwgD-1onLvSv)6-Gxz;o%Lgp08zvT-ot@agxsIc6L*|zJ`;wFHUJY|{nm6-({xYM_ zSF7^xvRpfykXBsReEN>h!4ktSn++dSWwfX5n<3HEoL1F5d!{YZ9ZQq4O_y1vGVZ?B zJ#^AQp|`wthxz7%5Ba3t$7V}EX+F30^i`jQoJ+3XzF6@?jE#Brug)7a@vc^vdnV3p zsCuuv<F>&L)dM*-GjhFU3~#KIo!)1&XS;j#R)5x}^WThE<P~2&GGzSO^YE3`?aTMq zY|J}dxuvdS;bxcGI3_V$(P(2quHruh#udhWf<_Tv_NM(U*?w-qS7}`noA4(qi{$To z%@%sSxNfHU6cg=b#XB~Ie(cX=4$at8{`kc^k+r44>6#P&OS(!$pS}6lG<%w<oR8ju ztL>~-2i|^Ob$*)stiqPfm3lm-Z$$!M+Me_IWcT1<uJNI>XIJ0*Zx|n7|2W|ETsxzq zj#mOSe`*EIJJfdd$Gsy3B36^xc`X)3tn^nXKX6L;k5H-<^Z!`Qxa$g`DqULQGTDoK zJ~?Zhvds|;_u}2D(c%`Q+sHCMr0Kd#Si#hkA1Tojxof)?&%K~p_-+Xkn`m&9O8Xqm z6@05EnY#ZJ$@C6<C$j28)AV1gp&Qx$h{^|~>zw!0N@6cre?nemla=Pi^Cl@q{+43f zW#(?oJtrR|p>=YmMv_P5!EZILo+*KXy|#A_8a@tDvTciB)T*QDrsTc$gJiPTQu_t& zfuAL22$|}pEKd=1-{R+TVk%3aYW;=_s~(<qEoiydKC529=~QH2OvSuUr+>!%V+3U) z?1@s3m_!+0l$w~5pO;fPnmR{QCp}ZAI{wr-nk+{P&4DO12_(zn{M=Mn6J)e5AFa!& zU6(U5i7?=5xvKz6Ob`II;Xwes9nZy}02XItkYL!5|8C>gzh@X>w1M9C*&u#^H^K(Y z);_Wg*jf*uwm-5h1>LM0K&Haz3BqA32-%{^0J8<;+5{j*_Xo%pto;RiR>Pct>_N<4 z1+vx4u~?1T$3V94z`N1~Ag`g*$o66OL}2!TqU<ql`yky5Wa|WGJzWg44xL7}4zu@y zY@Hk<X2>G-Wsog<a4hx|$TAoWOEeJ6us1GMq0z|5pak?+IDX3z{U2m&9S$Bm0J1hg z!TS(0jn7&=xV6eaYu^C7Ug)U@$&V0gQChfI?O*PH0&G8&#%I4e+<rx%{atK$?MH6I zV6*tcC!wPti(xcz7ApWPR^-HMF>)=1&Ef@>M>m5khS34utU#XtM+<<kf`x%$2R8$Q YI73NBX0ZYg<yL}w-3rP1xuBjq04-@*$N&HU diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip deleted file mode 100644 index f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPu^^f#DxB1A{7ljTxCK zDXDoNXU7Jf?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)iF=(-fonmF@8a6u=O(1Aj^*S$ zTk-7o>`Q0FU+*myj^J;e>HC@Q`ObMwFOy!RCm;BFf$wXLnIQ}N*DrkG#?>(ezAN6Q zEH}P#Vb|;GmdS|@67PQ%tWIw}EPLhN?rYaN*ym<X@1E%-+p&K8;*TG6dDzUZCMSQc zRekAW>sIDu!hBwR$4!GBst0mvX5@NH7~WVZJH5}uX1;s%Mt-)a`EM&Z?3^wfUCew* z^6=5pZOivZ=EhD>+fvuDa5KwY9md)7X04r>!Cm{Oz_`M=Pf#i1%HFEK>+|L+zMR4P z$zJKxm7TorKHcp68o2+Aa8Qy)%Jsw)?Z@($*<M|!cz^8T-4ju-mz|rW{NK3C#O`YE z@9Z%B)wVNY99EWdmNbMO`MauL-TumB4&I{mjf(5%DrMQeU9fxUM@Ihq*MjTv;(qSC zRpa<?inHqXUnfM^107dBne9=*BpsHxxAUP!i59<9fzw8(`3~<IMb&?(cB!!a+a0oJ zmBT8JC#h-{-&{7H=IhjmOYE+0y)vOQCWGawP{#*GRf~6T6`yBKPdd3xN%)tDd-X!@ zLwCGcdAycwxgl$`Y=O;+pfH)2!Y#Tk8^cc=Dvo<0o^n*~gSpNEugGbFp-1>u#7(rj zaq`oWBiXAIr$!#yxbx|Xo?PR)<xau7dpd2}TAsd{dPQ?W$08-E-K(3EPpx#V;n_b| zY?Fetb!0|sYLDL3e-XA_UB?ehS)nmu@1#nZz&Se_l{uQKS@$mvxRUK4FMd#P6@SJr zP7cm=$)tysUH;Fjf3m|eF=pD-BPMOe7o{eq<mcs7jwaI4L^=S8R2_dJ9Zj91Md$z) zp#)NAaei(ptX(o%!H-t(G^*eknd}*Gwdz%X<tGS$+V>!U-UjDlPymZFGDt9l|M}3p z*6=JNjDGOyJ(wThjoSth24owsH7P*-0%TiM+99^UXyF71A7Trx-UG}QkZTiw7~LNr zTd?*ekgYE0X5H}h?-@pz)i4^_YRn!7venD6SdH5MK(_C|yV3<9`<N^tUWC!e0gBm6 zf!PO&vd6gXgLFNRtrM8_bTP;}({&K*U^KFI=>0xvl=zcl#0*)aeh#u_PJe%b69<fj zB^rcfm@Q6KxMfN}e}&_>4AD12w$|a`!2=*a8asUjTMwi0S*r)PRvBpRXJEGsJ@p{@ z5n?S$vlpBFtAf9Q?T69$>{o}|uL!h%1{+@cky|v_ELKeY4z?IZ6KAmk&|))AycQ!@ dR@f|tMKp{K@MZ=2gn@wz2rF0^7_M-GcmP+qZUz7V diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip deleted file mode 100644 index f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPu^^f#DxB1A{7ljTxCK zDXDoNXU7Jf?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)iF=(-fonmF@8a6u=O(1Aj^*S$ zTk-7o>`Q0FU+*myj^J;e>HC@Q`ObMwFOy!RCm;BFf$wXLnIQ}N*DrkG#?>(ezAN6Q zEH}P#Vb|;GmdS|@67PQ%tWIw}EPLhN?rYaN*ym<X@1E%-+p&K8;*TG6dDzUZCMSQc zRekAW>sIDu!hBwR$4!GBst0mvX5@NH7~WVZJH5}uX1;s%Mt-)a`EM&Z?3^wfUCew* z^6=5pZOivZ=EhD>+fvuDa5KwY9md)7X04r>!Cm{Oz_`M=Pf#i1%HFEK>+|L+zMR4P z$zJKxm7TorKHcp68o2+Aa8Qy)%Jsw)?Z@($*<M|!cz^8T-4ju-mz|rW{NK3C#O`YE z@9Z%B)wVNY99EWdmNbMO`MauL-TumB4&I{mjf(5%DrMQeU9fxUM@Ihq*MjTv;(qSC zRpa<?inHqXUnfM^107dBne9=*BpsHxxAUP!i59<9fzw8(`3~<IMb&?(cB!!a+a0oJ zmBT8JC#h-{-&{7H=IhjmOYE+0y)vOQCWGawP{#*GRf~6T6`yBKPdd3xN%)tDd-X!@ zLwCGcdAycwxgl$`Y=O;+pfH)2!Y#Tk8^cc=Dvo<0o^n*~gSpNEugGbFp-1>u#7(rj zaq`oWBiXAIr$!#yxbx|Xo?PR)<xau7dpd2}TAsd{dPQ?W$08-E-K(3EPpx#V;n_b| zY?Fetb!0|sYLDL3e-XA_UB?ehS)nmu@1#nZz&Se_l{uQKS@$mvxRUK4FMd#P6@SJr zP7cm=$)tysUH;Fjf3m|eF=pD-BPMOe7o{eq<mcs7jwaI4L^=S8R2_dJ9Zj91Md$z) zp#)NAaei(ptX(o%!H-t(G^*eknd}*Gwdz%X<tGS$+V>!U-UjDlPymZFGDt9l|M}3p z*6=JNjDGOyJ(wThjoSth24owsH7P*-0%TiM+99^UXyF71A7Trx-UG}QkZTiw7~LNr zTd?*ekgYE0X5H}h?-@pz)i4^_YRn!7venD6SdH5MK(_C|yV3<9`<N^tUWC!e0gBm6 zf!PO&vd6gXgLFNRtrM8_bTP;}({&K*U^KFI=>0xvl=zcl#0*)aeh#u_PJe%b69<fj zB^rcfm@Q6KxMfN}e}&_>4AD12w$|a`!2=*a8asUjTMwi0S*r)PRvBpRXJEGsJ@p{@ z5n?S$vlpBFtAf9Q?T69$>{o}|uL!h%1{+@cky|v_ELKeY4z?IZ6KAmk&|))AycQ!@ dR@f|tMKp{K@MZ=2gn@wz2rF0^7_M-GcmP+qZUz7V diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip deleted file mode 100644 index 188eccbe8bdb2b5b288857de8a397b77ff8e7414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmWIWW@Zs#U|`^2P@7ZZFx{>BaWati9*FrEWEe_Pi%axDgkExfURr1fCj+yAMzOy( z5SLbPGcdBeU}j(d6I0I|<ZLkDakyB$`~_1P^FiAq&Q}7Me3dg@3aUhxT$mmAzunx; zNHaw3`LPw7^8fM5uJNfXYM*p)&V}!93wvx9PusoumgEef6sbiXJ|`SBbq<M6)!}lx z)U@^AVV-W&bHe)s#RGs&<pMg4fk7PTR4@Zdu)>@QcA+THb;_774De=Tl4Hi@R|&9D zj6iZrBZ!Iab5@AY(R>Xt6PKePW->4cF#L5~4Kp(|1ZWh<i5Nz)vVkmS0>b$~`W1-7 F004HEX6gU{ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip deleted file mode 100644 index 86a8ec776107c075ce2c7f803472aa97dc25cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4086 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKug#8$f#DxB1A{7ljTxCK zDXDoNXNLrOXB{!%x%*orDNL7T*LzK_x2!VJeW5bi5k-gZ?Avsb=Zu!4|9kcN#M_=N zJD50Aa(3KH%-*MUj5Wxa#ZO>UzO>!~o_+To9#C_85NaE`O1grh=FZ&QEHlZ6OP1$n zoEF@}!TxC(`$Xsa8&_R_IDN%}1GCdwZht?zW3T_@j(rxZ3^uT{sAoP~cOhU)poA26 z0Pj-w(;r&6-<DYNR4vwBZ6W-&>GYYM2hL5r^yAT*(l1*lJYiMheYtftZz>OSSaPqN z{2hl4BI#T$OmpHcos|uc+iv*(wTqEj`m?`VIXk`ghHgG`vXke~<&Wacw^G)r>$RQ_ z)Gg>Wkvh4&*q-g@)c*x#Grum_6m>;1(eA*<nyc(8H>Wdc$FU#Iu+Qs}E4{VhzkYX4 zkaAn1#-8(<N7fv^<JdVh;>yMz9sgOW(_5XqZ~qRqG+=f<I9vVCzUA}h$J_t;eVe_e zw(k3$`s6rUd!dlX9Cy_RT&_=#H8RC)*tM@`!)Dh^wtvosw;4AvJY$ZtXcv63RpTnx zBIbNm!^+;zbD|#XIrL<o4qK<WS^KO8_IrUoTMwIEvfOo~Q~0(aA9wV-Gp-^6T&q6b z5z?Bn%vGzhrXc6po)yb4xZPYg@0IC-+1x7xgI@(Qn{_YRYd>SD%&BaXj!8_Fg-RYh z!HeWd`ApTH<hC?OuPfPgMAJ%TUpagAlDJouFY?W%y-BvPo4rfspv&9DyE`v&tcdyT zBsMiyW=UkZM|(;9vdKm3q~_@<RlN#($=KpBV@~MZKPCHK%foUiW&+eBCIQA5r6#82 z=jBw6ro_>dNUM~njz1-iCc)9dkk*AEfh1U*pPLG6MvT_SqxCT*^)VxpJp-<mwhFK$ z1OZT+8wAkX#as*uU~xtU35M`LAG+5Xo@Ip54_>_o^8>tb+aSV#Yy-9y0I02wY>P@e z#1<GWoB-iNY{Au{huH#hZ2}OZ`vYVP*7iNJ)dk(G8@~QM!w9n)Mk8B|*$Y6ndN~%W zQTqhQ_8oXvx&UM!lO@E9Fd8{PF?$X$`#@3l7`J_p?f|lN0<)ej23cpi4q_dQMz#*U zFD8u=e{zhNA&b=aK(@^3?@w^zfYGo-gRl&<fv5_%ObO_(aQv1b`YXuRIvhNB0OUtw zr>|h^VKhE#_2AYj1FgLQ>?)zB9wa|PtVL<1VzYl$@HepiFdCoz>TvrNf%Ye{;k6&R zZGz2W#nkU$i(xcz7ApWPe#(K@V&obLo5iq*hS34utU#YIFmM531q%a11~-TY0JSC= A-v9sr diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip deleted file mode 100644 index b4602c94ee000ee54c71c9302b9db956b3fd9f0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4170 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPvB~f#DxB1A{7ljTxCK zDXDoNXQu|9?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)i93_p4ke3CzKi$N9zW;5dzFZ0 zMcTgoGox;9F7ul$xurQUvUJbEliN0j*K#$7a-Ctgd*jw*uY=MV&!uCglyVrj-+vW( zUOi)>@$~4X$#pJL>1_46YY#n?i+b*}Jo-uVy^_<BXZL+|%)c<X=)=)|uCTMr8-Gc; zR$cY$oTvC@p6-q;`&mbuL(fIuW$hFBa>v)ZUoP&g=ls%;9f#N2_1;tU*kv)*ZNBCl z-}UVu)+enwT{LHlbnuJP1$KIJ-FhO{rpj7Rex&JGnEG-WWqgs{^slshzT@je^A-Oi zCUQ@GopEk{TH)oB8*WIdh93FC7A_`Qzw%tNY9D{vtTUpE7rxwiU2)>?c`8EDZ!i7{ zGxY9Z-~2JdG-8MRgHO9&ZGL*JY}SJna@@hTbt((L^dvX$`CL(P*RR0P?8RU4&%9rY zxp?oNvK17GVBY#bUT3l78jt4pp<LB!#rq~V2sed%VyNL>Vs(H&ELHQu{H+UonPXJe ztl@Uscx;vL#?ujB`Ld6M#yB1HQkxi3<Zw`3bg{33_R1SieyC)J8B}^q)}0*s;7$=E zOO}$#?KfOX3+{E!G8cJjyku>}R?!ts-ccvbLyk&a;IDC*Jb4jE5a-Q>)q;Nxwq0jG zc(0h#Qs1cSsHtmuO6&y%QRiH)L#ITHf+m$q1<FLaG$r$wZ#bW+!D`#Izc*#iAqkIo z&&Km2!CXI^-bFeGD>RuVDn=hXZE~=bjfG!@G5q2Qp>W>+aV+kSs;^%VS4^2Aa^kAO zkIO&r{bPV-U(8ggM@*`WFG@{J$<NEF98I31$&;?hQyqWu98H&_#pZw%n*`Ejaei(p ztQ9g^osU-MRIkn%nd}*Gwcb^LWhMxK+VLQO-qz+~PymZFGDt9l|M}3p*6=JNjDGOy zJ(wThjoSth24owsH6TFke`H%!+99^UXyF71A7TrxUINS(kZTiw7~LNrTd?*SkgYE0 zX5H}h?-@pz)i4^_YRsMmvenD6SdH4xK(_C|yV3<9`<N^tUWC!e0gBlhf!PO&vd6gX zgLE;FtrM8_bTP;}({&K*U^KFI=>0osl=zcl#0*)a{tU8ZPJe%b69<fjB^rcfnC(kd zxMfN}e}&_>4ABQdw$|a`!2=*a8asUjTMwi0S*r)PRvBpRTVVGKJ@p{@5n?S$BNv<f ztAf9Q?T69$>{o}|uL!iihYhd&$gLP`7AvNH2U`rIiL+P%Xt4?>UW<{dDQp(QA{s^q Vc(Ve1!oa`<gcU3d412giJOGZ1Gxh)g diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip deleted file mode 100644 index e2add30dc0e3129dc89e20a71abe7314052d0002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5878 zcmeI0PmkMF5Wv0tgTRNXf(jv3RMVxaQprk%5C^!hPU38=b!^La8Wst)PW-ZY;MgnM zVRvu90S^5Fh!YYABqS<6LMw5E?|?vDH~^P|Dz%82=Q!(Rlh8ZPt~2rToB7SmvqtZY zy?gfDC5b-ozISh1{Fr`SMCoT)!uykqrML0QZrUqnla0mMei{f3Sy+7bW4<kZOuufR zT&7{NL-5#92F-Xd8M7#>Wk(r-b2E=Vnm2Q0iJ5-rM<2kDhpf=eLwvlT`|@htI1E^_ zCf>_SRLS$<iDK^Wix~FzpIrF#pR<xg*VcN)5f1_u3Ab4?=4r~~2zUx3mazUY>?eMd zu|R=g!WhIu7>xX6pDB>V;77-Bz>*Xd;(q4yh)4V2!yrC5mT_h_LNjSR%ntp8;p71P zG>r$`M|%)VbM0ruqs*o7YBpl9=}t8^ZwN@h{7~i*T4PW=f<vB-;z<Sxz9R`AkPQWR zGzcdF`A|F#`Iu)pfz%VeKgv=WJ)fi)0r{!GI1c!bBokpBO!^^DM+yX-Ow+5VKuUuH z7LgXlaWhUJWnn0z1&)4;SWmnYb0|NU8{|(@l+wuIC?3y8!c%!TNg_mIQgB8PW6A{a zeKyEwggnPZ4&y@#Z4gHRr+Cx1WZA<<en0+@iC9E<5XBj~D$*?$Ksb@F>hw`M^1~4N zY??6S@<^tkA{>lv(oZv7c<zUA5GR7S7-kLmZ4F$j<@HoY1KkDNv2N*2tqGf|i}#xf z^mMOnbv?itj%s>)V6{Ls_h45yn+j;}*pBA9U^%khu?=0rG2Lt!-KK8tKppi=%L7C2 z=pGvNEFj?2l&+y(3p$$9XrpDdt{b|yr^qecGs$MlazF)Jbv(V%HB<-eu47xShWI9$ zHFdM)AVuqFrdLBMj)8UyZ@_J<hCwJ<?V|S%`3DWl-gESwwg+v?XlgiE*U&SyZfH3Q zgK8M6-cg{bcGMm6&H)RpI5JJky@Os`qaos{_}}n!%cL+GmgzZot6-FlH&gBDuBL$M z=q@Fs<yaj>rgWkPT1O+OXKJ|>O0`JPY(;PiC9I1<7rsDKQw_9*%VW+hU+tveEf$d4 z(-e@~3G;(E3XiKwQdN?wl2nxhi-xpVNv^N2BvlEiHY3$$q}q&VYc?bQQ9{yq%x1^1 z>O7-Bb)Eq_tySll|KE9L<ILOAs!r22+MeKtdQS9N><h^fi17{SC8_uL&%58g_Txq& zfBNkYac}RgCR~!rgk>iv>Q$8~*FMWBg?!;oexFlTb+if!d3y)1#W;wvw7*qGAKX3v z-NPq8Y!v81meHrXU}f~zOVIN@u`=)e?~^ZycjnDJ#6p%6db)E~@My_?S<TDaVP)LK zFMj=saBtkpafK}77JHGG=hpAa#_7zKdT(V|{mCQoaul+7Y09}=+!k-mV4E0MZ$0d! zUsuL%KX`DTVtl>+P~Z!>4qKaHUqS5W=hw!VW9Lr!%lO~8e+hme*YU5<_*aqt^K)zY w<+H&u@KyG=02lJ<z<}Vb3v0pU9mO(mvCxIIch5hARwWt#j?PKa=y|&P7yOI$IRF3v diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip deleted file mode 100644 index 86a8ec776107c075ce2c7f803472aa97dc25cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4086 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKug#8$f#DxB1A{7ljTxCK zDXDoNXNLrOXB{!%x%*orDNL7T*LzK_x2!VJeW5bi5k-gZ?Avsb=Zu!4|9kcN#M_=N zJD50Aa(3KH%-*MUj5Wxa#ZO>UzO>!~o_+To9#C_85NaE`O1grh=FZ&QEHlZ6OP1$n zoEF@}!TxC(`$Xsa8&_R_IDN%}1GCdwZht?zW3T_@j(rxZ3^uT{sAoP~cOhU)poA26 z0Pj-w(;r&6-<DYNR4vwBZ6W-&>GYYM2hL5r^yAT*(l1*lJYiMheYtftZz>OSSaPqN z{2hl4BI#T$OmpHcos|uc+iv*(wTqEj`m?`VIXk`ghHgG`vXke~<&Wacw^G)r>$RQ_ z)Gg>Wkvh4&*q-g@)c*x#Grum_6m>;1(eA*<nyc(8H>Wdc$FU#Iu+Qs}E4{VhzkYX4 zkaAn1#-8(<N7fv^<JdVh;>yMz9sgOW(_5XqZ~qRqG+=f<I9vVCzUA}h$J_t;eVe_e zw(k3$`s6rUd!dlX9Cy_RT&_=#H8RC)*tM@`!)Dh^wtvosw;4AvJY$ZtXcv63RpTnx zBIbNm!^+;zbD|#XIrL<o4qK<WS^KO8_IrUoTMwIEvfOo~Q~0(aA9wV-Gp-^6T&q6b z5z?Bn%vGzhrXc6po)yb4xZPYg@0IC-+1x7xgI@(Qn{_YRYd>SD%&BaXj!8_Fg-RYh z!HeWd`ApTH<hC?OuPfPgMAJ%TUpagAlDJouFY?W%y-BvPo4rfspv&9DyE`v&tcdyT zBsMiyW=UkZM|(;9vdKm3q~_@<RlN#($=KpBV@~MZKPCHK%foUiW&+eBCIQA5r6#82 z=jBw6ro_>dNUM~njz1-iCc)9dkk*AEfh1U*pPLG6MvT_SqxCT*^)VxpJp-<mwhFK$ z1OZT+8wAkX#as*uU~xtU35M`LAG+5Xo@Ip54_>_o^8>tb+aSV#Yy-9y0I02wY>P@e z#1<GWoB-iNY{Au{huH#hZ2}OZ`vYVP*7iNJ)dk(G8@~QM!w9n)Mk8B|*$Y6ndN~%W zQTqhQ_8oXvx&UM!lO@E9Fd8{PF?$X$`#@3l7`J_p?f|lN0<)ej23cpi4q_dQMz#*U zFD8u=e{zhNA&b=aK(@^3?@w^zfYGo-gRl&<fv5_%ObO_(aQv1b`YXuRIvhNB0OUtw zr>|h^VKhE#_2AYj1FgLQ>?)zB9wa|PtVL<1VzYl$@HepiFdCoz>TvrNf%Ye{;k6&R zZGz2W#nkU$i(xcz7ApWPe#(K@V&obLo5iq*hS34utU#YIFmM531q%a11~-TY0JSC= A-v9sr diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js deleted file mode 100644 index 70acb517..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var Attr = require("../util").FileAttr, - Zip = require("../adm-zip"), - fs = require("fs"); - -//zip.addLocalFile("./test/readonly.txt"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js deleted file mode 100644 index 05480541..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js +++ /dev/null @@ -1,84 +0,0 @@ -module.exports = { - /* The local file header */ - LOCHDR : 30, // LOC header size - LOCSIG : 0x04034b50, // "PK\003\004" - LOCVER : 4, // version needed to extract - LOCFLG : 6, // general purpose bit flag - LOCHOW : 8, // compression method - LOCTIM : 10, // modification time (2 bytes time, 2 bytes date) - LOCCRC : 14, // uncompressed file crc-32 value - LOCSIZ : 18, // compressed size - LOCLEN : 22, // uncompressed size - LOCNAM : 26, // filename length - LOCEXT : 28, // extra field length - - /* The Data descriptor */ - EXTSIG : 0x08074b50, // "PK\007\008" - EXTHDR : 16, // EXT header size - EXTCRC : 4, // uncompressed file crc-32 value - EXTSIZ : 8, // compressed size - EXTLEN : 12, // uncompressed size - - /* The central directory file header */ - CENHDR : 46, // CEN header size - CENSIG : 0x02014b50, // "PK\001\002" - CENVEM : 4, // version made by - CENVER : 6, // version needed to extract - CENFLG : 8, // encrypt, decrypt flags - CENHOW : 10, // compression method - CENTIM : 12, // modification time (2 bytes time, 2 bytes date) - CENCRC : 16, // uncompressed file crc-32 value - CENSIZ : 20, // compressed size - CENLEN : 24, // uncompressed size - CENNAM : 28, // filename length - CENEXT : 30, // extra field length - CENCOM : 32, // file comment length - CENDSK : 34, // volume number start - CENATT : 36, // internal file attributes - CENATX : 38, // external file attributes (host system dependent) - CENOFF : 42, // LOC header offset - - /* The entries in the end of central directory */ - ENDHDR : 22, // END header size - ENDSIG : 0x06054b50, // "PK\005\006" - ENDSUB : 8, // number of entries on this disk - ENDTOT : 10, // total number of entries - ENDSIZ : 12, // central directory size in bytes - ENDOFF : 16, // offset of first CEN header - ENDCOM : 20, // zip file comment length - - /* Compression methods */ - STORED : 0, // no compression - SHRUNK : 1, // shrunk - REDUCED1 : 2, // reduced with compression factor 1 - REDUCED2 : 3, // reduced with compression factor 2 - REDUCED3 : 4, // reduced with compression factor 3 - REDUCED4 : 5, // reduced with compression factor 4 - IMPLODED : 6, // imploded - // 7 reserved - DEFLATED : 8, // deflated - ENHANCED_DEFLATED: 9, // enhanced deflated - PKWARE : 10,// PKWare DCL imploded - // 11 reserved - BZIP2 : 12, // compressed using BZIP2 - // 13 reserved - LZMA : 14, // LZMA - // 15-17 reserved - IBM_TERSE : 18, // compressed using IBM TERSE - IBM_LZ77 : 19, //IBM LZ77 z - - /* General purpose bit flag */ - FLG_ENC : 0, // encripted file - FLG_COMP1 : 1, // compression option - FLG_COMP2 : 2, // compression option - FLG_DESC : 4, // data descriptor - FLG_ENH : 8, // enhanced deflation - FLG_STR : 16, // strong encryption - FLG_LNG : 1024, // language encoding - FLG_MSK : 4096, // mask header values - - /* Load type */ - FILE : 0, - BUFFER : 1, - NONE : 2 -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js deleted file mode 100644 index db5d69e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - /* Header error messages */ - "INVALID_LOC" : "Invalid LOC header (bad signature)", - "INVALID_CEN" : "Invalid CEN header (bad signature)", - "INVALID_END" : "Invalid END header (bad signature)", - - /* ZipEntry error messages*/ - "NO_DATA" : "Nothing to decompress", - "BAD_CRC" : "CRC32 checksum failed", - "FILE_IN_THE_WAY" : "There is a file in the way: %s", - "UNKNOWN_METHOD" : "Invalid/unsupported compression method", - - /* Inflater error messages */ - "AVAIL_DATA" : "inflate::Available inflate data did not terminate", - "INVALID_DISTANCE" : "inflate::Invalid literal/length or distance code in fixed or dynamic block", - "TO_MANY_CODES" : "inflate::Dynamic block code description: too many length or distance codes", - "INVALID_REPEAT_LEN" : "inflate::Dynamic block code description: repeat more than specified lengths", - "INVALID_REPEAT_FIRST" : "inflate::Dynamic block code description: repeat lengths with no first length", - "INCOMPLETE_CODES" : "inflate::Dynamic block code description: code lengths codes incomplete", - "INVALID_DYN_DISTANCE": "inflate::Dynamic block code description: invalid distance code lengths", - "INVALID_CODES_LEN": "inflate::Dynamic block code description: invalid literal/length code lengths", - "INVALID_STORE_BLOCK" : "inflate::Stored block length did not match one's complement", - "INVALID_BLOCK_TYPE" : "inflate::Invalid block type (type == 3)", - - /* ADM-ZIP error messages */ - "CANT_EXTRACT_FILE" : "Could not extract the file", - "CANT_OVERRIDE" : "Target file already exists", - "NO_ZIP" : "No zip file was loaded", - "NO_ENTRY" : "Entry doesn't exist", - "DIRECTORY_CONTENT_ERROR" : "A directory cannot have content", - "FILE_NOT_FOUND" : "File not found: %s", - "NOT_IMPLEMENTED" : "Not implemented", - "INVALID_FILENAME" : "Invalid filename", - "INVALID_FORMAT" : "Invalid or unsupported zip format. No END header found" -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js deleted file mode 100644 index 2191ec1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js +++ /dev/null @@ -1,84 +0,0 @@ -var fs = require("fs"), - pth = require("path"); - -fs.existsSync = fs.existsSync || pth.existsSync; - -module.exports = function(/*String*/path) { - - var _path = path || "", - _permissions = 0, - _obj = newAttr(), - _stat = null; - - function newAttr() { - return { - directory : false, - readonly : false, - hidden : false, - executable : false, - mtime : 0, - atime : 0 - } - } - - if (_path && fs.existsSync(_path)) { - _stat = fs.statSync(_path); - _obj.directory = _stat.isDirectory(); - _obj.mtime = _stat.mtime; - _obj.atime = _stat.atime; - _obj.executable = !!(1 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); - _obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); - _obj.hidden = pth.basename(_path)[0] === "."; - } else { - console.warn("Invalid path: " + _path) - } - - return { - - get directory () { - return _obj.directory; - }, - - get readOnly () { - return _obj.readonly; - }, - - get hidden () { - return _obj.hidden; - }, - - get mtime () { - return _obj.mtime; - }, - - get atime () { - return _obj.atime; - }, - - - get executable () { - return _obj.executable; - }, - - decodeAttributes : function(val) { - - }, - - encodeAttributes : function (val) { - - }, - - toString : function() { - return '{\n' + - '\t"path" : "' + _path + ",\n" + - '\t"isDirectory" : ' + _obj.directory + ",\n" + - '\t"isReadOnly" : ' + _obj.readonly + ",\n" + - '\t"isHidden" : ' + _obj.hidden + ",\n" + - '\t"isExecutable" : ' + _obj.executable + ",\n" + - '\t"mTime" : ' + _obj.mtime + "\n" + - '\t"aTime" : ' + _obj.atime + "\n" + - '}'; - } - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js deleted file mode 100644 index 935fc1a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = require("./utils"); -module.exports.Constants = require("./constants"); -module.exports.Errors = require("./errors"); -module.exports.FileAttr = require("./fattr"); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js deleted file mode 100644 index b14db8c1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js +++ /dev/null @@ -1,145 +0,0 @@ -var fs = require("fs"), - pth = require('path'); - -fs.existsSync = fs.existsSync || pth.existsSync; - -module.exports = (function() { - - var crcTable = [], - Constants = require('./constants'), - Errors = require('./errors'), - - PATH_SEPARATOR = pth.normalize("/"); - - - function mkdirSync(/*String*/path) { - var resolvedPath = path.split(PATH_SEPARATOR)[0]; - path.split(PATH_SEPARATOR).forEach(function(name) { - if (!name || name.substr(-1,1) == ":") return; - resolvedPath += PATH_SEPARATOR + name; - var stat; - try { - stat = fs.statSync(resolvedPath); - } catch (e) { - fs.mkdirSync(resolvedPath); - } - if (stat && stat.isFile()) - throw Errors.FILE_IN_THE_WAY.replace("%s", resolvedPath); - }); - } - - function findSync(/*String*/root, /*RegExp*/pattern, /*Boolean*/recoursive) { - if (typeof pattern === 'boolean') { - recoursive = pattern; - pattern = undefined; - } - var files = []; - fs.readdirSync(root).forEach(function(file) { - var path = pth.join(root, file); - - if (fs.statSync(path).isDirectory() && recoursive) - files = files.concat(findSync(path, pattern, recoursive)); - - if (!pattern || pattern.test(path)) { - files.push(pth.normalize(path) + (fs.statSync(path).isDirectory() ? PATH_SEPARATOR : "")); - } - - }); - return files; - } - - return { - makeDir : function(/*String*/path) { - mkdirSync(path); - }, - - crc32 : function(buf) { - var b = new Buffer(4); - if (!crcTable.length) { - for (var n = 0; n < 256; n++) { - var c = n; - for (var k = 8; --k >= 0;) // - if ((c & 1) != 0) { c = 0xedb88320 ^ (c >>> 1); } else { c = c >>> 1; } - if (c < 0) { - b.writeInt32LE(c, 0); - c = b.readUInt32LE(0); - } - crcTable[n] = c; - } - } - var crc = 0, off = 0, len = buf.length, c1 = ~crc; - while(--len >= 0) c1 = crcTable[(c1 ^ buf[off++]) & 0xff] ^ (c1 >>> 8); - crc = ~c1; - b.writeInt32LE(crc & 0xffffffff, 0); - return b.readUInt32LE(0); - }, - - methodToString : function(/*Number*/method) { - switch (method) { - case Constants.STORED: - return 'STORED (' + method + ')'; - case Constants.DEFLATED: - return 'DEFLATED (' + method + ')'; - default: - return 'UNSUPPORTED (' + method + ')' - } - - }, - - writeFileTo : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr) { - if (fs.existsSync(path)) { - if (!overwrite) - return false; // cannot overwite - - var stat = fs.statSync(path); - if (stat.isDirectory()) { - return false; - } - } - var folder = pth.dirname(path); - if (!fs.existsSync(folder)) { - mkdirSync(folder); - } - - var fd; - try { - fd = fs.openSync(path, 'w', 438); // 0666 - } catch(e) { - fs.chmodSync(path, 438); - fd = fs.openSync(path, 'w', 438); - } - if (fd) { - fs.writeSync(fd, content, 0, content.length, 0); - fs.closeSync(fd); - } - fs.chmodSync(path, attr || 438); - return true; - }, - - findFiles : function(/*String*/path) { - return findSync(path, true); - }, - - getAttributes : function(/*String*/path) { - - }, - - setAttributes : function(/*String*/path) { - - }, - - toBuffer : function(input) { - if (Buffer.isBuffer(input)) { - return input; - } else { - if (input.length == 0) { - return new Buffer(0) - } - return new Buffer(input, 'utf8'); - } - }, - - Constants : Constants, - Errors : Errors - } -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js deleted file mode 100644 index 02c31725..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js +++ /dev/null @@ -1,224 +0,0 @@ -var Utils = require("./util"), - Headers = require("./headers"), - Constants = Utils.Constants, - Methods = require("./methods"); - -module.exports = function (/*Buffer*/input) { - - var _entryHeader = new Headers.EntryHeader(), - _entryName = new Buffer(0), - _comment = new Buffer(0), - _isDirectory = false, - uncompressedData = null, - _extra = new Buffer(0); - - function getCompressedDataFromZip() { - if (!input || !Buffer.isBuffer(input)) { - return new Buffer(0); - } - _entryHeader.loadDataHeaderFromBinary(input); - return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize) - } - - function crc32OK(data) { - // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written - if (_entryHeader.flags & 0x8 != 0x8) { - if (Utils.crc32(data) != _entryHeader.crc) { - return false; - } - } else { - // @TODO: load and check data descriptor header - // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure - // (optionally preceded by a 4-byte signature) immediately after the compressed data: - } - return true; - } - - function decompress(/*Boolean*/async, /*Function*/callback) { - if (_isDirectory) { - if (async && callback) { - callback(new Buffer(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error. - } - return new Buffer(0); - } - - var compressedData = getCompressedDataFromZip(); - if (compressedData.length == 0) { - if (async && callback) callback(compressedData, Utils.Errors.NO_DATA);//si added error. - return compressedData; - } - - var data = new Buffer(_entryHeader.size); - data.fill(0); - - switch (_entryHeader.method) { - case Utils.Constants.STORED: - compressedData.copy(data); - if (!crc32OK(data)) { - if (async && callback) callback(data, Utils.Errors.BAD_CRC);//si added error - return Utils.Errors.BAD_CRC; - } else {//si added otherwise did not seem to return data. - if (async && callback) callback(data); - return data; - } - break; - case Utils.Constants.DEFLATED: - var inflater = new Methods.Inflater(compressedData); - if (!async) { - inflater.inflate(data); - if (!crc32OK(data)) { - console.warn(Utils.Errors.BAD_CRC + " " + _entryName.toString()) - } - return data; - } else { - inflater.inflateAsync(function(result) { - result.copy(data, 0); - if (crc32OK(data)) { - if (callback) callback(data, Utils.Errors.BAD_CRC); //si added error - } else { //si added otherwise did not seem to return data. - if (callback) callback(data); - } - }) - } - break; - default: - if (async && callback) callback(new Buffer(0), Utils.Errors.UNKNOWN_METHOD); - return Utils.Errors.UNKNOWN_METHOD; - } - } - - function compress(/*Boolean*/async, /*Function*/callback) { - if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) { - // no data set or the data wasn't changed to require recompression - if (async && callback) callback(getCompressedDataFromZip()); - return getCompressedDataFromZip(); - } - - if (uncompressedData.length && !_isDirectory) { - var compressedData; - // Local file header - switch (_entryHeader.method) { - case Utils.Constants.STORED: - _entryHeader.compressedSize = _entryHeader.size; - - compressedData = new Buffer(uncompressedData.length); - uncompressedData.copy(compressedData); - - if (async && callback) callback(compressedData); - return compressedData; - - break; - default: - case Utils.Constants.DEFLATED: - - var deflater = new Methods.Deflater(uncompressedData); - if (!async) { - var deflated = deflater.deflate(); - _entryHeader.compressedSize = deflated.length; - return deflated; - } else { - deflater.deflateAsync(function(data) { - compressedData = new Buffer(data.length); - _entryHeader.compressedSize = data.length; - data.copy(compressedData); - callback && callback(compressedData); - }) - } - deflater = null; - break; - } - } else { - if (async && callback) { - callback(new Buffer(0)); - } else { - return new Buffer(0); - } - } - } - - return { - get entryName () { return _entryName.toString(); }, - get rawEntryName() { return _entryName; }, - set entryName (val) { - _entryName = Utils.toBuffer(val); - var lastChar = _entryName[_entryName.length - 1]; - _isDirectory = (lastChar == 47) || (lastChar == 92); - _entryHeader.fileNameLength = _entryName.length; - }, - - get extra () { return _extra; }, - set extra (val) { - _extra = val; - _entryHeader.extraLength = val.length; - }, - - get comment () { return _comment.toString(); }, - set comment (val) { - _comment = Utils.toBuffer(val); - _entryHeader.commentLength = _comment.length; - }, - - get name () { var n = _entryName.toString(); return _isDirectory ? n.substr(n.length - 1).split("/").pop() : n.split("/").pop(); }, - get isDirectory () { return _isDirectory }, - - getCompressedData : function() { - return compress(false, null) - }, - - getCompressedDataAsync : function(/*Function*/callback) { - compress(true, callback) - }, - - setData : function(value) { - uncompressedData = Utils.toBuffer(value); - if (!_isDirectory && uncompressedData.length) { - _entryHeader.size = uncompressedData.length; - _entryHeader.method = Utils.Constants.DEFLATED; - _entryHeader.crc = Utils.crc32(value); - } else { // folders and blank files should be stored - _entryHeader.method = Utils.Constants.STORED; - } - }, - - getData : function() { - return decompress(false, null); - }, - - getDataAsync : function(/*Function*/callback) { - decompress(true, callback) - }, - - set header(/*Buffer*/data) { - _entryHeader.loadFromBinary(data); - }, - - get header() { - return _entryHeader; - }, - - packHeader : function() { - var header = _entryHeader.entryHeaderToBinary(); - // add - _entryName.copy(header, Utils.Constants.CENHDR); - if (_entryHeader.extraLength) { - _extra.copy(header, Utils.Constants.CENHDR + _entryName.length) - } - if (_entryHeader.commentLength) { - _comment.copy(header, Utils.Constants.CENHDR + _entryName.length + _entryHeader.extraLength, _comment.length); - } - return header; - }, - - toString : function() { - return '{\n' + - '\t"entryName" : "' + _entryName.toString() + "\",\n" + - '\t"name" : "' + _entryName.toString().split("/").pop() + "\",\n" + - '\t"comment" : "' + _comment.toString() + "\",\n" + - '\t"isDirectory" : ' + _isDirectory + ",\n" + - '\t"header" : ' + _entryHeader.toString().replace(/\t/mg, "\t\t") + ",\n" + - '\t"compressedData" : <' + (input && input.length + " bytes buffer" || "null") + ">\n" + - '\t"data" : <' + (uncompressedData && uncompressedData.length + " bytes buffer" || "null") + ">\n" + - '}'; - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js deleted file mode 100644 index f066d7ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js +++ /dev/null @@ -1,311 +0,0 @@ -var ZipEntry = require("./zipEntry"), - Headers = require("./headers"), - Utils = require("./util"); - -module.exports = function(/*String|Buffer*/input, /*Number*/inputType) { - var entryList = [], - entryTable = {}, - _comment = new Buffer(0), - filename = "", - fs = require("fs"), - inBuffer = null, - mainHeader = new Headers.MainHeader(); - - if (inputType == Utils.Constants.FILE) { - // is a filename - filename = input; - inBuffer = fs.readFileSync(filename); - readMainHeader(); - } else if (inputType == Utils.Constants.BUFFER) { - // is a memory buffer - inBuffer = input; - readMainHeader(); - } else { - // none. is a new file - } - - function readEntries() { - entryTable = {}; - entryList = new Array(mainHeader.diskEntries); // total number of entries - var index = mainHeader.offset; // offset of first CEN header - for(var i = 0; i < entryList.length; i++) { - - var tmp = index, - entry = new ZipEntry(inBuffer); - entry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR); - - entry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength); - - if (entry.header.extraLength) { - entry.extra = inBuffer.slice(tmp, tmp += entry.header.extraLength); - } - - if (entry.header.commentLength) - entry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength); - - index += entry.header.entryHeaderSize; - - entryList[i] = entry; - entryTable[entry.entryName] = entry; - } - } - - function readMainHeader() { - var i = inBuffer.length - Utils.Constants.ENDHDR, // END header size - n = Math.max(0, i - 0xFFFF), // 0xFFFF is the max zip file comment length - endOffset = 0; // Start offset of the END header - - for (i; i >= n; i--) { - if (inBuffer[i] != 0x50) continue; // quick check that the byte is 'P' - if (inBuffer.readUInt32LE(i) == Utils.Constants.ENDSIG) { // "PK\005\006" - endOffset = i; - break; - } - } - if (!endOffset) - throw Utils.Errors.INVALID_FORMAT; - - mainHeader.loadFromBinary(inBuffer.slice(endOffset, endOffset + Utils.Constants.ENDHDR)); - if (mainHeader.commentLength) { - _comment = inBuffer.slice(endOffset + Utils.Constants.ENDHDR); - } - readEntries(); - } - - return { - /** - * Returns an array of ZipEntry objects existent in the current opened archive - * @return Array - */ - get entries () { - return entryList; - }, - - /** - * Archive comment - * @return {String} - */ - get comment () { return _comment.toString(); }, - set comment(val) { - mainHeader.commentLength = val.length; - _comment = val; - }, - - /** - * Returns a reference to the entry with the given name or null if entry is inexistent - * - * @param entryName - * @return ZipEntry - */ - getEntry : function(/*String*/entryName) { - return entryTable[entryName] || null; - }, - - /** - * Adds the given entry to the entry list - * - * @param entry - */ - setEntry : function(/*ZipEntry*/entry) { - entryList.push(entry); - entryTable[entry.entryName] = entry; - mainHeader.totalEntries = entryList.length; - }, - - /** - * Removes the entry with the given name from the entry list. - * - * If the entry is a directory, then all nested files and directories will be removed - * @param entryName - */ - deleteEntry : function(/*String*/entryName) { - var entry = entryTable[entryName]; - if (entry && entry.isDirectory) { - var _self = this; - this.getEntryChildren(entry).forEach(function(child) { - if (child.entryName != entryName) { - _self.deleteEntry(child.entryName) - } - }) - } - entryList.splice(entryList.indexOf(entry), 1); - delete(entryTable[entryName]); - mainHeader.totalEntries = entryList.length; - }, - - /** - * Iterates and returns all nested files and directories of the given entry - * - * @param entry - * @return Array - */ - getEntryChildren : function(/*ZipEntry*/entry) { - if (entry.isDirectory) { - var list = [], - name = entry.entryName, - len = name.length; - - entryList.forEach(function(zipEntry) { - if (zipEntry.entryName.substr(0, len) == name) { - list.push(zipEntry); - } - }); - return list; - } - return [] - }, - - /** - * Returns the zip file - * - * @return Buffer - */ - compressToBuffer : function() { - if (entryList.length > 1) { - entryList.sort(function(a, b) { - var nameA = a.entryName.toLowerCase(); - var nameB = b.entryName.toLowerCase(); - if (nameA < nameB) {return -1} - if (nameA > nameB) {return 1} - return 0; - }); - } - - var totalSize = 0, - dataBlock = [], - entryHeaders = [], - dindex = 0; - - mainHeader.size = 0; - mainHeader.offset = 0; - - entryList.forEach(function(entry) { - entry.header.offset = dindex; - - // compress data and set local and entry header accordingly. Reason why is called first - var compressedData = entry.getCompressedData(); - // data header - var dataHeader = entry.header.dataHeaderToBinary(); - var postHeader = new Buffer(entry.entryName + entry.extra.toString()); - var dataLength = dataHeader.length + postHeader.length + compressedData.length; - - dindex += dataLength; - - dataBlock.push(dataHeader); - dataBlock.push(postHeader); - dataBlock.push(compressedData); - - var entryHeader = entry.packHeader(); - entryHeaders.push(entryHeader); - mainHeader.size += entryHeader.length; - totalSize += (dataLength + entryHeader.length); - }); - - totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length - // point to end of data and begining of central directory first record - mainHeader.offset = dindex; - - dindex = 0; - var outBuffer = new Buffer(totalSize); - dataBlock.forEach(function(content) { - content.copy(outBuffer, dindex); // write data blocks - dindex += content.length; - }); - entryHeaders.forEach(function(content) { - content.copy(outBuffer, dindex); // write central directory entries - dindex += content.length; - }); - - var mh = mainHeader.toBinary(); - if (_comment) { - _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment - } - - mh.copy(outBuffer, dindex); // write main header - - return outBuffer - }, - - toAsyncBuffer : function(/*Function*/onSuccess,/*Function*/onFail,/*Function*/onItemStart,/*Function*/onItemEnd) { - if (entryList.length > 1) { - entryList.sort(function(a, b) { - var nameA = a.entryName.toLowerCase(); - var nameB = b.entryName.toLowerCase(); - if (nameA > nameB) {return -1} - if (nameA < nameB) {return 1} - return 0; - }); - } - - var totalSize = 0, - dataBlock = [], - entryHeaders = [], - dindex = 0; - - mainHeader.size = 0; - mainHeader.offset = 0; - - var compress=function(entryList){ - var self=arguments.callee; - var entry; - if(entryList.length){ - var entry=entryList.pop(); - var name=entry.entryName + entry.extra.toString(); - if(onItemStart)onItemStart(name); - entry.getCompressedDataAsync(function(compressedData){ - if(onItemEnd)onItemEnd(name); - - entry.header.offset = dindex; - // data header - var dataHeader = entry.header.dataHeaderToBinary(); - var postHeader = new Buffer(name); - var dataLength = dataHeader.length + postHeader.length + compressedData.length; - - dindex += dataLength; - - dataBlock.push(dataHeader); - dataBlock.push(postHeader); - dataBlock.push(compressedData); - - var entryHeader = entry.packHeader(); - entryHeaders.push(entryHeader); - mainHeader.size += entryHeader.length; - totalSize += (dataLength + entryHeader.length); - - if(entryList.length){ - self(entryList); - }else{ - - - totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length - // point to end of data and begining of central directory first record - mainHeader.offset = dindex; - - dindex = 0; - var outBuffer = new Buffer(totalSize); - dataBlock.forEach(function(content) { - content.copy(outBuffer, dindex); // write data blocks - dindex += content.length; - }); - entryHeaders.forEach(function(content) { - content.copy(outBuffer, dindex); // write central directory entries - dindex += content.length; - }); - - var mh = mainHeader.toBinary(); - if (_comment) { - _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment - } - - mh.copy(outBuffer, dindex); // write main header - - onSuccess(outBuffer); - } - }); - } - }; - - compress(entryList); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS deleted file mode 100644 index 247b7543..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -# 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md deleted file mode 100644 index cd123b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md +++ /dev/null @@ -1,30 +0,0 @@ -`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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js deleted file mode 100755 index 29bfa8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json deleted file mode 100644 index 13d6751e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "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" - } - ], - "readme": "`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.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n successfully, since your desired outcome is already the case.\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", - "bugs": { - "url": "https://github.com/isaacs/rimraf/issues" - }, - "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.2.6", - "_from": "rimraf@~2.2.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js deleted file mode 100644 index ce62051f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js +++ /dev/null @@ -1,178 +0,0 @@ -module.exports = rimraf -rimraf.sync = rimrafSync - -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 rimraf (p, cb) { - if (!cb) throw new Error("No callback passed to rimraf()") - - var busyTries = 0 - rimraf_(p, 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, 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, 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, cb) { - fs.unlink(p, function (er) { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb) - if (er.code === "EISDIR") - return rmdir(p, er, cb) - } - return cb(er) - }) -} - -function fixWinEPERM (p, er, cb) { - fs.chmod(p, 666, function (er2) { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - fs.stat(p, function(er3, stats) { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, er, cb) - else - fs.unlink(p, cb) - }) - }) -} - -function fixWinEPERMSync (p, er, cb) { - try { - fs.chmodSync(p, 666) - } catch (er2) { - if (er2.code !== "ENOENT") - throw er - } - - try { - var stats = fs.statSync(p) - } catch (er3) { - if (er3 !== "ENOENT") - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, er) - else - fs.unlinkSync(p) -} - -function rmdir (p, originalEr, cb) { - // 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. - fs.rmdir(p, function (er) { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -function rmkids(p, cb) { - fs.readdir(p, function (er, files) { - if (er) - return cb(er) - var n = files.length - if (n === 0) - return fs.rmdir(p, cb) - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), function (er) { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - fs.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) { - try { - fs.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er) - if (er.code !== "EISDIR") - throw er - rmdirSync(p, er) - } -} - -function rmdirSync (p, originalEr) { - try { - fs.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) - } -} - -function rmkidsSync (p) { - fs.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f)) - }) - fs.rmdirSync(p) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh deleted file mode 100644 index 598f0163..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -for i in test-*.js; do - echo -n $i ... - bash setup.sh - node $i - ! [ -d target ] - echo "pass" -done -rm -rf target diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh deleted file mode 100644 index 2602e631..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js deleted file mode 100644 index 9c2e0b7b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js +++ /dev/null @@ -1,5 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf(path.join(__dirname, "target"), function (er) { - if (er) throw er -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js deleted file mode 100644 index eb71f104..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf.sync(path.join(__dirname, "target")) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE deleted file mode 100644 index 6d03581f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 'Dominic Tarr' - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md deleted file mode 100644 index 565e0e26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# stream-combiner - -<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master> - -## Combine (stream1,...,streamN) - -Turn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream -and reads from the last stream. - -Listening for 'error' will recieve errors from all streams inside the pipe. - -``` js - var Combine = require('stream-combiner') - var es = require('event-stream') - - Combine( //connect streams together with `pipe` - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - callback(null - , inspect(JSON.parse(data))) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) -``` - -## License - -MIT diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js deleted file mode 100644 index 99cf5b61..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var duplexer = require('duplexer') - -module.exports = function () { - - var streams = [].slice.call(arguments) - , first = streams[0] - , last = streams[streams.length - 1] - , thepipe = duplexer(first, last) - - if(streams.length == 1) - return streams[0] - else if (!streams.length) - throw new Error('connect called with empty args') - - //pipe all the streams together - - function recurse (streams) { - if(streams.length < 2) - return - streams[0].pipe(streams[1]) - recurse(streams.slice(1)) - } - - recurse(streams) - - function onerror () { - var args = [].slice.call(arguments) - args.unshift('error') - thepipe.emit.apply(thepipe, args) - } - - //es.duplex already reemits the error from the first and last stream. - //add a listener for the inner streams in the pipeline. - for(var i = 1; i < streams.length - 1; i ++) - streams[i].on('error', onerror) - - return thepipe -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore deleted file mode 100644 index 062c11e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -*.err \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml deleted file mode 100644 index ed05f88d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md deleted file mode 100644 index 61ff71aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# duplexer - -[![build status][1]][2] [![dependency status][3]][4] - -[![browser support][5]][6] - -Creates a duplex stream - -Taken from [event-stream][7] - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -## Example - -```js -var grep = cp.exec('grep Stream') - -duplex(grep.stdin, grep.stdout) -``` - -## Installation - -`npm install duplexer` - -## Tests - -`npm test` - -## Contributors - - - Dominictarr - - Raynos - - samccone - -## MIT Licenced - - [1]: https://secure.travis-ci.org/Raynos/duplexer.png - [2]: https://travis-ci.org/Raynos/duplexer - [3]: https://david-dm.org/Raynos/duplexer.png - [4]: https://david-dm.org/Raynos/duplexer - [5]: https://ci.testling.com/Raynos/duplexer.png - [6]: https://ci.testling.com/Raynos/duplexer - [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js deleted file mode 100644 index a188a210..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js +++ /dev/null @@ -1,87 +0,0 @@ -var Stream = require("stream") -var writeMethods = ["write", "end", "destroy"] -var readMethods = ["resume", "pause"] -var readEvents = ["data", "close"] -var slice = Array.prototype.slice - -module.exports = duplex - -function forEach (arr, fn) { - if (arr.forEach) { - return arr.forEach(fn) - } - - for (var i = 0; i < arr.length; i++) { - fn(arr[i], i) - } -} - -function duplex(writer, reader) { - var stream = new Stream() - var ended = false - - forEach(writeMethods, proxyWriter) - - forEach(readMethods, proxyReader) - - forEach(readEvents, proxyStream) - - reader.on("end", handleEnd) - - writer.on("drain", function() { - stream.emit("drain") - }) - - writer.on("error", reemit) - reader.on("error", reemit) - - stream.writable = writer.writable - stream.readable = reader.readable - - return stream - - function proxyWriter(methodName) { - stream[methodName] = method - - function method() { - return writer[methodName].apply(writer, arguments) - } - } - - function proxyReader(methodName) { - stream[methodName] = method - - function method() { - stream.emit(methodName) - var func = reader[methodName] - if (func) { - return func.apply(reader, arguments) - } - reader.emit(methodName) - } - } - - function proxyStream(methodName) { - reader.on(methodName, reemit) - - function reemit() { - var args = slice.call(arguments) - args.unshift(methodName) - stream.emit.apply(stream, args) - } - } - - function handleEnd() { - if (ended) { - return - } - ended = true - var args = slice.call(arguments) - args.unshift("end") - stream.emit.apply(stream, args) - } - - function reemit(err) { - stream.emit("error", err) - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json deleted file mode 100644 index 86ab2145..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "duplexer", - "version": "0.1.1", - "description": "Creates a duplex stream", - "keywords": [], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/duplexer.git" - }, - "main": "index", - "homepage": "https://github.com/Raynos/duplexer", - "contributors": [ - { - "name": "Jake Verbaten" - } - ], - "bugs": { - "url": "https://github.com/Raynos/duplexer/issues", - "email": "raynos2@gmail.com" - }, - "devDependencies": { - "tape": "0.3.3", - "through": "~0.1.4" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/Raynos/duplexer/raw/master/LICENSE" - } - ], - "scripts": { - "test": "node test" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "ie/8..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ] - }, - "readme": "# duplexer\n\n[![build status][1]][2] [![dependency status][3]][4]\n\n[![browser support][5]][6]\n\nCreates a duplex stream\n\nTaken from [event-stream][7]\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way.\n\n## Example\n\n```js\nvar grep = cp.exec('grep Stream')\n\nduplex(grep.stdin, grep.stdout)\n```\n\n## Installation\n\n`npm install duplexer`\n\n## Tests\n\n`npm test`\n\n## Contributors\n\n - Dominictarr\n - Raynos\n - samccone\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/duplexer.png\n [2]: https://travis-ci.org/Raynos/duplexer\n [3]: https://david-dm.org/Raynos/duplexer.png\n [4]: https://david-dm.org/Raynos/duplexer\n [5]: https://ci.testling.com/Raynos/duplexer.png\n [6]: https://ci.testling.com/Raynos/duplexer\n [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream\n", - "readmeFilename": "README.md", - "_id": "duplexer@0.1.1", - "_from": "duplexer@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js deleted file mode 100644 index 4988e0d9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js +++ /dev/null @@ -1,31 +0,0 @@ -var through = require("through") -var test = require("tape") - -var duplex = require("../index") - -var readable = through() -var writable = through(write) -var written = 0 -var data = 0 - -var stream = duplex(writable, readable) - -function write() { - written++ -} - -stream.on("data", ondata) - -function ondata() { - data++ -} - -test("emit and write", function(t) { - t.plan(2) - - stream.write() - readable.emit("data") - - t.equal(written, 1, "should have written once") - t.equal(data, 1, "should have recived once") -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json deleted file mode 100644 index 5b10d918..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "stream-combiner", - "version": "0.0.4", - "homepage": "https://github.com/dominictarr/stream-combiner", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/stream-combiner.git" - }, - "dependencies": { - "duplexer": "~0.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "event-stream": "~3.0.7" - }, - "scripts": { - "test": "set -e; for t in test/*.js; do node $t; done" - }, - "author": { - "name": "'Dominic Tarr'", - "email": "dominic.tarr@gmail.com", - "url": "http://dominictarr.com" - }, - "license": "MIT", - "readme": "# stream-combiner\n\n<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master>\n\n## Combine (stream1,...,streamN)\n\nTurn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream\nand reads from the last stream. \n\nListening for 'error' will recieve errors from all streams inside the pipe.\n\n``` js\n var Combine = require('stream-combiner')\n var es = require('event-stream')\n\n Combine( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n```\n\n## License\n\nMIT\n", - "readmeFilename": "README.md", - "description": "<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master>", - "bugs": { - "url": "https://github.com/dominictarr/stream-combiner/issues" - }, - "_id": "stream-combiner@0.0.4", - "_from": "stream-combiner@~0.0.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js deleted file mode 100644 index d17ddada..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('event-stream') -var combine = require('..') -var test = require('tape') - -test('do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); -}) - -test('3 pipe do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); - -}) - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore deleted file mode 100644 index c167ad5b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules -examples/extract/ -test/tmp/ -test/fixtures/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml deleted file mode 100644 index 2d26206d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE deleted file mode 100644 index 74489e2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md deleted file mode 100644 index 5bcc82cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# node-tar - -Tar for Node.js. - -[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/) - -## API - -See `examples/` for usage examples. - -### var tar = require('tar') - -Returns an object with `.Pack`, `.Extract` and `.Parse` methods. - -### tar.Pack([properties]) - -Returns a through stream. Use -[fstream](https://npmjs.org/package/fstream) to write files into the -pack stream and you will receive tar archive data from the pack -stream. - -The optional `properties` object are used to set properties in the tar -'Global Extended Header'. - -### tar.Extract([options]) - -Returns a through stream. Write tar data to the stream and the files -in the tarball will be extracted onto the filesystem. - -`options` can be: - -```js -{ - path: '/path/to/extract/tar/into', - strip: 0, // how many path segments to strip from the root when extracting -} -``` - -`options` also get passed to the `fstream.Writer` instance that `tar` -uses internally. - -### tar.Parse() - -Returns a writable stream. Write tar data to it and it will emit -`entry` events for each entry parsed from the tarball. This is used by -`tar.Extract`. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js deleted file mode 100644 index e150abf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js +++ /dev/null @@ -1,11 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Extract({ path: __dirname + "/extract" })) - .on("error", function (er) { - console.error("error here") - }) - .on("end", function () { - console.error("done") - }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js deleted file mode 100644 index 39f3f088..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js +++ /dev/null @@ -1,36 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Parse()) - .on("extendedHeader", function (e) { - console.error("extended pax header", e.props) - e.on("end", function () { - console.error("extended pax fields:", e.fields) - }) - }) - .on("ignoredEntry", function (e) { - console.error("ignoredEntry?!?", e.props) - }) - .on("longLinkpath", function (e) { - console.error("longLinkpath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("longPath", function (e) { - console.error("longPath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("entry", function (e) { - console.error("entry", e.props) - e.on("data", function (c) { - console.error(" >>>" + c.toString().replace(/\n/g, "\\n")) - }) - e.on("end", function () { - console.error(" <<<EOF") - }) - }) - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js deleted file mode 100644 index 6c1da237..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js +++ /dev/null @@ -1,30 +0,0 @@ -// just like the Entry class, but it buffers the contents -// -// XXX It would be good to set a maximum BufferEntry filesize, -// since it eats up memory. In normal operation, -// these are only for long filenames or link names, which are -// rarely very big. - -module.exports = BufferEntry - -var inherits = require("inherits") - , Entry = require("./entry.js") - -function BufferEntry () { - Entry.apply(this, arguments) - this._buffer = new Buffer(this.props.size) - this._offset = 0 - this.body = "" - this.on("end", function () { - this.body = this._buffer.toString().slice(0, -1) - }) -} - -inherits(BufferEntry, Entry) - -// collect the bytes as they come in. -BufferEntry.prototype.write = function (c) { - c.copy(this._buffer, this._offset) - this._offset += c.length - Entry.prototype.write.call(this, c) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js deleted file mode 100644 index 8e09042d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js +++ /dev/null @@ -1,169 +0,0 @@ -module.exports = EntryWriter - -var tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , inherits = require("inherits") - , BlockStream = require("block-stream") - , ExtendedHeaderWriter - , Stream = require("stream").Stream - , EOF = {} - -inherits(EntryWriter, Stream) - -function EntryWriter (props) { - var me = this - - if (!(me instanceof EntryWriter)) { - return new EntryWriter(props) - } - - Stream.apply(this) - - me.writable = true - me.readable = true - - me._stream = new BlockStream(512) - - me._stream.on("data", function (c) { - me.emit("data", c) - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) - - me._stream.on("end", function () { - me.emit("end") - me.emit("close") - }) - - me.props = props - if (props.type === "Directory") { - props.size = 0 - } - props.ustar = "ustar\0" - props.ustarver = "00" - me.path = props.path - - me._buffer = [] - me._didHeader = false - me._meta = false - - me.on("pipe", function () { - me._process() - }) -} - -EntryWriter.prototype.write = function (c) { - // console.error(".. ew write") - if (this._ended) return this.emit("error", new Error("write after end")) - this._buffer.push(c) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -EntryWriter.prototype.end = function (c) { - // console.error(".. ew end") - if (c) this._buffer.push(c) - this._buffer.push(EOF) - this._ended = true - this._process() - this._needDrain = this._buffer.length > 0 -} - -EntryWriter.prototype.pause = function () { - // console.error(".. ew pause") - this._paused = true - this.emit("pause") -} - -EntryWriter.prototype.resume = function () { - // console.error(".. ew resume") - this._paused = false - this.emit("resume") - this._process() -} - -EntryWriter.prototype.add = function (entry) { - // console.error(".. ew add") - if (!this.parent) return this.emit("error", new Error("no parent")) - - // make sure that the _header and such is emitted, and clear out - // the _currentEntry link on the parent. - if (!this._ended) this.end() - - return this.parent.add(entry) -} - -EntryWriter.prototype._header = function () { - // console.error(".. ew header") - if (this._didHeader) return - this._didHeader = true - - var headerBlock = TarHeader.encode(this.props) - - if (this.props.needExtended && !this._meta) { - var me = this - - ExtendedHeaderWriter = ExtendedHeaderWriter || - require("./extended-header-writer.js") - - ExtendedHeaderWriter(this.props) - .on("data", function (c) { - me.emit("data", c) - }) - .on("error", function (er) { - me.emit("error", er) - }) - .end() - } - - // console.error(".. .. ew headerBlock emitting") - this.emit("data", headerBlock) - this.emit("header") -} - -EntryWriter.prototype._process = function () { - // console.error(".. .. ew process") - if (!this._didHeader && !this._meta) { - this._header() - } - - if (this._paused || this._processing) { - // console.error(".. .. .. paused=%j, processing=%j", this._paused, this._processing) - return - } - - this._processing = true - - var buf = this._buffer - for (var i = 0; i < buf.length; i ++) { - // console.error(".. .. .. i=%d", i) - - var c = buf[i] - - if (c === EOF) this._stream.end() - else this._stream.write(c) - - if (this._paused) { - // console.error(".. .. .. paused mid-emission") - this._processing = false - if (i < buf.length) { - this._needDrain = true - this._buffer = buf.slice(i + 1) - } - return - } - } - - // console.error(".. .. .. emitted") - this._buffer.length = 0 - this._processing = false - - // console.error(".. .. .. emitting drain") - this.emit("drain") -} - -EntryWriter.prototype.destroy = function () {} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js deleted file mode 100644 index 4af5c410..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js +++ /dev/null @@ -1,213 +0,0 @@ -// A passthrough read/write stream that sets its properties -// based on a header, extendedHeader, and globalHeader -// -// Can be either a file system object of some sort, or -// a pax/ustar metadata entry. - -module.exports = Entry - -var TarHeader = require("./header.js") - , tar = require("../tar") - , assert = require("assert").ok - , Stream = require("stream").Stream - , inherits = require("inherits") - , fstream = require("fstream").Abstract - -function Entry (header, extended, global) { - Stream.call(this) - this.readable = true - this.writable = true - - this._needDrain = false - this._paused = false - this._reading = false - this._ending = false - this._ended = false - this._remaining = 0 - this._queue = [] - this._index = 0 - this._queueLen = 0 - - this._read = this._read.bind(this) - - this.props = {} - this._header = header - this._extended = extended || {} - - // globals can change throughout the course of - // a file parse operation. Freeze it at its current state. - this._global = {} - var me = this - Object.keys(global || {}).forEach(function (g) { - me._global[g] = global[g] - }) - - this._setProps() -} - -inherits(Entry, Stream) - -Entry.prototype.write = function (c) { - if (this._ending) this.error("write() after end()", null, true) - if (this._remaining === 0) { - this.error("invalid bytes past eof") - } - - // often we'll get a bunch of \0 at the end of the last write, - // since chunks will always be 512 bytes when reading a tarball. - if (c.length > this._remaining) { - c = c.slice(0, this._remaining) - } - this._remaining -= c.length - - // put it on the stack. - var ql = this._queueLen - this._queue.push(c) - this._queueLen ++ - - this._read() - - // either paused, or buffered - if (this._paused || ql > 0) { - this._needDrain = true - return false - } - - return true -} - -Entry.prototype.end = function (c) { - if (c) this.write(c) - this._ending = true - this._read() -} - -Entry.prototype.pause = function () { - this._paused = true - this.emit("pause") -} - -Entry.prototype.resume = function () { - // console.error(" Tar Entry resume", this.path) - this.emit("resume") - this._paused = false - this._read() - return this._queueLen - this._index > 1 -} - - // This is bound to the instance -Entry.prototype._read = function () { - // console.error(" Tar Entry _read", this.path) - - if (this._paused || this._reading || this._ended) return - - // set this flag so that event handlers don't inadvertently - // get multiple _read() calls running. - this._reading = true - - // have any data to emit? - while (this._index < this._queueLen && !this._paused) { - var chunk = this._queue[this._index ++] - this.emit("data", chunk) - } - - // check if we're drained - if (this._index >= this._queueLen) { - this._queue.length = this._queueLen = this._index = 0 - if (this._needDrain) { - this._needDrain = false - this.emit("drain") - } - if (this._ending) { - this._ended = true - this.emit("end") - } - } - - // if the queue gets too big, then pluck off whatever we can. - // this should be fairly rare. - var mql = this._maxQueueLen - if (this._queueLen > mql && this._index > 0) { - mql = Math.min(this._index, mql) - this._index -= mql - this._queueLen -= mql - this._queue = this._queue.slice(mql) - } - - this._reading = false -} - -Entry.prototype._setProps = function () { - // props = extended->global->header->{} - var header = this._header - , extended = this._extended - , global = this._global - , props = this.props - - // first get the values from the normal header. - var fields = tar.fields - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = header[field] - if (typeof val !== "undefined") props[field] = val - } - - // next, the global header for this file. - // numeric values, etc, will have already been parsed. - ;[global, extended].forEach(function (p) { - Object.keys(p).forEach(function (f) { - if (typeof p[f] !== "undefined") props[f] = p[f] - }) - }) - - // no nulls allowed in path or linkpath - ;["path", "linkpath"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = props[p].split("\0")[0] - } - }) - - - // set date fields to be a proper date - ;["mtime", "ctime", "atime"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = new Date(props[p] * 1000) - } - }) - - // set the type so that we know what kind of file to create - var type - switch (tar.types[props.type]) { - case "OldFile": - case "ContiguousFile": - type = "File" - break - - case "GNUDumpDir": - type = "Directory" - break - - case undefined: - type = "Unknown" - break - - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - default: - type = tar.types[props.type] - } - - this.type = type - this.path = props.path - this.size = props.size - - // size is special, since it signals when the file needs to end. - this._remaining = props.size -} - -Entry.prototype.warn = fstream.warn -Entry.prototype.error = fstream.error diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js deleted file mode 100644 index 1728c458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js +++ /dev/null @@ -1,191 +0,0 @@ - -module.exports = ExtendedHeaderWriter - -var inherits = require("inherits") - , EntryWriter = require("./entry-writer.js") - -inherits(ExtendedHeaderWriter, EntryWriter) - -var tar = require("../tar.js") - , path = require("path") - , TarHeader = require("./header.js") - -// props is the props of the thing we need to write an -// extended header for. -// Don't be shy with it. Just encode everything. -function ExtendedHeaderWriter (props) { - // console.error(">> ehw ctor") - var me = this - - if (!(me instanceof ExtendedHeaderWriter)) { - return new ExtendedHeaderWriter(props) - } - - me.fields = props - - var p = - { path : ("PaxHeader" + path.join("/", props.path || "")) - .replace(/\\/g, "/").substr(0, 100) - , mode : props.mode || 0666 - , uid : props.uid || 0 - , gid : props.gid || 0 - , size : 0 // will be set later - , mtime : props.mtime || Date.now() / 1000 - , type : "x" - , linkpath : "" - , ustar : "ustar\0" - , ustarver : "00" - , uname : props.uname || "" - , gname : props.gname || "" - , devmaj : props.devmaj || 0 - , devmin : props.devmin || 0 - } - - - EntryWriter.call(me, p) - // console.error(">> ehw props", me.props) - me.props = p - - me._meta = true -} - -ExtendedHeaderWriter.prototype.end = function () { - // console.error(">> ehw end") - var me = this - - if (me._ended) return - me._ended = true - - me._encodeFields() - - if (me.props.size === 0) { - // nothing to write! - me._ready = true - me._stream.end() - return - } - - me._stream.write(TarHeader.encode(me.props)) - me.body.forEach(function (l) { - me._stream.write(l) - }) - me._ready = true - - // console.error(">> ehw _process calling end()", me.props) - this._stream.end() -} - -ExtendedHeaderWriter.prototype._encodeFields = function () { - // console.error(">> ehw _encodeFields") - this.body = [] - if (this.fields.prefix) { - this.fields.path = this.fields.prefix + "/" + this.fields.path - this.fields.prefix = "" - } - encodeFields(this.fields, "", this.body, this.fields.noProprietary) - var me = this - this.body.forEach(function (l) { - me.props.size += l.length - }) -} - -function encodeFields (fields, prefix, body, nop) { - // console.error(">> >> ehw encodeFields") - // "%d %s=%s\n", <length>, <keyword>, <value> - // The length is a decimal number, and includes itself and the \n - // Numeric values are decimal strings. - - Object.keys(fields).forEach(function (k) { - var val = fields[k] - , numeric = tar.numeric[k] - - if (prefix) k = prefix + "." + k - - // already including NODETAR.type, don't need File=true also - if (k === fields.type && val === true) return - - switch (k) { - // don't include anything that's always handled just fine - // in the normal header, or only meaningful in the context - // of nodetar - case "mode": - case "cksum": - case "ustar": - case "ustarver": - case "prefix": - case "basename": - case "dirname": - case "needExtended": - case "block": - case "filter": - return - - case "rdev": - if (val === 0) return - break - - case "nlink": - case "dev": // Truly a hero among men, Creator of Star! - case "ino": // Speak his name with reverent awe! It is: - k = "SCHILY." + k - break - - default: break - } - - if (val && typeof val === "object" && - !Buffer.isBuffer(val)) encodeFields(val, k, body, nop) - else if (val === null || val === undefined) return - else body.push.apply(body, encodeField(k, val, nop)) - }) - - return body -} - -function encodeField (k, v, nop) { - // lowercase keys must be valid, otherwise prefix with - // "NODETAR." - if (k.charAt(0) === k.charAt(0).toLowerCase()) { - var m = k.split(".")[0] - if (!tar.knownExtended[m]) k = "NODETAR." + k - } - - // no proprietary - if (nop && k.charAt(0) !== k.charAt(0).toLowerCase()) { - return [] - } - - if (typeof val === "number") val = val.toString(10) - - var s = new Buffer(" " + k + "=" + v + "\n") - , digits = Math.floor(Math.log(s.length) / Math.log(10)) + 1 - - // console.error("1 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - // if adding that many digits will make it go over that length, - // then add one to it. For example, if the string is: - // " foo=bar\n" - // then that's 9 characters. With the "9", that bumps the length - // up to 10. However, this is invalid: - // "10 foo=bar\n" - // but, since that's actually 11 characters, since 10 adds another - // character to the length, and the length includes the number - // itself. In that case, just bump it up again. - if (s.length + digits >= Math.pow(10, digits)) digits += 1 - // console.error("2 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - var len = digits + s.length - // console.error("3 s=%j digits=%j s.length=%d len=%d", s.toString(), digits, s.length, len) - var lenBuf = new Buffer("" + len) - if (lenBuf.length + s.length !== len) { - throw new Error("Bad length calculation\n"+ - "len="+len+"\n"+ - "lenBuf="+JSON.stringify(lenBuf.toString())+"\n"+ - "lenBuf.length="+lenBuf.length+"\n"+ - "digits="+digits+"\n"+ - "s="+JSON.stringify(s.toString())+"\n"+ - "s.length="+s.length) - } - - return [lenBuf, s] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js deleted file mode 100644 index 74f432ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js +++ /dev/null @@ -1,140 +0,0 @@ -// An Entry consisting of: -// -// "%d %s=%s\n", <length>, <keyword>, <value> -// -// The length is a decimal number, and includes itself and the \n -// \0 does not terminate anything. Only the length terminates the string. -// Numeric values are decimal strings. - -module.exports = ExtendedHeader - -var Entry = require("./entry.js") - , inherits = require("inherits") - , tar = require("../tar.js") - , numeric = tar.numeric - , keyTrans = { "SCHILY.dev": "dev" - , "SCHILY.ino": "ino" - , "SCHILY.nlink": "nlink" } - -function ExtendedHeader () { - Entry.apply(this, arguments) - this.on("data", this._parse) - this.fields = {} - this._position = 0 - this._fieldPos = 0 - this._state = SIZE - this._sizeBuf = [] - this._keyBuf = [] - this._valBuf = [] - this._size = -1 - this._key = "" -} - -inherits(ExtendedHeader, Entry) -ExtendedHeader.prototype._parse = parse - -var s = 0 - , states = ExtendedHeader.states = {} - , SIZE = states.SIZE = s++ - , KEY = states.KEY = s++ - , VAL = states.VAL = s++ - , ERR = states.ERR = s++ - -Object.keys(states).forEach(function (s) { - states[states[s]] = states[s] -}) - -states[s] = null - -// char code values for comparison -var _0 = "0".charCodeAt(0) - , _9 = "9".charCodeAt(0) - , point = ".".charCodeAt(0) - , a = "a".charCodeAt(0) - , Z = "Z".charCodeAt(0) - , a = "a".charCodeAt(0) - , z = "z".charCodeAt(0) - , space = " ".charCodeAt(0) - , eq = "=".charCodeAt(0) - , cr = "\n".charCodeAt(0) - -function parse (c) { - if (this._state === ERR) return - - for ( var i = 0, l = c.length - ; i < l - ; this._position++, this._fieldPos++, i++) { - // console.error("top of loop, size="+this._size) - - var b = c[i] - - if (this._size >= 0 && this._fieldPos > this._size) { - error(this, "field exceeds length="+this._size) - return - } - - switch (this._state) { - case ERR: return - - case SIZE: - // console.error("parsing size, b=%d, rest=%j", b, c.slice(i).toString()) - if (b === space) { - this._state = KEY - // this._fieldPos = this._sizeBuf.length - this._size = parseInt(new Buffer(this._sizeBuf).toString(), 10) - this._sizeBuf.length = 0 - continue - } - if (b < _0 || b > _9) { - error(this, "expected [" + _0 + ".." + _9 + "], got " + b) - return - } - this._sizeBuf.push(b) - continue - - case KEY: - // can be any char except =, not > size. - if (b === eq) { - this._state = VAL - this._key = new Buffer(this._keyBuf).toString() - if (keyTrans[this._key]) this._key = keyTrans[this._key] - this._keyBuf.length = 0 - continue - } - this._keyBuf.push(b) - continue - - case VAL: - // field must end with cr - if (this._fieldPos === this._size - 1) { - // console.error("finished with "+this._key) - if (b !== cr) { - error(this, "expected \\n at end of field") - return - } - var val = new Buffer(this._valBuf).toString() - if (numeric[this._key]) { - val = parseFloat(val) - } - this.fields[this._key] = val - - this._valBuf.length = 0 - this._state = SIZE - this._size = -1 - this._fieldPos = -1 - continue - } - this._valBuf.push(b) - continue - } - } -} - -function error (me, msg) { - msg = "invalid header: " + msg - + "\nposition=" + me._position - + "\nfield position=" + me._fieldPos - - me.error(msg) - me.state = ERR -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js deleted file mode 100644 index c34a81e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js +++ /dev/null @@ -1,78 +0,0 @@ -// give it a tarball and a path, and it'll dump the contents - -module.exports = Extract - -var tar = require("../tar.js") - , fstream = require("fstream") - , inherits = require("inherits") - , path = require("path") - -function Extract (opts) { - if (!(this instanceof Extract)) return new Extract(opts) - tar.Parse.apply(this) - - // have to dump into a directory - opts.type = "Directory" - opts.Directory = true - - if (typeof opts !== "object") { - opts = { path: opts } - } - - // better to drop in cwd? seems more standard. - opts.path = opts.path || path.resolve("node-tar-extract") - opts.type = "Directory" - opts.Directory = true - - // similar to --strip or --strip-components - opts.strip = +opts.strip - if (!opts.strip || opts.strip <= 0) opts.strip = 0 - - this._fst = fstream.Writer(opts) - - this.pause() - var me = this - - // Hardlinks in tarballs are relative to the root - // of the tarball. So, they need to be resolved against - // the target directory in order to be created properly. - me.on("entry", function (entry) { - // if there's a "strip" argument, then strip off that many - // path components. - if (opts.strip) { - var p = entry.path.split("/").slice(opts.strip).join("/") - entry.path = entry.props.path = p - if (entry.linkpath) { - var lp = entry.linkpath.split("/").slice(opts.strip).join("/") - entry.linkpath = entry.props.linkpath = lp - } - } - if (entry.type !== "Link") return - entry.linkpath = entry.props.linkpath = - path.join(opts.path, path.join("/", entry.props.linkpath)) - }) - - this._fst.on("ready", function () { - me.pipe(me._fst, { end: false }) - me.resume() - }) - - // this._fst.on("end", function () { - // console.error("\nEEEE Extract End", me._fst.path) - // }) - - this._fst.on("close", function () { - // console.error("\nEEEE Extract End", me._fst.path) - me.emit("end") - me.emit("close") - }) -} - -inherits(Extract, tar.Parse) - -Extract.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me._fst.end() - // my .end() is coming later. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js deleted file mode 100644 index 0bfc7b80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = GlobalHeaderWriter - -var ExtendedHeaderWriter = require("./extended-header-writer.js") - , inherits = require("inherits") - -inherits(GlobalHeaderWriter, ExtendedHeaderWriter) - -function GlobalHeaderWriter (props) { - if (!(this instanceof GlobalHeaderWriter)) { - return new GlobalHeaderWriter(props) - } - ExtendedHeaderWriter.call(this, props) - this.props.type = "g" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js deleted file mode 100644 index 05b237c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js +++ /dev/null @@ -1,385 +0,0 @@ -// parse a 512-byte header block to a data object, or vice-versa -// If the data won't fit nicely in a simple header, then generate -// the appropriate extended header file, and return that. - -module.exports = TarHeader - -var tar = require("../tar.js") - , fields = tar.fields - , fieldOffs = tar.fieldOffs - , fieldEnds = tar.fieldEnds - , fieldSize = tar.fieldSize - , numeric = tar.numeric - , assert = require("assert").ok - , space = " ".charCodeAt(0) - , slash = "/".charCodeAt(0) - , bslash = process.platform === "win32" ? "\\".charCodeAt(0) : null - -function TarHeader (block) { - if (!(this instanceof TarHeader)) return new TarHeader(block) - if (block) this.decode(block) -} - -TarHeader.prototype = - { decode : decode - , encode: encode - , calcSum: calcSum - , checkSum: checkSum - } - -TarHeader.parseNumeric = parseNumeric -TarHeader.encode = encode -TarHeader.decode = decode - -// note that this will only do the normal ustar header, not any kind -// of extended posix header file. If something doesn't fit comfortably, -// then it will set obj.needExtended = true, and set the block to -// the closest approximation. -function encode (obj) { - if (!obj && !(this instanceof TarHeader)) throw new Error( - "encode must be called on a TarHeader, or supplied an object") - - obj = obj || this - var block = obj.block = new Buffer(512) - - // if the object has a "prefix", then that's actually an extension of - // the path field. - if (obj.prefix) { - // console.error("%% header encoding, got a prefix", obj.prefix) - obj.path = obj.prefix + "/" + obj.path - // console.error("%% header encoding, prefixed path", obj.path) - obj.prefix = "" - } - - obj.needExtended = false - - if (obj.mode) { - if (typeof obj.mode === "string") obj.mode = parseInt(obj.mode, 8) - obj.mode = obj.mode & 0777 - } - - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , off = fieldOffs[f] - , end = fieldEnds[f] - , ret - - switch (field) { - case "cksum": - // special, done below, after all the others - break - - case "prefix": - // special, this is an extension of the "path" field. - // console.error("%% header encoding, skip prefix later") - break - - case "type": - // convert from long name to a single char. - var type = obj.type || "0" - if (type.length > 1) { - type = tar.types[obj.type] - if (!type) type = "0" - } - writeText(block, off, end, type) - break - - case "path": - // uses the "prefix" field if > 100 bytes, but <= 255 - var pathLen = Buffer.byteLength(obj.path) - , pathFSize = fieldSize[fields.path] - , prefFSize = fieldSize[fields.prefix] - - // paths between 100 and 255 should use the prefix field. - // longer than 255 - if (pathLen > pathFSize && - pathLen <= pathFSize + prefFSize) { - // need to find a slash somewhere in the middle so that - // path and prefix both fit in their respective fields - var searchStart = pathLen - 1 - pathFSize - , searchEnd = prefFSize - , found = false - , pathBuf = new Buffer(obj.path) - - for ( var s = searchStart - ; (s <= searchEnd) - ; s ++ ) { - if (pathBuf[s] === slash || pathBuf[s] === bslash) { - found = s - break - } - } - - if (found !== false) { - prefix = pathBuf.slice(0, found).toString("utf8") - path = pathBuf.slice(found + 1).toString("utf8") - - ret = writeText(block, off, end, path) - off = fieldOffs[fields.prefix] - end = fieldEnds[fields.prefix] - // console.error("%% header writing prefix", off, end, prefix) - ret = writeText(block, off, end, prefix) || ret - break - } - } - - // paths less than 100 chars don't need a prefix - // and paths longer than 255 need an extended header and will fail - // on old implementations no matter what we do here. - // Null out the prefix, and fallthrough to default. - // console.error("%% header writing no prefix") - var poff = fieldOffs[fields.prefix] - , pend = fieldEnds[fields.prefix] - writeText(block, poff, pend, "") - // fallthrough - - // all other fields are numeric or text - default: - ret = numeric[field] - ? writeNumeric(block, off, end, obj[field]) - : writeText(block, off, end, obj[field] || "") - break - } - obj.needExtended = obj.needExtended || ret - } - - var off = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - writeNumeric(block, off, end, calcSum.call(this, block)) - - return block -} - -// if it's a negative number, or greater than will fit, -// then use write256. -var MAXNUM = { 12: 077777777777 - , 11: 07777777777 - , 8 : 07777777 - , 7 : 0777777 } -function writeNumeric (block, off, end, num) { - var writeLen = end - off - , maxNum = MAXNUM[writeLen] || 0 - - num = num || 0 - // console.error(" numeric", num) - - if (num instanceof Date || - Object.prototype.toString.call(num) === "[object Date]") { - num = num.getTime() / 1000 - } - - if (num > maxNum || num < 0) { - write256(block, off, end, num) - // need an extended header if negative or too big. - return true - } - - // god, tar is so annoying - // if the string is small enough, you should put a space - // between the octal string and the \0, but if it doesn't - // fit, then don't. - var numStr = Math.floor(num).toString(8) - if (num < MAXNUM[writeLen - 1]) numStr += " " - - // pad with "0" chars - if (numStr.length < writeLen) { - numStr = (new Array(writeLen - numStr.length).join("0")) + numStr - } - - if (numStr.length !== writeLen - 1) { - throw new Error("invalid length: " + JSON.stringify(numStr) + "\n" + - "expected: "+writeLen) - } - block.write(numStr, off, writeLen, "utf8") - block[end - 1] = 0 -} - -function write256 (block, off, end, num) { - var buf = block.slice(off, end) - var positive = num >= 0 - buf[0] = positive ? 0x80 : 0xFF - - // get the number as a base-256 tuple - if (!positive) num *= -1 - var tuple = [] - do { - var n = num % 256 - tuple.push(n) - num = (num - n) / 256 - } while (num) - - var bytes = tuple.length - - var fill = buf.length - bytes - for (var i = 1; i < fill; i ++) { - buf[i] = positive ? 0 : 0xFF - } - - // tuple is a base256 number, with [0] as the *least* significant byte - // if it's negative, then we need to flip all the bits once we hit the - // first non-zero bit. The 2's-complement is (0x100 - n), and the 1's- - // complement is (0xFF - n). - var zero = true - for (i = bytes; i > 0; i --) { - var byte = tuple[bytes - i] - if (positive) buf[fill + i] = byte - else if (zero && byte === 0) buf[fill + i] = 0 - else if (zero) { - zero = false - buf[fill + i] = 0x100 - byte - } else buf[fill + i] = 0xFF - byte - } -} - -function writeText (block, off, end, str) { - // strings are written as utf8, then padded with \0 - var strLen = Buffer.byteLength(str) - , writeLen = Math.min(strLen, end - off) - // non-ascii fields need extended headers - // long fields get truncated - , needExtended = strLen !== str.length || strLen > writeLen - - // write the string, and null-pad - if (writeLen > 0) block.write(str, off, writeLen, "utf8") - for (var i = off + writeLen; i < end; i ++) block[i] = 0 - - return needExtended -} - -function calcSum (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - if (!block) throw new Error("Need block to checksum") - - // now figure out what it would be if the cksum was " " - var sum = 0 - , start = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - for (var i = 0; i < fieldOffs[fields.cksum]; i ++) { - sum += block[i] - } - - for (var i = start; i < end; i ++) { - sum += space - } - - for (var i = end; i < 512; i ++) { - sum += block[i] - } - - return sum -} - - -function checkSum (block) { - var sum = calcSum.call(this, block) - block = block || this.block - - var cksum = block.slice(fieldOffs[fields.cksum], fieldEnds[fields.cksum]) - cksum = parseNumeric(cksum) - - return cksum === sum -} - -function decode (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - this.block = block - this.cksumValid = this.checkSum() - - var prefix = null - - // slice off each field. - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = block.slice(fieldOffs[f], fieldEnds[f]) - - switch (field) { - case "ustar": - // if not ustar, then everything after that is just padding. - if (val.toString() !== "ustar\0") { - this.ustar = false - return - } else { - // console.error("ustar:", val, val.toString()) - this.ustar = val.toString() - } - break - - // prefix is special, since it might signal the xstar header - case "prefix": - var atime = parseNumeric(val.slice(131, 131 + 12)) - , ctime = parseNumeric(val.slice(131 + 12, 131 + 12 + 12)) - if ((val[130] === 0 || val[130] === space) && - typeof atime === "number" && - typeof ctime === "number" && - val[131 + 12] === space && - val[131 + 12 + 12] === space) { - this.atime = atime - this.ctime = ctime - val = val.slice(0, 130) - } - prefix = val.toString("utf8").replace(/\0+$/, "") - // console.error("%% header reading prefix", prefix) - break - - // all other fields are null-padding text - // or a number. - default: - if (numeric[field]) { - this[field] = parseNumeric(val) - } else { - this[field] = val.toString("utf8").replace(/\0+$/, "") - } - break - } - } - - // if we got a prefix, then prepend it to the path. - if (prefix) { - this.path = prefix + "/" + this.path - // console.error("%% header got a prefix", this.path) - } -} - -function parse256 (buf) { - // first byte MUST be either 80 or FF - // 80 for positive, FF for 2's comp - var positive - if (buf[0] === 0x80) positive = true - else if (buf[0] === 0xFF) positive = false - else return null - - // build up a base-256 tuple from the least sig to the highest - var zero = false - , tuple = [] - for (var i = buf.length - 1; i > 0; i --) { - var byte = buf[i] - if (positive) tuple.push(byte) - else if (zero && byte === 0) tuple.push(0) - else if (zero) { - zero = false - tuple.push(0x100 - byte) - } else tuple.push(0xFF - byte) - } - - for (var sum = 0, i = 0, l = tuple.length; i < l; i ++) { - sum += tuple[i] * Math.pow(256, i) - } - - return positive ? sum : -1 * sum -} - -function parseNumeric (f) { - if (f[0] & 0x80) return parse256(f) - - var str = f.toString("utf8").split("\0")[0].trim() - , res = parseInt(str, 8) - - return isNaN(res) ? null : res -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js deleted file mode 100644 index 3ff14dd6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js +++ /dev/null @@ -1,231 +0,0 @@ -// pipe in an fstream, and it'll make a tarball. -// key-value pair argument is global extended header props. - -module.exports = Pack - -var EntryWriter = require("./entry-writer.js") - , Stream = require("stream").Stream - , path = require("path") - , inherits = require("inherits") - , GlobalHeaderWriter = require("./global-header-writer.js") - , collect = require("fstream").collect - , eof = new Buffer(512) - -for (var i = 0; i < 512; i ++) eof[i] = 0 - -inherits(Pack, Stream) - -function Pack (props) { - // console.error("-- p ctor") - var me = this - if (!(me instanceof Pack)) return new Pack(props) - - if (props) me._noProprietary = props.noProprietary - else me._noProprietary = false - - me._global = props - - me.readable = true - me.writable = true - me._buffer = [] - // console.error("-- -- set current to null in ctor") - me._currentEntry = null - me._processing = false - - me._pipeRoot = null - me.on("pipe", function (src) { - if (src.root === me._pipeRoot) return - me._pipeRoot = src - src.on("end", function () { - me._pipeRoot = null - }) - me.add(src) - }) -} - -Pack.prototype.addGlobal = function (props) { - // console.error("-- p addGlobal") - if (this._didGlobal) return - this._didGlobal = true - - var me = this - GlobalHeaderWriter(props) - .on("data", function (c) { - me.emit("data", c) - }) - .end() -} - -Pack.prototype.add = function (stream) { - if (this._global && !this._didGlobal) this.addGlobal(this._global) - - if (this._ended) return this.emit("error", new Error("add after end")) - - collect(stream) - this._buffer.push(stream) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -Pack.prototype.pause = function () { - this._paused = true - if (this._currentEntry) this._currentEntry.pause() - this.emit("pause") -} - -Pack.prototype.resume = function () { - this._paused = false - if (this._currentEntry) this._currentEntry.resume() - this.emit("resume") - this._process() -} - -Pack.prototype.end = function () { - this._ended = true - this._buffer.push(eof) - this._process() -} - -Pack.prototype._process = function () { - var me = this - if (me._paused || me._processing) { - return - } - - var entry = me._buffer.shift() - - if (!entry) { - if (me._needDrain) { - me.emit("drain") - } - return - } - - if (entry.ready === false) { - // console.error("-- entry is not ready", entry) - me._buffer.unshift(entry) - entry.on("ready", function () { - // console.error("-- -- ready!", entry) - me._process() - }) - return - } - - me._processing = true - - if (entry === eof) { - // need 2 ending null blocks. - me.emit("data", eof) - me.emit("data", eof) - me.emit("end") - me.emit("close") - return - } - - // Change the path to be relative to the root dir that was - // added to the tarball. - // - // XXX This should be more like how -C works, so you can - // explicitly set a root dir, and also explicitly set a pathname - // in the tarball to use. That way we can skip a lot of extra - // work when resolving symlinks for bundled dependencies in npm. - - var root = path.dirname((entry.root || entry).path) - var wprops = {} - - Object.keys(entry.props || {}).forEach(function (k) { - wprops[k] = entry.props[k] - }) - - if (me._noProprietary) wprops.noProprietary = true - - wprops.path = path.relative(root, entry.path || '') - - // actually not a matter of opinion or taste. - if (process.platform === "win32") { - wprops.path = wprops.path.replace(/\\/g, "/") - } - - if (!wprops.type) - wprops.type = 'Directory' - - switch (wprops.type) { - // sockets not supported - case "Socket": - return - - case "Directory": - wprops.path += "/" - wprops.size = 0 - break - - case "Link": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(root, lp) || "." - wprops.size = 0 - break - - case "SymbolicLink": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "." - wprops.size = 0 - break - } - - // console.error("-- new writer", wprops) - // if (!wprops.type) { - // // console.error("-- no type?", entry.constructor.name, entry) - // } - - // console.error("-- -- set current to new writer", wprops.path) - var writer = me._currentEntry = EntryWriter(wprops) - - writer.parent = me - - // writer.on("end", function () { - // // console.error("-- -- writer end", writer.path) - // }) - - writer.on("data", function (c) { - me.emit("data", c) - }) - - writer.on("header", function () { - Buffer.prototype.toJSON = function () { - return this.toString().split(/\0/).join(".") - } - // console.error("-- -- writer header %j", writer.props) - if (writer.props.size === 0) nextEntry() - }) - writer.on("close", nextEntry) - - var ended = false - function nextEntry () { - if (ended) return - ended = true - - // console.error("-- -- writer close", writer.path) - // console.error("-- -- set current to null", wprops.path) - me._currentEntry = null - me._processing = false - me._process() - } - - writer.on("error", function (er) { - // console.error("-- -- writer error", writer.path) - me.emit("error", er) - }) - - // if it's the root, then there's no need to add its entries, - // or data, since they'll be added directly. - if (entry === me._pipeRoot) { - // console.error("-- is the root, don't auto-add") - writer.add = null - } - - entry.pipe(writer) -} - -Pack.prototype.destroy = function () {} -Pack.prototype.write = function () {} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js deleted file mode 100644 index 884e73db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js +++ /dev/null @@ -1,270 +0,0 @@ - -// A writable stream. -// It emits "entry" events, which provide a readable stream that has -// header info attached. - -module.exports = Parse.create = Parse - -var stream = require("stream") - , Stream = stream.Stream - , BlockStream = require("block-stream") - , tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , BufferEntry = require("./buffer-entry.js") - , ExtendedHeader = require("./extended-header.js") - , assert = require("assert").ok - , inherits = require("inherits") - , fstream = require("fstream") - -// reading a tar is a lot like reading a directory -// However, we're actually not going to run the ctor, -// since it does a stat and various other stuff. -// This inheritance gives us the pause/resume/pipe -// behavior that is desired. -inherits(Parse, fstream.Reader) - -function Parse () { - var me = this - if (!(me instanceof Parse)) return new Parse() - - // doesn't apply fstream.Reader ctor? - // no, becasue we don't want to stat/etc, we just - // want to get the entry/add logic from .pipe() - Stream.apply(me) - - me.writable = true - me.readable = true - me._stream = new BlockStream(512) - me.position = 0 - - me._stream.on("error", function (e) { - me.emit("error", e) - }) - - me._stream.on("data", function (c) { - me._process(c) - }) - - me._stream.on("end", function () { - me._streamEnd() - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) -} - -// overridden in Extract class, since it needs to -// wait for its DirWriter part to finish before -// emitting "end" -Parse.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me.emit("end") -} - -// a tar reader is actually a filter, not just a readable stream. -// So, you should pipe a tarball stream into it, and it needs these -// write/end methods to do that. -Parse.prototype.write = function (c) { - if (this._ended) { - // gnutar puts a LOT of nulls at the end. - // you can keep writing these things forever. - // Just ignore them. - for (var i = 0, l = c.length; i > l; i ++) { - if (c[i] !== 0) return this.error("write() after end()") - } - return - } - return this._stream.write(c) -} - -Parse.prototype.end = function (c) { - this._ended = true - return this._stream.end(c) -} - -// don't need to do anything, since we're just -// proxying the data up from the _stream. -// Just need to override the parent's "Not Implemented" -// error-thrower. -Parse.prototype._read = function () {} - -Parse.prototype._process = function (c) { - assert(c && c.length === 512, "block size should be 512") - - // one of three cases. - // 1. A new header - // 2. A part of a file/extended header - // 3. One of two or more EOF null blocks - - if (this._entry) { - var entry = this._entry - entry.write(c) - if (entry._remaining === 0) { - entry.end() - this._entry = null - } - } else { - // either zeroes or a header - var zero = true - for (var i = 0; i < 512 && zero; i ++) { - zero = c[i] === 0 - } - - // eof is *at least* 2 blocks of nulls, and then the end of the - // file. you can put blocks of nulls between entries anywhere, - // so appending one tarball to another is technically valid. - // ending without the eof null blocks is not allowed, however. - if (zero) { - this._ended = this._eofStarted - this._eofStarted = true - } else { - this._ended = this._eofStarted = false - this._startEntry(c) - } - - } - - this.position += 512 -} - -// take a header chunk, start the right kind of entry. -Parse.prototype._startEntry = function (c) { - var header = new TarHeader(c) - , self = this - , entry - , ev - , EntryType - , onend - , meta = false - - if (null === header.size || !header.cksumValid) { - var e = new Error("invalid tar file") - e.header = header - e.tar_file_offset = this.position - e.tar_block = this.position / 512 - this.emit("error", e) - } - - switch (tar.types[header.type]) { - case "File": - case "OldFile": - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - case "ContiguousFile": - case "GNUDumpDir": - // start a file. - // pass in any extended headers - // These ones consumers are typically most interested in. - EntryType = Entry - ev = "entry" - break - - case "GlobalExtendedHeader": - // extended headers that apply to the rest of the tarball - EntryType = ExtendedHeader - onend = function () { - self._global = self._global || {} - Object.keys(entry.fields).forEach(function (k) { - self._global[k] = entry.fields[k] - }) - } - ev = "globalExtendedHeader" - meta = true - break - - case "ExtendedHeader": - case "OldExtendedHeader": - // extended headers that apply to the next entry - EntryType = ExtendedHeader - onend = function () { - self._extended = entry.fields - } - ev = "extendedHeader" - meta = true - break - - case "NextFileHasLongLinkpath": - // set linkpath=<contents> in extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.linkpath = entry.body - } - ev = "longLinkpath" - meta = true - break - - case "NextFileHasLongPath": - case "OldGnuLongPath": - // set path=<contents> in file-extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.path = entry.body - } - ev = "longPath" - meta = true - break - - default: - // all the rest we skip, but still set the _entry - // member, so that we can skip over their data appropriately. - // emit an event to say that this is an ignored entry type? - EntryType = Entry - ev = "ignoredEntry" - break - } - - var global, extended - if (meta) { - global = extended = null - } else { - var global = this._global - var extended = this._extended - - // extendedHeader only applies to one entry, so once we start - // an entry, it's over. - this._extended = null - } - entry = new EntryType(header, extended, global) - entry.meta = meta - - // only proxy data events of normal files. - if (!meta) { - entry.on("data", function (c) { - me.emit("data", c) - }) - } - - if (onend) entry.on("end", onend) - - this._entry = entry - var me = this - - entry.on("pause", function () { - me.pause() - }) - - entry.on("resume", function () { - me.resume() - }) - - if (this.listeners("*").length) { - this.emit("*", ev, entry) - } - - this.emit(ev, entry) - - // Zero-byte entry. End immediately. - if (entry.props.size === 0) { - entry.end() - this._entry = null - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE deleted file mode 100644 index 74489e2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md deleted file mode 100644 index c16e9c46..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# block-stream - -A stream of blocks. - -Write data into it, and it'll output data in buffer blocks the size you -specify, padding with zeroes if necessary. - -```javascript -var block = new BlockStream(512) -fs.createReadStream("some-file").pipe(block) -block.pipe(fs.createWriteStream("block-file")) -``` - -When `.end()` or `.flush()` is called, it'll pad the block with zeroes. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js deleted file mode 100644 index 9328844a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js deleted file mode 100644 index 1141f3a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js deleted file mode 100644 index 93e4068e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js deleted file mode 100644 index 55fa1330..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js deleted file mode 100644 index 008de035..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js +++ /dev/null @@ -1,209 +0,0 @@ -// write data to it, and it'll emit data in 512 byte blocks. -// if you .end() or .flush(), it'll emit whatever it's got, -// padded with nulls to 512 bytes. - -module.exports = BlockStream - -var Stream = require("stream").Stream - , inherits = require("inherits") - , assert = require("assert").ok - , debug = process.env.DEBUG ? console.error : function () {} - -function BlockStream (size, opt) { - this.writable = this.readable = true - this._opt = opt || {} - this._chunkSize = size || 512 - this._offset = 0 - this._buffer = [] - this._bufferLength = 0 - if (this._opt.nopad) this._zeroes = false - else { - this._zeroes = new Buffer(this._chunkSize) - for (var i = 0; i < this._chunkSize; i ++) { - this._zeroes[i] = 0 - } - } -} - -inherits(BlockStream, Stream) - -BlockStream.prototype.write = function (c) { - // debug(" BS write", c) - if (this._ended) throw new Error("BlockStream: write after end") - if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "") - if (c.length) { - this._buffer.push(c) - this._bufferLength += c.length - } - // debug("pushed onto buffer", this._bufferLength) - if (this._bufferLength >= this._chunkSize) { - if (this._paused) { - // debug(" BS paused, return false, need drain") - this._needDrain = true - return false - } - this._emitChunk() - } - return true -} - -BlockStream.prototype.pause = function () { - // debug(" BS pausing") - this._paused = true -} - -BlockStream.prototype.resume = function () { - // debug(" BS resume") - this._paused = false - return this._emitChunk() -} - -BlockStream.prototype.end = function (chunk) { - // debug("end", chunk) - if (typeof chunk === "function") cb = chunk, chunk = null - if (chunk) this.write(chunk) - this._ended = true - this.flush() -} - -BlockStream.prototype.flush = function () { - this._emitChunk(true) -} - -BlockStream.prototype._emitChunk = function (flush) { - // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused) - - // emit a <chunkSize> chunk - if (flush && this._zeroes) { - // debug(" BS push zeroes", this._bufferLength) - // push a chunk of zeroes - var padBytes = (this._bufferLength % this._chunkSize) - if (padBytes !== 0) padBytes = this._chunkSize - padBytes - if (padBytes > 0) { - // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes)) - this._buffer.push(this._zeroes.slice(0, padBytes)) - this._bufferLength += padBytes - // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength) - } - } - - if (this._emitting || this._paused) return - this._emitting = true - - // debug(" BS entering loops") - var bufferIndex = 0 - while (this._bufferLength >= this._chunkSize && - (flush || !this._paused)) { - // debug(" BS data emission loop", this._bufferLength) - - var out - , outOffset = 0 - , outHas = this._chunkSize - - while (outHas > 0 && (flush || !this._paused) ) { - // debug(" BS data inner emit loop", this._bufferLength) - var cur = this._buffer[bufferIndex] - , curHas = cur.length - this._offset - // debug("cur=", cur) - // debug("curHas=%j", curHas) - // If it's not big enough to fill the whole thing, then we'll need - // to copy multiple buffers into one. However, if it is big enough, - // then just slice out the part we want, to save unnecessary copying. - // Also, need to copy if we've already done some copying, since buffers - // can't be joined like cons strings. - if (out || curHas < outHas) { - out = out || new Buffer(this._chunkSize) - cur.copy(out, outOffset, - this._offset, this._offset + Math.min(curHas, outHas)) - } else if (cur.length === outHas && this._offset === 0) { - // shortcut -- cur is exactly long enough, and no offset. - out = cur - } else { - // slice out the piece of cur that we need. - out = cur.slice(this._offset, this._offset + outHas) - } - - if (curHas > outHas) { - // means that the current buffer couldn't be completely output - // update this._offset to reflect how much WAS written - this._offset += outHas - outHas = 0 - } else { - // output the entire current chunk. - // toss it away - outHas -= curHas - outOffset += curHas - bufferIndex ++ - this._offset = 0 - } - } - - this._bufferLength -= this._chunkSize - assert(out.length === this._chunkSize) - // debug("emitting data", out) - // debug(" BS emitting, paused=%j", this._paused, this._bufferLength) - this.emit("data", out) - out = null - } - // debug(" BS out of loops", this._bufferLength) - - // whatever is left, it's not enough to fill up a block, or we're paused - this._buffer = this._buffer.slice(bufferIndex) - if (this._paused) { - // debug(" BS paused, leaving", this._bufferLength) - this._needsDrain = true - this._emitting = false - return - } - - // if flushing, and not using null-padding, then need to emit the last - // chunk(s) sitting in the queue. We know that it's not enough to - // fill up a whole block, because otherwise it would have been emitted - // above, but there may be some offset. - var l = this._buffer.length - if (flush && !this._zeroes && l) { - if (l === 1) { - if (this._offset) { - this.emit("data", this._buffer[0].slice(this._offset)) - } else { - this.emit("data", this._buffer[0]) - } - } else { - var outHas = this._bufferLength - , out = new Buffer(outHas) - , outOffset = 0 - for (var i = 0; i < l; i ++) { - var cur = this._buffer[i] - , curHas = cur.length - this._offset - cur.copy(out, outOffset, this._offset) - this._offset = 0 - outOffset += curHas - this._bufferLength -= curHas - } - this.emit("data", out) - } - // truncate - this._buffer.length = 0 - this._bufferLength = 0 - this._offset = 0 - } - - // now either drained or ended - // debug("either draining, or ended", this._bufferLength, this._ended) - // means that we've flushed out all that we can so far. - if (this._needDrain) { - // debug("emitting drain", this._bufferLength) - this._needDrain = false - this.emit("drain") - } - - if ((this._bufferLength === 0) && this._ended && !this._endEmitted) { - // debug("emitting end", this._bufferLength) - this._endEmitted = true - this.emit("end") - } - - this._emitting = false - - // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json deleted file mode 100644 index 48840aa1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "block-stream", - "description": "a stream of blocks", - "version": "0.0.7", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/block-stream.git" - }, - "engines": { - "node": "0.4 || >=0.5.8" - }, - "main": "block-stream.js", - "dependencies": { - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "0.x" - }, - "scripts": { - "test": "tap test/" - }, - "license": "BSD", - "readme": "# block-stream\n\nA stream of blocks.\n\nWrite data into it, and it'll output data in buffer blocks the size you\nspecify, padding with zeroes if necessary.\n\n```javascript\nvar block = new BlockStream(512)\nfs.createReadStream(\"some-file\").pipe(block)\nblock.pipe(fs.createWriteStream(\"block-file\"))\n```\n\nWhen `.end()` or `.flush()` is called, it'll pad the block with zeroes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/block-stream/issues" - }, - "homepage": "https://github.com/isaacs/block-stream", - "_id": "block-stream@0.0.7", - "_from": "block-stream@*" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js deleted file mode 100644 index b4b93051..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js +++ /dev/null @@ -1,27 +0,0 @@ -var tap = require("tap") - , BlockStream = require("../block-stream.js") - -tap.test("basic test", function (t) { - var b = new BlockStream(16) - var fs = require("fs") - var fstr = fs.createReadStream(__filename, {encoding: "utf8"}) - fstr.pipe(b) - - var stat - t.doesNotThrow(function () { - stat = fs.statSync(__filename) - }, "stat should not throw") - - var totalBytes = 0 - b.on("data", function (c) { - t.equal(c.length, 16, "chunks should be 16 bytes long") - t.type(c, Buffer, "chunks should be buffer objects") - totalBytes += c.length - }) - b.on("end", function () { - var expectedBytes = stat.size + (16 - stat.size % 16) - t.equal(totalBytes, expectedBytes, "Should be multiple of 16") - t.end() - }) - -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js deleted file mode 100644 index 7a8de88b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js deleted file mode 100644 index 6d38429f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js +++ /dev/null @@ -1,57 +0,0 @@ -var BlockStream = require("../") -var tap = require("tap") - - -tap.test("don't pad, small writes", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - f.on("data", function (c) { - t.equal(c.toString(), "abc", "should get 'abc'") - }) - - f.on("end", function () { t.end() }) - - f.write(new Buffer("a")) - f.write(new Buffer("b")) - f.write(new Buffer("c")) - f.end() -}) - -tap.test("don't pad, exact write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.fail("should only get one") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnop")) -}) - -tap.test("don't pad, big write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(2) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.equal(c.toString(), "q") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnopq")) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js deleted file mode 100644 index 64d0d091..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16] - , writeSizes = [15, 16, 17] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - var paused = false - - f.on("data", function (c) { - timeouts ++ - t.notOk(paused, "should not be paused when emitting data") - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - paused = true - f.pause() - process.nextTick(function () { - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - paused = false - f.resume() - timeouts -- - }) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 200) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js deleted file mode 100644 index 1cc9ea08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js deleted file mode 100644 index c6db79a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js +++ /dev/null @@ -1,59 +0,0 @@ -var log = console.log, - assert = require( 'assert' ), - BlockStream = require("../block-stream.js"), - isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0, - filter = null, paper = null, stack = null, - -// a source data buffer -tsize = 1 * 1024; // <- 1K -stack = new Buffer( tsize ); -for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0); - -isize = 1 * 1024; // <- initial packet size with 4K no bug! -fsize = 2 * 1024 ; // <- first block-stream size -psize = Math.ceil( isize / 6 ); // <- second block-stream size - -fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first -pexpected = Math.ceil( tsize / psize ); // <- packets expected for second - - -filter = new BlockStream( fsize, { nopad : true } ); -paper = new BlockStream( psize, { nopad : true } ); - - -var fcounter = 0; -filter.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++fcounter; -} ); - -var pcounter = 0; -paper.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++pcounter; -} ); - -filter.pipe( paper ); - -filter.on( 'end', function () { - log("fcounter: %s === %s", fcounter, fexpected) - assert.strictEqual( fcounter, fexpected ); -} ); - -paper.on( 'end', function () { - log("pcounter: %s === %s", pcounter, pexpected); - assert.strictEqual( pcounter, pexpected ); -} ); - - -for ( i = 0, j = isize; j <= tsize; j += isize ) { - filter.write( stack.slice( j - isize, j ) ); -} - -filter.end(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore deleted file mode 100644 index 494272a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules/ -examples/deep-copy/ -examples/path/ -examples/filter-copy/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml deleted file mode 100644 index 2d26206d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md deleted file mode 100644 index 9d8cb77e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md +++ /dev/null @@ -1,76 +0,0 @@ -Like FS streams, but with stat on them, and supporting directories and -symbolic links, as well as normal files. Also, you can use this to set -the stats on a file, even if you don't change its contents, or to create -a symlink, etc. - -So, for example, you can "write" a directory, and it'll call `mkdir`. You -can specify a uid and gid, and it'll call `chown`. You can specify a -`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink -and provide a `linkpath` and it'll call `symlink`. - -Note that it won't automatically resolve symbolic links. So, if you -call `fstream.Reader('/some/symlink')` then you'll get an object -that stats and then ends immediately (since it has no data). To follow -symbolic links, do this: `fstream.Reader({path:'/some/symlink', follow: -true })`. - -There are various checks to make sure that the bytes emitted are the -same as the intended size, if the size is set. - -## Examples - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - }) - .write("hello\n") - .end() -``` - -This will create the directories if they're missing, and then write -`hello\n` into the file, chmod it to 0755, and assert that 6 bytes have -been written when it's done. - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - , flags: "a" - }) - .write("hello\n") - .end() -``` - -You can pass flags in, if you want to append to a file. - -```javascript -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , SymbolicLink: true - , mode: "0755" // octal strings supported - }) - .end() -``` - -If isSymbolicLink is a function, it'll be called, and if it returns -true, then it'll treat it as a symlink. If it's not a function, then -any truish value will make a symlink, or you can set `type: -'SymbolicLink'`, which does the same thing. - -Note that the linkpath is relative to the symbolic link location, not -the parent dir or cwd. - -```javascript -fstream - .Reader("path/to/dir") - .pipe(fstream.Writer("path/to/other/dir")) -``` - -This will do like `cp -Rp path/to/dir path/to/other/dir`. If the other -dir exists and isn't a directory, then it'll emit an error. It'll also -set the uid, gid, mode, etc. to be identical. In this way, it's more -like `rsync -a` than simply a copy. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js deleted file mode 100644 index c6b55b3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js +++ /dev/null @@ -1,131 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - !this.basename.match(/^filter-copy$/) - } - }) - -// this writer will only write directories -var w = fstream.Writer({ path: path.resolve(__dirname, "filter-copy") - , type: "Directory" - , filter: function () { - return this.type === "Directory" - } - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 1000) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -var i = 1 -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok " + (i ++) + " A WINNAR IS YOU") - ended = true - // now go through and verify that everything in there is a dir. - var p = path.resolve(__dirname, "filter-copy") - var checker = fstream.Reader({ path: p }) - checker.checker = true - checker.on("child", function (e) { - var ok = e.type === "Directory" - console.log((ok ? "" : "not ") + "ok " + (i ++) + - " should be a dir: " + - e.path.substr(checker.path.length + 1)) - }) -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok " + (i ++) + " ended") -}) - -r.pipe(w) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js deleted file mode 100644 index 648ec849..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js +++ /dev/null @@ -1,115 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - } - }) - -var w = fstream.Writer({ path: path.resolve(__dirname, "deep-copy") - , type: "Directory" - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename, entry) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 10) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok 1 A WINNAR IS YOU") - ended = true -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok 2 ended") -}) - -r.pipe(w) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js deleted file mode 100644 index 9aa1a953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js +++ /dev/null @@ -1,54 +0,0 @@ -var fstream = require("../fstream.js") -var tap = require("tap") -var fs = require("fs") -var path = require("path") -var children = -1 -var dir = path.dirname(__dirname) - -var gotReady = false -var ended = false - -tap.test("reader test", function (t) { - - var r = fstream.Reader({ path: dir - , filter: function () { - // return this.parent === r - return this.parent === r || this === r - } - }) - - r.on("ready", function () { - gotReady = true - children = fs.readdirSync(dir).length - console.error("Setting expected children to "+children) - t.equal(r.type, "Directory", "should be a directory") - }) - - r.on("entry", function (entry) { - children -- - if (!gotReady) { - t.fail("children before ready!") - } - t.equal(entry.dirname, r.path, "basename is parent dir") - }) - - r.on("error", function (er) { - t.fail(er) - t.end() - process.exit(1) - }) - - r.on("end", function () { - t.equal(children, 0, "should have seen all children") - ended = true - }) - - var closed = false - r.on("close", function () { - t.ok(ended, "saw end before close") - t.notOk(closed, "close should only happen once") - closed = true - t.end() - }) - -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js deleted file mode 100644 index d7816d24..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js +++ /dev/null @@ -1,24 +0,0 @@ -var fstream = require("../fstream.js") - , closed = false - -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , isSymbolicLink: true - , mode: "0755" // octal strings supported - }) - .on("close", function () { - closed = true - var fs = require("fs") - var s = fs.lstatSync("path/to/symlink") - var isSym = s.isSymbolicLink() - console.log((isSym?"":"not ") +"ok 1 should be symlink") - var t = fs.readlinkSync("path/to/symlink") - var isTarget = t === "./file" - console.log((isTarget?"":"not ") +"ok 2 should link to ./file") - }) - .end() - -process.on("exit", function () { - console.log((closed?"":"not ")+"ok 3 should be closed") -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js deleted file mode 100644 index c66d26f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js +++ /dev/null @@ -1,31 +0,0 @@ -exports.Abstract = require("./lib/abstract.js") -exports.Reader = require("./lib/reader.js") -exports.Writer = require("./lib/writer.js") - -exports.File = - { Reader: require("./lib/file-reader.js") - , Writer: require("./lib/file-writer.js") } - -exports.Dir = - { Reader : require("./lib/dir-reader.js") - , Writer : require("./lib/dir-writer.js") } - -exports.Link = - { Reader : require("./lib/link-reader.js") - , Writer : require("./lib/link-writer.js") } - -exports.Proxy = - { Reader : require("./lib/proxy-reader.js") - , Writer : require("./lib/proxy-writer.js") } - -exports.Reader.Dir = exports.DirReader = exports.Dir.Reader -exports.Reader.File = exports.FileReader = exports.File.Reader -exports.Reader.Link = exports.LinkReader = exports.Link.Reader -exports.Reader.Proxy = exports.ProxyReader = exports.Proxy.Reader - -exports.Writer.Dir = exports.DirWriter = exports.Dir.Writer -exports.Writer.File = exports.FileWriter = exports.File.Writer -exports.Writer.Link = exports.LinkWriter = exports.Link.Writer -exports.Writer.Proxy = exports.ProxyWriter = exports.Proxy.Writer - -exports.collect = require("./lib/collect.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js deleted file mode 100644 index 11ef0e28..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js +++ /dev/null @@ -1,85 +0,0 @@ -// the parent class for all fstreams. - -module.exports = Abstract - -var Stream = require("stream").Stream - , inherits = require("inherits") - -function Abstract () { - Stream.call(this) -} - -inherits(Abstract, Stream) - -Abstract.prototype.on = function (ev, fn) { - if (ev === "ready" && this.ready) { - process.nextTick(fn.bind(this)) - } else { - Stream.prototype.on.call(this, ev, fn) - } - return this -} - -Abstract.prototype.abort = function () { - this._aborted = true - this.emit("abort") -} - -Abstract.prototype.destroy = function () {} - -Abstract.prototype.warn = function (msg, code) { - var me = this - , er = decorate(msg, code, me) - if (!me.listeners("warn")) { - console.error("%s %s\n" + - "path = %s\n" + - "syscall = %s\n" + - "fstream_type = %s\n" + - "fstream_path = %s\n" + - "fstream_unc_path = %s\n" + - "fstream_class = %s\n" + - "fstream_stack =\n%s\n", - code || "UNKNOWN", - er.stack, - er.path, - er.syscall, - er.fstream_type, - er.fstream_path, - er.fstream_unc_path, - er.fstream_class, - er.fstream_stack.join("\n")) - } else { - me.emit("warn", er) - } -} - -Abstract.prototype.info = function (msg, code) { - this.emit("info", msg, code) -} - -Abstract.prototype.error = function (msg, code, th) { - var er = decorate(msg, code, this) - if (th) throw er - else this.emit("error", er) -} - -function decorate (er, code, me) { - if (!(er instanceof Error)) er = new Error(er) - er.code = er.code || code - er.path = er.path || me.path - er.fstream_type = er.fstream_type || me.type - er.fstream_path = er.fstream_path || me.path - if (me._path !== me.path) { - er.fstream_unc_path = er.fstream_unc_path || me._path - } - if (me.linkpath) { - er.fstream_linkpath = er.fstream_linkpath || me.linkpath - } - er.fstream_class = er.fstream_class || me.constructor.name - er.fstream_stack = er.fstream_stack || - new Error().stack.split(/\n/).slice(3).map(function (s) { - return s.replace(/^ at /, "") - }) - - return er -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js deleted file mode 100644 index a36f780e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = collect - -function collect (stream) { - if (stream._collected) return - - stream._collected = true - stream.pause() - - stream.on("data", save) - stream.on("end", save) - var buf = [] - function save (b) { - if (typeof b === "string") b = new Buffer(b) - if (Buffer.isBuffer(b) && !b.length) return - buf.push(b) - } - - stream.on("entry", saveEntry) - var entryBuffer = [] - function saveEntry (e) { - collect(e) - entryBuffer.push(e) - } - - stream.on("proxy", proxyPause) - function proxyPause (p) { - p.pause() - } - - - // replace the pipe method with a new version that will - // unlock the buffered stuff. if you just call .pipe() - // without a destination, then it'll re-play the events. - stream.pipe = (function (orig) { return function (dest) { - // console.error(" === open the pipes", dest && dest.path) - - // let the entries flow through one at a time. - // Once they're all done, then we can resume completely. - var e = 0 - ;(function unblockEntry () { - var entry = entryBuffer[e++] - // console.error(" ==== unblock entry", entry && entry.path) - if (!entry) return resume() - entry.on("end", unblockEntry) - if (dest) dest.add(entry) - else stream.emit("entry", entry) - })() - - function resume () { - stream.removeListener("entry", saveEntry) - stream.removeListener("data", save) - stream.removeListener("end", save) - - stream.pipe = orig - if (dest) stream.pipe(dest) - - buf.forEach(function (b) { - if (b) stream.emit("data", b) - else stream.emit("end") - }) - - stream.resume() - } - - return dest - }})(stream.pipe) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js deleted file mode 100644 index 346ac2b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js +++ /dev/null @@ -1,251 +0,0 @@ -// A thing that emits "entry" events with Reader objects -// Pausing it causes it to stop emitting entry events, and also -// pauses the current entry if there is one. - -module.exports = DirReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , Reader = require("./reader.js") - , assert = require("assert").ok - -inherits(DirReader, Reader) - -function DirReader (props) { - var me = this - if (!(me instanceof DirReader)) throw new Error( - "DirReader must be called as constructor.") - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - throw new Error("Non-directory type "+ props.type) - } - - me.entries = null - me._index = -1 - me._paused = false - me._length = -1 - - if (props.sort) { - this.sort = props.sort - } - - Reader.call(this, props) -} - -DirReader.prototype._getEntries = function () { - var me = this - - // race condition. might pause() before calling _getEntries, - // and then resume, and try to get them a second time. - if (me._gotEntries) return - me._gotEntries = true - - fs.readdir(me._path, function (er, entries) { - if (er) return me.error(er) - - me.entries = entries - - me.emit("entries", entries) - if (me._paused) me.once("resume", processEntries) - else processEntries() - - function processEntries () { - me._length = me.entries.length - if (typeof me.sort === "function") { - me.entries = me.entries.sort(me.sort.bind(me)) - } - me._read() - } - }) -} - -// start walking the dir, and emit an "entry" event for each one. -DirReader.prototype._read = function () { - var me = this - - if (!me.entries) return me._getEntries() - - if (me._paused || me._currentEntry || me._aborted) { - // console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted) - return - } - - me._index ++ - if (me._index >= me.entries.length) { - if (!me._ended) { - me._ended = true - me.emit("end") - me.emit("close") - } - return - } - - // ok, handle this one, then. - - // save creating a proxy, by stat'ing the thing now. - var p = path.resolve(me._path, me.entries[me._index]) - assert(p !== me._path) - assert(me.entries[me._index]) - - // set this to prevent trying to _read() again in the stat time. - me._currentEntry = p - fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) { - if (er) return me.error(er) - - var who = me._proxy || me - - stat.path = p - stat.basename = path.basename(p) - stat.dirname = path.dirname(p) - var childProps = me.getChildProps.call(who, stat) - childProps.path = p - childProps.basename = path.basename(p) - childProps.dirname = path.dirname(p) - - var entry = Reader(childProps, stat) - - // console.error("DR Entry", p, stat.size) - - me._currentEntry = entry - - // "entry" events are for direct entries in a specific dir. - // "child" events are for any and all children at all levels. - // This nomenclature is not completely final. - - entry.on("pause", function (who) { - if (!me._paused && !entry._disowned) { - me.pause(who) - } - }) - - entry.on("resume", function (who) { - if (me._paused && !entry._disowned) { - me.resume(who) - } - }) - - entry.on("stat", function (props) { - me.emit("_entryStat", entry, props) - if (entry._aborted) return - if (entry._paused) entry.once("resume", function () { - me.emit("entryStat", entry, props) - }) - else me.emit("entryStat", entry, props) - }) - - entry.on("ready", function EMITCHILD () { - // console.error("DR emit child", entry._path) - if (me._paused) { - // console.error(" DR emit child - try again later") - // pause the child, and emit the "entry" event once we drain. - // console.error("DR pausing child entry") - entry.pause(me) - return me.once("resume", EMITCHILD) - } - - // skip over sockets. they can't be piped around properly, - // so there's really no sense even acknowledging them. - // if someone really wants to see them, they can listen to - // the "socket" events. - if (entry.type === "Socket") { - me.emit("socket", entry) - } else { - me.emitEntry(entry) - } - }) - - var ended = false - entry.on("close", onend) - entry.on("disown", onend) - function onend () { - if (ended) return - ended = true - me.emit("childEnd", entry) - me.emit("entryEnd", entry) - me._currentEntry = null - if (!me._paused) { - me._read() - } - } - - // XXX Remove this. Works in node as of 0.6.2 or so. - // Long filenames should not break stuff. - entry.on("error", function (er) { - if (entry._swallowErrors) { - me.warn(er) - entry.emit("end") - entry.emit("close") - } else { - me.emit("error", er) - } - }) - - // proxy up some events. - ; [ "child" - , "childEnd" - , "warn" - ].forEach(function (ev) { - entry.on(ev, me.emit.bind(me, ev)) - }) - }) -} - -DirReader.prototype.disown = function (entry) { - entry.emit("beforeDisown") - entry._disowned = true - entry.parent = entry.root = null - if (entry === this._currentEntry) { - this._currentEntry = null - } - entry.emit("disown") -} - -DirReader.prototype.getChildProps = function (stat) { - return { depth: this.depth + 1 - , root: this.root || this - , parent: this - , follow: this.follow - , filter: this.filter - , sort: this.props.sort - , hardlinks: this.props.hardlinks - } -} - -DirReader.prototype.pause = function (who) { - var me = this - if (me._paused) return - who = who || me - me._paused = true - if (me._currentEntry && me._currentEntry.pause) { - me._currentEntry.pause(who) - } - me.emit("pause", who) -} - -DirReader.prototype.resume = function (who) { - var me = this - if (!me._paused) return - who = who || me - - me._paused = false - // console.error("DR Emit Resume", me._path) - me.emit("resume", who) - if (me._paused) { - // console.error("DR Re-paused", me._path) - return - } - - if (me._currentEntry) { - if (me._currentEntry.resume) me._currentEntry.resume(who) - } else me._read() -} - -DirReader.prototype.emitEntry = function (entry) { - this.emit("entry", entry) - this.emit("child", entry) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js deleted file mode 100644 index 7073b883..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js +++ /dev/null @@ -1,171 +0,0 @@ -// It is expected that, when .add() returns false, the consumer -// of the DirWriter will pause until a "drain" event occurs. Note -// that this is *almost always going to be the case*, unless the -// thing being written is some sort of unsupported type, and thus -// skipped over. - -module.exports = DirWriter - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Writer = require("./writer.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , collect = require("./collect.js") - -inherits(DirWriter, Writer) - -function DirWriter (props) { - var me = this - if (!(me instanceof DirWriter)) me.error( - "DirWriter must be called as constructor.", null, true) - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - me.error("Non-directory type "+ props.type + " " + - JSON.stringify(props), null, true) - } - - Writer.call(this, props) -} - -DirWriter.prototype._create = function () { - var me = this - mkdir(me._path, Writer.dirmode, function (er) { - if (er) return me.error(er) - // ready to start getting entries! - me.ready = true - me.emit("ready") - me._process() - }) -} - -// a DirWriter has an add(entry) method, but its .write() doesn't -// do anything. Why a no-op rather than a throw? Because this -// leaves open the door for writing directory metadata for -// gnu/solaris style dumpdirs. -DirWriter.prototype.write = function () { - return true -} - -DirWriter.prototype.end = function () { - this._ended = true - this._process() -} - -DirWriter.prototype.add = function (entry) { - var me = this - - // console.error("\tadd", entry._path, "->", me._path) - collect(entry) - if (!me.ready || me._currentEntry) { - me._buffer.push(entry) - return false - } - - // create a new writer, and pipe the incoming entry into it. - if (me._ended) { - return me.error("add after end") - } - - me._buffer.push(entry) - me._process() - - return 0 === this._buffer.length -} - -DirWriter.prototype._process = function () { - var me = this - - // console.error("DW Process p=%j", me._processing, me.basename) - - if (me._processing) return - - var entry = me._buffer.shift() - if (!entry) { - // console.error("DW Drain") - me.emit("drain") - if (me._ended) me._finish() - return - } - - me._processing = true - // console.error("DW Entry", entry._path) - - me.emit("entry", entry) - - // ok, add this entry - // - // don't allow recursive copying - var p = entry - do { - var pp = p._path || p.path - if (pp === me.root._path || pp === me._path || - (pp && pp.indexOf(me._path) === 0)) { - // console.error("DW Exit (recursive)", entry.basename, me._path) - me._processing = false - if (entry._collected) entry.pipe() - return me._process() - } - } while (p = p.parent) - - // console.error("DW not recursive") - - // chop off the entry's root dir, replace with ours - var props = { parent: me - , root: me.root || me - , type: entry.type - , depth: me.depth + 1 } - - var p = entry._path || entry.path || entry.props.path - if (entry.parent) { - p = p.substr(entry.parent._path.length + 1) - } - // get rid of any ../../ shenanigans - props.path = path.join(me.path, path.join("/", p)) - - // if i have a filter, the child should inherit it. - props.filter = me.filter - - // all the rest of the stuff, copy over from the source. - Object.keys(entry.props).forEach(function (k) { - if (!props.hasOwnProperty(k)) { - props[k] = entry.props[k] - } - }) - - // not sure at this point what kind of writer this is. - var child = me._currentChild = new Writer(props) - child.on("ready", function () { - // console.error("DW Child Ready", child.type, child._path) - // console.error(" resuming", entry._path) - entry.pipe(child) - entry.resume() - }) - - // XXX Make this work in node. - // Long filenames should not break stuff. - child.on("error", function (er) { - if (child._swallowErrors) { - me.warn(er) - child.emit("end") - child.emit("close") - } else { - me.emit("error", er) - } - }) - - // we fire _end internally *after* end, so that we don't move on - // until any "end" listeners have had their chance to do stuff. - child.on("close", onend) - var ended = false - function onend () { - if (ended) return - ended = true - // console.error("* DW Child end", child.basename) - me._currentChild = null - me._processing = false - me._process() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js deleted file mode 100644 index b1f98618..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js +++ /dev/null @@ -1,147 +0,0 @@ -// Basically just a wrapper around an fs.ReadStream - -module.exports = FileReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - , EOF = {EOF: true} - , CLOSE = {CLOSE: true} - -inherits(FileReader, Reader) - -function FileReader (props) { - // console.error(" FR create", props.path, props.size, new Error().stack) - var me = this - if (!(me instanceof FileReader)) throw new Error( - "FileReader must be called as constructor.") - - // should already be established as a File type - // XXX Todo: preserve hardlinks by tracking dev+inode+nlink, - // with a HardLinkReader class. - if (!((props.type === "Link" && props.Link) || - (props.type === "File" && props.File))) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesEmitted = 0 - Reader.call(me, props) -} - -FileReader.prototype._getStream = function () { - var me = this - , stream = me._stream = fs.createReadStream(me._path, me.props) - - if (me.props.blksize) { - stream.bufferSize = me.props.blksize - } - - stream.on("open", me.emit.bind(me, "open")) - - stream.on("data", function (c) { - // console.error("\t\t%d %s", c.length, me.basename) - me._bytesEmitted += c.length - // no point saving empty chunks - if (!c.length) return - else if (me._paused || me._buffer.length) { - me._buffer.push(c) - me._read() - } else me.emit("data", c) - }) - - stream.on("end", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering End", me._path) - me._buffer.push(EOF) - me._read() - } else { - me.emit("end") - } - - if (me._bytesEmitted !== me.props.size) { - me.error("Didn't get expected byte count\n"+ - "expect: "+me.props.size + "\n" + - "actual: "+me._bytesEmitted) - } - }) - - stream.on("close", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering Close", me._path) - me._buffer.push(CLOSE) - me._read() - } else { - // console.error("FR close 1", me._path) - me.emit("close") - } - }) - - me._read() -} - -FileReader.prototype._read = function () { - var me = this - // console.error("FR _read", me._path) - if (me._paused) { - // console.error("FR _read paused", me._path) - return - } - - if (!me._stream) { - // console.error("FR _getStream calling", me._path) - return me._getStream() - } - - // clear out the buffer, if there is one. - if (me._buffer.length) { - // console.error("FR _read has buffer", me._buffer.length, me._path) - var buf = me._buffer - for (var i = 0, l = buf.length; i < l; i ++) { - var c = buf[i] - if (c === EOF) { - // console.error("FR Read emitting buffered end", me._path) - me.emit("end") - } else if (c === CLOSE) { - // console.error("FR Read emitting buffered close", me._path) - me.emit("close") - } else { - // console.error("FR Read emitting buffered data", me._path) - me.emit("data", c) - } - - if (me._paused) { - // console.error("FR Read Re-pausing at "+i, me._path) - me._buffer = buf.slice(i) - return - } - } - me._buffer.length = 0 - } - // console.error("FR _read done") - // that's about all there is to it. -} - -FileReader.prototype.pause = function (who) { - var me = this - // console.error("FR Pause", me._path) - if (me._paused) return - who = who || me - me._paused = true - if (me._stream) me._stream.pause() - me.emit("pause", who) -} - -FileReader.prototype.resume = function (who) { - var me = this - // console.error("FR Resume", me._path) - if (!me._paused) return - who = who || me - me.emit("resume", who) - me._paused = false - if (me._stream) me._stream.resume() - me._read() -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js deleted file mode 100644 index 68114625..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js +++ /dev/null @@ -1,100 +0,0 @@ -module.exports = FileWriter - -var fs = require("graceful-fs") - , mkdir = require("mkdirp") - , Writer = require("./writer.js") - , inherits = require("inherits") - , EOF = {} - -inherits(FileWriter, Writer) - -function FileWriter (props) { - var me = this - if (!(me instanceof FileWriter)) throw new Error( - "FileWriter must be called as constructor.") - - // should already be established as a File type - if (props.type !== "File" || !props.File) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesWritten = 0 - - Writer.call(this, props) -} - -FileWriter.prototype._create = function () { - var me = this - if (me._stream) return - - var so = {} - if (me.props.flags) so.flags = me.props.flags - so.mode = Writer.filemode - if (me._old && me._old.blksize) so.bufferSize = me._old.blksize - - me._stream = fs.createWriteStream(me._path, so) - - me._stream.on("open", function (fd) { - // console.error("FW open", me._buffer, me._path) - me.ready = true - me._buffer.forEach(function (c) { - if (c === EOF) me._stream.end() - else me._stream.write(c) - }) - me.emit("ready") - // give this a kick just in case it needs it. - me.emit("drain") - }) - - me._stream.on("drain", function () { me.emit("drain") }) - - me._stream.on("close", function () { - // console.error("\n\nFW Stream Close", me._path, me.size) - me._finish() - }) -} - -FileWriter.prototype.write = function (c) { - var me = this - - me._bytesWritten += c.length - - if (!me.ready) { - if (!Buffer.isBuffer(c) && typeof c !== 'string') - throw new Error('invalid write data') - me._buffer.push(c) - return false - } - - var ret = me._stream.write(c) - // console.error("\t-- fw wrote, _stream says", ret, me._stream._queue.length) - - // allow 2 buffered writes, because otherwise there's just too - // much stop and go bs. - return ret || (me._stream._queue && me._stream._queue.length <= 2) -} - -FileWriter.prototype.end = function (c) { - var me = this - - if (c) me.write(c) - - if (!me.ready) { - me._buffer.push(EOF) - return false - } - - return me._stream.end() -} - -FileWriter.prototype._finish = function () { - var me = this - if (typeof me.size === "number" && me._bytesWritten != me.size) { - me.error( - "Did not get expected byte count.\n" + - "expect: " + me.size + "\n" + - "actual: " + me._bytesWritten) - } - Writer.prototype._finish.call(me) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js deleted file mode 100644 index cd65c41d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = getType - -function getType (st) { - var types = - [ "Directory" - , "File" - , "SymbolicLink" - , "Link" // special for hardlinks from tarballs - , "BlockDevice" - , "CharacterDevice" - , "FIFO" - , "Socket" ] - , type - - if (st.type && -1 !== types.indexOf(st.type)) { - st[st.type] = true - return st.type - } - - for (var i = 0, l = types.length; i < l; i ++) { - type = types[i] - var is = st[type] || st["is" + type] - if (typeof is === "function") is = is.call(st) - if (is) { - st[type] = true - st.type = type - return type - } - } - - return null -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js deleted file mode 100644 index 7e7ab6ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js +++ /dev/null @@ -1,54 +0,0 @@ -// Basically just a wrapper around an fs.readlink -// -// XXX: Enhance this to support the Link type, by keeping -// a lookup table of {<dev+inode>:<path>}, so that hardlinks -// can be preserved in tarballs. - -module.exports = LinkReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(LinkReader, Reader) - -function LinkReader (props) { - var me = this - if (!(me instanceof LinkReader)) throw new Error( - "LinkReader must be called as constructor.") - - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - Reader.call(me, props) -} - -// When piping a LinkReader into a LinkWriter, we have to -// already have the linkpath property set, so that has to -// happen *before* the "ready" event, which means we need to -// override the _stat method. -LinkReader.prototype._stat = function (currentStat) { - var me = this - fs.readlink(me._path, function (er, linkpath) { - if (er) return me.error(er) - me.linkpath = me.props.linkpath = linkpath - me.emit("linkpath", linkpath) - Reader.prototype._stat.call(me, currentStat) - }) -} - -LinkReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we need - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js deleted file mode 100644 index 5c8f1e70..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js +++ /dev/null @@ -1,95 +0,0 @@ - -module.exports = LinkWriter - -var fs = require("graceful-fs") - , Writer = require("./writer.js") - , inherits = require("inherits") - , path = require("path") - , rimraf = require("rimraf") - -inherits(LinkWriter, Writer) - -function LinkWriter (props) { - var me = this - if (!(me instanceof LinkWriter)) throw new Error( - "LinkWriter must be called as constructor.") - - // should already be established as a Link type - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - if (props.linkpath === "") props.linkpath = "." - if (!props.linkpath) { - me.error("Need linkpath property to create " + props.type) - } - - Writer.call(this, props) -} - -LinkWriter.prototype._create = function () { - // console.error(" LW _create") - var me = this - , hard = me.type === "Link" || process.platform === "win32" - , link = hard ? "link" : "symlink" - , lp = hard ? path.resolve(me.dirname, me.linkpath) : me.linkpath - - // can only change the link path by clobbering - // For hard links, let's just assume that's always the case, since - // there's no good way to read them if we don't already know. - if (hard) return clobber(me, lp, link) - - fs.readlink(me._path, function (er, p) { - // only skip creation if it's exactly the same link - if (p && p === lp) return finish(me) - clobber(me, lp, link) - }) -} - -function clobber (me, lp, link) { - rimraf(me._path, function (er) { - if (er) return me.error(er) - create(me, lp, link) - }) -} - -function create (me, lp, link) { - fs[link](lp, me._path, function (er) { - // if this is a hard link, and we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier in. - // Additionally, an EPERM or EACCES can happen on win32 if it's trying - // to make a link to a directory. Again, just skip it. - // A better solution would be to have fs.symlink be supported on - // windows in some nice fashion. - if (er) { - if ((er.code === "ENOENT" || - er.code === "EACCES" || - er.code === "EPERM" ) && process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - } else return me.error(er) - } - finish(me) - }) -} - -function finish (me) { - me.ready = true - me.emit("ready") - if (me._ended && !me._finished) me._finish() -} - -LinkWriter.prototype.end = function () { - // console.error("LW finish in end") - this._ended = true - if (this.ready) { - this._finished = true - this._finish() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js deleted file mode 100644 index a0ece34a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js +++ /dev/null @@ -1,93 +0,0 @@ -// A reader for when we don't yet know what kind of thing -// the thing is. - -module.exports = ProxyReader - -var Reader = require("./reader.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , fs = require("graceful-fs") - -inherits(ProxyReader, Reader) - -function ProxyReader (props) { - var me = this - if (!(me instanceof ProxyReader)) throw new Error( - "ProxyReader must be called as constructor.") - - me.props = props - me._buffer = [] - me.ready = false - - Reader.call(me, props) -} - -ProxyReader.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Reader(props, current)) - }) -} - -ProxyReader.prototype._addProxy = function (proxy) { - var me = this - if (me._proxyTarget) { - return me.error("proxy already set") - } - - me._proxyTarget = proxy - proxy._proxy = me - - ; [ "error" - , "data" - , "end" - , "close" - , "linkpath" - , "entry" - , "entryEnd" - , "child" - , "childEnd" - , "warn" - , "stat" - ].forEach(function (ev) { - // console.error("~~ proxy event", ev, me.path) - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - proxy.on("ready", function () { - // console.error("~~ proxy is ready!", me.path) - me.ready = true - me.emit("ready") - }) - - var calls = me._buffer - me._buffer.length = 0 - calls.forEach(function (c) { - proxy[c[0]].apply(proxy, c[1]) - }) -} - -ProxyReader.prototype.pause = function () { - return this._proxyTarget ? this._proxyTarget.pause() : false -} - -ProxyReader.prototype.resume = function () { - return this._proxyTarget ? this._proxyTarget.resume() : false -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js deleted file mode 100644 index b0476633..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js +++ /dev/null @@ -1,109 +0,0 @@ -// A writer for when we don't know what kind of thing -// the thing is. That is, it's not explicitly set, -// so we're going to make it whatever the thing already -// is, or "File" -// -// Until then, collect all events. - -module.exports = ProxyWriter - -var Writer = require("./writer.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , collect = require("./collect.js") - , fs = require("fs") - -inherits(ProxyWriter, Writer) - -function ProxyWriter (props) { - var me = this - if (!(me instanceof ProxyWriter)) throw new Error( - "ProxyWriter must be called as constructor.") - - me.props = props - me._needDrain = false - - Writer.call(me, props) -} - -ProxyWriter.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Writer(props, current)) - }) -} - -ProxyWriter.prototype._addProxy = function (proxy) { - // console.error("~~ set proxy", this.path) - var me = this - if (me._proxy) { - return me.error("proxy already set") - } - - me._proxy = proxy - ; [ "ready" - , "error" - , "close" - , "pipe" - , "drain" - , "warn" - ].forEach(function (ev) { - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - var calls = me._buffer - calls.forEach(function (c) { - // console.error("~~ ~~ proxy buffered call", c[0], c[1]) - proxy[c[0]].apply(proxy, c[1]) - }) - me._buffer.length = 0 - if (me._needsDrain) me.emit("drain") -} - -ProxyWriter.prototype.add = function (entry) { - // console.error("~~ proxy add") - collect(entry) - - if (!this._proxy) { - this._buffer.push(["add", [entry]]) - this._needDrain = true - return false - } - return this._proxy.add(entry) -} - -ProxyWriter.prototype.write = function (c) { - // console.error("~~ proxy write") - if (!this._proxy) { - this._buffer.push(["write", [c]]) - this._needDrain = true - return false - } - return this._proxy.write(c) -} - -ProxyWriter.prototype.end = function (c) { - // console.error("~~ proxy end") - if (!this._proxy) { - this._buffer.push(["end", [c]]) - return false - } - return this._proxy.end(c) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js deleted file mode 100644 index eaf921cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js +++ /dev/null @@ -1,260 +0,0 @@ - -module.exports = Reader - -var fs = require("graceful-fs") - , Stream = require("stream").Stream - , inherits = require("inherits") - , path = require("path") - , getType = require("./get-type.js") - , hardLinks = Reader.hardLinks = {} - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Reader, Abstract) - -var DirReader = require("./dir-reader.js") - , FileReader = require("./file-reader.js") - , LinkReader = require("./link-reader.js") - , SocketReader = require("./socket-reader.js") - , ProxyReader = require("./proxy-reader.js") - -function Reader (props, currentStat) { - var me = this - if (!(me instanceof Reader)) return new Reader(props, currentStat) - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) { - me.error("Must provide a path", null, true) - } - - // polymorphism. - // call fstream.Reader(dir) to get a DirReader object, etc. - // Note that, unlike in the Writer case, ProxyReader is going - // to be the *normal* state of affairs, since we rarely know - // the type of a file prior to reading it. - - - var type - , ClassType - - if (props.type && typeof props.type === "function") { - type = props.type - ClassType = type - } else { - type = getType(props) - ClassType = Reader - } - - if (currentStat && !type) { - type = getType(currentStat) - props[type] = true - props.type = type - } - - switch (type) { - case "Directory": - ClassType = DirReader - break - - case "Link": - // XXX hard links are just files. - // However, it would be good to keep track of files' dev+inode - // and nlink values, and create a HardLinkReader that emits - // a linkpath value of the original copy, so that the tar - // writer can preserve them. - // ClassType = HardLinkReader - // break - - case "File": - ClassType = FileReader - break - - case "SymbolicLink": - ClassType = LinkReader - break - - case "Socket": - ClassType = SocketReader - break - - case null: - ClassType = ProxyReader - break - } - - if (!(me instanceof ClassType)) { - return new ClassType(props) - } - - Abstract.call(me) - - me.readable = true - me.writable = false - - me.type = type - me.props = props - me.depth = props.depth = props.depth || 0 - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - // how DOES one create files on the moon? - // if the path has spaces in it, then UNC will fail. - me._swallowErrors = true - //if (me._path.indexOf(" ") === -1) { - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - //} - } - } - me.basename = props.basename = path.basename(me.path) - me.dirname = props.dirname = path.dirname(me.path) - - // these have served their purpose, and are now just noisy clutter - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - me.filter = typeof props.filter === "function" ? props.filter : null - if (props.sort === "alpha") props.sort = alphasort - - // start the ball rolling. - // this will stat the thing, and then call me._read() - // to start reading whatever it is. - // console.error("calling stat", props.path, currentStat) - me._stat(currentStat) -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - -Reader.prototype._stat = function (currentStat) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - // console.error("Reader._stat", me._path, currentStat) - if (currentStat) process.nextTick(statCb.bind(null, null, currentStat)) - else fs[stat](me._path, statCb) - - - function statCb (er, props_) { - // console.error("Reader._stat, statCb", me._path, props_, props_.nlink) - if (er) return me.error(er) - - Object.keys(props_).forEach(function (k) { - props[k] = props_[k] - }) - - // if it's not the expected size, then abort here. - if (undefined !== me.size && props.size !== me.size) { - return me.error("incorrect size") - } - me.size = props.size - - var type = getType(props) - var handleHardlinks = props.hardlinks !== false - - // special little thing for handling hardlinks. - if (handleHardlinks && type !== "Directory" && props.nlink && props.nlink > 1) { - var k = props.dev + ":" + props.ino - // console.error("Reader has nlink", me._path, k) - if (hardLinks[k] === me._path || !hardLinks[k]) hardLinks[k] = me._path - else { - // switch into hardlink mode. - type = me.type = me.props.type = "Link" - me.Link = me.props.Link = true - me.linkpath = me.props.linkpath = hardLinks[k] - // console.error("Hardlink detected, switching mode", me._path, me.linkpath) - // Setting __proto__ would arguably be the "correct" - // approach here, but that just seems too wrong. - me._stat = me._read = LinkReader.prototype._read - } - } - - if (me.type && me.type !== type) { - me.error("Unexpected type: " + type) - } - - // if the filter doesn't pass, then just skip over this one. - // still have to emit end so that dir-walking can move on. - if (me.filter) { - var who = me._proxy || me - // special handling for ProxyReaders - if (!me.filter.call(who, who, props)) { - if (!me._disowned) { - me.abort() - me.emit("end") - me.emit("close") - } - return - } - } - - // last chance to abort or disown before the flow starts! - var events = ["_stat", "stat", "ready"] - var e = 0 - ;(function go () { - if (me._aborted) { - me.emit("end") - me.emit("close") - return - } - - if (me._paused) { - me.once("resume", go) - return - } - - var ev = events[e ++] - if (!ev) return me._read() - me.emit(ev, props) - go() - })() - } -} - -Reader.prototype.pipe = function (dest, opts) { - var me = this - if (typeof dest.add === "function") { - // piping to a multi-compatible, and we've got directory entries. - me.on("entry", function (entry) { - var ret = dest.add(entry) - if (false === ret) { - me.pause() - } - }) - } - - // console.error("R Pipe apply Stream Pipe") - return Stream.prototype.pipe.apply(this, arguments) -} - -Reader.prototype.pause = function (who) { - this._paused = true - who = who || this - this.emit("pause", who) - if (this._stream) this._stream.pause(who) -} - -Reader.prototype.resume = function (who) { - this._paused = false - who = who || this - this.emit("resume", who) - if (this._stream) this._stream.resume(who) - this._read() -} - -Reader.prototype._read = function () { - this.error("Cannot read unknown type: "+this.type) -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js deleted file mode 100644 index e89c1731..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js +++ /dev/null @@ -1,38 +0,0 @@ -// Just get the stats, and then don't do anything. -// You can't really "read" from a socket. You "connect" to it. -// Mostly, this is here so that reading a dir with a socket in it -// doesn't blow up. - -module.exports = SocketReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(SocketReader, Reader) - -function SocketReader (props) { - var me = this - if (!(me instanceof SocketReader)) throw new Error( - "SocketReader must be called as constructor.") - - if (!(props.type === "Socket" && props.Socket)) { - throw new Error("Non-socket type "+ props.type) - } - - Reader.call(me, props) -} - -SocketReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we have - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js deleted file mode 100644 index 5599fb22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js +++ /dev/null @@ -1,389 +0,0 @@ - -module.exports = Writer - -var fs = require("graceful-fs") - , inherits = require("inherits") - , rimraf = require("rimraf") - , mkdir = require("mkdirp") - , path = require("path") - , umask = process.platform === "win32" ? 0 : process.umask() - , getType = require("./get-type.js") - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Writer, Abstract) - -Writer.dirmode = 0777 & (~umask) -Writer.filemode = 0666 & (~umask) - -var DirWriter = require("./dir-writer.js") - , LinkWriter = require("./link-writer.js") - , FileWriter = require("./file-writer.js") - , ProxyWriter = require("./proxy-writer.js") - -// props is the desired state. current is optionally the current stat, -// provided here so that subclasses can avoid statting the target -// more than necessary. -function Writer (props, current) { - var me = this - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) me.error("Must provide a path", null, true) - - // polymorphism. - // call fstream.Writer(dir) to get a DirWriter object, etc. - var type = getType(props) - , ClassType = Writer - - switch (type) { - case "Directory": - ClassType = DirWriter - break - case "File": - ClassType = FileWriter - break - case "Link": - case "SymbolicLink": - ClassType = LinkWriter - break - case null: - // Don't know yet what type to create, so we wrap in a proxy. - ClassType = ProxyWriter - break - } - - if (!(me instanceof ClassType)) return new ClassType(props) - - // now get down to business. - - Abstract.call(me) - - // props is what we want to set. - // set some convenience properties as well. - me.type = props.type - me.props = props - me.depth = props.depth || 0 - me.clobber = false === props.clobber ? props.clobber : true - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - me._swallowErrors = true - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - } - } - me.basename = path.basename(props.path) - me.dirname = path.dirname(props.path) - me.linkpath = props.linkpath || null - - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - - if (typeof props.mode === "string") { - props.mode = parseInt(props.mode, 8) - } - - me.readable = false - me.writable = true - - // buffer until ready, or while handling another entry - me._buffer = [] - me.ready = false - - me.filter = typeof props.filter === "function" ? props.filter: null - - // start the ball rolling. - // this checks what's there already, and then calls - // me._create() to call the impl-specific creation stuff. - me._stat(current) -} - -// Calling this means that it's something we can't create. -// Just assert that it's already there, otherwise raise a warning. -Writer.prototype._create = function () { - var me = this - fs[me.props.follow ? "stat" : "lstat"](me._path, function (er, current) { - if (er) { - return me.warn("Cannot create " + me._path + "\n" + - "Unsupported type: "+me.type, "ENOTSUP") - } - me._finish() - }) -} - -Writer.prototype._stat = function (current) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - , who = me._proxy || me - - if (current) statCb(null, current) - else fs[stat](me._path, statCb) - - function statCb (er, current) { - if (me.filter && !me.filter.call(who, who, current)) { - me._aborted = true - me.emit("end") - me.emit("close") - return - } - - // if it's not there, great. We'll just create it. - // if it is there, then we'll need to change whatever differs - if (er || !current) { - return create(me) - } - - me._old = current - var currentType = getType(current) - - // if it's a type change, then we need to clobber or error. - // if it's not a type change, then let the impl take care of it. - if (currentType !== me.type) { - return rimraf(me._path, function (er) { - if (er) return me.error(er) - me._old = null - create(me) - }) - } - - // otherwise, just handle in the app-specific way - // this creates a fs.WriteStream, or mkdir's, or whatever - create(me) - } -} - -function create (me) { - // console.error("W create", me._path, Writer.dirmode) - - // XXX Need to clobber non-dirs that are in the way, - // unless { clobber: false } in the props. - mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) { - // console.error("W created", path.dirname(me._path), er) - if (er) return me.error(er) - - // later on, we have to set the mode and owner for these - me._madeDir = made - return me._create() - }) -} - -function endChmod (me, want, current, path, cb) { - var wantMode = want.mode - , chmod = want.follow || me.type !== "SymbolicLink" - ? "chmod" : "lchmod" - - if (!fs[chmod]) return cb() - if (typeof wantMode !== "number") return cb() - - var curMode = current.mode & 0777 - wantMode = wantMode & 0777 - if (wantMode === curMode) return cb() - - fs[chmod](path, wantMode, cb) -} - - -function endChown (me, want, current, path, cb) { - // Don't even try it unless root. Too easy to EPERM. - if (process.platform === "win32") return cb() - if (!process.getuid || !process.getuid() === 0) return cb() - if (typeof want.uid !== "number" && - typeof want.gid !== "number" ) return cb() - - if (current.uid === want.uid && - current.gid === want.gid) return cb() - - var chown = (me.props.follow || me.type !== "SymbolicLink") - ? "chown" : "lchown" - if (!fs[chown]) return cb() - - if (typeof want.uid !== "number") want.uid = current.uid - if (typeof want.gid !== "number") want.gid = current.gid - - fs[chown](path, want.uid, want.gid, cb) -} - -function endUtimes (me, want, current, path, cb) { - if (!fs.utimes || process.platform === "win32") return cb() - - var utimes = (want.follow || me.type !== "SymbolicLink") - ? "utimes" : "lutimes" - - if (utimes === "lutimes" && !fs[utimes]) { - utimes = "utimes" - } - - if (!fs[utimes]) return cb() - - var curA = current.atime - , curM = current.mtime - , meA = want.atime - , meM = want.mtime - - if (meA === undefined) meA = curA - if (meM === undefined) meM = curM - - if (!isDate(meA)) meA = new Date(meA) - if (!isDate(meM)) meA = new Date(meM) - - if (meA.getTime() === curA.getTime() && - meM.getTime() === curM.getTime()) return cb() - - fs[utimes](path, meA, meM, cb) -} - - -// XXX This function is beastly. Break it up! -Writer.prototype._finish = function () { - var me = this - - // console.error(" W Finish", me._path, me.size) - - // set up all the things. - // At this point, we're already done writing whatever we've gotta write, - // adding files to the dir, etc. - var todo = 0 - var errState = null - var done = false - - if (me._old) { - // the times will almost *certainly* have changed. - // adds the utimes syscall, but remove another stat. - me._old.atime = new Date(0) - me._old.mtime = new Date(0) - // console.error(" W Finish Stale Stat", me._path, me.size) - setProps(me._old) - } else { - var stat = me.props.follow ? "stat" : "lstat" - // console.error(" W Finish Stating", me._path, me.size) - fs[stat](me._path, function (er, current) { - // console.error(" W Finish Stated", me._path, me.size, current) - if (er) { - // if we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier on. - if (er.code === "ENOENT" && - (me.type === "Link" || me.type === "SymbolicLink") && - process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - return - } else return me.error(er) - } - setProps(me._old = current) - }) - } - - return - - function setProps (current) { - todo += 3 - endChmod(me, me.props, current, me._path, next("chmod")) - endChown(me, me.props, current, me._path, next("chown")) - endUtimes(me, me.props, current, me._path, next("utimes")) - } - - function next (what) { - return function (er) { - // console.error(" W Finish", what, todo) - if (errState) return - if (er) { - er.fstream_finish_call = what - return me.error(errState = er) - } - if (--todo > 0) return - if (done) return - done = true - - // we may still need to set the mode/etc. on some parent dirs - // that were created previously. delay end/close until then. - if (!me._madeDir) return end() - else endMadeDir(me, me._path, end) - - function end (er) { - if (er) { - er.fstream_finish_call = "setupMadeDir" - return me.error(er) - } - // all the props have been set, so we're completely done. - me.emit("end") - me.emit("close") - } - } - } -} - -function endMadeDir (me, p, cb) { - var made = me._madeDir - // everything *between* made and path.dirname(me._path) - // needs to be set up. Note that this may just be one dir. - var d = path.dirname(p) - - endMadeDir_(me, d, function (er) { - if (er) return cb(er) - if (d === made) { - return cb() - } - endMadeDir(me, d, cb) - }) -} - -function endMadeDir_ (me, p, cb) { - var dirProps = {} - Object.keys(me.props).forEach(function (k) { - dirProps[k] = me.props[k] - - // only make non-readable dirs if explicitly requested. - if (k === "mode" && me.type !== "Directory") { - dirProps[k] = dirProps[k] | 0111 - } - }) - - var todo = 3 - , errState = null - fs.stat(p, function (er, current) { - if (er) return cb(errState = er) - endChmod(me, dirProps, current, p, next) - endChown(me, dirProps, current, p, next) - endUtimes(me, dirProps, current, p, next) - }) - - function next (er) { - if (errState) return - if (er) return cb(errState = er) - if (-- todo === 0) return cb() - } -} - -Writer.prototype.pipe = function () { - this.error("Can't pipe from writable stream") -} - -Writer.prototype.add = function () { - this.error("Cannot add to non-Directory type") -} - -Writer.prototype.write = function () { - return true -} - -function objectToString (d) { - return Object.prototype.toString.call(d) -} - -function isDate(d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md deleted file mode 100644 index eb1a1093..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over fs module - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index baf957d8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,161 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('fs') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -// The EMFILE enqueuing stuff - -var util = require('util') - -function noop () {} - -var debug = noop -var util = require('util') -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json deleted file mode 100644 index d882e6ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "2.0.2", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "readme": "# graceful-fs\n\ngraceful-fs functions as a drop-in replacement for the fs module,\nmaking various improvements.\n\nThe improvements are meant to normalize behavior across different\nplatforms and environments, and to make filesystem access more\nresilient to errors.\n\n## Improvements over fs module\n\ngraceful-fs:\n\n* Queues up `open` and `readdir` calls, and retries them once\n something closes if there is an EMFILE error from too many file\n descriptors.\n* fixes `lchmod` for Node versions prior to 0.6.2.\n* implements `fs.lutimes` if possible. Otherwise it becomes a noop.\n* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or\n `lchown` if the user isn't root.\n* makes `lchmod` and `lchown` become noops, if not available.\n* retries reading a file if `read` results in EAGAIN error.\n\nOn Windows, it retries renaming a file for up to one second if `EACCESS`\nor `EPERM` error occurs, likely because antivirus software has locked\nthe directory.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs", - "_id": "graceful-fs@2.0.2", - "_from": "graceful-fs@~2.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index afc83b3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,228 +0,0 @@ -var fs = require('fs') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -function chownErOk (er) { - // if there's no getuid, or if getuid() is something other than 0, - // and the error is EINVAL or EPERM, then just ignore it. - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // When running as root, or if other types of errors are encountered, - // then it's strict. - if (!er || (!process.getuid || process.getuid() !== 0) - && (er.code === "EINVAL" || er.code === "EPERM")) return true -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 104f36b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('fs')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index aeaedf1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,21 +0,0 @@ -var test = require("tap").test -var fs = require("fs") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - console.error(files) - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json deleted file mode 100644 index 2afd6d51..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "fstream", - "description": "Advanced file system stream things", - "version": "0.1.25", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream.git" - }, - "main": "fstream.js", - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "rimraf": "2", - "mkdirp": "0.3", - "graceful-fs": "~2.0.0", - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "" - }, - "scripts": { - "test": "tap examples/*.js" - }, - "license": "BSD", - "readme": "Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don't change its contents, or to create\na symlink, etc.\n\nSo, for example, you can \"write\" a directory, and it'll call `mkdir`. You\ncan specify a uid and gid, and it'll call `chown`. You can specify a\n`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it'll call `symlink`.\n\nNote that it won't automatically resolve symbolic links. So, if you\ncall `fstream.Reader('/some/symlink')` then you'll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:'/some/symlink', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n })\n .write(\"hello\\n\")\n .end()\n```\n\nThis will create the directories if they're missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it's done.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n , flags: \"a\"\n })\n .write(\"hello\\n\")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/symlink\"\n , linkpath: \"./file\"\n , SymbolicLink: true\n , mode: \"0755\" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it'll be called, and if it returns\ntrue, then it'll treat it as a symlink. If it's not a function, then\nany truish value will make a symlink, or you can set `type:\n'SymbolicLink'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader(\"path/to/dir\")\n .pipe(fstream.Writer(\"path/to/other/dir\"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn't a directory, then it'll emit an error. It'll also\nset the uid, gid, mode, etc. to be identical. In this way, it's more\nlike `rsync -a` than simply a copy.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/fstream/issues" - }, - "homepage": "https://github.com/isaacs/fstream", - "_id": "fstream@0.1.25", - "_from": "fstream@~0.1.8" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json deleted file mode 100644 index 5bf0db56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json deleted file mode 100644 index 978bb769..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "tar", - "description": "tar for node", - "version": "0.1.19", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-tar.git" - }, - "main": "tar.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "inherits": "2", - "block-stream": "*", - "fstream": "~0.1.8" - }, - "devDependencies": { - "tap": "0.x", - "rimraf": "1.x" - }, - "license": "BSD", - "readme": "# node-tar\n\nTar for Node.js.\n\n[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/)\n\n## API\n\nSee `examples/` for usage examples.\n\n### var tar = require('tar')\n\nReturns an object with `.Pack`, `.Extract` and `.Parse` methods.\n\n### tar.Pack([properties])\n\nReturns a through stream. Use\n[fstream](https://npmjs.org/package/fstream) to write files into the\npack stream and you will receive tar archive data from the pack\nstream.\n\nThe optional `properties` object are used to set properties in the tar\n'Global Extended Header'.\n\n### tar.Extract([options])\n\nReturns a through stream. Write tar data to the stream and the files\nin the tarball will be extracted onto the filesystem.\n\n`options` can be:\n\n```js\n{\n path: '/path/to/extract/tar/into',\n strip: 0, // how many path segments to strip from the root when extracting\n}\n```\n\n`options` also get passed to the `fstream.Writer` instance that `tar`\nuses internally.\n\n### tar.Parse()\n\nReturns a writable stream. Write tar data to it and it will emit\n`entry` events for each entry parsed from the tarball. This is used by\n`tar.Extract`.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-tar/issues" - }, - "homepage": "https://github.com/isaacs/node-tar", - "_id": "tar@0.1.19", - "_from": "tar@~0.1.18" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js deleted file mode 100644 index a81298b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js +++ /dev/null @@ -1,173 +0,0 @@ -// field paths that every tar file must have. -// header is padded to 512 bytes. -var f = 0 - , fields = {} - , path = fields.path = f++ - , mode = fields.mode = f++ - , uid = fields.uid = f++ - , gid = fields.gid = f++ - , size = fields.size = f++ - , mtime = fields.mtime = f++ - , cksum = fields.cksum = f++ - , type = fields.type = f++ - , linkpath = fields.linkpath = f++ - , headerSize = 512 - , blockSize = 512 - , fieldSize = [] - -fieldSize[path] = 100 -fieldSize[mode] = 8 -fieldSize[uid] = 8 -fieldSize[gid] = 8 -fieldSize[size] = 12 -fieldSize[mtime] = 12 -fieldSize[cksum] = 8 -fieldSize[type] = 1 -fieldSize[linkpath] = 100 - -// "ustar\0" may introduce another bunch of headers. -// these are optional, and will be nulled out if not present. - -var ustar = fields.ustar = f++ - , ustarver = fields.ustarver = f++ - , uname = fields.uname = f++ - , gname = fields.gname = f++ - , devmaj = fields.devmaj = f++ - , devmin = fields.devmin = f++ - , prefix = fields.prefix = f++ - , fill = fields.fill = f++ - -// terminate fields. -fields[f] = null - -fieldSize[ustar] = 6 -fieldSize[ustarver] = 2 -fieldSize[uname] = 32 -fieldSize[gname] = 32 -fieldSize[devmaj] = 8 -fieldSize[devmin] = 8 -fieldSize[prefix] = 155 -fieldSize[fill] = 12 - -// nb: prefix field may in fact be 130 bytes of prefix, -// a null char, 12 bytes for atime, 12 bytes for ctime. -// -// To recognize this format: -// 1. prefix[130] === ' ' or '\0' -// 2. atime and ctime are octal numeric values -// 3. atime and ctime have ' ' in their last byte - -var fieldEnds = {} - , fieldOffs = {} - , fe = 0 -for (var i = 0; i < f; i ++) { - fieldOffs[i] = fe - fieldEnds[i] = (fe += fieldSize[i]) -} - -// build a translation table of field paths. -Object.keys(fields).forEach(function (f) { - if (fields[f] !== null) fields[fields[f]] = f -}) - -// different values of the 'type' field -// paths match the values of Stats.isX() functions, where appropriate -var types = - { 0: "File" - , "\0": "OldFile" // like 0 - , "": "OldFile" - , 1: "Link" - , 2: "SymbolicLink" - , 3: "CharacterDevice" - , 4: "BlockDevice" - , 5: "Directory" - , 6: "FIFO" - , 7: "ContiguousFile" // like 0 - // posix headers - , g: "GlobalExtendedHeader" // k=v for the rest of the archive - , x: "ExtendedHeader" // k=v for the next file - // vendor-specific stuff - , A: "SolarisACL" // skip - , D: "GNUDumpDir" // like 5, but with data, which should be skipped - , I: "Inode" // metadata only, skip - , K: "NextFileHasLongLinkpath" // data = link path of next file - , L: "NextFileHasLongPath" // data = path of next file - , M: "ContinuationFile" // skip - , N: "OldGnuLongPath" // like L - , S: "SparseFile" // skip - , V: "TapeVolumeHeader" // skip - , X: "OldExtendedHeader" // like x - } - -Object.keys(types).forEach(function (t) { - types[types[t]] = types[types[t]] || t -}) - -// values for the mode field -var modes = - { suid: 04000 // set uid on extraction - , sgid: 02000 // set gid on extraction - , svtx: 01000 // set restricted deletion flag on dirs on extraction - , uread: 0400 - , uwrite: 0200 - , uexec: 0100 - , gread: 040 - , gwrite: 020 - , gexec: 010 - , oread: 4 - , owrite: 2 - , oexec: 1 - , all: 07777 - } - -var numeric = - { mode: true - , uid: true - , gid: true - , size: true - , mtime: true - , devmaj: true - , devmin: true - , cksum: true - , atime: true - , ctime: true - , dev: true - , ino: true - , nlink: true - } - -Object.keys(modes).forEach(function (t) { - modes[modes[t]] = modes[modes[t]] || t -}) - -var knownExtended = - { atime: true - , charset: true - , comment: true - , ctime: true - , gid: true - , gname: true - , linkpath: true - , mtime: true - , path: true - , realtime: true - , security: true - , size: true - , uid: true - , uname: true } - - -exports.fields = fields -exports.fieldSize = fieldSize -exports.fieldOffs = fieldOffs -exports.fieldEnds = fieldEnds -exports.types = types -exports.modes = modes -exports.numeric = numeric -exports.headerSize = headerSize -exports.blockSize = blockSize -exports.knownExtended = knownExtended - -exports.Pack = require("./lib/pack.js") -exports.Parse = require("./lib/parse.js") -exports.Extract = require("./lib/extract.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js deleted file mode 100644 index 1524ff7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js +++ /dev/null @@ -1,53 +0,0 @@ -// the fixtures have some weird stuff that is painful -// to include directly in the repo for various reasons. -// -// So, unpack the fixtures with the system tar first. -// -// This means, of course, that it'll only work if you -// already have a tar implementation, and some of them -// will not properly unpack the fixtures anyway. -// -// But, since usually those tests will fail on Windows -// and other systems with less capable filesystems anyway, -// at least this way we don't cause inconveniences by -// merely cloning the repo or installing the package. - -var tap = require("tap") -, child_process = require("child_process") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) - -test("extract fixtures", function (t) { - var c = child_process.spawn("tar" - ,["xzvf", "fixtures.tgz"] - ,{ cwd: __dirname }) - - c.stdout.on("data", errwrite) - c.stderr.on("data", errwrite) - function errwrite (chunk) { - process.stderr.write(chunk) - } - - c.on("exit", function (code) { - t.equal(code, 0, "extract fixtures should exit with 0") - if (code) { - t.comment("Note, all tests from here on out will fail because of this.") - } - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js deleted file mode 100644 index fff48181..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js +++ /dev/null @@ -1,358 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , target = path.resolve(__dirname, "tmp/extract-test") - , index = 0 - , fstream = require("fstream") - - , ee = 0 - , expectEntries = -[ { path: 'c.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'cc.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 100, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51693379 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 201, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '777', - type: '2', - depth: undefined, - size: 0, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200-hard', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 2, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '1', - depth: undefined, - size: 0, - linkpath: path.resolve(target, '200-hard'), - nlink: 2, - dev: 234881026, - ino: 51681874 } ] - - , ef = 0 - , expectFiles = -[ { path: '', - mode: '40755', - type: 'Directory', - depth: 0, - linkpath: undefined }, - { path: '/200-hard', - mode: '100644', - type: 'File', - depth: 1, - size: 200, - linkpath: undefined, - nlink: 2 }, - { path: '/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'Link', - depth: 1, - size: 200, - linkpath: path.join(target, '200-hard'), - nlink: 2 }, - { path: '/200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '120777', - type: 'SymbolicLink', - depth: 1, - size: 200, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: 1 }, - { path: '/c.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/cc.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/r', - mode: '40755', - type: 'Directory', - depth: 1, - linkpath: undefined }, - { path: '/r/e', - mode: '40755', - type: 'Directory', - depth: 2, - linkpath: undefined }, - { path: '/r/e/a', - mode: '40755', - type: 'Directory', - depth: 3, - linkpath: undefined }, - { path: '/r/e/a/l', - mode: '40755', - type: 'Directory', - depth: 4, - linkpath: undefined }, - { path: '/r/e/a/l/l', - mode: '40755', - type: 'Directory', - depth: 5, - linkpath: undefined }, - { path: '/r/e/a/l/l/y', - mode: '40755', - type: 'Directory', - depth: 6, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-', - mode: '40755', - type: 'Directory', - depth: 7, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d', - mode: '40755', - type: 'Directory', - depth: 8, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e', - mode: '40755', - type: 'Directory', - depth: 9, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e', - mode: '40755', - type: 'Directory', - depth: 10, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p', - mode: '40755', - type: 'Directory', - depth: 11, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-', - mode: '40755', - type: 'Directory', - depth: 12, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f', - mode: '40755', - type: 'Directory', - depth: 13, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o', - mode: '40755', - type: 'Directory', - depth: 14, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l', - mode: '40755', - type: 'Directory', - depth: 15, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d', - mode: '40755', - type: 'Directory', - depth: 16, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e', - mode: '40755', - type: 'Directory', - depth: 17, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r', - mode: '40755', - type: 'Directory', - depth: 18, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-', - mode: '40755', - type: 'Directory', - depth: 19, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p', - mode: '40755', - type: 'Directory', - depth: 20, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a', - mode: '40755', - type: 'Directory', - depth: 21, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t', - mode: '40755', - type: 'Directory', - depth: 22, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h', - mode: '40755', - type: 'Directory', - depth: 23, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'File', - depth: 24, - size: 100, - linkpath: undefined, - nlink: 1 }, - { path: '/Ω.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 2, - linkpath: undefined, - nlink: 1 } ] - - - -// The extract class basically just pipes the input -// to a Reader, and then to a fstream.DirWriter - -// So, this is as much a test of fstream.Reader and fstream.Writer -// as it is of tar.Extract, but it sort of makes sense. - -tap.test("extract test", function (t) { - var extract = tar.Extract(target) - var inp = fs.createReadStream(file) - - // give it a weird buffer size to try to break in odd places - inp.bufferSize = 1234 - - inp.pipe(extract) - - extract.on("end", function () { - t.equal(ee, expectEntries.length, "should see "+ee+" entries") - - // should get no more entries after end - extract.removeAllListeners("entry") - extract.on("entry", function (e) { - t.fail("Should not get entries after end!") - }) - - next() - }) - - extract.on("entry", function (entry) { - var found = - { path: entry.path - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - , dev: entry.props.dev - , ino: entry.props.ino - } - - var wanted = expectEntries[ee ++] - - t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) - }) - - function next () { - var r = fstream.Reader({ path: target - , type: "Directory" - // this is just to encourage consistency - , sort: "alpha" }) - - r.on("ready", function () { - foundEntry(r) - }) - - r.on("end", finish) - - function foundEntry (entry) { - var p = entry.path.substr(target.length) - var found = - { path: p - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - } - - var wanted = expectFiles[ef ++] - - t.has(found, wanted, "unpacked file " + ef + " " + wanted.path) - - entry.on("entry", foundEntry) - } - - function finish () { - t.equal(ef, expectFiles.length, "should have "+ef+" items") - t.end() - } - } -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz deleted file mode 100644 index 4501bcf22695435b84edb3d4076cd9a70687b035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19205 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 L7Wcr_0GI;+;ZGx1 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js deleted file mode 100644 index 8ea6f795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js +++ /dev/null @@ -1,183 +0,0 @@ -var tap = require("tap") -var TarHeader = require("../lib/header.js") -var tar = require("../tar.js") -var fs = require("fs") - - -var headers = - { "a.txt file header": - [ "612e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303430312031313635313336303333332030313234353100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'a.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 257 - , mtime: 1319493851 - , cksum: 5417 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "omega pax": // the extended header from omega tar. - [ "5061784865616465722fcea92e74787400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303137302031313534333731303631312030313530353100207800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'PaxHeader/Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 120 - , mtime: 1301254537 - , cksum: 6697 - , type: 'x' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "omega file header": - [ "cea92e7478740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030322031313534333731303631312030313330373200203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 2 - , mtime: 1301254537 - , cksum: 5690 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "foo.js file header": - [ "666f6f2e6a730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030342031313534333637303734312030313236313700203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'foo.js' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 4 - , mtime: 1301246433 - , cksum: 5519 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "b.txt file header": - [ "622e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030313030302031313635313336303637372030313234363100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'b.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 512 - , mtime: 1319494079 - , cksum: 5425 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "deep nested file": - [ "636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363633030303634342000303537373631200030303030323420003030303030303030313434203131363532313531353333203034333331340020300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075737461720030306973616163730000000000000000000000000000000000000000000000000000737461666600000000000000000000000000000000000000000000000000000030303030303020003030303030302000722f652f612f6c2f6c2f792f2d2f642f652f652f702f2d2f662f6f2f6c2f642f652f722f2d2f702f612f742f680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true, - path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 100 - , mtime: 1319687003 - , cksum: 18124 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - } - -tap.test("parsing", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , header = new Buffer(h[0], "hex") - , expect = h[1] - , parsed = new TarHeader(header) - - // console.error(parsed) - t.has(parsed, expect, "parse " + name) - }) - t.end() -}) - -tap.test("encoding", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , expect = new Buffer(h[0], "hex") - , encoded = TarHeader.encode(h[1]) - - // might have slightly different bytes, since the standard - // isn't very strict, but should have the same semantics - // checkSum will be different, but cksumValid will be true - - var th = new TarHeader(encoded) - delete h[1].block - delete h[1].needExtended - delete h[1].cksum - t.has(th, h[1], "fields "+name) - }) - t.end() -}) - -// test these manually. they're a bit rare to find in the wild -tap.test("parseNumeric tests", function (t) { - var parseNumeric = TarHeader.parseNumeric - , numbers = - { "303737373737373700": 2097151 - , "30373737373737373737373700": 8589934591 - , "303030303036343400": 420 - , "800000ffffffffffff": 281474976710655 - , "ffffff000000000001": -281474976710654 - , "ffffff000000000000": -281474976710655 - , "800000000000200000": 2097152 - , "8000000000001544c5": 1393861 - , "ffffffffffff1544c5": -15383354 } - Object.keys(numbers).forEach(function (n) { - var b = new Buffer(n, "hex") - t.equal(parseNumeric(b), numbers[n], n + " === " + numbers[n]) - }) - t.end() -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js deleted file mode 100644 index 5bf0e540..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js +++ /dev/null @@ -1,854 +0,0 @@ -// This is exactly like test/pack.js, except that it's excluding -// any proprietary headers. -// -// This loses some information about the filesystem, but creates -// tarballs that are supported by more versions of tar, especially -// old non-spec-compliant copies of gnutar. - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - uid: uid, - gid: gid, - size: 200 } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - uid: uid, - gid: gid, - size: 2 } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , uid: uid - , gid: gid - , size: 2 } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var props = doGH ? pkg : {} - props.noProprietary = true - var pack = Pack(props) - var writer = Writer(target) - - // global header should be skipped regardless, since it has no content. - var entry = 0 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - if (ev !== wanted[0] || e.path !== wanted[1].path) { - console.error(wanted) - console.error([ev, e.props]) - e.on("end", function () { - console.error(e.fields) - throw "break" - }) - } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js deleted file mode 100644 index 0f509945..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js +++ /dev/null @@ -1,897 +0,0 @@ - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'globalExtendedHeader', - { path: 'PaxHeader/', - mode: 438, - uid: 0, - gid: 0, - type: 'g', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { "NODETAR.author": pkg.author, - "NODETAR.name": pkg.name, - "NODETAR.description": pkg.description, - "NODETAR.version": pkg.version, - "NODETAR.repository.type": pkg.repository.type, - "NODETAR.repository.url": pkg.repository.url, - "NODETAR.main": pkg.main, - "NODETAR.scripts.test": pkg.scripts.test } ] - - , [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 200, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 2, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , "NODETAR.depth": "1" - , "NODETAR.type": "File" - , nlink: 1 - , uid: uid - , gid: gid - , size: 2 - , "NODETAR.blksize": "4096" - , "NODETAR.blocks": "8" } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var pack = Pack(doGH ? pkg : null) - var writer = Writer(target) - - // skip the global header if we're not doing that. - var entry = doGH ? 0 : 1 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - // if (ev !== wanted[0] || e.path !== wanted[1].path) { - // console.error(wanted) - // console.error([ev, e.props]) - // throw "break" - // } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js deleted file mode 100644 index f765a501..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js +++ /dev/null @@ -1,359 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , index = 0 - - , expect = -[ [ 'entry', - { path: 'c.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), - cksum: 5422, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'cc.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), - cksum: 5525, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 100, - mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), - cksum: 18124, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 120, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 6702, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'Ω.txt', - ctime: 1319737909, - atime: 1319739061, - dev: 234881026, - ino: 51693379, - nlink: 1 } ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), - dev: 234881026, - ino: 51693379, - nlink: 1 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1319686868, - atime: 1319741254, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14570, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 }, - undefined ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 1000, - gid: 1000, - size: 201, - mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), - cksum: 14086, - type: '0', - linkpath: '', - ustar: false }, - undefined ], - [ 'longLinkpath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4975, - type: 'K', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], - [ 'entry', - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: 511, - uid: 1000, - gid: 1000, - size: 0, - mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), - cksum: 21603, - type: '2', - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ustar: false }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 143, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 6533, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { ctime: 1320617144, - atime: 1320617232, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 5526, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1320617144, - atime: 1320617406, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 0, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 15173, - type: '1', - linkpath: '200-hard', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ] ] - - -tap.test("parser test", function (t) { - var parser = tar.Parse() - - parser.on("end", function () { - t.equal(index, expect.length, "saw all expected events") - t.end() - }) - - fs.createReadStream(file) - .pipe(parser) - .on("*", function (ev, entry) { - var wanted = expect[index] - if (!wanted) { - return t.fail("Unexpected event: " + ev) - } - var result = [ev, entry.props] - entry.on("end", function () { - result.push(entry.fields || entry.body) - - t.equal(ev, wanted[0], index + " event type") - t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") - if (wanted[2]) { - t.equivalent(result[2], wanted[2], "metadata values") - } - index ++ - }) - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js deleted file mode 100644 index a00ff7fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js +++ /dev/null @@ -1,20 +0,0 @@ -// clean up the fixtures - -var tap = require("tap") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js deleted file mode 100644 index da99ffef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; -var path = require('path'); -var tmpdir = require('os').tmpdir(); -var uuid = require('uuid'); - -module.exports = function (ext) { - return path.join(tmpdir, uuid.v4() + (ext || '')); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml deleted file mode 100644 index b6d42c3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md deleted file mode 100644 index f039427f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md +++ /dev/null @@ -1,2 +0,0 @@ -Copyright (c) 2010-2012 Robert Kieffer -MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md deleted file mode 100644 index d2adba18..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md +++ /dev/null @@ -1,204 +0,0 @@ -# uuid [![Build Status](https://secure.travis-ci.org/shtylman/node-uuid.png?branch=master)](http://travis-ci.org/shtylman/node-uuid) # - -[![browser support](http://ci.testling.com/shtylman/node-uuid.png)](http://ci.testling.com/shtylman/node-uuid) - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Cryptographically strong random # generation on supporting platforms -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) - -## Getting Started - -Install it in your browser: - -```html -<script src="uuid.js"></script> -``` - -Or in node.js: - -``` -npm install uuid -``` - -```javascript -var uuid = require('uuid'); - -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include <stdio.h> -#include <unistd.h> -#include <sys/time.h> -#include <uuid/uuid.h> - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js deleted file mode 100644 index 3de34151..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js +++ /dev/null @@ -1,62 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../'), - uuidjs = require('uuid-js'), - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js deleted file mode 100644 index bdc9eb46..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js +++ /dev/null @@ -1,102 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -var log = console.log; - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json deleted file mode 100644 index 731b282b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "uuid", - "version": "1.4.1", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "main": "./uuid.js", - "devDependencies": { - "mocha": "1.8.0" - }, - "scripts": { - "test": "mocha test/test.js" - }, - "browser": { - "./rng.js": "./rng-browser.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/shtylman/node-uuid.git" - }, - "testling": { - "browsers": [ - "ie6..latest", - "firefox/3.6..latest", - "chrome/22..latest", - "safari/5.1..latest" - ], - "harness": "mocha-tdd", - "files": "test/*.js" - }, - "readme": "# uuid [![Build Status](https://secure.travis-ci.org/shtylman/node-uuid.png?branch=master)](http://travis-ci.org/shtylman/node-uuid) #\n\n[![browser support](http://ci.testling.com/shtylman/node-uuid.png)](http://ci.testling.com/shtylman/node-uuid)\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src=\"uuid.js\"></script>\n```\n\nOr in node.js:\n\n```\nnpm install uuid\n```\n\n```javascript\nvar uuid = require('uuid');\n\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-uuid/issues" - }, - "homepage": "https://github.com/shtylman/node-uuid", - "_id": "uuid@1.4.1", - "_from": "uuid@~1.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js deleted file mode 100644 index 57b58d4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js +++ /dev/null @@ -1,31 +0,0 @@ - -var rng; - -if (global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; -} - -if (!rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; -} - -module.exports = rng; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js deleted file mode 100644 index 3977f798..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js +++ /dev/null @@ -1,4 +0,0 @@ -var rb = require('crypto').randomBytes; -module.exports = function() { - return rb(16); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts deleted file mode 100644 index e2bfcc5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---ui qunit diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js deleted file mode 100644 index 4c9872ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js +++ /dev/null @@ -1,105 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - test(name, function() { - // avoid .map for older browsers - for (var i=0 ; i<ids.length ; ++i) { - ids[i] = ids[i].split('-').reverse().join('-'); - } - ids = ids.sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); - }); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -test('msec', function() { - assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' - ); -}); - -test('exception thrown when > 10k ids created in 1ms', function() { - // Verify throw if too many ids created - var thrown = false; - try { - uuid.v1({msecs: TIME, nsecs: 10000}); - } catch (e) { - thrown = true; - } - assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); -}); - -test('clock regression by msec', function() { - // Verify clock regression bumps clockseq - var uidt = uuid.v1({msecs: TIME}); - var uidtb = uuid.v1({msecs: TIME - 1}); - assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' - ); -}); - -test('clock regression by nsec', function() { - // Verify clock regression bumps clockseq - var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); - var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); - assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' - ); -}); - -test('explicit options product expected id', function() { - // Verify explicit options produce expected id - var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] - }); - assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); -}); - -test('ids spanning 1ms boundary are 100ns apart', function() { - // Verify adjacent ids across a msec boundary are 1 time unit apart - var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); - var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - - var before = u0.split('-')[0], after = u1.split('-')[0]; - var dt = parseInt(after, 16) - parseInt(before, 16); - assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); -}); - -test('parse/unparse', function() { - var id = '00112233445566778899aabbccddeeff'; - assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); - assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js deleted file mode 100644 index d0062fb4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js +++ /dev/null @@ -1,187 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -// Unique ID creation requires a high quality random # generator. We feature -// detect to determine the best RNG source, normalizing to a function that -// returns 128-bits of randomness, since that's what's usually required -var _rng = require('./rng'); - -// Buffer class to use -var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - -// Maps for number <-> hex string conversion -var _byteToHex = []; -var _hexToByte = {}; -for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; -} - -// **`parse()` - Parse a UUID into it's component bytes** -function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; -} - -// **`unparse()` - Convert UUID byte array (ala parse()) into a string** -function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; -} - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -// random #'s we need to init node and clockseq -var _seedBytes = _rng(); - -// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) -var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] -]; - -// Per 4.2.2, randomize (14 bit) clockseq -var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - -// Previous uuid creation time -var _lastMSecs = 0, _lastNSecs = 0; - -// See https://github.com/broofa/node-uuid for API details -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); -} - -// **`v4()` - Generate random UUID** - -// See https://github.com/broofa/node-uuid for API details -function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); -} - -// Export public API -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; -uuid.parse = parse; -uuid.unparse = unparse; -uuid.BufferClass = BufferClass; - -module.exports = uuid; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json deleted file mode 100644 index ae2ae248..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "tempfile", - "version": "0.1.2", - "description": "Get a random temp file path", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/tempfile" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "tmp", - "temp", - "temporary", - "tempfile", - "file", - "path", - "random", - "rand" - ], - "dependencies": { - "uuid": "~1.4.0" - }, - "devDependencies": { - "mocha": "*" - }, - "readme": "# tempfile [![Build Status](https://travis-ci.org/sindresorhus/tempfile.png?branch=master)](http://travis-ci.org/sindresorhus/tempfile)\n\n> Get a random temp file path\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/tempfile)\n\n```\nnpm install --save tempfile\n```\n\n\n## Example\n\n```js\nvar tempfile = require('tempfile');\ntempfile('.png');\n//=> /var/folders/_1/tk89k8215ts0rg0kmb096nj80000gn/T/4049f192-43e7-43b2-98d9-094e6760861b.png\n```\n\n## API\n\n### tempfile(extension)\n\n#### extension\n\nType: `String`\n\nOptionally supply an extension to append to the path.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/tempfile/issues" - }, - "homepage": "https://github.com/sindresorhus/tempfile", - "_id": "tempfile@0.1.2", - "_from": "tempfile@~0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md deleted file mode 100644 index 672a0ac6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md +++ /dev/null @@ -1,36 +0,0 @@ -# tempfile [![Build Status](https://travis-ci.org/sindresorhus/tempfile.png?branch=master)](http://travis-ci.org/sindresorhus/tempfile) - -> Get a random temp file path - - -## Install - -Install with [npm](https://npmjs.org/package/tempfile) - -``` -npm install --save tempfile -``` - - -## Example - -```js -var tempfile = require('tempfile'); -tempfile('.png'); -//=> /var/folders/_1/tk89k8215ts0rg0kmb096nj80000gn/T/4049f192-43e7-43b2-98d9-094e6760861b.png -``` - -## API - -### tempfile(extension) - -#### extension - -Type: `String` - -Optionally supply an extension to append to the path. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json deleted file mode 100644 index f24aab87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "decompress", - "version": "0.1.6", - "description": "Easily extract zip, tar and tar.gz archives", - "keywords": [ - "extract", - "zip", - "tar", - "tar.gz" - ], - "homepage": "https://github.com/kevva/decompress", - "bugs": { - "url": "https://github.com/kevva/decompress/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/decompress.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "decompress.js", - "files": [ - "decompress.js" - ], - "dependencies": { - "adm-zip": "~0.4.3", - "mkdirp": "~0.3.5", - "mout": "~0.6.0", - "rimraf": "~2.2.2", - "stream-combiner": "~0.0.2", - "tar": "~0.1.18", - "tempfile": "~0.1.2" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# decompress [![Build Status](https://secure.travis-ci.org/kevva/decompress.png?branch=master)](http://travis-ci.org/kevva/decompress)\n\nEasily extract `.zip`, `.tar` and `.tar.gz` archives. Based on the extract \nutility in [Bower](https://github.com/bower/bower).\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/decompress): `npm install decompress`\n\n## Examples\n\nYou'll only need to pass a type into `ext` and it'll figure the rest out for \nyou.\n\n```js\nvar decompress = require('decompress');\nvar fs = require('fs');\n\nvar src = fs.createReadStream('foo.tar.gz');\nvar dest = decompress.extract({ ext: '.tar.gz' });\n\nsrc.pipe(dest);\n```\n\n## API\n\n### .extract(opts)\n\nExtract an archive using the `ext` option to determine which extractor to use. \nIf no `path` is specified it'll extract it to your current location.\n\n### .canExtract(src, mime)\n\nDetermine if a file can be extracted or not by checking the file extension \nand/or the MIME type.\n\n```js\ndecompress.canExtract('foo.zip');\n// => true\n\ndecompress.canExtract('application/zip');\n// => true\n```\n\n## Options\n\n### `ext`\n\nType: `String` \nDefault: `''`\n\nString that can be a file name, URL, MIME type etc.\n\n### `path`\n\nType: `String` \nDefault: `process.cwd()`\n\nPath to extract the archive to. If no `path` is defined it'll extract it to your \ncurrent location.\n\n### strip\n\nType: `Number` \nDefault: `0`\n\nEquivalent to `--strip-components` for tar.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "decompress@0.1.6", - "_from": "decompress@~0.1.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js deleted file mode 100644 index a43b4363..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js +++ /dev/null @@ -1,72 +0,0 @@ -/*! - each-async - Async concurrent iterator (async forEach) - https://github.com/sindresorhus/each-async - by Sindre Sorhus - MIT License -*/ -(function () { - 'use strict'; - - function once(fn) { - var called = false; - - if (typeof fn !== 'function') { - throw new TypeError; - } - - return function () { - if (called) { - throw new Error('Callback already called.'); - } - called = true; - fn.apply(this, arguments); - } - } - - function each(arr, next, cb) { - var failed = false; - var count = 0; - - cb = cb || function () {}; - - if (!Array.isArray(arr)) { - throw new TypeError('First argument must be an array'); - } - - if (typeof next !== 'function') { - throw new TypeError('Second argument must be a function'); - } - - var len = arr.length; - - if (!len) { - return cb(); - } - - function callback(err) { - if (failed) { - return; - } - - if (err !== undefined && err !== null) { - failed = true; - return cb(err); - } - - if (++count === len) { - return cb(); - } - } - - for (var i = 0; i < len; i++) { - next(arr[i], i, once(callback)); - } - } - - if (typeof module !== 'undefined' && module.exports) { - module.exports = each; - } else { - window.eachAsync = each; - } -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json deleted file mode 100644 index 53336b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "each-async", - "version": "0.1.2", - "description": "Async concurrent iterator", - "license": "MIT", - "main": "each-async.js", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/each-async" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "each-async.js" - ], - "keywords": [ - "each", - "async", - "asynchronous", - "iteration", - "iterate", - "loop", - "foreach", - "parallel", - "concurrent", - "array", - "flow", - "control flow" - ], - "devDependencies": { - "mocha": "*" - }, - "readme": "# each-async [![Build Status](https://secure.travis-ci.org/sindresorhus/each-async.png?branch=master)](http://travis-ci.org/sindresorhus/each-async)\n\n> Async concurrent iterator (async forEach)\n\nLike [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny.\n\nI often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`.\n\nAsync iteration is one of the most used async control flow patterns.\n\n\n## Install\n\nDownload [manually](https://github.com/sindresorhus/each-async/releases) or with a package-manager.\n\n#### [npm](https://npmjs.org/package/each-async)\n\n```\nnpm install --save each-async\n```\n\n#### [Bower](http://bower.io)\n\n```\nbower install --save each-async\n```\n\n#### [Component](https://github.com/component/component)\n\n```\ncomponent install sindresorhus/each-async\n```\n\n\n## Examples\n\n### Node.js\n\n```js\neachAsync(['foo','bar','baz'], function (item, index, done) {\n\tconsole.log(item, index);\n\tdone();\n}, function (error) {\n\tconsole.log('finished');\n});\n//=> foo 0\n//=> bar 1\n//=> baz 2\n//=> finished\n```\n\n\n## API\n\n### eachAsync(array, callback, finishedCallback)\n\n#### array\n\nThe array you want to iterate.\n\n#### callback(item, index, done)\n\nA function which is called for each item in the array with the following arguments:\n\n- `item`: the current item in the array\n- `index`: the current index\n- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration.\n\nNote that order is not guaranteed since each item is handled concurrently.\n\n#### finishedCallback(error)\n\nA function which is called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/each-async/issues" - }, - "homepage": "https://github.com/sindresorhus/each-async", - "_id": "each-async@0.1.2", - "_from": "each-async@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md deleted file mode 100644 index e5e5bb14..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md +++ /dev/null @@ -1,78 +0,0 @@ -# each-async [![Build Status](https://secure.travis-ci.org/sindresorhus/each-async.png?branch=master)](http://travis-ci.org/sindresorhus/each-async) - -> Async concurrent iterator (async forEach) - -Like [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny. - -I often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`. - -Async iteration is one of the most used async control flow patterns. - - -## Install - -Download [manually](https://github.com/sindresorhus/each-async/releases) or with a package-manager. - -#### [npm](https://npmjs.org/package/each-async) - -``` -npm install --save each-async -``` - -#### [Bower](http://bower.io) - -``` -bower install --save each-async -``` - -#### [Component](https://github.com/component/component) - -``` -component install sindresorhus/each-async -``` - - -## Examples - -### Node.js - -```js -eachAsync(['foo','bar','baz'], function (item, index, done) { - console.log(item, index); - done(); -}, function (error) { - console.log('finished'); -}); -//=> foo 0 -//=> bar 1 -//=> baz 2 -//=> finished -``` - - -## API - -### eachAsync(array, callback, finishedCallback) - -#### array - -The array you want to iterate. - -#### callback(item, index, done) - -A function which is called for each item in the array with the following arguments: - -- `item`: the current item in the array -- `index`: the current index -- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration. - -Note that order is not guaranteed since each item is handled concurrently. - -#### finishedCallback(error) - -A function which is called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore deleted file mode 100644 index 80e59ef5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -tests -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml deleted file mode 100644 index 0bce8152..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.10 - -env: - - OPTIONALS=Y - - OPTIONALS=N - -install: - - if [[ "$OPTIONALS" == "Y" ]]; then npm install; fi - - if [[ "$OPTIONALS" == "N" ]]; then npm install --no-optional; fi diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md deleted file mode 100644 index 5c0c081f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md +++ /dev/null @@ -1,366 +0,0 @@ -# Request -- Simplified HTTP client - -[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/) - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```javascript -var request = require('request'); -request('http://www.google.com', function (error, response, body) { - if (!error && response.statusCode == 200) { - console.log(body) // Print the google web page. - } -}) -``` - -## Streaming - -You can stream any response to a file stream. - -```javascript -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```javascript -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```javascript -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Now let’s get fancy. - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - var x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```javascript -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```javascript -var r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - -URL-encoded forms are simple. - -```javascript -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -``` - -For `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you. - -```javascript -var r = request.post('http://service.com/upload') -var form = r.form() -form.append('my_field', 'my_value') -form.append('my_buffer', new Buffer([1, 2, 3])) -form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png')) -form.append('remote_file', request('http://google.com/doodle.png')) -``` - -## HTTP Authentication - -```javascript -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -``` - -If passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`. - -`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method). - -Digest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail. - -## OAuth Signing - -```javascript -// Twitter OAuth -var qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - var access_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: access_token.oauth_token - , verifier: access_token.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - var perm_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_token.oauth_token - , token_secret: perm_token.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json?' - , params = - { screen_name: perm_token.screen_name - , user_id: perm_token.user_id - } - ; - url += qs.stringify(params) - request.get({url:url, oauth:oauth, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -### Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```javascript -var request = require('request'); - -var options = { - url: 'https://api.github.com/repos/mikeal/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - var info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -### request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -* `qs` - object containing querystring values to be appended to the `uri` -* `method` - http method (default: `"GET"`) -* `headers` - http headers (default: `{}`) -* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`. -* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request). -* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above. -* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below. -* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`) -* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -* `maxRedirects` - the maximum number of redirects to follow (default: `10`) -* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. -* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node's default `maxSockets`) -* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool. -* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request -* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above. -* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section) -* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services) -* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. -* `localAddress` - Local interface to bind for network connections. - - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - -### request.defaults(options) - -This method returns a wrapper around the normal request API that defaults to whatever options you pass in to it. - -### request.put - -Same as `request()`, but defaults to `method: "PUT"`. - -```javascript -request.put(url) -``` - -### request.patch - -Same as `request()`, but defaults to `method: "PATCH"`. - -```javascript -request.patch(url) -``` - -### request.post - -Same as `request()`, but defaults to `method: "POST"`. - -```javascript -request.post(url) -``` - -### request.head - -Same as request() but defaults to `method: "HEAD"`. - -```javascript -request.head(url) -``` - -### request.del - -Same as `request()`, but defaults to `method: "DELETE"`. - -```javascript -request.del(url) -``` - -### request.get - -Same as `request()` (for uniformity). - -```javascript -request.get(url) -``` -### request.cookie - -Function that creates a new cookie. - -```javascript -request.cookie('cookie_string_here') -``` -### request.jar - -Function that creates a new cookie jar. - -```javascript -request.jar() -``` - - -## Examples: - -```javascript - var request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`). - -```javascript -var request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```javascript -var j = request.jar() -var request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` -OR - -Note that `setCookie` requires at least three parameters, and the last is required to be a callback. - -```javascript -var j = request.jar() -var cookie = request.cookie('your_cookie_here') -j.setCookie(cookie, uri, function (err, cookie){}) -request({url: 'http://www.google.com', jar: j}, function () { - request('http://images.google.com') -}) -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js deleted file mode 100644 index 6a847f6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js +++ /dev/null @@ -1,7 +0,0 @@ -var request = require('request') - , dns = require('dns') - ; - -function wrap (fn) { - var -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js deleted file mode 100755 index 465e5ae3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -var optional = require('./lib/optional') - , cookie = optional('tough-cookie') - , Cookie = cookie && cookie.Cookie - , CookieJar = cookie && cookie.CookieJar - , cookieJar = CookieJar && new CookieJar - - , copy = require('./lib/copy') - , Request = require('./request') - ; - - - -// organize params for patch, post, put, head, del -function initParams(uri, options, callback) { - if ((typeof options === 'function') && !callback) callback = options - if (options && typeof options === 'object') { - options.uri = uri - } else if (typeof uri === 'string') { - options = {uri:uri} - } else { - options = uri - uri = options.uri - } - return { uri: uri, options: options, callback: callback } -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.') - if ((typeof options === 'function') && !callback) callback = options - if (options && typeof options === 'object') { - options.uri = uri - } else if (typeof uri === 'string') { - options = {uri:uri} - } else { - options = uri - } - - options = copy(options) - - if (callback) options.callback = callback - var r = new Request(options) - return r -} - -module.exports = request - -request.Request = Request; - -request.debug = process.env.NODE_DEBUG && /request/.test(process.env.NODE_DEBUG) - -request.initParams = initParams - -request.defaults = function (options, requester) { - var def = function (method) { - var d = function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - for (var i in options) { - if (params.options[i] === undefined) params.options[i] = options[i] - } - if(typeof requester === 'function') { - if(method === request) { - method = requester - } else { - params.options._requester = requester - } - } - return method(params.options, params.callback) - } - return d - } - var de = def(request) - de.get = def(request.get) - de.patch = def(request.patch) - de.post = def(request.post) - de.put = def(request.put) - de.head = def(request.head) - de.del = def(request.del) - de.cookie = def(request.cookie) - de.jar = request.jar - return de -} - -function requester(params) { - if(typeof params.options._requester === 'function') { - return params.options._requester - } else { - return request - } -} - -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - for (var option in optionsArg) { - options[option] = optionsArg[option] - } - } - if (agentOptions) options.agentOptions = agentOptions - options.forever = true - return request.defaults(options) -} - -request.get = request -request.post = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'POST' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.put = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PUT' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.patch = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PATCH' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.head = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'HEAD' - if (params.options.body || - params.options.requestBodyStream || - (params.options.json && typeof params.options.json !== 'boolean') || - params.options.multipart) { - throw new Error("HTTP HEAD requests MUST NOT include a request body.") - } - - return requester(params)(params.uri || null, params.options, params.callback) -} -request.del = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'DELETE' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.jar = function () { - return new CookieJar -} -request.cookie = function (str) { - if (str && str.uri) str = str.uri - if (typeof str !== 'string') throw new Error("The cookie function only accepts STRING as param") - return new Cookie(str) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js deleted file mode 100644 index 56831ff8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js deleted file mode 100644 index fa27b24b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js +++ /dev/null @@ -1,7 +0,0 @@ -var util = require('util') - -module.exports = -function debug () { - if (/\brequest\b/.test(process.env.NODE_DEBUG)) - console.error('REQUEST %s', util.format.apply(util, arguments)) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js deleted file mode 100644 index 28e07ea5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js +++ /dev/null @@ -1,34 +0,0 @@ -// Safe toJSON -module.exports = -function getSafe (self, uuid) { - if (typeof self === 'object' || typeof self === 'function') var safe = {} - if (Array.isArray(self)) var safe = [] - - var recurse = [] - - Object.defineProperty(self, uuid, {}) - - var attrs = Object.keys(self).filter(function (i) { - if (i === uuid) return false - if ( (typeof self[i] !== 'object' && typeof self[i] !== 'function') || self[i] === null) return true - return !(Object.getOwnPropertyDescriptor(self[i], uuid)) - }) - - - for (var i=0;i<attrs.length;i++) { - if ( (typeof self[attrs[i]] !== 'object' && typeof self[attrs[i]] !== 'function') || - self[attrs[i]] === null - ) { - safe[attrs[i]] = self[attrs[i]] - } else { - recurse.push(attrs[i]) - Object.defineProperty(self[attrs[i]], uuid, {}) - } - } - - for (var i=0;i<recurse.length;i++) { - safe[recurse[i]] = getSafe(self[recurse[i]], uuid) - } - - return safe -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js deleted file mode 100644 index 0c4fe853..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function(module) { - try { - return require(module); - } catch (e) {} -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md deleted file mode 100644 index 763564e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -aws-sign -======== - -AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js deleted file mode 100644 index 576e49dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js +++ /dev/null @@ -1,202 +0,0 @@ - -/*! - * knox - auth - * Copyright(c) 2010 LearnBoost <dev@learnboost.com> - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , parse = require('url').parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS <key>:<signature>" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * <verb>\n - * <md5>\n - * <content-type>\n - * <date>\n - * [headers\n] - * <resource> - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.queryStringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * <date>\n - * <resource> - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json deleted file mode 100644 index 891450ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "aws-sign2", - "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.", - "version": "0.5.0", - "repository": { - "url": "https://github.com/mikeal/aws-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "aws-sign\n========\n\nAWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/aws-sign/issues" - }, - "homepage": "https://github.com/mikeal/aws-sign", - "_id": "aws-sign2@0.5.0", - "_from": "aws-sign2@~0.5.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md deleted file mode 100644 index 9d5b6634..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -forever-agent -============= - -HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js deleted file mode 100644 index 1e8efcdf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js +++ /dev/null @@ -1,119 +0,0 @@ -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = require('util') - , Agent = require('http').Agent - , net = require('net') - , tls = require('tls') - , AgentSSL = require('https').Agent - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = host + ':' + port - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = host + ':' + port - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json deleted file mode 100644 index d326e4c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "forever-agent", - "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.", - "version": "0.5.2", - "repository": { - "url": "https://github.com/mikeal/forever-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "forever-agent\n=============\n\nHTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/forever-agent/issues" - }, - "homepage": "https://github.com/mikeal/forever-agent", - "_id": "forever-agent@0.5.2", - "_from": "forever-agent@~0.5.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License deleted file mode 100644 index c7ff12a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md deleted file mode 100644 index dc73c463..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md +++ /dev/null @@ -1,163 +0,0 @@ -# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data) - -A module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface -[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions - -## Install - -``` -npm install form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's request stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); // for node-0.10.x -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', - contentType: 'image/jpg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing] - -## TODO - -- Add new streams (0.10) support and try really hard not to break it for 0.8.x. - -## License - -Form-Data is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js deleted file mode 100644 index d1064748..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,325 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var mime = require('mime'); -var async = require('async'); - -module.exports = FormData; -function FormData() { - this._overheadLength = 0; - this._valueLength = 0; - this._lengthRetrievers = []; - - CombinedStream.call(this); -} -util.inherits(FormData, CombinedStream); - -FormData.LINE_BREAK = '\r\n'; - -FormData.prototype.append = function(field, value, options) { - options = options || {}; - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') value = ''+value; - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(field, value, options); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - + FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) - this._lengthRetrievers.push(function(next) { - - if (value.hasOwnProperty('fd')) { - fs.stat(value.path, function(err, stat) { - if (err) { - next(err); - return; - } - - next(null, stat.size); - }); - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - next(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - next(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - next('Unknown stream'); - } - }); -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - var boundary = this.getBoundary(); - var header = ''; - - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (options.header != null) { - header = options.header; - } else { - header += '--' + boundary + FormData.LINE_BREAK + - 'Content-Disposition: form-data; name="' + field + '"'; - - // fs- and request- streams have path property - // or use custom filename and/or contentType - // TODO: Use request's response mime-type - if (options.filename || value.path) { - header += - '; filename="' + path.basename(options.filename || value.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + (options.contentType || mime.lookup(options.filename || value.path)); - - // http response has not - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - header += - '; filename="' + path.basename(value.client._httpMessage.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + value.headers['content-type']; - } - - header += FormData.LINE_BREAK + FormData.LINE_BREAK; - } - - return header; -}; - -FormData.prototype._multiPartFooter = function(field, value, options) { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--'; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (var header in userHeaders) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - - return formHeaders; -} - -FormData.prototype.getCustomHeaders = function(contentType) { - contentType = contentType ? contentType : 'multipart/form-data'; - - var formHeaders = { - 'content-type': contentType + '; boundary=' + this.getBoundary(), - 'content-length': this.getLengthSync() - }; - - return formHeaders; -} - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function(debug) { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/felixge/node-form-data/issues/40 - if (this._lengthRetrievers.length) { - // Some async length retrivers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._lengthRetrievers.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - async.parallel(this._lengthRetrievers, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - - var request - , options - , defaults = { - method : 'post', - headers: this.getHeaders() - }; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - params = parseUrl(params); - - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname - }, defaults); - } - else // use custom params - { - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // https if specified, fallback to http in any other case - if (params.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - - // TODO: Add chunked encoding when no length (if err) - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (this.error) return; - - this.error = err; - this.pause(); - this.emit('error', err); -}; - -/* - * Santa's little helpers - */ - -// populates missing values -function populate(dst, src) { - for (var prop in src) { - if (!dst[prop]) dst[prop] = src[prop]; - } - return dst; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore deleted file mode 100644 index aba34f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -*.un~ -/node_modules -/test/tmp diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md deleted file mode 100644 index 1a9999eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,132 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = true - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = 2 * 1024 * 1024 - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = 0 - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 32849fd1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,185 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - stream.on('data', this._checkDataSize.bind(this)); - - stream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)) - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 2fedb26c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.un~ -/node_modules/* diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md deleted file mode 100644 index 5cb5b35e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,154 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index 7c10d482..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,99 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -DelayedStream.prototype.__defineGetter__('readable', function() { - return this.source.readable; -}); - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json deleted file mode 100644 index 1628b4b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "version": "0.0.5", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - }, - "readme": "# delayed-stream\n\nBuffers events from a stream until you are ready to handle them.\n\n## Installation\n\n``` bash\nnpm install delayed-stream\n```\n\n## Usage\n\nThe following example shows how to write a http echo server that delays its\nresponse by 1000 ms.\n\n``` javascript\nvar DelayedStream = require('delayed-stream');\nvar http = require('http');\n\nhttp.createServer(function(req, res) {\n var delayed = DelayedStream.create(req);\n\n setTimeout(function() {\n res.writeHead(200);\n delayed.pipe(res);\n }, 1000);\n});\n```\n\nIf you are not using `Stream#pipe`, you can also manually release the buffered\nevents by calling `delayedStream.resume()`:\n\n``` javascript\nvar delayed = DelayedStream.create(req);\n\nsetTimeout(function() {\n // Emit all buffered events and resume underlaying source\n delayed.resume();\n}, 1000);\n```\n\n## Implementation\n\nIn order to use this meta stream properly, here are a few things you should\nknow about the implementation.\n\n### Event Buffering / Proxying\n\nAll events of the `source` stream are hijacked by overwriting the `source.emit`\nmethod. Until node implements a catch-all event listener, this is the only way.\n\nHowever, delayed-stream still continues to emit all events it captures on the\n`source`, regardless of whether you have released the delayed stream yet or\nnot.\n\nUpon creation, delayed-stream captures all `source` events and stores them in\nan internal event buffer. Once `delayedStream.release()` is called, all\nbuffered events are emitted on the `delayedStream`, and the event buffer is\ncleared. After that, delayed-stream merely acts as a proxy for the underlaying\nsource.\n\n### Error handling\n\nError events on `source` are buffered / proxied just like any other events.\nHowever, `delayedStream.create` attaches a no-op `'error'` listener to the\n`source`. This way you only have to handle errors on the `delayedStream`\nobject, rather than in two places.\n\n### Buffer limits\n\ndelayed-stream provides a `maxDataSize` property that can be used to limit\nthe amount of data being buffered. In order to protect you from bad `source`\nstreams that don't react to `source.pause()`, this feature is enabled by\ndefault.\n\n## API\n\n### DelayedStream.create(source, [options])\n\nReturns a new `delayedStream`. Available options are:\n\n* `pauseStream`\n* `maxDataSize`\n\nThe description for those properties can be found below.\n\n### delayedStream.source\n\nThe `source` stream managed by this object. This is useful if you are\npassing your `delayedStream` around, and you still want to access properties\non the `source` object.\n\n### delayedStream.pauseStream = true\n\nWhether to pause the underlaying `source` when calling\n`DelayedStream.create()`. Modifying this property afterwards has no effect.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature. You can also modify this property during runtime.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature.\n\n### delayedStream.dataSize = 0\n\nThe amount of data buffered so far.\n\n### delayedStream.readable\n\nAn ECMA5 getter that returns the value of `source.readable`.\n\n### delayedStream.resume()\n\nIf the `delayedStream` has not been released so far, `delayedStream.release()`\nis called.\n\nIn either case, `source.resume()` is called.\n\n### delayedStream.pause()\n\nCalls `source.pause()`.\n\n### delayedStream.pipe(dest)\n\nCalls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.\n\n### delayedStream.release()\n\nEmits and clears all events that have been buffered up so far. This does not\nresume the underlaying source, use `delayedStream.resume()` instead.\n\n## License\n\ndelayed-stream is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-delayed-stream/issues" - }, - "_id": "delayed-stream@0.0.5", - "_from": "delayed-stream@0.0.5", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js deleted file mode 100644 index 4d71b8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js +++ /dev/null @@ -1,6 +0,0 @@ -var common = module.exports; - -common.DelayedStream = require('..'); -common.assert = require('assert'); -common.fake = require('fake'); -common.PORT = 49252; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js deleted file mode 100644 index 9ecad5b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var DelayedStream = common.DelayedStream; -var http = require('http'); - -var UPLOAD = new Buffer(10 * 1024 * 1024); - -var server = http.createServer(function(req, res) { - var delayed = DelayedStream.create(req, {maxDataSize: UPLOAD.length}); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 10); -}); -server.listen(common.PORT, function() { - var request = http.request({ - method: 'POST', - port: common.PORT, - }); - - request.write(UPLOAD); - request.end(); - - request.on('response', function(res) { - var received = 0; - res - .on('data', function(chunk) { - received += chunk.length; - }) - .on('end', function() { - assert.equal(received, UPLOAD.length); - server.close(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js deleted file mode 100644 index 6f417f3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js +++ /dev/null @@ -1,21 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testAutoPause() { - var source = new Stream(); - - fake.expect(source, 'pause', 1); - var delayedStream = DelayedStream.create(source); - fake.verify(); -})(); - -(function testDisableAutoPause() { - var source = new Stream(); - fake.expect(source, 'pause', 0); - - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js deleted file mode 100644 index b50c3978..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js +++ /dev/null @@ -1,14 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(source, 'pause'); - delayedStream.pause(); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js deleted file mode 100644 index fc4047e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js +++ /dev/null @@ -1,48 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // delayedStream must not emit until we resume - fake.expect(delayedStream, 'emit', 0); - - // but our original source must emit - var params = []; - source.on('foo', function(param) { - params.push(param); - }); - - source.emit('foo', 1); - source.emit('foo', 2); - - // Make sure delayedStream did not emit, and source did - assert.deepEqual(params, [1, 2]); - fake.verify(); - - // After resume, delayedStream must playback all events - fake - .stub(delayedStream, 'emit') - .times(Infinity) - .withArg(1, 'newListener'); - fake.expect(delayedStream, 'emit', ['foo', 1]); - fake.expect(delayedStream, 'emit', ['foo', 2]); - fake.expect(source, 'resume'); - - delayedStream.resume(); - fake.verify(); - - // Calling resume again will delegate to source - fake.expect(source, 'resume'); - delayedStream.resume(); - fake.verify(); - - // Emitting more events directly leads to them being emitted - fake.expect(delayedStream, 'emit', ['foo', 3]); - source.emit('foo', 3); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js deleted file mode 100644 index a9d35e72..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js +++ /dev/null @@ -1,15 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testHandleSourceErrors() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // We deal with this by attaching a no-op listener to 'error' on the source - // when creating a new DelayedStream. This way error events on the source - // won't throw. - source.emit('error', new Error('something went wrong')); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 7638a2bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,18 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testMaxDataSize() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {maxDataSize: 1024, pauseStream: false}); - - source.emit('data', new Buffer(1024)); - - fake - .expect(delayedStream, 'emit') - .withArg(1, 'error'); - source.emit('data', new Buffer(1)); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js deleted file mode 100644 index 7d312ab1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testPipeReleases() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(delayedStream, 'resume'); - delayedStream.pipe(new Stream()); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js deleted file mode 100644 index d436163b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testProxyReadableProperty() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - source.readable = fake.value('source.readable'); - assert.strictEqual(delayedStream.readable, source.readable); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js deleted file mode 100755 index 0bb8e822..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json deleted file mode 100644 index 192a544d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "0.0.4", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "engines": { - "node": "*" - }, - "dependencies": { - "delayed-stream": "0.0.5" - }, - "devDependencies": { - "far": "0.0.1" - }, - "readme": "# combined-stream\n\nA stream that emits multiple other streams one after another.\n\n## Installation\n\n``` bash\nnpm install combined-stream\n```\n\n## Usage\n\nHere is a simple example that shows how you can use combined-stream to combine\ntwo files into one:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(fs.createReadStream('file1.txt'));\ncombinedStream.append(fs.createReadStream('file2.txt'));\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\nWhile the example above works great, it will pause all source streams until\nthey are needed. If you don't want that to happen, you can set `pauseStreams`\nto `false`:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create({pauseStreams: false});\ncombinedStream.append(fs.createReadStream('file1.txt'));\ncombinedStream.append(fs.createReadStream('file2.txt'));\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\nHowever, what if you don't have all the source streams yet, or you don't want\nto allocate the resources (file descriptors, memory, etc.) for them right away?\nWell, in that case you can simply provide a callback that supplies the stream\nby calling a `next()` function:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(function(next) {\n next(fs.createReadStream('file1.txt'));\n});\ncombinedStream.append(function(next) {\n next(fs.createReadStream('file2.txt'));\n});\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\n## API\n\n### CombinedStream.create([options])\n\nReturns a new combined stream object. Available options are:\n\n* `maxDataSize`\n* `pauseStreams`\n\nThe effect of those options is described below.\n\n### combinedStream.pauseStreams = true\n\nWhether to apply back pressure to the underlaying streams. If set to `false`,\nthe underlaying streams will never be paused. If set to `true`, the\nunderlaying streams will be paused right after being appended, as well as when\n`delayedStream.pipe()` wants to throttle.\n\n### combinedStream.maxDataSize = 2 * 1024 * 1024\n\nThe maximum amount of bytes (or characters) to buffer for all source streams.\nIf this value is exceeded, `combinedStream` emits an `'error'` event.\n\n### combinedStream.dataSize = 0\n\nThe amount of bytes (or characters) currently buffered by `combinedStream`.\n\n### combinedStream.append(stream)\n\nAppends the given `stream` to the combinedStream object. If `pauseStreams` is\nset to `true, this stream will also be paused right away.\n\n`streams` can also be a function that takes one parameter called `next`. `next`\nis a function that must be invoked in order to provide the `next` stream, see\nexample above.\n\nRegardless of how the `stream` is appended, combined-stream always attaches an\n`'error'` listener to it, so you don't have to do that manually.\n\nSpecial case: `stream` can also be a String or Buffer.\n\n### combinedStream.write(data)\n\nYou should not call this, `combinedStream` takes care of piping the appended\nstreams into itself for you.\n\n### combinedStream.resume()\n\nCauses `combinedStream` to start drain the streams it manages. The function is\nidempotent, and also emits a `'resume'` event each time which usually goes to\nthe stream that is currently being drained.\n\n### combinedStream.pause();\n\nIf `combinedStream.pauseStreams` is set to `false`, this does nothing.\nOtherwise a `'pause'` event is emitted, this goes to the stream that is\ncurrently being drained, so you can use it to apply back pressure.\n\n### combinedStream.end();\n\nSets `combinedStream.writable` to false, emits an `'end'` event, and removes\nall streams from the queue.\n\n### combinedStream.destroy();\n\nSame as `combinedStream.end()`, except it emits a `'close'` event instead of\n`'end'`.\n\n## License\n\ncombined-stream is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "_id": "combined-stream@0.0.4", - "_from": "combined-stream@~0.0.4", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js deleted file mode 100644 index 81543485..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js +++ /dev/null @@ -1,23 +0,0 @@ -var common = module.exports; - -var path = require('path'); -var fs = require('fs'); -var root = path.join(__dirname, '..'); - -common.dir = { - fixture: root + '/test/fixture', - tmp: root + '/test/tmp', -}; - -// Create tmp directory if it does not exist -// Not using fs.exists so as to be node 0.6.x compatible -try { - fs.statSync(common.dir.tmp); -} -catch (e) { - // Dir does not exist - fs.mkdirSync(common.dir.tmp); -} - -common.CombinedStream = require(root); -common.assert = require('assert'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt deleted file mode 100644 index 50e0218d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt +++ /dev/null @@ -1,256 +0,0 @@ -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt deleted file mode 100644 index da1d821f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt +++ /dev/null @@ -1,256 +0,0 @@ -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js deleted file mode 100644 index 44ecabab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js +++ /dev/null @@ -1,27 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(function(next) { - next(fs.createReadStream(FILE1)); - }); - combinedStream.append(function(next) { - next(fs.createReadStream(FILE2)); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('end', function() { - var written = fs.readFileSync(tmpFile, 'utf8'); - assert.strictEqual(written, EXPECTED); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js deleted file mode 100644 index e3fbd184..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js +++ /dev/null @@ -1,34 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; - -(function testDataSizeGetter() { - var combinedStream = CombinedStream.create(); - - assert.strictEqual(combinedStream.dataSize, 0); - - // Test one stream - combinedStream._streams.push({dataSize: 10}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 10); - - // Test two streams - combinedStream._streams.push({dataSize: 23}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); - - // Test currentStream - combinedStream._currentStream = {dataSize: 20}; - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 53); - - // Test currentStream without dataSize - combinedStream._currentStream = {}; - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); - - // Test stream function - combinedStream._streams.push(function() {}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js deleted file mode 100644 index c678575c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var BUFFER = new Buffer('Bacon is delicious'); -var FILE2 = common.dir.fixture + '/file2.txt'; -var STRING = 'The € kicks the $\'s ass!'; - -var EXPECTED = - fs.readFileSync(FILE1) - + BUFFER - + fs.readFileSync(FILE2) - + STRING; -var GOT; - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(BUFFER); - combinedStream.append(fs.createReadStream(FILE2)); - combinedStream.append(function(next) { - next(STRING); - }); - - var tmpFile = common.dir.tmp + '/combined-file1-buffer-file2-string.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('close', function() { - GOT = fs.readFileSync(tmpFile, 'utf8'); - }); -})(); - -process.on('exit', function() { - assert.strictEqual(GOT, EXPECTED); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js deleted file mode 100644 index 263cfdf7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js +++ /dev/null @@ -1,35 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); -var GOT; - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var stream1 = combinedStream._streams[0]; - var stream2 = combinedStream._streams[1]; - - stream1.on('end', function() { - assert.equal(stream2.dataSize, 0); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('close', function() { - GOT = fs.readFileSync(tmpFile, 'utf8'); - }); -})(); - -process.on('exit', function() { - console.error(GOT.length, EXPECTED.length); - assert.strictEqual(GOT, EXPECTED); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js deleted file mode 100644 index c3d288d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js +++ /dev/null @@ -1,39 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var util = require('util'); -var Stream = require('stream').Stream; - -var s = CombinedStream.create(); - - -function StringStream(){ - this.writable=true; - this.str="" -} -util.inherits(StringStream,Stream); - -StringStream.prototype.write=function(chunk,encoding){ - this.str+=chunk.toString(); - this.emit('data',chunk); -} - -StringStream.prototype.end=function(chunk,encoding){ - this.emit('end'); -} - -StringStream.prototype.toString=function(){ - return this.str; -} - - -s.append("foo."); -s.append(""); -s.append("bar"); - -var ss = new StringStream(); - -s.pipe(ss); -s.resume(); - -assert.equal(ss.toString(),"foo.bar"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js deleted file mode 100644 index aefa36e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js +++ /dev/null @@ -1,17 +0,0 @@ -var fs = require('fs'); -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var FILE1 = common.dir.fixture + '/file1.txt'; -var fileStream = fs.createReadStream(FILE1); - -var foo = function(){}; - -(function testIsStreamLike() { - assert(! CombinedStream.isStreamLike(true)); - assert(! CombinedStream.isStreamLike("I am a string")); - assert(! CombinedStream.isStreamLike(7)); - assert(! CombinedStream.isStreamLike(foo)); - - assert(CombinedStream.isStreamLike(fileStream)); -})(); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 25f47a47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,24 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create({pauseStreams: false, maxDataSize: 20736}); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var gotErr = null; - combinedStream.on('error', function(err) { - gotErr = err; - }); - - process.on('exit', function() { - assert.ok(gotErr); - assert.ok(gotErr.message.match(/bytes/)); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js deleted file mode 100644 index 30a3a6f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js +++ /dev/null @@ -1,30 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create({pauseStreams: false}); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var stream1 = combinedStream._streams[0]; - var stream2 = combinedStream._streams[1]; - - stream1.on('end', function() { - assert.ok(stream2.dataSize > 0); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('end', function() { - var written = fs.readFileSync(tmpFile, 'utf8'); - assert.strictEqual(written, EXPECTED); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js deleted file mode 100755 index 0bb8e822..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json deleted file mode 100644 index 8e5d3256..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "form-data", - "description": "A module to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "version": "0.1.2", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-form-data.git" - }, - "main": "./lib/form_data", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.6" - }, - "dependencies": { - "combined-stream": "~0.0.4", - "mime": "~1.2.11", - "async": "~0.2.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/felixge/node-form-data/master/License" - } - ], - "devDependencies": { - "fake": "~0.2.2", - "far": "~0.0.7", - "formidable": "~1.0.14", - "request": "~2.27.0" - }, - "readme": "# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data)\n\nA module to create readable ```\"multipart/form-data\"``` streams. Can be used to submit forms and file uploads to other web applications.\n\nThe API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].\n\n[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface\n[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions\n\n## Install\n\n```\nnpm install form-data\n```\n\n## Usage\n\nIn this example we are constructing a form with 3 fields that contain a string,\na buffer and a file stream.\n\n``` javascript\nvar FormData = require('form-data');\nvar fs = require('fs');\n\nvar form = new FormData();\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_file', fs.createReadStream('/foo/bar.jpg'));\n```\n\nAlso you can use http-response stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar http = require('http');\n\nvar form = new FormData();\n\nhttp.request('http://nodejs.org/images/logo.png', function(response) {\n form.append('my_field', 'my value');\n form.append('my_buffer', new Buffer(10));\n form.append('my_logo', response);\n});\n```\n\nOr @mikeal's request stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar request = require('request');\n\nvar form = new FormData();\n\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_logo', request('http://nodejs.org/images/logo.png'));\n```\n\nIn order to submit this form to a web application, call ```submit(url, [callback])``` method:\n\n``` javascript\nform.submit('http://example.org/', function(err, res) {\n // res – response object (http.IncomingMessage) //\n res.resume(); // for node-0.10.x\n});\n\n```\n\nFor more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.\n\n### Alternative submission methods\n\nYou can use node's http client interface:\n\n``` javascript\nvar http = require('http');\n\nvar request = http.request({\n method: 'post',\n host: 'example.org',\n path: '/upload',\n headers: form.getHeaders()\n});\n\nform.pipe(request);\n\nrequest.on('response', function(res) {\n console.log(res.statusCode);\n});\n```\n\nOr if you would prefer the `'Content-Length'` header to be set for you:\n\n``` javascript\nform.submit('example.org/upload', function(err, res) {\n console.log(res.statusCode);\n});\n```\n\nTo use custom headers and pre-known length in parts:\n\n``` javascript\nvar CRLF = '\\r\\n';\nvar form = new FormData();\n\nvar options = {\n header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF,\n knownLength: 1\n};\n\nform.append('my_buffer', buffer, options);\n\nform.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n});\n```\n\nForm-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide \"file\"-related information manually:\n\n``` javascript\nsomeModule.stream(function(err, stdout, stderr) {\n if (err) throw err;\n\n var form = new FormData();\n\n form.append('file', stdout, {\n filename: 'unicycle.jpg',\n contentType: 'image/jpg',\n knownLength: 19806\n });\n\n form.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n });\n});\n```\n\nFor edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:\n\n``` javascript\nform.submit({\n host: 'example.com',\n path: '/probably.php?extra=params',\n auth: 'username:password'\n}, function(err, res) {\n console.log(res.statusCode);\n});\n```\n\n## Notes\n\n- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.\n- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]\n\n## TODO\n\n- Add new streams (0.10) support and try really hard not to break it for 0.8.x.\n\n## License\n\nForm-Data is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-form-data/issues" - }, - "homepage": "https://github.com/felixge/node-form-data", - "_id": "form-data@0.1.2", - "_from": "form-data@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile deleted file mode 100755 index 5f339bf3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md deleted file mode 100755 index 010bac6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md +++ /dev/null @@ -1,627 +0,0 @@ -![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png) - -<img align="right" src="https://raw.github.com/hueniverse/hawk/master/images/logo.png" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial -HTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz). - -Current version: **1.0** - -[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk) - -# Table of Content - -- [**Introduction**](#introduction) - - [Replay Protection](#replay-protection) - - [Usage Example](#usage-example) - - [Protocol Example](#protocol-example) - - [Payload Validation](#payload-validation) - - [Response Payload Validation](#response-payload-validation) - - [Browser Support and Considerations](#browser-support-and-considerations) -<p></p> -- [**Single URI Authorization**](#single-uri-authorization) - - [Usage Example](#bewit-usage-example) -<p></p> -- [**Security Considerations**](#security-considerations) - - [MAC Keys Transmission](#mac-keys-transmission) - - [Confidentiality of Requests](#confidentiality-of-requests) - - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers) - - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials) - - [Entropy of Keys](#entropy-of-keys) - - [Coverage Limitations](#coverage-limitations) - - [Future Time Manipulation](#future-time-manipulation) - - [Client Clock Poisoning](#client-clock-poisoning) - - [Bewit Limitations](#bewit-limitations) - - [Host Header Forgery](#host-header-forgery) -<p></p> -- [**Frequently Asked Questions**](#frequently-asked-questions) -<p></p> -- [**Acknowledgements**](#acknowledgements) - -# Introduction - -**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with -partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, -and optionally the request payload. - -Similar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of -client credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme, -the key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is -included in its place. - -However, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of -replay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less -"chattiness" (interaction with the server). - -Also unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because -the client and server must both have access to the key material in the clear. - -The primary design goals of this scheme are to: -* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources, -* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where - to send an authenticated request), and -* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client - failure to validate the server's identity as part of its TLS handshake. - -In addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using -a query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk). - -The **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server, -which is beyond the scope of this module. Typically, the shared credentials are established via an initial -TLS-protected phase or derived from some other shared confidential information available to both the client -and the server. - - -## Replay Protection - -Without replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more -than once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when -making requests. This gives the server enough information to prevent replay attacks. - -The nonce is generated by the client, and is a string unique across all requests with the same timestamp and -key identifier combination. - -The timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards -are rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks. -By default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in -practice translates to a maximum of 2 minutes as the skew can be positive or negative). - -Using a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client -clock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types -(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response -to a bad timestamp. - -There is no expectation that the client will adjust its system clock to match the server (in fact, this would be a -potential attack vector). Instead, the client only uses the server's time to calculate an offset used only -for communications with that particular server. The protocol rewards clients with synchronized clocks by reducing -the number of round trips required to authenticate the first request. - - -## Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - // Authenticate incoming request - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - // Prepare response - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { 'Content-Type': 'text/plain' }; - - // Generate Server-Authorization response header - - var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] }); - headers['Server-Authorization'] = header; - - // Send the response back - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -// Start server - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Client code: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Request options - -var requestOptions = { - uri: 'http://example.com:8000/resource/1?b=1&a=2', - method: 'GET', - headers: {} -}; - -// Generate Authorization request header - -var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' }); -requestOptions.headers.Authorization = header.field; - -// Send authenticated request - -Request(requestOptions, function (error, response, body) { - - // Authenticate the server's response - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - - // Output results - - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); -}); -``` - -**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local -machine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method. - -```javascript -Hawk.sntp.start(); -``` - - -## Protocol Example - -The client attempts to access a protected resource without authentication, sending the following HTTP request to -the resource server: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -``` - -The resource server returns an authentication challenge. - -``` -HTTP/1.1 401 Unauthorized -WWW-Authenticate: Hawk -``` - -The client has previously obtained a set of **Hawk** credentials for accessing resources on the "http://example.com/" -server. The **Hawk** credentials issued to the client include the following attributes: - -* Key identifier: dh37fgj492je -* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn -* Algorithm: sha256 - -The client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1, -1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline -character): - -``` -hawk.1.header -1353832234 -j4h3g2 -GET -/resource/1?b=1&a=2 -example.com -8000 - -some-app-ext-data - -``` - -The request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string. -The result is base64-encoded to produce the request MAC: - -``` -6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE= -``` - -The client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using -the HTTP `Authorization` request header field: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=" -``` - -The server validates the request by calculating the request MAC again based on the request received and verifies the validity -and scope of the **Hawk** credentials. If valid, the server responds with the requested resource. - - -### Payload Validation - -**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash -using the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character): -* `hawk.1.payload` -* the content-type in lowercase, without any parameters (e.g. `application/json`) -* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability) - -For example: - -* Payload: `Thank you for flying Hawk` -* Content Type: `text/plain` -* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=` - -Results in the following input to the payload hash function (newline terminated values): - -``` -hawk.1.payload -text/plain -Thank you for flying Hawk - -``` - -Which produces the following hash value: - -``` -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -``` - -The client constructs the normalized request string (newline terminated values): - -``` -hawk.1.header -1353832234 -j4h3g2 -POST -/resource/1?a=1&b=2 -example.com -8000 -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -some-app-ext-data - -``` - -Then calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data, -and request MAC, with the request using the HTTP `Authorization` request header field: - -``` -POST /resource/1?a=1&b=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=" -``` - -It is up to the server if and when it validates the payload for any given request, based solely on it's security policy -and the nature of the data included. - -If the payload is available at the time of authentication, the server uses the hash value provided by the client to construct -the normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value -with the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash. - -However, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed -at a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value -provided by the client after validating the MAC. - -It is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value -included in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided -by the client, the payload may be modified by an attacker. - - -## Response Payload Validation - -**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the -client to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header -as a response header using the exact same syntax as the `Authorization` request header field. - -The header is contructed using the same process as the client's request header. The server uses the same credentials and other -artifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with -new values based on the server response. The rest as identical to those used by the client. - -The result MAC digest is included with the optional `hash` and `ext` values: - -``` -Server-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific" -``` - - -## Browser Support and Considerations - -A browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js). - -**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client. -Therefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value -_"WWW-Authenticate, Server-Authorization"_ on each response from your server. As explained in the -[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers -can safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a -["simple response header"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the -Hawk client from authenticating the requests.You can read more about the why and how in this -[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server) - - -# Single URI Authorization - -There are cases in which limited and short-term access to a protected resource is granted to a third party which does not -have access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk** -provides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains -the necessary credentials to authenticate the request. - -Because of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests -and for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same -credentials as the client to maintain clear traceability as to who issued which credentials. - -In order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within -the granted access timeframe. - - -## Bewit Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' }); - res.end(!err ? 'Access granted' : 'Shoosh!'); - }); -}; - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Bewit code generation: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Generate bewit - -var duration = 60 * 5; // 5 Minutes -var bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' }); -var uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit; -``` - - -# Security Considerations - -The greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use. -Implementers are strongly encouraged to assess how this module addresses their security requirements. This section includes -an incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server. -Many of the protections provided in **Hawk** depends on whether and how they are used. - -### MAC Keys Transmission - -**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used -to obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS. - -### Confidentiality of Requests - -While **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request -confidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should -carefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms -to protect sensitive resources. - -### Spoofing by Counterfeit Servers - -**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server -may choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to -the server to determine when such measure is included, to up to the client to enforce that policy. - -A hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise -incorrect responses. Service providers should consider such attacks when developing services using this protocol, and should -require transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue. - -### Plaintext Storage of Credentials - -The **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC, -the server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which -store only a one-way hash of user credentials. - -If an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able -to perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized -access. - -### Entropy of Keys - -Unless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request -MAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to -assign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk** -credentials are valid. - -For example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force -attack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the -longest key reasonable. - -It is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high -quality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit -patterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use -cryptographically secure PRNGs to avoid these problems. - -### Coverage Limitations - -The request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers -which can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence -or value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the -`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC. - -The response authentication, when performed, only covers the response payload, content-type, and the request information -provided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or -any other response header field (e.g. Location) which can affect the client's behaviour. - -### Future Time Manipulation - -The protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its -current time when an invalid timestamp is received. - -If an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause -the client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will -not likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then -be able to replay the request at the correct time without detection. - -The client must only use the time information provided by the server if: -* it was delivered over a TLS connection and the server identity has been verified, or -* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified. - -### Client Clock Poisoning - -When receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use -the time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with -that particular server. - -### Bewit Limitations - -Special care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot -be revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with -access to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET -requests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private -and sensitive information. - -### Host Header Forgery - -Hawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port` -options are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and -use that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server -implementors must manually verify that the host header received matches their expectation (or use the options mentioned above). - -# Frequently Asked Questions - -### Where is the protocol specification? - -If you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source -project instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about -something? Open an issue! - -### Is it done? - -At if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental -and is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions -and suggestions. - -### Where can I find **Hawk** implementations in other languages? - -**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other -platforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk), -[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list -is maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another -port. A cross-platform test-suite is in the works. - -### Why isn't the algorithm part of the challenge or dynamically negotiated? - -The algorithm used is closely related to the key issued as different algorithms require different key sizes (and other -requirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm -together as part of the issued credentials. - -### Why is Host and Content-Type the only headers covered by the request MAC? - -It is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no -well-established way to normalize them. Many platforms change the case of header field names and values. The only -straight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request, -an approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information, -and introduces other security issues because firewalls will not be aware of these "hidden" headers. In addition, any information -repeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere. - -### Why not just use HTTP Digest? - -Digest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send -a protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile -where extra round-trip are costly. - -### Why bother with all this nonce and timestamp business? - -**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp -and nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses -it by requiring the client to sync its clock, but provides it with tools to accomplish it. - -In general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected -system where the clients are implemented using best practices and are under the control of the server. Instead of dropping -replay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers -with the ability to decide how to enforce their security policy without impacting the client's implementation. - -### What are `app` and `dlg` in the authorization header and normalized mac string? - -The original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which -this module is specifically designed for, and a delegated access mode which is being developed separately in -[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`. -This provides binding between the credentials and the application in a way that prevents an attacker from tricking an application -to use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the -application the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly, -but with the additional security of delegated credentials. - -### What is the purpose of the static strings used in each normalized MAC input? - -When calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being -used or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request, -response, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol -creates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it -can create an exploit opportunity for cases where the nonce is similar in format to a timestamp. - -### Does **Hawk** have anything to do with OAuth? - -Short answer: no. - -**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent -incompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it -to authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard -at work to produce more garbage. - -**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case -of delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz). - - -# Acknowledgements - -**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal -co-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification. - -Special thanks to Ben Laurie for his always insightful feedback and advice. - -The **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com). diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js deleted file mode 100755 index 8c063f6c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js +++ /dev/null @@ -1,78 +0,0 @@ -// Load modules - -var Http = require('http'); -var Request = require('request'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = { - credentials: { - dh37fgj492je: { - id: 'dh37fgj492je', // Required by Hawk.client.header - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - } - } -}; - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - return callback(null, internals.credentials[id]); -}; - - -// Create HTTP server - -var handler = function (req, res) { - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { - 'Content-Type': 'text/plain', - 'Server-Authorization': Hawk.server.header(credentials, artifacts, { payload: payload, contentType: 'text/plain' }) - }; - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -Http.createServer(handler).listen(8000, '127.0.0.1'); - - -// Send unauthenticated request - -Request('http://127.0.0.1:8000/resource/1?b=1&a=2', function (error, response, body) { - - console.log(response.statusCode + ': ' + body); -}); - - -// Send authenticated request - -credentialsFunc('dh37fgj492je', function (err, credentials) { - - var header = Hawk.client.header('http://127.0.0.1:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'and welcome!' }); - var options = { - uri: 'http://127.0.0.1:8000/resource/1?b=1&a=2', - method: 'GET', - headers: { - authorization: header.field - } - }; - - Request(options, function (error, response, body) { - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); - process.exit(0); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png deleted file mode 100755 index a0e15cda0144a7d7ed222e74a2ea4afbab32555c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6945 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 B50U@? diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png deleted file mode 100755 index b8ff5901718a8a5529d25602a4a581d2f68d67cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71732 zcmXV%bx<5nu*VN~KOh8m4tJN}?hxEUu;32C2@b*C-QC^YCAb{!E&+nQ`@Q%6*xIVA zt(l$fo}KP*e=b}_Ng56LGco`GK$De`Py+y<zCbPuM0m(A%Y3m^kQ<VNjE*w^fP(Yi z1qDdY`~(0XD_e<+tEgDoyVyHh+B=ZRii?vuIN6(9*_Z(U9&1_Z78>d&ctVd`_hRy4 z{)zJTYPg7GYGRT8z&ILuawJT-F!H=rT-81-Nl943(cCbY=xF~aTvbNY2;>!nee(S1 zUj<<i<1ag21=dTQkB3w5P0PYZm3LVUGYGwisL3)Ms$Bl4Wnv^)+rLHzhj;dwzXTvt zIRG#b8@`h}zfnQ~o_qxb87O)Yx&crg3n++yUd4=FR-(`kj8m~ReJKARs9u*iUU@`+ zAmGc-Xt83z7bz(JtW+9xKrSr6c*6AC9zcZ&U`*?GxB&3adP?(x0_Y`@<3i=e0myL7 z!XyBe0)WbyuMv^}ZB_u#Tz-%bu)+jjmDMtr0o1ktdZ#f_>H&zT09MtoU=RS-3t&7- zN$CLyN&^6;ZnXq&7^*Rk=pmL$s~2pe;*$)}Lu7J9(9&Wip_`V)X8>}WK%1n0Vea=# zBVZ5U#Mr)@1ORg5a3QO`d-Iq^ub!Ufj&4RbVmj@C|DgExZSVbHrosW@xE&YYxpzjE zhR^;2@cy>%`P7%NmWC*~u8)!C^%!580J$e?T6Yfr*+w!iwrzFwV1Iu_Zct3mWL(SV z-J;*9SL@B@*;nxO@nO4rmnwkWAV3=SX}f>&UZIF+CLSs1+s0vx^lJ;s$1Cvy#h~oB zHf?&~o+`Fuv_yK;9eWW)xL7=Bh<g6x`!1OA1x6Um1*rWY4CNKaRBB)f^H-i0Q`@C? z_YnZN?Xd6rLx%|CZ~1Fy#{J_;<V`x48sKj(8}A4J7)nqvYm7IDj35F461f5NwW5Ug zeV-V6;fea-Hu_Lrjk$xws0RDRFvXC+`x7}CgDL~X=t8DyiRq15{(K?k>{Yc4NpL`C z?$>NZ7jnS(XM&jBN7osE1S>j<h+{&&76$b#LYp!g5kD>XiM&q+7CVxPY%C0@N+BP| zCBvo`p+Tl8Lwqab1kD$!FV!9=FbZG~d=2T8W=jmHR~7n$+9cjq%JVr$Dj#L`y9--- z3|?-=tW)D>p(yUWquB~ejI|hH@e$VE<4*`2gEp+p!vkV<yo^W*rW17(m8ccNpKHHX z!gPc`n9kI>!(s<W_9Ah^x{HySkci4?D`+dN$dr;1QE_6eA@Lx=1gZAZQY4hhH`26Y zJr92R#?BV1EyGB;gdKy!g6S0|KFC9b9WKsJ+ZGEgTUV$tk3BCnZ>L6i!dRBUDf5{! zVQlTYbv*)KA|n~YXz+g4{=h!RKH)z3tsZjLw=a%`PwKmLYU4lT2o5k0I1k{>QrSf{ z3)0m#OY=0axMFn0s`8rEYE(l@aX4Mm`KEs1$;ua1<tHtCw#2u5w5mCFX~)`3B2h}2 z)ta9;kv>j2hPih~MGL|GH4<h)N09Le;gbb{`=^>zg<^t*NP-a!Rvxyq)T1<vG<!{L z`eu4>+_-V%B)KG-Btm)?jk5CM@~v_d%{$ErjhHe+b)RY}O%C<FGNeDr6`JK)Drf41 z>K0`JrJ>~(rS=*kg}yp(;qW>G3IodGg{rxAMthyZWGJQt4IYf-)@T(Wt^r(wG<8#} z-fr|Asc*y`kwWEVd3@p=avWL>YIlj|A_#k_j!&5`N=Qd^B`J5l5nI43&@PCum{XyR z%}n3AJUJy<yF#WywL<!=i@W-wB&)bfvP0)309|xMj#i&m+9GBeF6&5rReiGrxdcy9 zi2tFQx!k&lFt0<xy~nQPGBvx~&_7$jzGTa@>*ybm56hdzo9(}n2WeDo_y$xe_;u9j zPl7{Sj`o7YEF<eTs^SI%U&M<{l1x%|g5uid1Pd0WeoJ9QSq<y&QSI3d+YT4dz|)Y^ z$Sa;IUZ$%lwiSbl1r!7nMy4jG@~4*4xH5#;mf4Rojxv@rz%9nQ9=eRprOmBovi1AA z#X6VGop!;xd^$zinz{xJQdL=1)Jq*z9VJ*LZAuAB71>J`1GP8JW6fnP1hoe%@axsh zw#_~!7T@qKT863zE)%*EeA<0}zX>6rg|4Dk5bF~AIyX82`M>gSrB7#GiuerOC!erb zXwP8ItZ?i#<4k}Ct+LcJ7NjlkE!v!a-GxPl%Lh&{rwB7=5DssScJ0f#JUANc{G5Nt z%4o>wzbIX=x#YgIx(waOndHm?W$SP_&kl@=Z>t{6iJ;^pv08&GeU-(P11y@3C|OKd z;<T!kYg>xk%O6dy@P+>hJLT*N?+Nm3v2W=ZP4e`%jJ8ZD57=iL1%t)?C_lb`{QQ^$ zl=xFaS-^w`hz96EzdZf)Chv(B;a@lVTfcfC8kO57iYpouSQU8CS4D0)dLCOv{&<u+ z9XD--9<1Vfyflkoa%d7c;EPHd92%?@A`<Noru})2ErrW{ZbRG|Eb&hwSz;^0f=!vP zhDnZ#Ubvk3hu|7dJ7>GdFtfSN<f3+#wycdj5g#*sHMgBjH~979E_63*7iG^2Kb2+F zz`-+by8k}71h0%4n~^{Hi$a(ZZ{oEmCVeSh6!k5RJ9RX&XFqYj1qI6-_gvVDxIR6J z(ya`=;?MZ=xK1ulsv(Xd#)GyX+OpVA1vG`t4E}7qbT=|vb|L;QwqNmav5sQp<cbN+ z7N-`6=57;}X2JFELw1oZEF?(?W7Z9^m2f&t$jxHK#~QkH%k&8K7G_%JJyYT1e90Br z3{w}A4dd&vJegNH9~apD*gNsfMIrK9OvKuUU6nuh>IEG=*OB*d;TS@`!dD8mMl{pg zE-F`CXr)y9cG3J)v<@)r8xQPjg0enC(L_E7_Bq>FzA#YMX3+sRnfwdMA{53AkEjN& z<EP;It<Y_F91w=ukN2c)BsP{+47PorF`qX-Iox8()<aJ&PdQ9Mw?kW9YeWNoZM=B+ zE4j{+GDWxE@vB+9t)NG+wbQI*Y<fySM59pSUgMtz_vQR%lgaXv-P|RiSLa{O^Tl<& z&c`?5vF>$EC{4vh^F^~4*_Vb#k?QdBlc(etTZ1YkTgQtLn0c5t1WNSg<+eYI#PdQL zYB5U;XVT~+q}}gXSME$`+-RD=GlzF69V9&WPacuLk0faPYi?0ql{*Lvq;A9(#4JC= z(r?qHGSt&w^uFn}D^Ci~EuC)te3f1&#mM9o)bW(N(-^Z_I|*D!u(+Lx%1X-e@nwGA zFka7Z_Bt}12LHgYziP*H*_oI8h&&SL6qwe(ZFRY=Uq8UnYSl`w;Wx59bvYG$PgqbM z>B#IzuWr+~ZoB;1)#PRVctV)XGrf7=<#~hmv9y@YC$!mh_tXAy=<xxJx9RId`!+q% zvFc8HS=FiBX>|YPLUdJpGjvfz?|ozCYQyhGuY2y@+=lcceDJTC_qc}`3~{)aw3vwy zw2-rGUSU4IT@k0Zlh+dQneQ_++4%4I?-SMdcr3n8i)YKzbE$KADYq#JJ+|IOZ>POy z1U2i!{lg^PV;&rAhWB4zF8bUz+=;IWz!=K=-ei7sAC}K`59+feF9`$*2_LX9sdulY z98Bwwe3Q&nMokd__(=@_`2PX`o<AV>69B-K6#zIj1_1a|0RVjac%vaH02G>$tc0kB z$J%+8yEoC|Vn~hv$9l%k7Ms;%rU@s6D6~(%exDGF{k$TcM=2|e4PrqmD^w9flC{ix z#4Cq--1@$n{N2^+MX3W!+JHUfZ;MM+C*1?(NquoXnfbD%4yG(j+^3@D8ygc)P26A_ zl~r=ORl?oTYTPjRbgnr0E-e@Sg_mVi>z(z*{^k}egM<uC?w~Wz+-R%A9M^|BkDvg1 z3MEo&5d7ON?{YS%9{>B=Fkeg}*$~up+S?Lekp$vR`OJd-L*zRKmEqm<_m2;!t-jdf zP|UWBYx7&~avk)yExZOj51aiu$8}z)Qn+$|_Fk5tQ=})s=LnTpwRko~7a<&ZS!;~> zHK<CM<_?u~K`|@5T2h()TzbfB>-ZNeK?AW1$t<;(UR?GO0)~cmFgbpVr^b>}ooga_ z>TB%3&>^?00CBD4;|a3<Zo&SpGO)3~Dq<>Mz?s36|4e0D0keW;<6O{LNJgTCTc-<f zn}(j$@#jNfMer|x0>A}EnfcCt@x_&}eH%oc*4G%hP16LnGXXh}q~K#$l7p?%VLS@y zp(R!8iWH?<!YmZNfqrc@_Jte@ySdY>{vj%=69}+dS2aet4*O!`oF`ZSI#&z&M$zDq z4AV;lI0QhZp@j1nQz2}boCt7^$uXFC9+}<`3x5uh43V&>9s7<wkgOz#5uUiK`ET}P zt2}>O4VP0g_dA9rq79P44eI*(-uZc0!%t<F^)*wMAymfmPuCQ+bHD1RtI9D}M>qKZ zlTgO!0A~PiC4devP%oS<`rcVdS986)5VJq|yr?}Uy!Q8sw&0Ae93>A`80$(6_tg$J zMxMNC{rpOPVI$+4y>k3;G*!jl``Q+PaOR7z0j(pyTU9j&_mIE!(*OV9sR^Pmxw~{; zRCZ}8P&r2I9mzGB><K5&vm0wl?56o``iPpYYJK8G;yNhvRrIie>84EO(3|o1gY2BH zw4Rpo0x@<rB@9_}0bX6DJxjm?S<v_Y-Z>SfHxm^d(BRL_VWPKu1ow8w+`a8Fof;Rj z+K_XpjSK<;&7S00%<v|GUo_!J6o;zl5utu(AsJep@AN6!R$8CHJ$ZeZduN87k#qWQ zG>FCbSph1DvrK0S#GV)DW4LfBe)k&1!HS>V&%d-#N90FG%$&Mg?>`&dQ@LL1fyXZ@ z^j6kLV4iw%%imCs6aO>kwg4<ZGi8+P7wSJ63f7`m4fvPg1bl_Zw;OqU6{>uj^-d%` zOS;qJ)$c9~#VlsqOTg$#kn!rh8ig-@Mfy*?BHI_i6cuh{QPaz^L%=n0og2hE9%nPL ze_z<=yZ?2`AKgYO=lmwNws`zoMVF2usVTMk4OS8nRULa-(VID`;0JQ5UeZYMlD4QG z#hWl3)?$!{u*Js#z+nR>SC1|lB}HKC->C1xhrOh~*}6Q(3QvxkMAq4Ij!>w!G>2D< zy_9B?>fYaOEKKO*WJL;7_9o8Jh_s@?h2;9~rYoS{xS?X$k+VD%g8v=~z}X4$aEk$e z)fZIQXqTh*RpWNKraMx>o={PbC$H?Y*y7gK_At4epegqCk4!ZqDf@n7TX`_(^Y~sw zF6eO^vNF3IMY0rFJ}N*W@2aNNge;QPrchPB$6*e0cdS#)bTt#93N9R51XB+Wj-J>` ziOG8W47fGKwW`ZYEaFUCZ?vl|G$+9%p@jn}z5#$S0nMnevNVt&hhlDc_u$Uamtrz< z_`5WM-@LB|%ryOp`x%NyT^?Gnvy3UezA{&y&i#PISILRl0Ue-<ImmS9mb2b)Tw^4h zlkPvg^qWv6aW3hCc#_LpA!99`j7i9fyHV;)Gcg11ejjM;Kxm=l1mJCc&_;}_tF*S+ zhXa4~f*7;TEk+I%S8Zze?Uu^T0`%0wo(wiRe0$_mzDnVYi}RuJ3Rdvb7HBygyCd?@ zo2K>f)QY?&p(t&4Nhj7>jJN?)EHo^<zzXL!XW7d|6oV64o)OTSNLl}GStp89$aa1~ zk2@s+LVfrD^MDvCsOLMGh}U7hj`z=J1zoo*GSk&CHcL_Y6Mv(Xqhhjcc&hZ<(}N%D z*qT_G8b%QjbWKHq+$C^)V{N@xt*yT$<UHl%)|QC`oXh`J#AM63FMR#C3*t<%o-~NZ z+;*=3h6>)(pxPO>rSu4G%1925?8lQ4EL^%j#;IZ7w0YQB@DPtFr08Kil1WTg3WSLx zr!n{uz{FPsc%t;ynmDSheejjr<)4kuWQWYn$ru>{r}l`|xKr{PFR8E<Rj*rt`VqTS z_Q22&<+b=t1KDb?=I~ISrnx@}5~ADuQuiFIou^%$%)x>^gsVdoNaW#B2b_DxF0=@~ zd;p>sC#m`7Y6b>Ggqo*6X;18%=Qf)nKl)~pG4Cy5h3K)5<xgFP*&#v9Xjbp!&Lgn4 zXJZv!ClUv5tk#{Alf@Hx+7IZGeOm;iHo-Qu@*0RH>OwZKEII&;wFK_iZT9r(J#zg3 z)6P(VPtBL7vr3s~N*n(HB~^e9b0kx>=JqUSj}JHB)On`5Kngh6R=-gH`n&E*iH?}> z?28>Lk6UO-?=EKh;i>pA2hZ0c<jPZgqgW>M4kJ&@jQRnXJh_8%eMA9Gw6kwNIIM;$ z?Swhuuk+YT%xxf=xmYzbQ46QY4IUk4yE45#`*m2JD0Z1R`p7sJ=;0Aq?P%hjP7Juv zy2RG7tk&8P=E$4=v<mCsX$)c1gAdMSDk0~4C8SUdAe&8T07%DhHPL~lz?0e9!yi7E zMCGsCzx9?a`s`h(qijGo9h!1thIZa|7$R+c&R;8F?efTgvE@>4Q3OPu`&e`l{ankN zGHF`3&j}W4pB&WHfn@2N=-M@h-y==b907`|6d|_Dp277TEmnu$OEo^pbXMWzjy`kN zB!!m)<v6oMXFid=)G81Takc+NMtJ3fwo3vFcV<;&uLVQH0?`O(ZE*%5wNY1MjnA20 z>!w|{&#Be>Q%a9R|2gt>me$yNH>d1ozb{OrBy<RM+4P<Iw)-5(%p~9-+r3kk7QFlD zB!8NFf!6EoWni4fv1C-#6WApzIdyJ#cGG!O!s9R$e3vRhE}_TC@uU2oEokhqV=idB z<k5ELFV~bM-IE5cKt`r&a3HxYP_pmB4aQ*;?Lz`^M65Z`oeczSelGptS<sZp&WJ2# zcPcl~I3hr^w&(5om{KkCobEY}px-r(S-BkL?`Alo^f;l}A7wX&3)Q`KVI3FPox7XQ zlC&exQe|$h9Fd<(IN|#uyUPRuA-1yFj$vGFaRPh|CHs=+b-bY)ZG4W_9?k$V)bSgh zS6!L9gn8^Up>}HsO}re%inA4L4HT#<7OQ-Bhq1Pqnfm|-)G^^)Eea&M&$c(H;7(g& z1Ej2RZ&G^`AZo(_LNF9hUE>(_hwj8Cq3%uo?$j_%k$<5rR*Qnm`q&e^Hxz)x`y5I4 zk^45=wAf@7RXYM<?^zZ!rvaq`LqYawz=*=@d(RP<$jq1kI)J)uPct;&yYh$bH3NOd z<H*yoE6dIOUnP1<;f->qSpd7lS5R}%ZCFZl>GYAk?i7kw`wcyP`f00fa-w$gR14Ud z%Bamj*f$3zVuVQtx;M$MHG(gg`IO-<tmwBmZ_8jk^#K+sGA!fwt=6!;-<=k537K%b z=KJry9LiXM{`qtBDf<;Im3z^PQ;9)ButJ{)4$$QcFP9fJf@_sczvbol2!XmiU)tY6 zc7?VRAR{QX`TTmS!AIfxSR>y<-g5a@0HaY|;FfkEeztGC^Pv{H!#gqZkK<xR&+HU` zJ!hR!Ha2llbnk<Woy<-o0D3EIo9Xr!2mC-_jj;?8{b#F%-T4mg+ky@rQ|<U$L6&m% z#-B{oup9JnP&`BA7;19q?Fkz#-AVHAP07EjR9{J0dR|Xvc<tuC?KX#-2!wOCAop}V zOD6kX{#@dcY`b4iQRB*su&(Zkqv!~wen@f|!4OKLEE+6A)-OLz7!?CGFu50;f5KV% ziViECqK>KJT;y+0Mv5C|be4<-@4&zu<lks!V$4y%IEk;6IzFe4TxXk69TaUgvHY+= zQr^lLyh-f%_3EOajdtj7Gw;+KP-vB#t7c>XZP{q%8Q*YpI!l1ha|qe(a_u3#<aDQ8 z<UK^$_uqox^)_Xu*G|XtIT6p5fts?O(dPrqh_)h^Q5^nVf^L_E&*`RRF;BP`YjcN- z-Ryg(fbEGk9Y->JUI9VF@nw(UU9(v~O}r<787smhbmTeM+{o{_2_}b@*8ZwER=kHN zxuU4?49=Sx=D1l@W$wC^o*A^#DKb9vVK|ZIJkICr2IpK(DUkqw6E(EM9m%`ljm%TC zF(R&K1a_$NxS?QvnKR3*J(mC!E2Q-&e7ul8Zo0EDdHs!>{$85O8W6eVO5Ww;<9)84 zb8y=88lF%R#CLS8b6*@K4&9UTuuunR0I0|7b%-|}JM-My;xk#q_tcriHC6>W&+un( zObbWK_dE)%>FPSjCPg*QVXh?aCu_d6y8AF(8S%y~Sft=wTc$SqXm_MDQIACpl|<)E zs&WNOEWne;jAvPAtk#MQ*NtS4z82thpW4&Y(?6|@2n%0dX;v)X7S(wF%6Rw0DPkXR zS4tmWl~$lA%Qz148NIB*oMwFx?8yiZhWab14##&f8nE38)l2l=g+vy>ZgmP2ew~Z? z_T5GJd3DCvm;%sJo-2!MlTm1LlTzYV*WDIFnzP_9tqJe(V0a=&g8G!2T*$e55J;JM zn-n`U6cxeR<L4sa_c4I0?=uCa16Ac07f0YuD1Gk>d_Ldk%ILWCjD0xcsrNejDOTJU zqg-*2YK037*>D-;I4<^Cxooo%@76Qb)rl=36e#I>D+_kisEvo|YgvV!9Ltb(r@(XH zSg@(u9E`{GYk!hZnAlZM5s?@+kT8=4o$=U1A{v@GsnDbg{i$CVtw)d2R{Opvil?b{ zmmoo6SOU>9(kxZu({>8}bY2_7@Ipq0r^kZ)M#B#EW!qT~jGtDnn0Q&nBXiCun=9@< zf*=(;O_h&TD3dv6-PpVCml%0CItgTtbzM4V%eVw`*k1jL=>Tdy(mz#ZUjApNXION= zXB(QNU@M!80+uQc&v~k1r7W>uH8IY38u6S=3KP?K7z{z3pP~E84GaXki?aTmdMjnB zimCB{S@l4MP}u;aO$jU&Rm|Oj2||yn8;+GZJPUPsQd=Ja8r&zoZ%$B2&%Q1bH0kV? zF~tas(|I1l&54QdLUby0aVBv2_9b(im-;(I%{>Op4%0}&vEOZ5CGHF@Xr9<ch$m`l zS_AF9@6IM)_7z);$gJeJD~*O2l?jbRY~kCj=13N9ECc)f5mG3$yGl|-HhYpD4A|zy zMD<#7#syh8#s?%g4n@y8naIoZ23>J#iq*78%*{2a^bqJ|j%i*BP69-w#oOzUj$Wxv zFzga_L1ofmM^3u&&Y>fMfVH-*X`XP5Frk_EE0E_<&AYNfCU4w)gj_j|lG#!8)OSEk z`SqA7?M-(u&apf}A!@>IEMZLf>`K}`sWOk#NXS?7Y5Ie5qpXoaByuI;H~Q?AmEn!> z=g~$-8E48Mhtg`)iDHK80>lze@ClULQZzd%O_#U>g`*X6dj2_wO`8Q(6HO=*A3-x$ z^<fA_S6-=@@SlbChL;MX7df;qfKq0L+-Ba<#9hpz$*S$Jbnko+Oil5&yQlWzpD9J< z3-g055}Te3@av(C@ZFfH<4eTJ#fH3Sc8bJ!Z}KmcgU6K8vC165OtLwQ>SU(6taoI- z`Jv&fR48#icaNaonVFq=sobjKv$u7@2|tvq=*W{NV@Yp!9ot6lI#hw8?53(fhlVDm zY0^vZ_?}lgsBC<1J}0Ly6wDDCaY|2ybU!;sK$+D{S9(iU|6A7-lw+mM-7JB?&UZc0 zHULRVkMeozYJ6k|%ncREUtZW(ntvxMeWN&D#Dw<s1mjivIkF_-P`vJ@SlpZ_GgASl zogF9^V2a_ONDpvDZ;`zl9}2OY&VkPN&fY&F0`n1V<fB)lXV@D5%l7RvP#C}5UZW^( z;$K)s;y6?ca^R)Y)1i3j^t8m(Y}{kNaL^dNoFaK&Fwm;$e?=W6TScQ=?ahQPmSrW% zZ>Nt@oVlPjT`P_FWSn&34$_p|R)dS6kU3c@Wrd|;8G(v(qEPu&Xide~<IedCISz>c z(a@gtZ7f+fG3Kue6M=N?l4jX42ul}7@#{-!YPg5tXCkBVMQC3>t7Yj7su)%cHp2o1 znSXCZ#bwRV#9?b_Zo8H}=|lXEsZ4lJrO3GmHQ3VCX2kCro8_2QXp5AiB0b1}i*TCf zQvz**4jYO9aOT_QSr({KaW6u3K06iax{EFcksZ4_4lHy$uZrvG{M^;B`*@TdW0-_# zKyZoFa-3v<7ECYbvLeQW4P^coTgXncC<*lqgn;@I51;Y(p{|;5y#3Jdn^i(i4i8F9 zaXfov3m7>OJEk~4@817-y6QDE3I#A(wyd{FW<uflG<HFJ$1Ip1;U~N>c$K|2=C#F< zlVSJzrP-==qVDORB3=u8I%)06#W8sTI~@}ew8P~p+J@T*yzu+ck;n2J&gw#zvA8-Z z(+w3HpNijT2c81it~-`;hP?nR;to*k=vm(*NX=YMrwpmixlph-bAMxJCte?IQuH`W zxfH|BI{fD5%y8db`C?xHEEtzz_fH1zb+^XBo%+cqH@Nkzr-Jt^s)x1U9htfFT8cdc z?zr<~0Hy65fffg)qwRK8>Jq#VX@F&ZL(uRvrmQ61su`UQIS3|x$P(feSiy&?^hzNU z>JejoTgcpZ3*O;&aBA7ElEnR{*w5~6`y*1R`*zvlCYU7$d5}EK6Yc4ljUCVEX~R|j z;W244Lo*<lDt(lU6Ri+!9`br3X)}H%Y<kUZY8v|%a<*(Ly`+AA_~~|zH?j*3R)JfI zLO+WmR=2;xLgi#g45P}f2kv~vW&!6FvG92k0$58d5E}O2ZRnn^y$=7I5>*Q5vbPA> zo|mC^*>dgU+VJ`KdfC0V$7sZz)qaw4bLl?QcM<ue7@rYIE<z?CCpfYg8h(4Pt;A^G z*{C&ZhPgV=L@X$I>rd(DGCHW1Vu%p78B!>Z=tQaMe0ja@MF?+?ex$$MQvZ%wXmciS zs5$j=W5z(FKI(z?B#Tr{wruc5<PPph(zAaDl;m^)4U`?{B%PmU5n=!WlFe@es@vb; zvDuEgW}i3kukwL?p)olMT7tjKV#I<IV&`02tkNPT*-0=S*tXvf^}8|!1ShvsoCCmO zu(8R1;qY#ENqvtb%4xKI5eTq$Ma1nNOD+mJT#e{Bo}$h^V%}D~zJ5%@q=jhQnz<9y zUy=9W?oO{88ZVZ2dD}}8ms7}?+a#(sbAjmZ3th0=7c24__pd>;ro^uR&a{l>M{~Rx z1p{3z77;gg@cX+}G;Ru;5$Ovy^gXI`Oe$h4IWe3-WbPQFF-hss+8MM>b=SM3oJP`t z^Z1GEX#x6cA*?1{qa?@o!mi~SOT~f1>?3+3r^{=^0HbMWZxmVCvq;ezhWieYtVk73 z+PxR4<3hSv1(-6eW$11KHM-AI{C&{|n;M7Dvp~@`k}ed8^lVGc7NU#gEE}^i%r?J` zkb3~ULUWNFr$DmsKG@wWwN6Dn*@Dq?ta(TSE1+oZ{6Wm$P7PyTTW??OXo;aVGf8BW z?6>S<D5i#DC!5N{;D&tu0x3~^`B1KZJ0OepH%FtrY~toT4T|-8uNDabd$4-1+%~>x z0Ooy!sP_1?b2GlIjBI5Y-2bHlW#~lkM<i(>imLHIaifrjH1iAK2ag48uLFDm>62Lb z-Aar$Hv68WFSF3}*7SW5r0Hs_+#dS5!GJ6uMFY;OlU)&ao9*V0N(=CoVGvF0zZ!g} zKd(Q4lC?Dg!FKDbp7jM+X)>VjBE|Y*YxG7ZGTy_!nL2>;*2r0AU7>9Xv<0JxRl8}M z*`)ZVN^){c02Pn^BXHTECH^P}EY4^Zi+|5*`;$$YsWQKjYBcf0OhbX53j3z6gDKi% zEMWiIvICSHq&@EPP90*G7tN(KNQ4+odQFJWeC<G0N1ZvxTE**k6aSfrec{(DSvhpJ z_qRD=;oCgIwufjm;L)?^qZgjTtK(uNuP6Mor!Qv>N~jV4B;})!g0gbF`k~g2YuR@N z>pz>O)Lx!9QAoK*l|7IN5UvUD0LPO9wRMF=^+%bC{UmcLT5^Ua!l~gcOB5wau!5eI z-sU)@&&NHhjZIlO?;dbQ-A}OI0mfem6^Ytmc*s`jO>jw{C#!%S2HwZ1pC=htPmeoh zjMuo^O<)Q`b}0{Sx``0GH@A5Xp;Y9;F`>;6b82I`{X06@&n=^$@q%2`_!G5$1PR!A zhCKRin<L+KR(jr4OzN<b9s>k+G_d#J^=-gw{r0|(ynb&lauL8JaF4q%oG6b0lFy%$ z^1&S{h0l0dH>h7`jIE_5{nAvX<0m0bNA%t6hx;1r@b5X~7|OyTeR(?D=z!O+`EB?{ z1k`r{-{kLg>5=Tr(kc8>AA>-$p<rQ=NIjxFeDHvEb!Ix%E>-<JLT}gYi96Ohz4~D0 z?R}y_e=7vpJOvGSO8k%7%S`jrQ?mP$E&pdkd;neON=|+3A~U(ULS|x)s}6WnD|uT@ z^zN<$yfK8&^3Fo5$o%ba5W3pih7kPpR|r7VWr>Ybap&oKK;p*ZmIpYRVmx{+s7O=$ zJjhCY!RDi}&{I)PW|c}s3^?c8m;p(-W|^YHf~~fBm;u*|GQ2X6__fAkg%O?kIuAqs zzQ(`fu)Ud8`d?3PJD%2fuFQ07*+l%7i8j*v8|%sb6R>tKNt&xSCWbBC)ir_J>LY(@ zU4A0D;*!U=OKRyONcFhqLwY1u3EZ|YD?U#-ya>JpCRzL3c{hmu-$u8-%bK|c<<FC8 zFP(w4pv&Rqf(UDTGHZP943#Pv4n~fqD6-jPB^0AG6KC>4aGhtP<?oXq-xev~-e9{m zh}l-u&?hkOb}(D$R~C|}stJWYj~@;^ue2rK{ikvy5(ccg+J3Uav06cVgwh2Ep=En# z``R#FeT+{1!G~|VKTm_mdyp0aqNs(~j9V9I|9Lao+E$+56n!cQGm79Er(ZU(@xC~2 zwgPD`Lywz}fQ7yL2~b4zhdc|_Vfj)>=zMJxCgN<dI5Ke?rNQn2ed}S15D=CT-?b^r z2ttUbhNhKB<+j28uVSIH)kY`Y{-j8zJ?%4FMCDrB!g*wM0LjZJe^jBO8x)#i+uL8r zUB8a|@R~8yJmt-xXnS8Sw9M9vG>_MmvYemDUvC$4Z>&A-CnsUEhfJN93u+8<62IiP z5FN28kg<GG$JA`2a`{hFwqb)hkR*FQ|M;9my*#6m3+Nvq{xBR;XLu|$5c6!IAFP4; z%JUGvRAoXKcjG26XgaTgYi_5Rtw+(rWZ1+JHG2q8OKWqsm1=7vv$8bR%;X2{jZHUU zWeXYn37Nrx)u=q*20q)Ur5JA1U*HVBL-Wf~@;VPda1ZCyO@90cj-sxDqwlhs3Mz*C zGVo2z-$d4%Iarx7Eh-{4tNy|s-M`DBJ_4JMabW{^t=s(Sy1{)_GyRy;_)W^{yV#(6 zT)?YaKX;AX%AtBPlk$X4FdrY0s(~269*PFhtp2B<q5yI;*|YcK2wYmFq941ktZLhC zI9K6!2@@m*T?{w&DJmq%N?L>Qg;t7LT1m=2lBpiUMDF|9Z)Ch(oDxzkI!!f4+L~bq zK#4nss|V|vm!|u$U0iUuRu{A3+vLCBcH|rFi64{3KHrC;*nJ(AP^Yuihw9W(bU2G* z%e_Ui<`hJ=bp2w;FPviXtKq-Z_~h^Yz853fKHzC5xsm!uf$q`uRujp?udL*Rx9#wv z5b7)g<*WJ9VmFZuHhKmc^ZxmY7(a*V(<SR4aA>MXHv_P-IT=XK1?}A>r#Dk2vpuiG ze?C+mbuY3xGY6G@PEOz(%YThB6DpNI+dw(gyh(5-q(gfND@H>Ow1c#NwmC+W4`)bI zXCR7B`TomBPPE?eLNgP~xZ~>~B*0dKU3fzw-4LzPp0^|0GmqUq*IalaOjcV)c?!e6 zuzch?C}U^qD2cVfD$pMLGsxd^{L2C?K1+_=%3isw%$;c8?5|vk>$7B^i~zxRaTMCy zD)lp&@2LEy1gH}<WqS8iF1iI)fh50Yh(v-#di;d%X!aH5WX}$R%(kdux%h}C#{>ug z7|w7qz0`>nOnS{9+tM)rt1sem;TM>rYu`;ndfmu&=7EE}%Am4{T!CtJBdi_0k|n6g zFulVjWFQ9dQ}}qH*=D6Fiw`(%QNRA%XV3senO<qlC_B>5J>3WgjaPeu0u$101<K*| zGfwfY<{}4nvTKe6<79xb(pDRQ7ZI~D&P#LfAx30#)Rw0PN=#;*W?g3AOHyDCJ(n+z zO@{Dq1>T8AQg+a^Rm1qxDj!;_rkPHEGl^yp9bqSXM8db^o77;zy8&tCUHJ*?6ZtfW zg+oHTXomhY<qeVvNF|h`&z=VEv0z@16JJPZe$F*n&l&r_$ww!2#>L-m5f9{YA7}hL z;A;^N;QnE8fj%9VDM0-ucFeLIA1sQ#I-qgDrg$l^nod{mYf-KmD56JmobU$7zU`>+ zBZ~gA8tWNm-0O>#u6Wxac=*o-bB(fsrk!S<s(y$(adj)p3EwUUz2Bd<o*8Qx(9Tx; zqSg<aplJ^MS!rwTehi!8J+b;8p?&?D6L`GRT=H_>ANzew7ES*nCaKYNP^&HYHdnlw zoVAEp4fo(a;Zz=k?kPjC)H?ly1l62K#g2DJbI8%fIl0!=RkUgK=B-I*TaGC}{mDKF z?rW|XneV5TDG|NVU^HATW)XY5kwv@(f@L;^msnl+7eB7FIz%rnrE-=6)?@R{?(R0W z0YM|tMoY0(I-|P)C!K9brDzQhjAci0bRb4a&#!DQG`N|iT*qhBV@H~(_x#sJvq1TW z5Q-2=ETXf}%-2ClGKc`zB)*;N5?2~A0Ikq9lHh<`Db-L+U5lc%LclSb`Qo4)C?=YU zxMt+IZs3nE5yy1kl`#J=l=&h7#oKOqB)V#+f>yDFbGL{iyRZJh#5M8WJ--l*P)`m| zVe%+-OtSHBG39Tea1>Ol8CQn!f-md{{(M-zl0MP^GTw*DH}Oy^1aN&3*`HLiPF7Q= zoldKTh_;t^CSsDjDeORQSQ$_Wt?gM+4Pyq0$JHFpag@cD>N#z5;{MC#ikj1avsbI@ zqVQV7`CPA(F^3AQ#xADAQ-JKECscHH{EVkFLz*f<9#0<5vf>}|O4B$swNLlC$bG+O zu68hD{%g^lK}Wa+VA`}C1VGj1*m{%wVKBs1CqS&?B?_&9{{k}deLGl|!T=l|*KVBv zMkk065MGX;&4-xo$l>JPB0_>t{Ph}^zVq6p&vbs2hI90^+R*!eV9toS?fxXk=Sov< z&#i2x8H>x4vT!}rxADp8ZGem*>c(sVTMd0oK?$%nmp^Ad3?D?@1;UwV4h^OrNsjlI zrUW1DK0}ZduaTc?yJ@yinjM&9{Quh-uX|dB(nK_IjP0aEfbA8(R<y}jRU7XqjnEF; z_EW2;BAmD#WW0M<Kb=T6{5gy|AM)E|^@`Ul-k+lPOzoya19mp;&nh^B##Y<1Tr2>r zs2PAkt=FHQ5naK5o}(C;|HW!$V(E>o+x>{9xmi+RgAVM%Fun-!S=*=WPq1Gk5glb@ z?sQ?qJ0+uzxaMhsT2&EIK?hRXY40zVGSBbn{a>bT79#3w_$VTOatdPt7UHQ~5(@41 zTtSJ!UH?%YNS@d2n)#q#9>at6(srP~B9E49h3w#wF%CJaNONdCfo~S;YRMfzPLI|P zWcV;dAMD9UsxL<h-6rQpt`q7+g96=6$;JMpB->fIac6y>V|}%_tJVu$UtEpv-LU$R zp|aSr0{tUNGc}cES0+TV*Wbz-ZC`vM{#g;GO$v3n$7V;%YuT_aEt9{OH7qcg`&ELZ z-`;=rdS2Z8?LeE&VjWH8Hqud@NKwj+2!9JmwH1sgWPbbuIj*N+dzJw^eVtm(mTNFT z!ek$r)q~8=EIfLud76tkR8qd;5Qga-am{Q$lYZ_G+9E*#i>V{Pbry;*LOr69tUIj{ z)*hDe>aA0*p{4}->u~%n1N1=sNtBtkp;5o)RnANt4oXCP^Mk$o_{;&x!BdK(I^x^X zHZA%mctK<A{i)Vd!@aFEJfq}mArx7Nn{L~&sXF(@jfd;sSFj<%%4=?hnJe|VjdE#6 z`(6o1t+7n3^NIh>!vJv~_eX+!AS8_|#C_Uk?8$@s5<q6AXT)0P=QSp~K!@%Dk@P04 z8YUneNK^&{e^dFGOuTk~EmKJ!P*xo(;d;IWVo(wC!PtKwj6-F`Q!G^Om)N>0dB%PF zEwArfIYK7L36Z}P7?9NBj+`ywoS%69>VG4bA>bBH8J|C)KEG0IC=>db@1ICNxbVMZ z#wW3k<$)z*C|1Ic3MHAlW$s%-u(s-mg>tHb7w50#A~iic3e&X}_L6hcRcr+UJTV!i zN`|}wmVx2sW7+1!1cQiM*4!h2Lu2&~5x~j#lNT2NnGQBu1Jh*Z&%=p5oIkYaTJu&; zUw0etvCeJR!YQA-FLjn9@n(Hpq52(-gwouIFe0+cfRs9J@^T7A(e{wgrn8IH%wPKP zw|SFM;syZSaA*knm}Jzm;r1_8b6P1n%s^<+fqO!;E4&JdHgn>Xq2_Zanig3df?bt& z+oCL@YFgtY>H26)CU-+722=WIV?CxpIBE#UISuSc-yD=HO}+2x_|~BKdN_9>1Ij@x zuXeTpd5!#F(C^vT-5vHsy-sS<7YhT)PW+sW{j1Y3P7yq!#FWo@uE}ruQ+AS5c^=a> z0@EF-*03#7uep;IG?n3<{<FVDDXlLhS$UuU<U+$<bILS5_T&=ksvghI7@egn;Tn*0 z^tpp}2<=WIMujA4mMhu7IPOk!xCZWt{yG6TVtWUbQ$F=_2wKo#?+WuDIf33-jQg)A zYi{67+H1<3Na~^aAWKDMbLY%``*=sY?|gHs`<b2+0^Q7qJTx~s9qilICQ`L(h)QP1 zyl|f%5w=v1B>o-u&(B7rVEf9{n@NpWuBV!1vb%Tg5p3CR`yt;OPnyY<a0k);*=*z6 z!%bw%kzW~0r=?{An95GV&PcHWWeL{#XQX`3Hl-D|*Gm>v<E{!gs!es-5qz({$j{c3 z=VeTmN3gchjdFCf)8iDoHfqtiKa9XS%f_-j*}#-@SF@<dJ?9nL8ocZTC$v88TR~1B z!-IBRHEf59ARlJVJcs|>aJy6Gp%F})wb%<uQ;y}1sa#R0OZvo_v(G=xMVZ9>a}e|M zR5!~`DQR}U*%Vk_NZ{m#1ul0`JMC#V0l;I)+pW=1^kJ_-wp*PJY9?DP$~j6DrY71o zO1gAnxq3<`a@pV^ri%2{HN1nAqp6)gt3?n_D}mdY`N~1(s~UgCtoCu&1wuoi-5jK1 zkg`fGadSzQK-;5gQ6YimAE}3XQi?)~KKq>7XzROJM2{ol{Q4c51YdTOKQ}3lKCnMG zqel=D2wGQr*0hR8g(2AKUTUBCQrtb<3?XVVkh#Z?fk(I}MX(1&lYsE2*=l_97EoG= zc^m&|hJ5C#T5;tt3t3|yvRIg2m^s|vp##ZI#o?X%Q6Wx;3Zn%a$)3bde4C%+=VMbs zxtpDb2G)6-x}zS6G!?x#_kf&7wf3pNndguH@VUm3Swqqe;)i5wdHZxqngi!&&jv)# z#<f)2E%MwSHiYQA#AZm*>)f%4jm#|Q9-UVr?dgej`Fek$NUa@5Cr*Wg^qnR?)AtK^ zyXq1nZF&=jTPTHmwLwa!phNS*5;Hd6GdG<IzKSa0YcKZC$zJdWR}mAmOlAa(t{915 zp<=pF%<i4nGI?@3%tMk96FJ$~t-@!1p09FrsO`s5W>3SmXGpDF)vXTbhAndT^Iue* z$hbB#5@Fekf78Q8eDV_YfJ)^)k15vS?+VJv<icqwCQ4|m>VTz4^cpt>0I2uQ<jG{e z8L)Tp?i&gh1a-ssr!kRltB!r*26y|w%r%a2kqX8SH3e%Y51y$xe}|_u7CQN_6vqDh zgH9}J%!|4HUt<mJ(0n_#ukSSDt#|d_ZnI;Je|epabQjLXj-$oVu^KZBv-hJa4juA; znc^9vh$fbYKC+*;H$Kb71-Y&6M*UCH<=2|H6t~A%HYU!8EF6RrmaAit(e@H%O;OE3 z{|6fjzb)lAkx!j!LAe5X3A0R}=_z!q<)T${9o`oRW*nTvK_UX~cu*~FHvQc8aN`hB z@fg=uFv$Y>OUhCT4L+<kf7O4bUFlFfwjeWH0NMFMtA#DYhqoh!Xv=WtsUSD!<IPpd zU+C+%g)=@=B|Za3pN(HR<%pf>5qdbhQA<i!E^D=HOyM&{xpc@s++tOGvTRqmLqKy( zC==7s@Vqjw@$&>(s~ZXV3`yk2i?MGqjKkHJY0cm5-6JH`k=u3ySG{kHtfM3J4&TTZ zn?}Woo!ma?V85_MN06d{N?_z?a*QMgukxAxIUQ=LOLF6!Yx_xxVvuU{#!)Xs@R^wt zeCV$ZF5BzPWR43SDveT>>Fq7=PE3zZ-F3*CDY&@~uWsR$wDCw%n9iqguB>O#nCilA zM0@E1T~vww?k)kLNs{UXS&GOpaIr`sY?_@Wl!YLm-OMzVyEqGOXqk0?#a|ld{89mc z`L}I&=+oSL>mdY)L1_q&Bi-uqRAMxJ70$IJC0r**VH@P<<<D;6Har!C&0SyOYm)4n zEo+!KRwSsYcS43H@x2>GR~R^av6#xuqn~`0eTL8!f}K_(;8q_YGZU5`UO&8NU!E)^ zAAL996>JTt0}~bq)p;8_;&$7gZ3iSu;n`LN-FlTxKVsegphAnZRI{+Kh`+c%;*`YX zP+%_(j>WvS1O^HH!9z$>#WOcI3#$)H@$Mni42}ZHnk$5wvY`A*hsN&vXm(fKeN;0d zp~&VQ3Fer`2qZ?z;xJF4#PmK`Y9du!Nk%MNlfKY*@C2wx!yrcI2=j*Hw;m6+V^au^ z{PUvrm$lIstF59GU2Ci>8a(>Cy0I~m^3jzn))NZuwq}MXfW&n-NWN-;TI!I%{x6(T zwwj<6RiCc=WhZk|mAk=`zP*YoSN#>B8i1m#TuZHOi790|`$?3A%qgD0x@l)^NvP|T z4}|GJTW>C7yjM-TDyXI!#7ekL)7~%PJRhpHfk<O3C3WV?EY|5>p5Qo~QH)lr$l?*j zK2N{8`|L~Lgn8oi0gm<aRKdDPeC?!<ujZSfh)@QR=`yF1slTZakjyS4r)nBwQoz~} zE_|}$#jVK2^7oI3SHZTbUx!=3gh=RAyw~f?slj;~9$y!7*8`JuFZDh2*MED~SUD&) z@&}|dmpfV*wkCF(Bw!(1c*q0uA;ES!$Hi1tdQ|g=3~tsV5qLVw)FRvYoV%jxa3f22 zH}8@-vY+uFIiud=$jSy@Q4`Npf?h|fsV$0OikP@3iL}zRshcK=q$tmarz2@PJ+Hec zF2R76B$4uCmk7-Y*39+JPy(yM7-{x~W0~Emmr%s*vVPJ@9x5lH5`YK+uPuNv`Fhcv zR8`WoJ12ST{>*oz(T4ukyO1%m$?KmsXIm^`_WHnhv0b;rtHz<?xT&(1(}tTbFnII0 zeJbX1YmnGFLq|h>bY?nBl4?7@jVIV_y~eo5*9T#ep=5)gSyHVfme)3rSu+=etobbb zBLce8l1_4My0EEB2+43|b7Eng-!rcaWj!SP+1K#LWnMF#O!tiB=#j*?d@C3RYqRLk zkz7PpCRt9~>oOdgg@iwCCqqJh8dO#3DworI1NJ?omvzFp=rU_d2n>|(?na%Jcx8xc z#SiUph4jc`y}t<m;@q_J+I}T4dOy+?Oz$^4;-1amG?Y$cC1Dh4DObV%TWexZn(}JF zG;@BsixWwE2MKIrd0DOgQRr-5Oa2dEe_#z=44Z9Q5kZ3tAs)eki8~1WC+`m@sFE3a zi<?9-8eI4>?c_ZQx1v^O1C**RD>-pPIZ8t@L$u%&dAs56q`g5=CV8igMhe}Z^W%qq zS5}e7<;YjKlB-R5nfh8P(3~b=a;@ZRf?wZ4@f9n1?R42T9pC&h<Pih(aBY74uB+jZ zq&Ib39>x={FAXW6!Jki<RUHn;FqaRPcV*us(L9Len$myGX*y1xvS&#j36}mkm%=V{ zJTT%!*+5pj9xpL$CCP~FnaV-lKYudBSjDu{dLsF>N&i^6IRk;sJU!G2ZyIH1D^&6R zLikWtn{bm=){rW(P@Od?RUm|~=ucj1_0n?pPSd0NP=S>lIZa-jD*E6*=zT2M`4pb< z;pU%v`V}ZOWgr|yNqwQL8RAX)v3pyFNIu#bfLlTzjV-l66Jvj|ot9;wf&cV8e`}@P zOoVUt3A@%-HXE!sc(mJQu&Mvv`_)dnE%X`Z_PGb;h}BDs<YJDKV1XpA@RvvMHw)AZ zk2SKQ^(R4kTu)(0hj}|OguVRM+l3Z2+wOdS_~@~|h$#eIqzXYD!B>!)HTCa`*&&u# zESs$uNm3imt%sAIbSp#Ej1$rUI_&Vo<5?2$rQle1#L7~}^*4F&&kOV&pzyj#yK!Go z*~FPV_)o-wMzF^)2)weIolBXv(<QCh;G&B)r<FJvCA*zK21NYH86ifZ>$RZoHe>Gl z_=FDOxLFvh4t5iM+<0;Fo1V1Twp_SpP#bG=g9gH>+qwEC#}P}o6YDyw6Vvkndh6d_ zFHWSsUS5ilrGEWP!LmJETZBVPRFG`kUrUGX`QO$nad%mCD|(P5k!(vkZ=G`I2Shgt z2o@u%8gU)L%rd>mDAJ|)ILZFj1>WcC*=Oph2jdV%6)P_BJkF=hKEKZE-u_}%8(x_j zTUEopZ-pc|R+qAl2b2P>uK`RpwlOzp)ap-L1RSYC<YLP6WNB>DMQ~>FGN&}*QNiE> zHVZKlhEsVyr*BXYl9@0EJn%-Si}aK0N93>l7lT4YFESJMC8{{KG7vg@5%1`pp1_aY zVx2wBL_ITffb<42iF4HK8;_J|Z2S^NvI2wft&p^40ykqNkE3al&CNyR@6C-CE0K~( zx}!~LMY446PmxTeZpo5uROga_58t{pmN#p(m!InTtTho=nZmygIOHJZ_NFY1S7JxZ zo9w5}#_$qFMkE}RH^wZ($@r5YPB)si_cogBtvOj&QGbY3r6CzRU&RI&2whUd8poZc zidD=$Gh(W@ZlTj$>4xM;3jsf@@IB6{MPXy>E`AVtF49JqIdW-)oOq$|EEUlgqDES0 zuZbJU9gSG<U_y@1`K1aukwjmd&K&)uxrKcCh9)OwO>*$n@Rh2kjWq(e%@oGH%6=zG z=iv3Vb2XE@0#y;~zPLWkb{M_x43JlK5mlgYjEB_|$#JB?>L(^FAdv8Sc|&||6UouU zE2G&>I+1M3{wrrxdom+cdh}v<EGz5I1=JxZrjrKK8wUY_r~u_+5NnPwP<Ahfbh#iS zhH5Ew?lj;$34K2M``|b*PJ_1yyxA(C#Z=6IY;OpPJbOm5J$K!val{oP)mwme-*2uk z0oC7Pk~DS>EU8tdoVk)h)NUw=$=T>gv(DL^3i1{K3%kNY^a=PF8q3IH1b~U4&Bo8> ztm<OkUMsW%jiZ+~Q$-Y>>W#?6_ySsd?E4=|EfGWlc6CYAS*aqR9Dluow&BYKRM5nx zSesTL<Zm|vSLiWKN|<o9u6oH(Mn21d^l}3ve;>`ZTpr!6kqHKNyC13mnS3QSWDTh@ z8Q&Q*h%b=-y3oiT)2NA!mYA$z_vjt0tWlKT`rH?x#uHfgsu3VXVnB)3M25{s%G*b* zYqeaD9=d(KI)l)+GmpwOM~ymWrR8E;g1_xn_v}K##gmbV*@#<;9mXr!@syc%+bz<c zMj8|=?N9ay8BS9*_DcjzV%aCz95I08vx<?H$ihEu(0p5ll`q#{A$m|-SHwTZlWVE{ z@4S7ksAy97(0Pc3xGhzrilcW%|CTYBd-v32&g_NN*!CAKujKCnDzwyyZf{2(r!5}3 z4c|N3(|o!>^C6O2YNRX2`a1bGDB-^gd5?GU;cy^gj+p1*5zvSbuiXk`_6u5Y#>NLp zI{kGyvRz7qmHcM`9KrUotd6CYc@pIY4<~ZS*Q24ZIn`gfNFdJw2l@)NsHv!-EGbCP z#xDGJ^TW>A=znNB%cv^1whIG-#1UzbmhSEr5Q$BfG}3PA?vPIDZlt@UJEc>)yIVr) zTfAd@Kh7BbJG%F?pLO4JUUM#m(97M==j**#185EV@&`%z9>iE9U$K!JZ~}6&Qd8AW z)-Mq2$=5DnCGNWmkrg6iQhBE>?TwIO?v2PzkQY79AvDwKUSB3YE*K^A9FxU=FzD!= z5@>3;6)`XRam$vMOO=u{ewbZOF6Ee=nY@ibPcFQa(osgYmk?3R8}ZB|yxKD*(5x8n zMcR_hY?#i>)HQgcvLFBOt3bJ|7*7?Ws}#Z?Cnvp9h~tt&yLM+KrF&D1U}I}+5O?ha zksO&1)`1MKw;s+f6Vat&@J^669(LZEZhCT5B)Fc8|9!Sg<79VuVA^FB0U0aZ1>+?) ztdO*yLqdot=PI?f%u+G<Jo{NrR|kKMopO7K32EbO2!kJw!K+R-1fNiJN~S}?ZG+RX zihmt&7jRY^&`r5cz$=F!2z$Am;y#^wV67>Ndj8GbA1)c~-c<)77DAe{lS=ZT&u2*V za|t8Y*YM8emg@t=#I^nGsuCWIsY<@!$oWiS_{lZ6%O^FQDxGmhTf?{xzMdY*jcX~z zH=Sxqr?ELGF{R1X*dEa<va2){Y3M*klQ+*NCJJ#VffDt<?pl4Wwa4`T7k;Wh?hDvC z|AFjR8dtOLf4iTRv~jzB(p^zG#`NuFoHA0~3el6Ot;cv*Y$x}XFN^;9r9rN3Kl<%0 zOcm7~6l!_9bgsf6+?X5qIB`XI9VUY;S`piGdwO8%b=`rR>p#Yr+;#UKJ+cd@Tg;Ec zThkMB?;WnSKS&K~3pxBO$0s}4OqMO<bAFaGvUGGKm#ofW!n<P?#&)(anGi5VPX-E& zo8%z%H#rm;`e1qixbpB?LUVSh|D+s#Svq}T<30H2@l};4Eli>(FzrM3_Yx?1@-8DX zRe*b(k7T94JgjiK=nIdlKyP?H4fmsnDW|DJf!!#El`&U{p9c*Y8*$mfI_z?v@H0TL zL~e=>>g{@vyI=W}XN5-y2E%OB-QD>>?w41E8+?lLI$vE}|D|~=BSsR_)VrGbZEFD- z;yCA*%TtFMg1@3P7IJx@StKzf2gZ2fnu>DxxVmh_Dhr&BRP)mW+X;9#6S0#;!M6=x zM5$<G8S)s%!V-icq4VG*nfnvJ)~hS@U@b`lof5-Bu?Lp209zzqysIqzMJ%aJEStqY z<=6R^k%WP9>rNDpRuSOm_4oeYZSN~>&DIJ$pZ#94AEg7kLjRQ%(Vb1Da_`ISMWsve zq<mC^2aDTkljAFAYm52K&%cu4HX3OJ-!xz<_Dhj#Y$(j_P%s<}{&<?dLv`r=JNx(a zdMt%0lDEdo+iexMuC}+~YbU(0?UC_?FTt{{ks`96SN&8Te*zKjsyk<V!V2ZfQ1^3j z5r|3RqLs#4YyfvpK?kqSy81rWC~$DgvLM?|$HC<%@}JZcBRMR7;z{qW>#qxA$TQL{ zG2Hqsa-XRnIv!!Lp!2tf`Q;~3GeiO3LLjFr4dhR|l@^(NY{WhJgNn^aBGeg+o?S!d z&oN^w4WVtdPvY%4kMHrG-4R~_p;?47diLpR>Gg{mOY!vWa4aDvcq{;-*09~{`LK~) z_OZpv%fVC#l8=W4A?yi~o}hYf8M68l;~JXlm|AvkBv_l5PE+q#S;511)+{McyN1<2 zYjd?FcHzP7HuYM!Y8b}k!R6=XhGnP<fA}f^f)@{u&}z@GF>YIBT{;eWv87+-@w(}@ z@<lA0OLy_Ij7a0D)6%IwX+C|0NW1n7Ws<J;swo_Y-UV>~Cps1Us)yHEfQUN@kYM?F zf9Hz=IuSB?z1Wj2;J$p&w2;>800L0Emy5t>p<iJG5~5yq*RlySI8zIWVAAaV<osvM z#ZUvx*<whA^k=riabm!CGm+4x0~=2+DpM6Un&r36?~ayx2@=0cl!z`ioao-=M^N>f zdLI(5;=L|4hNW=w9KEar#9#k3?n_EQ1kA-|<lVFKDWlO`2oH}%%MX`#tsftlchq(< zF1}Gp%CY_WpoBe0p+~YZcM?KqI>|IG3FfZV?=ZCI`;$)t^Y#p(k;%$e#UYlMfHnmZ z6yCEL6Pm@hO;1Vrt%BW=9Kj6(Z%#i{3h~D{%T0DmY4*)1-zKhrji^-DKfujoG4OH} zj>jNf<llI3|08^&H!HJHNsD$*8|HG}sMh}&FMjGu8`{mvGZ|JWQbTgyJfT|9BNhI8 z17{9%0~$LZ;g#?w@qE0GyWGW?aOhB`@!>(UK{Y@`q%q9Q$w@i>w4jdD|HB*frZ!7{ zmX2yl6AUzvhxs+qTEiK)i0%N~5Mp?s%@5X%(p|X=-~Wm&*t{uxg`1W0!S;7IpiDjf z^(D@&kn9eI?OZ(lq``#X_f*d$y*nQ}qWv+<PE{b68h3IwA1~1|oEbM(#4*HcDnkaH z+R2Z1Z*X4rQs=&2bEK1{e-lM&^XiL+oz$T2zxy<y6tRw<(N&-F!#^Pf<sUYgr8ex} z2@TVtageQ|iDji;SK`s%v^z6eVxAT1xO~JZR=qv<Or2XzTpt?x)@aiSuYP>IJt*l^ zX{Ap(CF3W{jPga}dQqnD8w40xgXDT7b8|a#NjtcaIW4T?1;TLsE{SZNNa@kn`toUd zTAn8@D27n1DJLX(8eDi67bC*VW>>EFw^Q!BwicFb#8uH04}z+nS<|TyaNxkw$!qlu z1M)2l*^P7N=y<)3YecZN2sN=-QRQ70<q>{TjeCPta(`ad``hznfaya7fIu-FAHc@A zSk)KUysm=-zf8bD=-zPBxD03;UZ9w6L?!xL@y(pDiqKO*q`qmz<T+9eGyZp(Dp_w2 zbnrBh_80}G<Su_W(nzb5wbL<9LkRCTWnoug9^_@B=rNZM4CvBI<0A+8de_(an9SKr z<dSC(d@vrVR3_Rq4Qkty73E2vpgj;yla2p*d`mTL0TnBCKQwVLp02-BBq?L&{$hzR z;rRBS-o3P_++qmcLB1ULwl@~YN7Gc~HGfM=3U;^aEev5T@*}&bnkEFDH>o-d2{YcP zsiZY^JKq0u`D#z-TyEZ(N6V?|kL<3S`^H=Y-`YV%Ir(&RxDjU>`?bp#6~bpP1D0(J z7Swoy+&E)dKDe2}j#|p9+D_oZ6mZ4WIO&tNdwU>ap**Asm!wUZ#cwL9mAjkrD4ZS{ zev^)Znvhwf*7q`TTc&~u)Ol%bzK^*gYNH|)-SjO?5E6{;&n9*~!}s3pIpq!u?vdsB z90@=JMsDCN_skC&I$0c+cFfbcJ85*`4EUiz4Kd^TXZ_%l`UXtC8VRF^!O{q6e9gY# zBS~??)Va~YQm{HSwv+ae4uBQYqnRo*-qd#DM*n9zYq5YShXdx6pH1&SjQ>23+)V}l zcmc2*o2p4vce@`M3@o6)LZ_&WG=?+KcS`wiYOhUhd;PRsZJk;EE4~C<+ZT;Vx@+9- z_QFm4STMXe6SI9!Xu}rq{=#tIG{u;r(-9iTjw{D(tYRLwDpD7VdY>~~io{X$J2P*G zl+Pw=k}jj(!o_ClNl<)Haw)W0VE5^5GD4wgP(^qfi}(VE#qFJ0g1oI9?OAp)z{$^k zx^vq<4pPf!DD^3fS$0%X2_Zj5p`=O@zPo;<MQ&uM!3};gX`Da9FDn1%4_$LHwM@@J zmMTH&2qQDB%ZD&i8>GQm>^F$B;yy(kbN#`7unIs%@H!Zx01{km^K3mi6?nku#x7&H ziJjdGnf9LQ4<X5gp<gt0>Fi6$1%I{1K9?>8p|k#El+75EFob{S?2n#XP1yvbznES7 z^P2*~`D&3tFrqnbll@3m{wR@=_}nr#oNlh2q(@-vq^4JQvq(_YlLD0ni?!a|JjDXm zzQ4B82^G!eA_6Yb<mA8orNNc}QXN4$?N4O4eN2ZgF6IKe!{u87X2XCW_^7hekhC{r zjiaR;Go3yW{U7yCO->s&8A7u==2B~U{NfDf<x)8_fdD38KT_a;wu~U^%za6RxMJNA zv*+y%fA1E94ZoB&sTioB(g<Kfl9lNn5RBo{VDz)Exj_R=PPAE+$jiodN>P`Qg>Y*J z1*t9$<^n3AuVfiev$f}AvJ9L;P*q~sn0_Q{^{~Z;HLTwWEj783_KLEoKwbfu$8K~< z#>t`Q?r~E9dOB431^l|bc%V}R7_F5Szi%4nXGn~up1$@4G??Cg|GWircI@b_`Q^*= z`BcAx(vK1*$~<k4%Na+(#+ulQOwM$O`ZT6oDy5_*&a)ycnPy2DiwXL9BcH)1<bq*` zz}IS@JRGRroGjL62G!Tv-ZZIaEX_!piS?hV(;~SbnIP*4F&993%jg=^0>J2C#RtOx ze-vptS0&OJe!*JbQX45*SId#dE9EKiZYW`1_ITV>^nO;I+$e_I@<*!H@BNw~SEvHo zi#Jloq{-Qc6qz42JZg?#{&z03>{KpUmiEft&J&-(`G)snjVr8aTo49I+JfSz@$C)k zG0uyQKyDD%osJKRj`==!WK*2IS~iI}ayC3V%3PnL$K+pmj~^Sf>C&&^^D`PlOEfBK zN8wOL?2<+3XGXZe`N$&o+1&NpHV;E4QZ2#ga(_`7Z+rSeuNB_J14`n)4I{PcZF1@5 zo;-Sx)+S<O%QWGT;dM2|x2L~Ea@7G7sEdWRz_adR7nU~v+&qSv*=M-rN;bw2DBq=P zGuCVOX5~_gqn(2Sr<&@b)Ud=q7t0(6$vkYCH1*ClkC$?^Vyx}_nI96Mns5HQ<>d-F z50~yKu$>HN4;3dV_pA#67Gm|+Q1Oq1V@VY33GcJDUmmLk#n8_xcXzL}S(ygdRQ{7D z<hC!l<gF_A*Cn=ny1iv~i+v4HqflRxjro|8b<7IwyfT&%3hf1m4(-i<b38`^X96Gm zz2l<EkUFC5>X^&$yxp!DXF*QT<#biOx-Bo#I+NYcnUu@G=i;%<1qPh9<VKis$=Csc zQB*9%CFHJuk1#<9z>%&2J3yn)czH!w@7sZioIRRcy0n`zOKi(0533Hk@fpkh;%|k) zXX_HNytbd%gpmDwB*ih#3i_SxMrxXqKgaji%a?%!T<{N#9j4Q}FFgrwX$+M*<jnO0 zNtarqi7jotJg#M5HV=k!Ge~OSGs(RUN-r79i-0cD;7$P+7@&&%ZBRwfmVvX1Km=Yj zQ0;+j?r|8$pD+_Yjw|;QO(maqPYHS?d$FB5JDED!eylc~8KDF-ZDZ&B)Av}*@jnyQ z5q?A|$YGzWnyZS4tqv;bb3f!obf~T&aGAw;d&~E#dUe5${!LS(^|BX;*EL;4#cmTJ zmfLcF^npspG|34<LizJ}JJ@~&0JdzqHqcJqlGe!7HR(W11P6l!wmvL0I58mhzuP&s z*t@Hk0a-faar~*OT*~-gwenW9MxQj3ya6IS!g4~fHNjh*4<m>3wsDWO^vvrsX9_pa z2l%|bUQ&^fr^~YLs%CfLz|Aw6E9gK@+qi72?Ns8rBNAu~_7*%e-cU%^41}od$?g%c z(PhS(#Z|dkvv_+JV?^%Q@a){Bvz3VJ8Z-O9AKTr@Yi&I`mb-Qf_-D<>4O{7*2`UQ^ zF{ctvZyMq&(s&9&pTW;|*V*~<&-PTqULi6tQ`z3;*nF0uMQYFlWC@V#?bnsC#<AI$ z@2>tGqTFNA4217H=)0to?f=Cw0J`tiT#-Z?YpehEUn(M=UrEvuurHMymTfJtCWl+# zW8BXp0|~K$JeFQLmZNN%a{J*payXI*f2+5INObc@rBLYvd6w*^j<G*uN2czQX;=mE z8#iC)&9S@P6b4MU3KCxP<z<JzC?(k=mT7FwM48$~-qtC>tG&SdN51ELdgzhQnE%ro zxA7iOhw_-_NbaF(5&#t2T;!jdiq+Z1I5_SOB{zKV)5nGBEz}xLi2E!*h$g?V9RFoI z!>Y|$OXyUS_xntt%9;o3+U^YYo1q=B%je~@{>HZ-+Lt5P6iDbC!j<&CAh(>ObPTJ7 zMzc}9q_QcE_$x?hnHQ`>dO1dU2km#%6|v7Q3Z9R*KmdwJO-0J2ZHz91B>yD%N$lLE z&lrsFpnJmRn4|gbbO9Gvo<56xmFELLTj~2?l{&2RMhzwXL2q>~`{zJzu%qP(j)^-f z_g7ltD$s2;6!i*L=S6__h+u6D#th})eA?WR?0t8qA{1!%M!91dkUz#60_?_un}{}5 zKcynLghOao7c-?8jziw)>k3EQ5bMgh%Zlt#2Ex;mlazbch4j}s*~~Yhf*f14yx#<g zh=UaJTdV(Y;eax>P^qb*(t+{kZs}KDytm-&M_p(VSV4>#&F6N`uiH)Z2eT-*w!s7= zSk;<to?*3d3+<I<Mn;FAd5im_M@=(@itEXn)9#*^5$pWjk}v-6VK_ZXLC|tCmh)vB z>npW`d3tCE9YK*C75tH*f{3MvL#&(1I6yK;H`m&e#*b{k*<Qy8kpy)sTOUO|7%dlR z7NpwT58kZQjN`i*Cn4h9R8e6gEQ7c5?TI(fMdM~cwXqw9khIZK{9t&v#8WjDcNt@k z^k1q{>mPQ<_RYv&2_zNh9DZvD*<%-=gD<gitT(xaL8G}Mvi-pt@3Q1FS%>KTb!g{x zcYdN+)Hu@x9J73?T3>zwt+#7&bX0$D)vthDVAl@z94qsAX|Xw)7+C2v2BqrH_2>G+ z*wbu9b6c2U;RT`j1TwjPRT0pYe&nmq5saG}w}tZ&L&DCEsx4E{`mL$2!ykXclp-a` z7^{}zH$@N$>CB_|_?zGej?~jkO@&FD*Vx-zXPKzH7W5eHsWrRmKstWdF48?ZmbaS> zR~Af>8LSK%!Ni7BZVJdpkx$kfgfzR~g6RO%)r^H-yhmOpxMs)i$K+HBSOda0=S^<I zb>s4_E`3-&HlTKt169g7e+mvmQB97%hMm`&5rAz4JYn#nPH_j>-s()L-@R;92-8D` zyREVXnI*UG0I7A$Bx1I(SYfdxDdKo!yj?>hn+>2IBHu;&JR(}%2FDR$FP9zJ{5bf1 z2tFS+q1b0dq|SZt+XUo>s}qm;^>tNlU9hiDY7Z+ljlYirF8o;9agT%d`I@@v=TAv$ zIAj?F$j%yXumdx>>fweGUNm^H3iT_nP)D;7$Ar~Ni;j0|+S8A#2CNEJr{|Z$OUlvb zzF(vEe5YxccwpRdsxu{Hz0lA{7558pa!0SSeBT=_id06e{sYQeTqH}ftb#I)C6UKS zVvn>3Fx^jA8>6c$6Ioa)s501CkCrHZWiJ&vKw`L=fE;b8Eb4QZu{g3b^NzukKVi)# ze&FhrVqdK-lz!+S6!<lli;{I574(_=+Xgvw_P2KkH8)^ef#l<0$r0%Mon{Vwr3dI) z3Zn%LOyxkV8v(H9#-hAhYOrIeFaKsLV;kj)bs<HtLl#YcyF?G_RF<lW5h%UY{pa{% zQuV>Yve`#IZg~%ReLW^pV~mo?@5K%d)NtEigo;W0D9`07Il-!*e%7T)qgxv=o^%{| z_k@AHUlw9q292#8N&e=MJw3@%FgQEfAC%g434g9rx4wm;wVX>*w$l>l105?~k7rIn z9a)SYC*R>aYt$2o`Nx_jU@B<q+}%2HO03T<7+NgCN>OMla~AM-4R8#C33I#n`52B4 zETk}r^uLKd?qzxR90n%P-dL|hN-9-g`1TRe9iYQxX)EE6W^{e_Y~5HzftyOmoT{p5 z`T7LUtj89y5-0i(-AGy)bPr7=ayDF*M}Rff9`K8M;fF>S>wle#!*|A*t1~$gxRW`^ zBJb2(A0CsJOIN0b=s1SXn$^sHPq8+22kukifcJ{o<<q-%Z$ree0&Hb{3~GKj12i)V z8*V><Yb)V&o|3ML>Q90V1346~$l`)IftwDck*_ryP6FfMJS5%1;)m_gG`UQdJmIqT zMAV%Qy>qFRiIKT}7gL-F+`Z&OcBBG~>Zb>4{%%_reS$;l{%P#<#~L&KS0!kEb05^; z!R7<3w;>e)fx8_#M?l3&?ad^;`k>9vq%gV^KA~I3@!{(ijTeccp1z9<9BJbAaZ{%8 z*|g+~xZEBml?L;m3?^g>GPgvqy<nD_q@64&XX|sziU&ahdNG?ts!=|+6872IEZBYK zFirNa0I`8LVA1ZTTwfW@Sj1##>gu1WzclnJb>VAaFl#I0M@Gvw1D)|alnrQ@dFG1T zXXVu$+`(<1=vN(VNIr0^7OqMJhyQRK^9J+GW+?oLzV7m?o;RpkKrW`-c{pmwyTDSI z&0-S%b?j8JK}XC-TMdl20Aj;vH=oAhMOyc9;xu6|V;r8~3V3;&gPb;>kvd;W3KKlZ zCud$G4bYVVUQ=hvDrnv=9yH)fVb7!dC}{Nde&HAm8T1WE$}xZ0uQjyN{WDxva&0@E zD+UgPS6?jVV>A|w-IAwFE_>?UK0P^5<dLyl7GG9URg{!C2om8fE^Iv9=e26o=^SGY za#1{2f}Sf%o{5BuY0jDBf)U2gUT%7?Qpf?C6NKQUEC!Ih!R6(L!#qz9w*l<@#Gte< zx4{|~m=zGJy@}V$W~E4?O250~(X4m97y0>qWe?;3=2$TDoqq<o364Q=PSuaMQ?boo zBlpwzYu-#Hbn`p+gdl4b7O%zqW9R<$>24@C0!%r8iHFUZS8tDQK&+~jmQ(V<`D-HB zP!v&;vD9n(i%J#m-)r`*$0MEqQ8csR;w*;j%K{o_Kq!G%Y*(%2)o1icdNK5?qNTdx zWW1ZJHJpR^P;>_H55t8;$ED75yzG(==o}hN4uL}4Vs;GhCW=EpD8a8bT2d6}*Z_Rf ztTUqH=yixnYW$2P$es9-a6#5wU1$<8ADH7a;s)ecPSy*h5oBr4(A+Pd6*Wc0J}?@w z)v$M6ZJ@V%S_n+!c3vb?Q97Dy(2Uc~_XN+D*?kkoC)CQ(dAzd1m1oWZ%D)Bt()!aq zICVg+gV`waZlkWQ&drjQd^yXAlYi2ys`EIjb;lCM5(Y9$si%u+=7pd5U<~daw0na> zHm>@8HqUkuau3w{y-V5yst>1&O^e$wXO$ZgVVHGyYjHVWI>*LRB|3gi#Ih@*sjyiR z%5;&OXx3*g&TwD$V&$`28<M=p5U^@8XYQ(kDQ@E&<^eukK0zWPRk0$1Rk0kVYQXvp zQf<D~`tZk6+7jy1U+*xEGYe+KBQ=gF$!4kdDKp8R(<R5t&UXu()-h2ahcZ&er3S~o zcwKZt;01wiKd1>D)>V<VSj~7>prFK#k6;kKO5wHu6<PMctXmpowsP}g0n7m{irZ_q zr1UZKST;-b=|s$nuP=lE_}~*pXeDrbYoQnyO<zysZI|ukdf0cK1w${I>*I^*5PgEG zSpCxyYRlXYhPou$1--dVT=kmJUKPIXKtpm>d!urZF2Id$WA3qA%OBH}P9@9Bd1i0! zd*Uw-FigSB!z_}zo}!U&C(`HR3EUT+RzEV7rIdNl+}GbF$SIABYt=XG2eblgBtPfN zSHkCQR;wLyci)eFhUanQ|6=&Py-j)kni!a>eF|JAb~N<m2G7pmFgy2Y<V8P?lg(BS zoT=Il#!%ASHPZJitM$vmG#&juVsotqBS((i;S%zVsn;9JVo_8DmAvJ3N!3w_FQ5C& z3MYuO{G|7d`n(xZM!fVZ8>d3Cod*3-Qev0_(Ff7J{o{LsRA&W7B-!?h9M`yA*ZuH) zKRao7#dlX{9es~WjpYF>EG5JmUxHL_@Xj0WCUjF>t<3OtM=L(?Y>R3#Bv647Z0-Bs zd(E1PNEOorj0=A8eze_#IE&Ncs|$3rQtO`-(d)TQG2cbc{312QI*yH#gCcs~3oH%9 z#B6g6&aL2Xg7>Kgz&yLM+_O@Rc|{d@jxGA75QwWd6Ga;0FDeu7urAXqj)FCO<)3ZF zOR5~)Fq|u_w_jQe3t6aEPf4<{?PDmSIAwuwk}qItGj!mY%Yj=k!dyU+u+E~uU0uQR z=RoC81w;yr8A#nU-S<1>==BlWVQ?o1B0>e<H!6d!HQdGrckPQn80_h~{S!4VJa183 zoWIu|6(?}dORAbVI-3&oev~nN956k6`w7iqihAsH2l%FLQ~ZFMyA?dhDrYiUz`hmo z_<BxxGGCc_Y>6zE(OKhk!(nVaPYUSX?DuN~UxM)8{zsc!6>RdR&H0m%K}8=;g?@m6 zOqU+sHS3M(f9sT#|CISfc<rfQAj{LG#_#Py^HQ!Eh!qgxXnI&R-V6!oT)!NtelX06 z{U7_<zj<_T+$!~zE{n8d9z8+$>a)C3NB7I?r2LP&)FG~UikoeAX;rqTDl2Xz4GdA1 z6oIeNmpp03-1jD$-f;3y0Bw0;j~O!XIn9I9BWBB1rn)m$C=13IhvfJ8ufn0;N7f3? zF~)tSGyX{U-NJi_#|^C9kb*>*%51(s`W}ORE=0rc`6Fy9D6j+K+6#fEoifsZLz*Yn zZFxS}ogXIx`;b8C`{_hZBo|dLuN6kEpLER4W*lS{FC2vc44o!i0En&4DrAfnB+BkM zN1g()%}IsedQH7I*e8n|9(Wm1v%PAk`abBsX!@6Mp3;7TnPEo`aM(oS8OlUooFw40 zn{HQ#QyU(8sZso_;00sMzYzq=eWTT0?_oem=cs#pg>@fBsx26D!;<pRS<sIU-sr7b zZ%F#X-slJ*y=E1Xe?aUFMS|#4$j_QopUy3?(kI@Winx)BVFVdxOChVd3eRx<z1YYg z0qb4ot~y&;x3(@^&_NsRmZ`pT=>5#8nQLpezs1`=%Mq=*siCfx>FI7%kal`muV}BZ z#@+=R%&p*%Nf|SK8}gN9Kmk8z=a^v)#!Mv{fN>tJGhM6u|9-1ougPBqG7FobLG=cj zFP4FP`w3Dn{3d=_)c;~3&ZXw-dCSXb?O7<0g;$RUm?5iqRe4a6Y8L|1$DV@QzjDqo z({e*UzpW;Yr}>pCz4d|nZZL$lKi7VDHW7QfaiP_;iO(+1s@Pvm1wc{rlz$D^cgtyi z6bCdf2lqn{5#jUem5(X`45AR4xzrv21g7ucZ_$GmZ9G*?1@PEF6Z_LXbyM}gWOV`p zRS}>7=%jpcgC=>mRU&3WHgBO4K$kUWFW@-rq83@(@x4<Mtoa$%F1-93#FGk#355f< zy_{XH{gGTr@Vs5@Xab=%4sNz}=_4dgZtgFkrLfI!VP}n;FAP{E70oCunbBaUC1a2s zsYBRgaAK@!+(mr>!M^Ms5VxnvWF0rQ0kO@LzHD)%*7U1ZQ!*eHMUfeY?2={&Z zuWHc+Kb<cZrVy!eEfxxW1n;tVkIOjz9H?Kd0V=XVK12=aUgzO@{rKoW=4?de0Li76 z$AZ?oL?zIJIb(iefI@rm?g9B1cF=O}m3R$h9=sfuf2-Ar&Xlk3ntxM_DC`$+x?X=c z5wHvh)|aH#?5JkZz9|;SZGRfxRp$ey(z6$o^rm8UjL)6{`EO)9(d*v2nj_kNSvoNu z%cpAx3TBD*+kL9si1m7SeLjmP@VtQd>%%I=qHPIEzZ}CLJ9ng_A*GR$+FC&ydDr%h zRW{|3!}lH)dF2=McYJzaL4H6|_yR+o_Z&XQ({pfYOo-<*)}U@Nx)Qqe{cJ}$|BR83 zc*)*HL!9N){_hY350g7iOt<H?i_X=er}D_MGB%RMiO!4tyy?&WA$cR+a3W+M7AkGM z<G|^Gj3CS&C|KHy14&igc2DLZ%QUNVo{As0HTP>ag*AQ?R<omCS<f;cp1Mef<n~%f z`I8bnXtrtbNi`R7p_K04Ft0C_RDmbU<YxTk_9#?yZ-g)G-KEN$q}_W;vf9a|z@<!d zl~vr`9`ldmh^ZC2Qd607n#S(8D%g~Mm;ucpA3NOZ4%Uz#Uy9u*l)m#Y-B)F9cV++* zCW<(T>|$R@QSB9F)ZoxSEkk*OuL&e^RCa!*J-1f(=WC%p*s)4>)i}P;_c66)CB@{z z+lXc}KZ|@<a@mZVi?!_s5xj2p-ZE-mMEAzN{zFgg-@(ZQSgB+^0`jq4Y9k`Oi7M!P z;k+oXXW;0`D7;tXf9~i?PGs-PQ;FD$e16j4*gb;LL4{hlo*y2KxM_obYS8cDI;XLv zwmy}CWI?`X7Xa3N|CX$s<d>_#cI|Ok%Ric?Hi{EzvAKhHtxR(L*21nEMR=aIqb-9H zkC^NG7^z5rzHmdlw%)h=rjAI6+9ygja`;+_DGv{6RGMj=%k)K_ETkkI?4DXnb*l(v zEiF+>mW_wDoU_FCr}zgO7p2KMk+`rW)a?HRu^oLhx1Rzc1UG}sMvc|g{C_0<;Qwgs zQRnZ`p4wkmYyY>V`ED+U;N`e*-Z(>MQ|*OjHmxU9gXx>s%Pm?Q;*bP^V8E$;e=fH) z5bJp<FX-Wz$!dXzhyhMP?0cqp2GrP1GZ=q6n=Awr?+uTYhOf=4zKoS%nZW{s8*q3j z5#i;NBOy31R3Rin=)vr-@Q&(^lKxZQ%!8s|BondnY~B<^5&eZ>h=XrsEFGXpz)${x zq0P_laup}`@*bAcrRx&L6KUB-n7PsPIBi~C52nC<^Wfzr3VVNjWUw8^B5(WOxtV{| zPt&Ly0eqO6BjzE8BL)%MVdL$bpT+yZW`Wa#>ecpE-nP%`%1t8*qv-)u+hq2LZIkKO z&0IOq*pkeZk%t2hFsOZy5ovK^BI}5Y0g8ttcij~3n9a<Qodq4@$ey8AOsF7>g7vAP znhILM2z`IG3HMjwTZyD`IouiSC^p6yyn`$<45T7L%z|>!f`+2mEp$@A8b0JwR1`#* zX>AC#<fafJe@|OUY5XR2GatuDll!w^O9WgyASv*E%!NnS8mPRp1O1|F;Pr3YpJG}n zh0}ib7sq2GHq&K!l~Koq6Evqp#;mxM{`pzRvQ54G1_9<RJ2JU}o0isdx^^^a+tsj} zav)dkE4y5O->k4*XU9t*6WxtZU}-9U{^+i{Yg47I^!~{4d@SDG#nu`Pk144mZo|i@ zDx~{4O*FFa`kHr)(+NawhD(v7$p)4JTbWhi>&q-n-JrjrhcbkIKgv+nuT%*WMv7_% zL-J&wuD0a!6a7KfmxP=3fV2_+ypgvoJ1vO2-gX&KfrTu2oDg*WCE1nv2+-MAU0RMU z(FLCWpR{`h6LD|=K>WC5kXSsP$k}M7`(K@6!{N-c%?bh@(V6ojtcXco-jZAYv83-q zVjw25+E@11OkyTB-i*_^mQQ)(r*zLd&?!auk5l42zRGZ3^}gir?cT;TDdfDKPJFG% zkCkI&RKSR__<FKgp}>RbU_M;<hFG2K@1YYGS(0viP@K&lm1Yn~A>UJq_6tQoal?E) zWSXFeb8UM$=m`!L@Np<|sv^NQ(d~yH>UbzKNy;&<g+1$yj9&9%wEt(Gr1$|tp1p5V z`4$k?@1sGArlg87)wkm;{pMFT;ZzLh5cJsbr_-snAP{LY!*VYDmd&_9JZ&$a!Nw>( zx0@q~2@eGwD34Ea-p{_yx*fy#95Rk{k*<GAca>~fY8XGjHr0CP(YD;*o6Xcz=KK6e z65hHr2otv=SzhWC(O>BPtdKIgK^JgEjkd~u{uPB;?JPCOxw3?zbGqyOE@NR&9lpca z>Y?)94?@ACaAwNrIt{j(aDOY3>uXvY8GRHus|S(@@7CJHm4;66<CfZr`u=6X0h6y^ zfnjI#7ZbqNy6-L-l+e3@8HJ6MxXt&=*0~hAUPPP@daMIy^J4H}wQ8Q``{|Z9Zufg> zX<wN09l76TTCQI;bnT*vV>L<6t80EGuJtswoORiMStP1A9)NxRG^HbWb2U}ESZUBq z-9ur>*#nEX@!fE^s*<!0ftITOaI$S{I(fS^NmItG>)m8nBJYDstF)iKNJ~Tr0xYPp zh~9P*c(_4z;hH%<+&s5Dh5?H^GC&vX&uUdZB@ktkZ-~QyF=+=ZzrYOhgQJ%Ki*&Vv z7TX^LFDo}&wCBYc3DFJ?V|;D357v|KS=M$EcgGCuwSh0+<hK!pILn$)L<`qs$nR)E zR?h3qU2=W>(tV0?{q1)7pwc)Ojp$p{(XsT!z@~Y_S5chIW+;yN&DC4;=J!775w(HR zc1KlVcSHKmgY_(r%-Y=6Ufu1;LF6$1A=tU>-Vt4#zqS325LG*piT6*)V=GBI7uEgu zd{~}?j$dlVDg?qgLK9g=7R59}9R4*F<kzt|nkz3JtvF4-{u3kSXW-es(*qLBEmwRA z$!dU=)Pt3yqI5v5l@hwm<p}~74Dg_-H=tPU+JyY*s_>xw2gF`3B4Q72`!D5|TI=G$ z2(`Y&f)026Hy>IUde+Thda;(k?PW7d?MuRRcn}GLWLi|zWQgD9HRu4Ofz2A8GDCOm zw3te>IblEFDY#jDg{hg9QHj&G;Ga7zYYce$7ky*WDliv$AFpm!B8!b$UVT}pV}||l zG+A9FOOG;6JoX0qpkg{CLLjiI^Ehm^qqbd@lO2B2AWWO3jAO<-@?V6IzaaC2RYX@- z_cIUn*hnpvaQ$FU7YscL9x>l{E~Zw1wE77?uN{1*8c*crwYNg}OJy)qe|-+LT&(MF zF16W4Jkgk1_mes<##A(a;xCS$t=0niNJ8OG3=l-MWflzanKcx9$HtO-EzMIJuYN?_ zR#PB;3T=1~o%=XNotQq=QKb@kJB`XxRUshJvrCY0h!^S$oj*EajheTaMtyDx=_hp$ zU$k!h+o31R3Lh0^7x!spi}&>hgl}?NW8g^dgw_zXRg<B~())tZ{h!%2D0#{hF`%!j zt@(+I=KP&ca{(}TFB?IeFN}mRkK^__Ss2&fdWS!_2=j~SS^2*ebTxy`Goj=O+_oh_ znf92xAAf?qFhEij?q!jEv2r$|%ziJSeUHtSd&e!p?@o<%`RH+{Zw@jvcV4rV-@kaj zgX&wyfR<L<`DE0k=A!t_mF9rT*?`%+@L;M!Bq>wbrdWOv;ezj>f}}5xY%x0UV8ms% zsbCYyrSj$6^17xMieRSYQ~S(>?=^*=sv-?iD^BH3_fO!G3X$@n(%xXgpppHi^Z$@| zT@T-&U{3q0+R;k<=wbIxw{&^2|M)P4?`L)z$cF4mzw@InRfqptymrD>2Kd^V5(?ut zAhOjPBVI6`;15pG*Dp=yqkuq3sH0Ul-6P+cc)b_-c2@2%_>eJKuj`1t0J7#Bd7M?n zA^Kau!O{Z2#?^ksUY-*~Fm3m%5kPy_n?1waTLAG<Q(kK?oK=3;*Yy>aJN1zk1+060 zT*}z$q3<);s-hqM>DvE($F1LLLR=U3@!=%<mEk_+XiD?uoE1wyiTiLzWSjlIbCqlu zi^o$KB20%Bj5bpC)_aRe7#Ae3){hy<(btml*0g4wxgP(NccNy^i;6q)=$D$lk;0tv z6%*J;HJ8VspA|Y#IgqT*bOP4Jt6s)=@WUV(kq})cD~Nu1f@hn%{$mjnsv_>i#n|rk z7wHiGVEMX4X$@WQyyC#5hrIbL@+WvKFUPpx2PzJd1C1j!&fVRJguRQMB%-%_b##u8 zyM}0CW~&MKe*cRs-Ds6mwFlOG<G=l7pmjHJnMesSn*DC}ATBKGf^H9AHs1~*;#InO z$K5<0yDA56pWUKP1f4Z<adX{_r$$Z7rm>#6f#K=7Vg2=!%b!e_v!{DRz0>0p)4xrQ zFxuaLOuU0TVj08NXRh?mHPKU#C0)Cuk?)Nez510M2Fu66{SD>8Vv%&S{ZNb7%!%qR z4q48A=a|o1S6u)YiCcd%v$Z5U_QcPPYY1ZXqJ{^S&17ZJK!6v4K#T_Fk4*I*@SO_? zVEVU|i>6n!&s+fg1Xs>MFzdP8d>xpMae;#3dd)KnsXL(gRJg4na8;zrZ<o-W7TNu6 zD3?3y%|tbor*yh?hI;?qCH>t9#bV=$W)P7ohIoAk<r`x*H25FHO6h}wq_f@*WD{`% zH07Rb+6kO4=&IPeEzJu?{+D5ev<#kq#>V(}Ek;FliQ4SWdtX%u-4AnEELOeZIU05J z4Sx@_pqxQra1FA<#s58Cy|tZ(bd*iv%Grb3le=v{ZMw6@yR8_4$w1G!t(-@|-|gj( z0IsPJ>AsNRzvwCpIA+v}A-Z4hiXjtn0JJjEa}*Y$OP^`uv<DiwrHchbKu^w~@^}`% zn|f<XV?r_X!<w`C!`_J;$hm@|lsCx%l-10hlB&B{{R*b*xp2&__OGhqjPOyNO?ge` zdM01%i!}b|<&w~OTEjijT$ItA6WBuT=W%-yv+a5d*iY~KHH_L`c8|>&$G490<~B2h z+E{ymy<yGGeCxR;@P6NCA4kWS+tX0B>&|+NB4KT|PrVSwch!HbqT)mk*br~NhCzsm zo}syDu>x{O{yhwQuHXE3E;aOPsLtcGm6y%fC%vVq?&KPJ;0aG~z=MjZ`oWzUT830N z0FfYD$&ndpzzY(1-HgAUrNSIahzn}ntCO==2)zi73<>Z8gry_g>cJZNc!Ip{8Yq#D z3lQXt3s6$)R5)D@hbX1Rq>?pJQfZf(&&QBv3Wa@LSnI#BcnRNp>n8M7uCDzDjPqH% z5d$STvej053PSCiI7vZ@7)$K=u?gG})*{-D(^Y{;Gs5P(cEma*f{TqmM6Z*@A8D2O zjnqCLfBVS>tN-tz0PWWO*HpgkNwS&kzB9{qHR%JZ<Fg;y${N-nCNiPj^&%2%mOq6h z@9|P2&T#2F{+YMQsJL<dElV|4B4}3MUcKM2t#bH;Q5DX`Nx%qSU-7N8gl;$$oy<sU zH0m4t0jq3pjRn#@Cw5xrela?cQfz-;0!Z!mBE7M*i6IA92o(Lke39^*o3V6izrZov zI9x6U)dL=x7DfDEK~m+li7QE4Lv4a2F#B&7a8Z0uM5!F#&d50g<5MPP@}xqkM1`HF zzBL&(#l{nNeo=u~$AA`qOOO-4n=NkDxv{|VN|ceF^P^wk7p0(@tNW+~50va2>GaH% zy6;pprE5tN|E->#wmpqlpS7E1>`anAtzi*tyaMe-L!z^auxr}JUO2GO#V5VC{*itA z!GWafC~hIVAR&vdKQ4w4>)xvNl780S;(RE0z52NnSya&SqU*#8DA(Y+4}i!oVBxFE z@t)_B{dxzVZ=&+fVbhU8in7Ust%My-MaIg_fJG)j*t{}k992F=^AjgDW}Im>ReQj3 zjOQG{VuR%3i=FSkk7@*7;;B{{e`8y1w#U-e-u&o6&@H%ys%HBy+tVsQq{WN`wtkSR zzLXe=XO6-c+4qaL{{KQd83<Sn51mXNmvyMXH3S)=wNX2|!C9Y-VJmX*j<%f>2W;)= zBb)F|q#0DnL+8#rv3<WWQm-W`ub&u^b)uwrj&F%T48|i?^+#0J;>DZ)?!zOAc|wY) zM021<QfC#J>x~pC>!5ZckHu(1Mdza+0cdOPAcC9fN&xs^>HMO&f{dAg9Bcy91Zt|k z6`;#8ecqm<#Q5aUzsr~7w9HE74j@D8m#5p9kUKs)lv~F)=2k%pE?~;XM$lj{3vQnM z^}-As42eDLWyo>X(a^r@3b*w3{4&XUch1LAG<<2>E3S>~GA*h<)Tw9fE+{@;VEgBO zx5m*stzx<9N7QV*WilZwI<~xQtw7ObfXOe$WaS>C#l^d;2$u7LekWjT4T|ZZJb=#w z5BQ?KS*dXCgcU<YVlFP89QsWsQ0Ci1`=e=bL7SWO;begurm@FtG%xfu4(Jfd?iX_; zo>?9WarCUbTt_2`xzA63V+&rrLH-jTw>Ft(xI1(*KYZZXnkHQ1TXxJQ+~PuxN5uC1 znvA}36wT%K5G&&7SjO(U1*O!Y%gDrt2Vju}oN)#Vc6*c8^KRY73tOXq%HkwjrsEN- z@;J^9&xwg;ncuKB(~F6b5>-K;HO8{Wddo^~z@-pfA&yip=>%{Gf_&z&1*JIGl_Zkc zKRw&upb#jsU1&;5&cFwF2m26$ZjxK|>h3;<%g5=&fQAF_W*Y_+1_GIo{5NLh{YV<V zO;qRZT);lq=<Op(`3coqSnNJnZavxyo=WB13(g0V+7^&rA8zufpDxC!pB|3%Nakmx z30+$bb@A+m<YqaZgDKuJ|2Rgo`@8x?FsiXr!%S8eK^28R@+z*DXX+gQw_fjL3Khh3 zWd$X)U1jM`dcCUQ-P#smIoj?7c$AjDj0_K`ic;r{!+@k}aQpEm_7puX&Zckm=35;M zir+4wNH2dnc0RsGym)gC2ewGBabPLQ=?}uB8Sr9-J;?sPv^{N7A5GK#p3h1<B!Lt( z?y%x7Xc{lsVCKn?n4#1!`6Hu;YwURE<$viZ`MIWohRYZ}vzUDE$01{ia*xs<gomRi zrs3o$Nzo38&t31FNJP|-7IN@GGZ|>SDc>|hv&d%M+W{Gn+UvZa^xw52uNR4D>5!Uk z*XL0^p7Q_H_9>S__f6y=ryX5xRCyMTa!e2!g&keIwEh6RG)X0;39@wii?{(I*Pdv> z^D7lIIOhl|m^kGhTIe3)cp4wPw6ye7l`wZ65O5r*uE<nM!L$hOgu0!7)J{^vH-PFQ zKQGRAZWIN8>@%qD6|asG)59aw{<kM(s-YMg3FQj|*Ma32Hl)-uEmChyfT=;+Oj@03 z@e{4DW;}+IQy+9+Zk^PZWH#IY>#8tKuqHgB%oBh{)nC8Catw979H<#{3&3p_%AHND zvTzvM>EGo<cQE(3?)wAKqYk9ToH{1xkNk$S-}J&RS0BAx#;8GP<dbWUfZcyI|M|v- z!s$4T%KBR2R186)$LLJx7#TO5+wYhZgw81$GTk%&um}zrp{<UY2|o^qzZQWR$vfX4 z^Lz`-HCZPK{d-AB`tz5irfcl&e6!EI*;q*y>lT^OTd%hPOjNz1JRslau`OaA0vct{ zdx|We5e9SMJ`c65R68m5u#}DP6g>b%c|@iHqx<TJONuf-4%}tX5J=`lrDu?hUw3T$ z<o|)k!c^5igb<g7+X>6YTpSYuf?WU6;GthP%}o+WAl<HQgn)`SkHc$JhaPtDCvms* zR_XMds8j~#wC?h9-o)ja<jOHF!}AZ_wfoWp9^1M5j2Sw=KU-_}gZ{EXiWQ7QF&in} zDI%f9DC=}($%XM`O&r6CT(O0wCYPfD8ag_b&EEl%N{YO<b<3`oI~#%XxOV^cayt2g zU$N0kW5&ILt%HfK9f_2sN3s#qWeW-C+bcEk76Sm^|Nc@mj%_V1xRH?csxo3(rZ-CZ z7-Si2??MN$>+{D`SzW%l(}3nyP#3`P-^YBD*g=gr|JH7H<kI$;is}xCIpZ-p*;lyb zS}>~7p1El>HY4T|3C`*{tvQ*rWfliV3Z>Jr2g-H)JP$E458i+6?OKh|u03LfBL3>E zc%vZ)M4=vzmNW&cf2AYx)G1+Jhrhesn-|+38ijrVYzND;J1SEv&?_x_K8z=fPbO}Z zy2b-gGc967C{3U}CiXD2;kZsancI?J^>$%)?jQAo7a{{o+Zh~xT%p)7HI29lY#Rxj zBa{UZw{5o&IWAC$l6@yD9u(XlHL0~duY$wucr&(NK0lwfV`t|b7#-5Mo8x@6iK}rL zG9f0*ZNeZd!dp#Es{PhSpbj<Pa#KAWW6UnNo;o@GRt@)jB9%KhPfiuwxwB?VM<h@d zT;SwXUB)E;`;dV1-G073lYQ~U+#Eq3kG7zW3ej4rCeBh-U2^kmog(H{OS!C3rPUW8 zB5wUtRv)I_4sy26siF`C8*|lp%tY<?)v}9vH0BSYXOGWTJ-d@OMTR|tM&K?4V8C7u z<!>k>@CddCMKUE1<0&K!#(9Xe-~OrK-Pkj_oy2RCGB-aoNH=?adVJWb&U{anjbu_{ zY~dAwjHi)!P4&msOFl(OhS3srfl3VrB(Uyo!bSwE%lvB0KHK!<dKlvSjoklq!4B9o zhp+}V6ko6WmB+2C<Gs4*skf+UwUY5Av795{Q5JLjPHNMqa82lzZ&_obOcF@t>HxXV zLM&{bL=|>)!p9s)5%Rp%p`WPjlt#^)#znXr_2#Jr5f+KgY$}d%rqo*K<?)m$=*kpn zFsC4q0~J8QwzrNZW??#RZbG2oc0F)6rSSJnHaLFskj#3%wXKerCCVG<+OsHF92&20 z!3o!wCS2~Q#)MykncKTR&Go<AP0}YHC`p>q#Qe;tetA=9uOy4%WnI}V&R-5pyMS@T zD(Zhmk=9N`NHCG`2_uYXSQk*rpe)s&tZVB5%R&zuolK17bX!}=dEhFRK<K5I5gKYd z21t14I+{x{ul%F~7@>>RXSBa2WSnv!LB$}6m-XI;Zm_bKnsI-86A?S&hlc4INj_>= zS5y$-m+bmea8ukT8-lX(hHKOJZ3$3Vj!v8yh4$ZAKA*A0+7zLzKAyfVh@2}yUEgpn zyb>pg2jx&5#jUM6&qr2+<QW);h{w+Tk;MbMG22tO?UHrpXMNoCm!1@6(n!CPaO3af zF}HSh384GZpmEjYFV(}^aB><~P54Tky70~2nEk~7&E@K%H4Uz(Yh`Nop~XUFw19QH zpZ@a!3bWg+1S9{yufl)#6{hBD-4#9*;?V{l+MhY0vlaS{;IwcHm1$q2;H+zL*Gvy2 zXkAnq+0`+Dngur%{?!H(Vy*yK;RYA-^YD;-B<{MtuRro{e{V=PaEem%-7;g*rQ>%w zSF9?i@_a1}1^Kj&N^@;r2#$-6Z|-`nhRNevb_D8tOq68zvHI5&$am~{i^^^X_5$`U zz>{gNPWFRdzy;Lw?zf021+RK58JCy?T0QCNe)T2kk>s=F#gd+#0jKF@?f@cPtH*i| z-RN9DS<_dE5AHg<Ae1lcI&AE9x%U>7D47A=c%-!m16B+cG`<OYS)jHer?Wh{qk6mC z2m;PA#}R3;{;ktgH+zzfQeSz370LYgaI&Q8RQfow3)g6p{=h>D+{t2PrX;Cn+{=F{ z15<^J%rKyaXp-}IUi`Dd7{jVlg?^#88qPKWVWYwh?Uz7@vbMT6eP&<UOY&JeN(Yh7 zYhCBoW=Ro;E*l%Ki>R;rr&_$%KfYO{&eL|`j87zRANT(Pd|Xf}l7dUReido8FdGz@ zwZ(;h<b}@8DBTy=y+a{Q$t<yEUm|Zx81h?wM8=r0IP4(~Ua)jw*{>Msb@vvHO?3_e zEE>qv%qd@h8gBF~dK8cy15HDGRx)g#AFXK)udkKfIiT_7saa31aX@G|yv0cLn;nHL ztKJx7n)m#3<jBuuO4$L8wwl~!{wymkfu75BD6dWo@=o0}cM+5$IgISM^c%L!1>0$4 z%&g(sAryJ3;8Hy7*UK$8h2Ml*joIx7eK}7S`c%e5`c)V*&HgO>O4k(<8Y{AiRiOP0 zuR41NE0Id$e_Iu?lqlY20NUqlP+0E)I1dg-KLQ6z__$9kf-Q{^gnC~$S{mcywq5rj zDc}<V)VP^s+CdA<wyQ7z+K`-}i8)admY`=CXbQJN2PJ#8@ITZ_w4I#ZkDLWFb(R%1 zaDvMctBvzU=K)#*S_?rymt<k-laX1>*?U(wCU8+*+z~cMz{ve3Xm$k5^&1EX1f_9Q z_y+g)IzKgkZ;KQCf@EfilxE@3SADnNSi{Pcdb-p`l1Oh8p&>ZFuX-R&@UXS?8YFQ% zt}{zm8B-q&sO=nK6l3s^t6U#HjS5~m{Lrw&j4ZbV_qDt(rUm9$Efk!vJ1R8O7h#vC z6N<R6D}6(+ncH)iE{YcJu_f+`Kdw+m>+&TLz`|gEP}a(%MR5T(1GYIjGBO=8cif5p zC=1D)44A<|#Gt3zvj=FqD<_n#_<nhgy)L@N9PUm?aG9`?gP_wZLRWf6ZdlwM6%rID zU!vum<<%faA*ZwlA-tlJQ{Ddap@cSyT{b^4K+1%%uD%!9?UyK;M`)g7%0dp2`;jua zNqkFX8A9aHdb5;?tRQnIBA#4s6+>qx$*MG1gCT@X0`K7+dL2P%$IEtwQJve-{tz+( zzPxZ%j3n~3+*s@whE<NpS}WUq@AP#Uy+rm>gvJCax`DB78LGKPbHqfCZOn|XqvMmY z?}D3A($J+CO+eja!Ml~a%Lq)8AT}NiOWB4d>q3@_GaoZ;<%|VIjF(otX@k*$_({z* z(1Jlqx;*ftk#a-A1*;vCPP*~N7kVNOYjYI`7fxoFfZMenq1#-MsJdXRB^?$1_h4n) z%k-@pP7iw^79r8McX9IMI|0kfSNV=hp)q+Y-gkm8m-F1PRk3z-r!KNG64pcBz}X;F z#SP@w@#5*Yz!s!?QL~&Jbr0&b=O7tEV*>|YF3@~Ylm)AcA_P~*okGBijv~QeJq}Jj zU9&Gf(yD;QK#}O0pRF1Loh*w7s*FC~u+haQSXY+LK(h47VB8PA+brTBA@++FFJI43 zG@;>vA%!nHOB9Xff2@{L{?Q9LI4BzEJIA!@(sA}&6J57jNJpyf2D5i~Q1Rw@lWE%7 zR8<9!^$HzoHJXeFC&<~q%Qd32&+?f`h+(p1GmZNMvVr8#Hxc)T>Nt~4z2d10h0GU9 zxaTBMa$0H#T6O%Myx(GhRlVSC7{=itRJ2%OKAkvEzSsE2Rj}n(gpjUufwnja?h3j8 zdy{u_9pI*9q8b-A-4EK<?B;j8sVZHpd`3=uy|8Gj?dDjP6Pzn#l#0iR8Vg(h0gdx? z;&x&=wTdy=MVCT3b=DgC>&g_=`E=E*PrvlRoaoNVxMo<-#jroZh?J3M#w!Q~C}K0; zuQ+S`Nimf)M_YL|J1yNjq8}B0O6Rk4JZ&<m8R%O^##~y~u9eDOQAUu_UQjN$uFFHv zs#UE0V4Ijl_F+kv`><_xJB{O%boazG)<Vn}3v+H@mwLYSCWC{+Y=<ZEiNt8gbq1bO zQrVvaH*kDsDpvacIJ&BUxRxcjxJz&+BxrDV5AN;|f(LiE;O_3hf(Lg`aCcbT-EGl# z?)%tJb`NuAdb+Ets&#zbdhPSddju(a#0`j7&PT;#f0E>7IXaG>Skqo+WOEfHJIow& z1$(>1lsH7DjDIjkW&U_L{X8ae#!6|O_1&kXAm<9#^Khj}UCY2qU1qe`{#b8m|7jnp zP4zHy0P&`RA0$JW;e^5;VM`Tyg-an%*ZTe%gSgar9j7ztW^EDu>!-j#H0d~9X|}YA zF`e@Q*EZ+vc}$8luZKbmGYMOGlSd{#KDY8FcY7<rb9o3hUJ9I_pWg~#(y~0ni80w< zhf9&SesF8T&qu(AO$a>Ruc?DA8YM<^6<1<2Z+Zho(UrQgFOxJgx`RKdMtKib>j|}W z{#D#?*(5x#-3bu&$%qsntuK|dJX#>ZdKVR(se#6>AJR~GiYmxePYrFdnJ6YLE;pa& zIV6+x9kp@E#A)V(#73uJPjtU)H+|Rl9E!oXC`71|>jlnAsuMx-1=wyOXmso(zUfRz zE0DDKl8`TIkvq|dD}E=AKO(e=VEDF4)$Y@dGM1Akbe^I5pzyl3oM_M2wD#28Qe{{H zzMDnP!e~$syr#0YcF&d+dH>HC;~B!zcIw)pfwLHfQR9&wf%BZkz($4XPSqQ(%mxBo ztdF~_j}9ip{vH69r$)26#$EQ~({m+2_R23aDZCmzNS&U_{kY5hL>69e6(Jre{%9IG znCF2U5XICH4tIv`TBYKXd+IC_-$csQNCou?`q=x#zq`ubUM`@zjepEh9jPbuo@Y8a zq?Wk16#|vCe6rGVmeZImR2}Vz%llO|i!QOq0mk{j{<z295|!yP>8S8m2Qv4riLG3+ zevPO^SDXv8oBSTFKq%$rbcCBs$*+st!ZJAq@YXz4W46<PPPXg9(cAzd19*7G-oA{@ z%qFZX=!Ug;H}_%jrn|Kfb?l~<)4^SJ`<Ad;>-7%Tmc+Yn81}^ubV(5=UpoF%`b*Gy zA$r6PZDQ)UP7(s<r1r~EiiR|$klIOmNJ{bX$PKYPQ94Es%II<Ha}L_>Git|k0Iwus zn;LYfhDSQv*|*A$FV)_rTw-)SzLifXA5&_PAgCiSd@(WOpqE`5Ze>-jaQp+?kAv2x zwsm$q>eiGYq3K8YTz1T^^1iwfqW@@^_C`)&^Pmsm|CCdVb;O+Uck-xf+Atz#5~w<z zjB!4q<(NpNV9My~>5DH?GEQ?uo$&E`d9Vf{zy6)k%tQT(U9Gm0qfr(8Wt?J{TiU$I zwVJ2pE1X}PqPM_osZW5csPR<)wn7!dnZsl6L$~-x%%!c}!C9_72pRldtCe%Nk1=5l zgLRR>WSCSMxiy)xh)#8!&gjWf@=WViD7j0w`$z=MHwqo_R4d%k&mk|_Q87cNbiVk9 zg~rRVpKT05E*n)t00w<&iOP5zpJpVl;z!}{Z_VlN>5A4W6qK(8riuLkC0{*O+*%u$ z_j0MLS?b(sz3(I|Ce$Dl8}EiAO;?6WSZUOW70}V4Z}&2c=Cc(4i#5B)+R_6pX5}7M zVHyYiniO-SQTE}@!XFf+WRmnzn)iOFyg)<$`IUSVgyH)q_v^@d**}16@u;wGbGW%U z$!wvbkj_jZfS4!sdEs+oRmGE@ZTrcqps6%e8<UKl_nW#cz*S-SZ7cVugHB!}u$v#Z zvKg*ih8vYS!wm`gSsrc?cmM&&mREUboZ0E`t%k-%3itd8Q=1U2v}gvDU)Ds(kLM;R z9u5oefPnV;wfaY!D|w1jKOJ%qb**VAzj^iUZT+O#%wz3ZUKx?PjLb5Ki^JW{*!}oN zZNop6!bk$u&4c^qMb+8dp#k`N1Bd*o9+`gx`WpWjn^&R5cGj0qS|K60kEk*F7wa^N z(t7CFVaaN0^|^`HPUr2<isz8ufe%`o%2?O8N3ZSje8rxA<=mB@6P)O24c(3;cJa|R zi(BVCT+t|k<zPxl^pLO4EhZM4yFvM13AlDsl2fiaPpXSMI(|YLKkREZvwxffp9!8S ztV|bu6UmLkSZuypd!IPCf^f>0jhT&X>hodisT9$3OShH?Mliv_pu83_TErDIONkEI z$B!(%?8I<dim_C3NPjVTh~$d}LU{hvg|U@ydday>h+x_q@(Y=vf&Qp-1%K<?^9KA! ztO%DR78@l#8F1vZnO`!DmZ29RJGyY<Mps?p3E5lxf+aBKl^hNVrn_v1odcRI=Ov(G zzga3t|EY#sC+XVphS`2~dxf`^S6u_G;4{`mBg}C0Nlur87uA36EFDH`2CJpaG5nc0 z92|4bSNKd@?%f?o0q+ywzcqOVfyvN$bPwfx*-a$C)a8LaYk}(}Z2ikt=hnj+`qr&0 zxVgrEPaGe!ZB#0uLMU`If9P~9RT*Za<xML2JHa^r`1Lo54v40<COF?xF~`<${Zt$S z-j>O$GO=jkC8-kWB1cCa=b8P`d+c)!|Gpffmq)$?`*^vNRjF1d6|q>V;@n=IcKqnN z8}dm^4T{*k+zK(ZIh=2x&hHZJ?TH7lP~lo3+L|LyN+`7*4Cbou_XAv#IB;}Gp3=4m z`YBGlP*Fi--wC6-JB~w*T(98H$sXxCN+ds-T-6Wavm0NF`n;YP4a<g9t2cLAqiogj zY2h9yZ#DMr>~y-XZ(olxAMDMOW_yAe{BEZhfVa|LvX4%*!l$DF9vLfcTz&a#qxk;p z?Gh|`+1qZ<=C_^7;n-%!;xxyy(6nUA;GM;SN~dps7QYP&!=T&VYMo!@awZLd!hj1D zWag#ATxt?G6ODHf7#Y#9e(c5YABq<ZqPu+d^l~Ki_wt0J;w2NvT(YKfwi@ldn9mR@ ziq|so$!IWhoFr|Y7DM;<vZL_y3+f6I=3Z~46c(|d?3?+QHTq!q2)VgBz`b0bQJ`c; zXN=&$y809kN#Bmv>p&lB%5&3)rpV7{k(>3sOY0tU?{Y;OrwgmNc#Wsox9Mvtpd6I5 zst%jcXWsKP<Z2v%EGMBruIlLt_{~3w`iBD>Ff<KT#twI}v`z$9!CZR-PaGTCU_=nT z(;@j6%i-3)f35=cE$9JTX1sQlTW;SgG*T5h1SYHYp6)Zv{oc0$yQ&<4_iB5u6p7lt zfMJ6g#!~E-v(#=kVaHZ%i7C?JDUKL5YK+}C?+fGkW6o9g4d0H}1-)#)d(Sb2UFV&f zik7D?h|dl1xhs%(d0b8ztA%&EYwjBCcrZNJ48l0STM_?49|4+Vu9U)trfYVpHg!%? zA~KSVExUQ(*1FlD!LKi2m9-iIj~BMkBswbg$Wg8ikL=O2paxmnKYk#+;*mn9-}Og1 z_V{*B4a6&#R(Is8_PtWlNO7pltYe*ab5f!1xC@^f>yBF1fuAw9y9i@KDPqMAIRb*q zhVbgBoAgHS@HN$_HzU9JW>QT&gMCsBM7v>58@sa@@0f1NtL^VWZ+92XEXI8vcI`Wg zc0O+Cd+TN-94vn~KP~2W*U|NjxvDT6Z6$<}Q{yQ(0I#W!6#+vssV~O!q;(MIQ9cJk z%pY#f5KdKgBCV>iyK(m8d#ozXo`-f_ZAy1XS7@0U#`k}9d%^NowOJG?js$?u-_$_? zUGDC1NTUZw%l=~m4y-&Mb}I2F3O64ISF;rLeFP78Gnj{Q`(1>^xA@Po0v*rnXE{0H zl{;oq<8`D?L82sPSI-;of$bMvNuT5RBLDk5weh7g87T4)N&Mg&0X)jbjh}9V5aEOP zJM45ESwS_`KYo4M7^LV&v5YcrLs-x_ucKV-UrwT54cID1^J%G0@z>{zNiY-5{A@+i z=sodC0UPL5etU#YPDz7um`_Q&IS_u$FfGb-rq;Ryr=?=Ea8Be31guPa&C_ys?$6Dq z9SkZH)ssR1b-&I}dfs-w?=5JhIy}!yZL^x@nNlH9{2@U>8=@cD*zP3vc_4c81zKbJ zi_*$O%mKRBRwf?HGuEB{qm@{qIF?GK?0OxJcUoP2{Pvy0qct5P1r`Q<?WDY`?UWOO za@!3!3R`W&{u8I}8@qi`Oxy1MFP}9;qZ0NgKFL(z9|ZKc;mBDVnD}tm);7^aF2=WW z3da@#nx;Q&TpKO+OoQ1saMh4~?ub$~K*rcM+uc;^)J7)<-zr2JNV$t~In<%s^?E6g z*-r=9597cpbhMo+=BVnFMjmekOoe<?77f5{wDmdLf+O+Xrh7Sx<F<F~zMoKhY59u? zPGXX1l3mN(M+7MeUBRLWrU#88pl$|Z#~pMyPwr>eD;}&mPwXz4#6h$#ontz(0^Rq^ z@e-{Da~`U61<V|kHH7+6eg+g#C2Yw(OqdUsu;6;GpQpDOqy@t^+OoRD#U*0lM|TR5 z3qLO_L4E`5c`W9^Xxe?6NrtVQc}AVm;A7`O=@ln}_zRkE$hvw4ZFK%0dt!v2D9Gn% zGP(=qU58F<6?C_zsW``tISefRUT*1i80o9_Eq2|foH}bY|5hs8br%uYFvnd&fMv@V z<Dy?BM|7Bppt<apA~)T6!e!8J2>2I;&t`G2_j0er?Kor{=5#>nUTZ$@q?jduSd5cl zc#Eh2Xfm@xFZXr3$G31)PrVT93P0|$1JFa4;|7DQq|)Zb`x8RrxWXf8)Qr9`xqCRc zsc(+5P}YZ*#P5DK&+$$}i@mudsb=*7s=2#1G-jN&BUDl)R&Skc(H;w!q@DS3bDDPK zN;&al?}(R}_k98*!)FSW%y+Y^YR*=|*B3_ohJ$;@453{YQS_7T7CXlZKNxam@4rZc z;juMi<^d<qfKgj3I55-phd8{WQJfMbIt*=eu<&Fo-H%p<*zR!ydf&#flwmO{z8(Fi zm<VNR&lFl@6t|XmJ8%u9drcXy-rVal3EQxImUDWXC`8fLUz72yu9?)J0Xy!z31oi6 zin2W)Gy{gU`=Gjav_?js{VAo=by4_OyghD)rjAbBUo;F(y?9*pJTS?mMgq&;utxtw zSg9Dj_s-|YnCIf?pIS~}%EU%xvysLXuYk8Nxj#DH<nDeZg(gtO{M4HB>&WhxUuNnA zPic-1U&-L4w>6QpIf+kblQUGe4ie?0MZQe$-n&oKUGinGxBUmi$Cir?3>LHexB#vG zCjx3>in@XiK`5ZKjJ@jii|s}3*Pr324k!H9t%udi`jDCoegAicw}&lVyh?j>6X$df zHU(Sj=zqkStyc*Tkm>r-)|ZhA&x<N8Iwrd1ZK1NSKUWmyU9?+z_jE6CXDO?bTkC{I zf}vVT4EJ}=z2C=66teCgp_q+YBUP~#vsge8n@12=jxe=dk6T+CLx9JXgm7S@Yc+zP zaWxc#p@J`SGyg2KJx>*bI&^og>hpVX3Xz75!CIQ#?sSRK<P+S>*8YZaRxpr9Uhd3F zs->F%rlU+nO@b5o(Bx!=amboxX98_FmYH8~<0FF#F!6KznaJn9>VR<y1QriUq|OI? zN#XwSk}b?hWz5I#SI#Q^y8x%Ac)b+KWcv;fYG0bUeT0sjRAd^WK@5nb#I&}xqfUy^ zSy{fH1lwEegt|T!N%9yM*q0&(#s75pq_E`nIFnYh-BK9$-Oe^x$6A+m{O;0m6-9C3 zM&M76(n=lVSa{=`ulm9C^96PH$2@>O_j8^e&-ro)*~a2vj%L(t2*rc;2Kl_}fh;is zRu}@A)Nb{md+&NMWa`}hax03!%AGoBv~If#em5A?co^UL1-5V=?j*m8k-}r;*6Hg$ z??`$+??lPl=pGl$%p@u^Yz7pQS!rn;Sl2{rt`QoV23RdkWmJs-`E!sK1;PW#@BM4? z;k@;rOVF!@^z5wCur)H!3`!DXXe-=Uf@4rkfU^cqEp3^vtNdAcNE<n>jJ5O2-%;l7 zq2bc(zV3_GG#rODz_#h3GbXqLK18(sS!Cq{X#dGob1}^7&*rN0<oZ7QAh|z-6p5>V z(qu(%p|!r-<+l|qt1gcXl5<~sm`uzyM=x*K;1Q}3%a{@*8e6AkHc}GLM`O^-;Z;aS zOHl%#q0#TIUDKX9tD4T25?|zayC|me_zCfO)-&2TKj?m%uYt-Y(^|+U<y(3JuWJV8 zpyzj1m!wWO94Pv;;ze9eg6-VT=wp9z?k_YQ+V)zC{i$ohRp911of3yEPx>MEY;0(c z|BT5|-+!L^dSQ$iTX;zX2o=c5EA4iF>8<~w;s{>8=<Xk;$%E}dsJDPQhhJYtzHNf8 zq4>=(Vch@J$Y9XIb5d5Z8A)HW`{utfo)|)2=eXu%=y#_9<Pvs%o;P`q=Su#=lYS85 z^Og%yO$MDIt*+bRvx>YZ{8_@7O#nnQS{%qMp#^3*^j3Z$y(Ywg6=bNuxam2K2^Qd+ zg+EYHAu#=s5!bzb&8=CZ-w4Kd$Z_8&uCC5>go$!Y-j0?rLmj&Vf@RS2IyfBXr;mT! z3h7K^1POOpqGdyp@Y~U({?$Kv&)wdzDKrd!PhVVNKPOgBTO{~hFV@@jod=vvPAWgO zgW<RZ6Au`Dhqu<w`zzq4XH~H3%^J1NP|g_L3sVOiajy;*H68o0<+SH9%|yEF<H|ee z^nXP!Xh#A-#ALhK(L`aaU?$xT%^$kN{ik=v?Q?hTe4OM1uXYHIJFIjpv^f4Qg22oD z(Z8|k7{~XV_o5%t^KQ>BFETVvV_Q-<w2wZiF;-bx!m#JBC4^!nD#zi{Y`n(TMZ?i~ zEXJi>9?w<HS3@RobT#oxrH&(FC0jY#8FDKVs={U=qT+2K3FIFBpOZ=_H~BZ7(NluH zToJ%43B0pSPShBG3(WgKCF=A_Er#f#@XeA4Do(O%<74jF<zVUl<ui8$@9Q?b$8oI` z0jJmPe%H$@o@S+?0>crDnM1A|Uu#gI9+aWM43^BzeL2@BtEeChq2RLF61y9nxWWF- z-k@|YTVyE`)}S5W-#3XBN*qq2-n=?Zm%FHWf5flVAb0HT758-aMY$>GS4K~76Ooni zl}cPp<Gh-Zng?J4dosc78GVf5XmJfkCT7Of@Q~fxS;e)gu;-kMw}2RHP3MJOWRhYQ zm*HS2igGX(L-~oRxN|hHNj?3r#j$~JxVH?|O65>lBeUrJ8RBylNzZe8Nto^WWW``m z7tFoScyQF3#e$Y219OA;6m4e_27s=vLl*Hn^Q{+auB+UovBEFs=88glyN1s^4dszE zxjvzBc$KD4f4+yN!1sKp{1N%5?DIralr>T&p9%dnqNl5BQ_#*IxdfO{rpqk&hpxuN zKc&HW@3&HVzjsQG3TkTuxi`E}VA2~4Qrs6CzDdhSbYXOtZE?H4kfDhu9jfMAV~LNP zU%?B)`+FNxV2s&sx^uq=)|iu$^8XnAns{L3QSeo5;uY|+o(0hg!eLI&exhx1iVi=^ zqUU<oI!&N4v*;?%5EB>Yqcby_Tc7E}HR`xF=~l0|!qzhM<DK?6)u@@9a8gd23ri~g zEGLdicc0`)!a;YLMFik@yw+Ks-F#yY-8ZD@SzG1AQe>_;SC+}m8}9*&njF{D*9sn; z)D$%lwt7XXGMWnwSKSX<R~4mNwG4YZ58dyd{ond8nlAlxQ~%l9JxP?bc8>puExv{B z9v-SA`Cdk<UauC9&*EWc3?oORU$)5N!qjrvC!~iMtNL>IM6Oom?r=^aE>lXHIv1w1 zPO#P4SmpDlEysPK@lO|{WWnU_2%!clGulkT&^LZ`;DTCN`78ig@R<<WaT%$npyUUe zPv(xt`Q3`66Q=hUe3lC@W>h7V5S=oWw+dINa@6FM%4lo~nU7J?<oXJ6@a0!x{%vBQ zmt0Fl@dMnydjQOyR*_QGG@PJH(-&)CAFG6m^7L2uOn<^hH++?Nz<x=XsrUX@v(i4& z5lmdsauB4D?R($4>NINPZW-^&MwsidB@v46323Iv7%pp@C?xeh#RT<&tuwV%*9PK$ zkw_-Pv2w_KF=?j`juRCdR7u|R%BZgn5guRdA@_Snh~?e?Z7UqM8~FS--ike{ELK;? z+NW2MmC;!elZIzwI$h%SJymQwmHQ8A$XQF%Zs-J#zrQPC9Fxtqg>ZL7-umNCj+bPa ze5UtBYbmUUBL1%?a?pbyC^EpMtW9mi6RbLs@D6$K_1TIXb$={I5q{u(d;W`UoEI;J zNP&k!VHXWvsQGg9;$ycW@&(05JNB1gYDtM;ui6dQhY6mSgLVI#5c-;>ZC(3`?BULb z)xlBwv7*{)q5$On;)Nf;6tx(l!D#@U#;AEF6EBCipG^xR_XrrRX>n?FIvuoW5n8l9 zG!pir4MKTs_}3J}>VmTiL0d7Qd%H;CbfILQ{Gz^-KXc8@s9PJo+R-7TgLs3-upKU5 z;@tb_gHEa@I^YIG*S*3!+lH@fl#EdUW$cdMnAG48K3x8wRCQ~%9k-TNwaPLQYEL%C zF1Z{*nPkiV^}Y0*H0~eI?jJ%1y^ip#2@<KEilninwSN~s$<ltEhDh8oRG#ItCqU@~ zW9q*-jSYQQB+%>2%hQvl<cXiBPu<3_X>w%J{S#2*`%2s){Ok(~-SZ~U&kov{(^lK) zjnrHO`(K6NJ3k0^f~A^yl&ybc@Yxb2!Kh5|nZiQ<wvxL((9&Y@9O*?R(;wbZ5(-4p zceBI=1|nEk$^=M{xLFUM_S|HVvwV<s*ju}p$-n-s(;fMZwqe{ND@zZ+F`(IHXR`&Y zSl%D5e=IafK+)C^eD$?;eXtM@m~=QXpqZJ<)!_1be-?Ily<0rHC5rg^iNt+w8W`pM zE+?wct!HZ@rGY>V`ofJjWniBL<q&oH=S=;(`uBSAZ|$HKcEy%+z0=43zC1V)G)I@! z;f^DW5RbioX*?YCWwvW?uFq#aXT%#lpZ9qAwvSHt1hEX`c<;B!3RH40#Az*KiVsge z7(E_}V>tHy!+-Ev1Bz_($;@%7C_L8he=Q@CQRo;aEMAss^=!JTz^)t5Wd2VlMp}=U zQr4<jgszpfd!o!nLSBft5TQgugi*&f-ycG1z~Oe7<R{jiCsBYc68gBMJ*%MLzZcWI z0ldSohheeDw}+Y?W`78_u&^%&RE_9>CafS)rh_#OKe}aG#W{^CmzA7thF}s^T9s|g zRkM~>lAcifyWkrwyZPACmM<|e(c_F(*NF3^P(NG}g2U~S>dMX$<L{Q$p9<9@V8T&M zIUODyW~=JSo(spMyG71mNOy*H>v<dTV?TKl>ZnYqs=(Wl$;)%sv#0xl4VEK!sH5_{ zgCg&dhoT_Fbb|L{H3#-5tqG0%FWQdSiyU9fts+1ZwmbiiQ=pFWztk{lRT(|a$dPJ% zTmf;juMDQ;a`VfVx{f$2y@cBAb1_51e$Ko(ck0&tb)CxCC4t90gqB^DG`nVUnrs)M z8$<tuEanVJ0bA!2;tHKvtes=}nr-k#SE%dB!p#8KUZt}PZ_rVh)<vPv=^I>Wo)a5Q zUfW4YWR34##mh-7zuo9`wEg{9v?_w7%Pka202AVMRJh420}a8hz5g@uL7ux%L5IH9 z{FwHt*GbjO=JSRG-5beNw6$%cM2k!<&UUE`n0K;o7y%2bb{glptf+1<RIDIs-S32v zS|N9}6x;7^FU@(<|Lx|d(T`HOziGIuADkJk1*xTC8NQzeVDjcNJY)wq#;6z?t^X~V zfQ2gamqN6wCGoaVEyH;CxET+$_J8abJXiC!rvGmdS(baa6?49NGsNH++^NF0x!_0c z&@xD!#UpYHe^Xt=J5XY-2FToLT|S&fPusZBq};LDm6RrWcsZmw0?()QFOL@7Dq8gk zg`xOYkfRhz)dj8$UIS2tOyFRAmX1G;sZE%AQ>>G5?69DH^=^MAjvW5D#cA*rpnPaj z7%%y8%r$TPB!EgT<dar>sLe1C9FbIeyx_2MThQ=z7FIAZs2thzsej&Q=|`PMuYm06 zNXy-V|7Dv0OHwA9HHgRm8l;%V6ENZ<%q#R+FK}}F9^zm?FYNCFWsCj-iSyrmUNmg) z_tW?9kAutttSu!a;?ew1!sA<%aX#APGpT?o*PrpfRQ`#C<?Z@F_~zBR#(*GxWg3}} zw+9S`7NBE4=U&)!XOi!69V|n_wZn4lB<{mw!Bo?I#n)r>GxN$f?Ow{3-2={yHgq%f zMvp4^qq&|tdUfT?Oc?oiK~Y1|BsD)?jMHv3;h0g!V;m4P*3n8;4v_zHW5@b-1bvcP z9G+YVX(W-5V~B|<d=YyWrfbnOqv0{vyHFruw;PbUIr#1+;5}Dk^nShga(f`WhcJjy zT1VR=&S`5wW;$ezsbKD5KH;@q69JXzxHG7x!ATG|D6VHsPt2uWZ``l@(&LGMX1X#Z zR%ruKs?B=1BPNPy7*|kY-da*q+$qM-+n~=fpB;!HaePEAw?1il^tFmjlfiB6sQZ=B zt0AsaYlCE%7Z-bve%`W!e%|^HrOD*n`G6}#pr$iaARfh9v<dmg>C-~jH?>vRdXo3P zxwI4azT~&+Jt?T~dN=Q5C5emu<)+SC>}m;t*waEBL9JAA=U(r<w>OMz#lplN5`xdW zcRNdhO?|AY*G8(A8qh_TwT2Nu4ikVFAO0cL<ejo0yAVWr2|fBM_NE{U5pE=96+{WR zeH?9+;k~z38&u-)yI<ucFyGLi@P5m%;MqB?XT`+NQ1wo(hC&GxF^I&HvLLb0h1a0% z!Na^qgydpwL&4R16In10LJVbj-ygy@UUN_ETKt-y)s3_U!>4x$4rOk}ccc=Aw7vCj z{;D9?6eR4hYR_VBtu-oCR$b)trl4KIjRYmi1j+HZXj6pnk^!x78@)4Duwvkb>HP}c z+p8$2Fl0Ioa%b;9dyuuCQJTBIdNaAV2_-s$;*2=Ri20|ERZPL+mv;?`+tQZ6-7a== za%x+-GtXF7O?NL!O-EmQy?MRq^v`qG1GL@isv6%6^7lijU3|P#bzwuVD+xuxGmb8o zrH|BTOqAI}Kp91*V6q=6nX9dg5MIdv2@)cFUeT!FwR{qF3GPQgD1J*=ahp9}*18sP z46vC%Tz-dA-k1p0V+`qFqiqzx$;2ALlx?6>_p%VM*HZ|Gy=F^2Sv#fQrU2JH-sHWb zUY2MbE7^`S6mE(tV`Qp6DO`fke?}Lo>))|ul*B(2rQF<Q`TO65*G~u~shA9$YIeWf z<RL^z@bTC_A-bTQ&Q;fsF2#x=x3Sw5VHUBW6Y?vV)#gP-RY(`vY+DhJI<j!c^vnU% zI8>X&^*F}ya0i;OXmFU!W>ZD8py}4q$8)>S<V|^8JXlA6=t9OX{6^=>W_d205AKcz zGT1GcVheeE)RA`RZ;%EVo86pN%q7H=LmjYcs39BA7mg5It*aTiYRXJ(WXJv10|(#} zFHZ@89K6h(Z}25n4(mD=tR6%02FGDmEn)R~^j}@sEx>%)99`K361)Pp>p%P))*6c# zqloR6oSkKKJbC*=F)YqIJo|Bcikc)4_@7s50xv`wb&mPhqst2i-`!6*hJ=O{2i=}r z5_7$d>CC%cxr8X*@|DX-L9!$djV5#`d_kFx26|G@YH0>;g!Wx`_vksyosF^gZg1Dk z-74Q@;ql?ZOWkeP_+tB1kY}grjPc6BLNvkNb&^S`#LhGZG%`R*ocxPDqsp0~iAHAT z4D<RJi_Y8pyye(w#0{$P1S_>Lyo62P<Ithp$Z!CHZ!mVFB-CqVkvmN@sltn1({;ti zhk5O76;(WJs?%2-ER)hI|Dn~xC4!EW%o76Fbw6+KbW-InG0RO}3Pb=IwNf^#<GHmB z)V6j~w)=e%@eEhp#(%2nDUYq^V@NMIcN#B;QryaFYNNt$j-zBT8@K5I2ORE~JB3BJ zI9{*$_XQY1J*D$Tdi#<;8a*@GpF|mm&XVM$`hW=wv&^9N>7x74mCOjSvlsDGNL`B8 z3jMAx`FPIg9k~h1Mq9BO9aHNqGSRVh>*b$vJMotZMU4?Bm>~pQ_;lTj!N+TT=n_db z6Z=9je%aQ0!BJQ3B1VMKb3xk*>uf8qD56B}WPbV7B%om(Ku2V4>hq1M88Wl+WGbe} zvt}OmQd{d2LvKUh;5Ej9@j)-mbLDDY_tMJ~7`?MzU~^yBA4q!~emDWXQmX8nRZ<Oa zD_BC0Vf<=`{_$nk>CJV}*5~4R@g9;GV<v-DS>?pup6;+>Vr5hOxDZjuYwq!(dHu<q zsr3=7kF@=wJw8i`-gfk$$)6$$Gb<x!zLZu;=R9ZlyR}!gi-{cj$zs(>(ux0Tg^|hD z3{@;X#22ni2sfhmr4Gt|<7pD?P6VsPWYn7=MLrtEEHny90y=Umah5+0maEyD#Je`W z`A9IOzzMm~AwgUu(+=2JHuB)4z0;6+Tz#2r`HR@N$PCyTXorHKJW<CUc33INY;Q)V zr~uMI0+r}MatMn{jQm32r~0BYUZJ2GGWJB-?rpt|C+hz=X)$+b-W(hL-FIAUWjJbK zDJ`Z|<@gu@AaLNlN9N98iu1~$*xTEK-s9`V`&8*kQ`fp{-=lotqMACg=%=&L6@8b> zkBY=<ef@EO8LCCDL<d6uSarifliTs}F=*sLs^_^OiOn)JUeAtbdXxzZtYN?WG>6rB zvb-Lg(z;Y@Gr@OoDtLUU<o{w~_j+)a9&SXa>ixS}2rwJzy7O?mluqek<vc?hbX4?w zczuXUV>Ik52qTrXvpeU?GidfBjT5+K!S~%_Td30cHy?(!J*4t47<*xYwIseuD`CeN z*bhQ#{dG90PV+|M&T<&L9;ih)Ygl=h-`h7c?}AOtG%WMVSXnj(|7?Hs6vEcy<%#Xn zM3$=kH>yCcZpV;cHj5=^Vpi`3N=y}>Dr7fNCu}ph>3c@;xZ2aA`|`zfb*Yv=C(j(r zbtE6E_x^@q_q4}MKyvLc(GXZ<+t@z?)wGlPAxB$Bgbi<JVlY=Ki4ULvtLNE-y081j zr5So9>`11mVsdz=Y=#8LyV=p8j{ReXWA<%G=3Y-9Ube_-?f(+c*$AM9lScLsVloPI z84APaqC11YC3F9%b(R3z+JeQ4vx|(6ot}a17~SI|eh(KoKjgF?6dAnef>Zynp)e9O zJG}W&pPMsm_Cank1YEyRZ`;L{_%AQVs;Ib9C05u%DVN!uNYrFHEjk2a1=(c3Q<6OY zrU-&}zK);)G8G(r{LdW2Sr-%g{k-HK?5xedDLYLU^b;Bq6$z&H8Xr(LR&O3&!CX&q zPFoK}_At_Xf%}?>*GP)AvSX#1x>hCRT5+?yBqW~p=)#TJ0<`re9Y&RO+m(Zs=coWv zgi+!?Q-(pRwxN{|f^GB#OcgPgy9gC!vHiE=ahod_eo^(4Ld0>4?Y{h07BtQWV_UiW z=eq^(LbA$1_IVtc0N6Dh{8~$}B4Mq8b9;T=r~B6aC)WF-J&&Hb+a`|t{j7O?fV=BX zVIqSk0DCZHn^uC-tiWqn@I3N}0X2P0XK{qIo{Qx*|40C``~I7N$D#BBGMeSrJL&JJ zW}!T*q{d<mhN-frs0FKmo&CedO;(^!=l0LKso-r;Ov}TZZ$+-5FKS_1*g?NV2*vh` zQk=!8bM`Ci-3^dW4-YqqH(sc%7b;svX&Ra7Yn`XME3m%BZMn!&kWGaskCUEhIPXtl zll$DNc<k%h!>_0FCbczIlucn}^Voq7NI24g(Iv5uu{oGv*&i$&JYgg?qCXI>ybK!T z$;1m;4k;EbTqfHmr&wIk;;L0JFIoQd3<l^67q=Q-!<a9G*Zgr$Fkg4W;WcayXr)JL zL(gE6VX#^TOa(Jo>rk=7xc8Y4t_H~ux|IY%oNS;C$wQ4dNAavS{uskV;WO^9x1aBF z1A3{8F5xI>HHUeX&%eK*yM%Rx=kUzi4ss%m5vY8nB-xvM5RjFSfSWB*So`eYaWc;B zao4!0JxyTj>zut!f&m0BoXF^^ru8QsD-G7-FXUyLDXsJ#uKVC@hgDV_JUqV+Mt-a< zYa<9-PEL+ehU)W)P|~ToQiQzC==N$>!y+@39Tk*Yfe=42mbl?aQ=0B?sE1Ww3@yXE ze>qR<18Bq^FWqsD??Laz)4%?8U(0wV;mj;g%S_>8eOqj)FV#U}0TpjM?g7?sht2O> zH%XDM;)S2-W6mO7=FJ{P?}(%6MkVsyGLL087nU(wdKNg*=?*nD+OrXTDFo6pi#Suw z#r2|1y}-KDq0|5saXbOXp1H!Jx5RCwzJt17D%yN%Q#2oEoRP7CgImo=3#La!9EI0* z2ISO1M2ck1kNeWZo7}{MgQ}2t!QFbdXU1Tocv(pPn!a%^n!TN2kvCYWmAgIXm?FSt zkKLrI&r_8s9tyzdrg4c)=c_-&;u}cztL+bp&CsfEXfs5aY4;Nl-s=tEv#aleE_~zO zpHGagkRZHtd)Q!MhIvI9S3N&N8+zNj<kPR+fH?#dOMCoe^vVKzX7$z5=l8wU8+Q^V zH=xDpFslF*dPX$?6)>vpT8OQl%FpN^Ze}(FtflwYm$|?^VK;eJU}(D{Zv2LBn^W?4 z;1YreB{iI#E*v%8^|{Z*&K|opd!og7jC?n?r2%LxhrPrbxHsny$LXq=3c4IF)Q=7Z z>{*$7Wl`;PsL+U3ERL2RX5shPJ2<3goWe_Oyt2BgEp~Xm=&?)OBFC37A$g(Zrt6Jc z(`P|u(z-{C-Y=A3-F_L$PHF;JY>K#~<FNy?yFO>o0p5Z$c&w43`hs$hgU7}aN@&&< zby@bq<)H`1a3!ZLU`<&dH_V7HUsBG}qxJsEl=U4j(0g?DdrBg1Q-Br}-M-T@+zL)o zlI)`wD$6TZZf`(r8&mF#;CltNOsa1hfPWxsdIsCbF5gEe2||)XF;U4l!aJ&*q!uf6 z|HTMHkc7LBs6R~~Vli)jshJ}Od$u+ysc#zo^QQQ?_q$`|{%^+4h&XI#8+}AX&Pi$t z=Pm{vvMS!S+X3{2BA724;a*WYb&s|qG&blLW2Re1cQfdF-B(yU(fmFV3=@Q1=gUhh zbaKPLte=4~L|<8@VwudG%$NYMS$l*!$8l+W8L&0@asz{NklrxBrh{AUK8OfSjXEY# zPfF$ou{HEK!X1bvX%!cnsREm&`6i^$<K3L?NU3361JB^Jy`(Bnr?Y@*t|OkF67xZm zTS^B^V&W+tOyz3Kmqe&YWH1s_8u#B1dO`)6NT#VRu1>s8cJw7pb`9+!?Ua#l{Psp0 z_j~tcYJYL!>)&dGDl@85j^S4|XkXaaS5B_ND_@%CZmy4e*4XTd2f5d%VL9s04X>7d z`=(<BaFkux3MHfS3p<1MDm1Sr+ApTom#v5|t>ZZSnt7)@>0!V^sUVGeM72nfzS<2T zFYT+jDD<kL<Pm}(<;V{R(X7+)@p`3-asp8c_PaJ^kkqMs&s$i%^0(Aa%Bd$}{U zVrS~ZKa=+`Z!H1FYTV?M_A)_18)vB1&^ndqYS$hF6*x{i!u4G7u(AAaU#p+CQ?ebl zk&;twgb`j>F5Ux#-}l~mD%sMyjf8UUe_P+&5+v%^DB4OT;@*9*DW0kmDXLQ}-i{B8 zfN=)W_0I{Sypj1@G>5DnzMe4t-kwODtiz3q27?m#27f=t35?{u9kQJS7dbY4o?|yK z6VZsfTU66s>0AEobsFS{beW_X=uVzej0uyhDjd$Ya1hW(<{kma%ZmN-u)g=EaxY_m zSisXQJNk(y)8sGf5ub-Kh`u&|L0Dnm8*>BN5J;Y`@VKzFmsw2pS9S|4uSJ>FGB$(8 z65_$BmLucT%U@jWltj5~TPN~aVVvktJ^s||5T582&Nb4kmRo~S`my2<xUJAjJ<RPm zosab+tFI$_vmIWp<b^GX;6mWk(a649SRmZ&GXf6wc_#O#I?+sMjyJ8?w5Wt%v8r{~ zLpViiMiD#j_OV(hSb^(2b;splRHeGKjbTw-j`AOQuF;5Gg)SZA7s}O{k!WK`!(UvK z6Mjwa;(K~h2zkm{`77v=5UQuz8u@Fr>I6uSw=G`GYDh9)$1G6ZCa2{Y3F;d&dp5Dw zeWKbxDw=?`lV>wR%P5|OyQiIN^Ep7`2-B~Lt(IYH>JLokD+8%vYok}%xriz+Qi97u z8b>$NhMhje(he6;?o!zDW>vJx3}==g0?CQI!u=1YL)~(yICSK4@V3vN@<6J2<82Xh z{>hg=qMoZR=U=aV;j3zIn<$vUr%z|h!&Rg_twK4`h1#mKiX22HmYzc5k<MkdaW|ds zOy3QxacZXgED^5|+Q~t}-k_z5r8$_PdkhdxXYA)ap6-dOLt)5yME~#|@!z`EZmdgh zm+KdJAe`n)Ng*|3<viicwN4j*m0p@6F;SBui5T)Kaj)SWL1VwNOiVE2#W4$t_f||v z9rrg}!zu2nM}ckjm!ez!Lm{3-Im>mW9@?ax=`r#tQF=D_4}np_;Hj%ED&xdfD7$2B z8Rz=JWGPC|YiQO{YSY@>Kav_n2D6(<?#1iBeY&vQn%#3<62c%dZN~s_*Z^{i##7rD z{uA3nH5%!QyoC^L{3f=veXp^e1N8Ebn~pGXqfVX4VE~OuKDzR+1%F;HvXPsnD>G{5 zp(>V)?pp5YdNwZq4+GQ*2~mvCvTHUe>dYx;q>DCUz?+Ibn<5(h7$O3m7{{spno&nm zg!3rC2VgBDH!rA6$ZTz&(yo2TYnbf^tSw1c>%vV-E--#q3v8=%MU_@)Yke|FI^gE9 z(kB$_l_CbCPtaPlNC7qyw_JL)+!)H;*rstgAM+eRt2^`S#&jvwc1qb!OH*Q!$*_M& zx!n|@QmeQY*Y;*-+qfE4<4@RuNlYvpK)-87M-^V-T>F#y2wbT^-tbT&3Bb}yZ=>wY z@ffN08ZmGaD*l)_))I?E=e8NX%wSx?7-q^H7_6smrDGecpV!M;7!^@^)=6CuRdqNV zjQMvKolwg0@lq`Eg=}BLT|Qc8;fjoI14{P@p~nxjss~zPtUBEyhpFYU18cbrR87h3 z$jRtMM&B&|K3I|H-!m^r-+hvI@`cZ&))!l_>DXCd=8rNpYc-Ti2}Sf+RsNNe!9`Qi zguCYf)Pg`!!eHiJGfH|!UptR=lfg%<Ycl8Zm)FsTPBq+c6ydZn=xd8&-Pe_^KgJ>Q z<wGWRuHF)IpL|&(;SIt=UO`J30p1@#4;?ZTY^kccwo==F#l!GeTZS%DcX#V&PZ@qg z0M>P$C;;ux89eJv6(;S>BYC-q2?YflrP30lpOk*u2n(=97CU3OgztohgTjXTJHwUQ zsq+s<>@@yZ8bqdMVIr6PG(lOaNGrbhm21y-Lv|J&Q(*<@NjfdXi}7I*zL)P0wOZ|= z0w^8@W-&SF8Op&QRs=3xj7gs7{=h~KmyEM+sOqUih#y4TR?N=5pt7l%Mvt0_122#K zlNt^x$>)9F-#2t&T%^8zbl4524QCf&^~F-$z4e%3@W{MhMKD(lKO<<T<y{u(szJfP zJ8@?q+4O{nKX2%T4sJSGLT0G{s!)y=$xBCnmX|8Kc49uEQ8j$;|BK@b9pD|f!2rWi zV-xFR*B78KnX->5v+S)Ow<Dqz(_8{xc~M=n^7dY7t3F`oM1Cbh4r1zomq(*BYhJ04 ziJ*oJrMNQh?5Cn&hPn3XXedf>#HE18eUdR3BD{w%5gQAfr8)|FNJE8T&=+;FXLMIH zx`|5CS;;~an=hLGzZSyKBB*p}B|t%Tyzm&0J&^pJh^Q>Ob1i@EZK1hJE_1G^$Kpq@ zPxY-1!7bnruAI12z%wW=Gb9H<zKJ9lW)#eTq;rz7oMzIV#Z{Rs;+96wuQ2L`GqHg{ zd-EW8x|j!@;kT7AUsd)I-}h>qhFh3#<WTv`7y-T|gNNY|*Xdo2Ee}ayKY66ool`b6 z4S%rsk(${sH3>JCd=fO!eqT<bUX#b7gKdHlt(nNaI|F$7L1DW|V?NjOH0?#bmLp~x zygpwk`sIECG?X|?xf14?c={sDiYKT)aUf+Mcqj+!g*QQ8C~1mJ9N1K@;5Y)E#QvfY zfj*fEAdre`bkOUUHsiO%CO<4T)HTr!MC{1c&b?t*uBQ+YD1oDEhW2)A&0Gf9--=_l zCQDP2ZV`EbKYW&kK5aC~)1?_&2RnquUlgUVo0y5a947Qf(GFh$$*DJo#jEW_*|?wD z=gbBVH)BDmI40^vi}P9K^c*NrhvHtq7o<=U&zN6!Vq?znyDo2-XE2u@;tKHC80wpT zpi^wj2DII=)UU^NKzICIrBMIk`$*lhsDrQ#p`J>@!48nF0~(AH^ob2-3<ipisZ^^x zKTKK0qoBvumV^YdC$g(hShbK<09f1?DxgzATNreH{IQ?UX<{Ju@j!DyYAk6mWs8$? zIQpjS619Ti;yq9ZCt-Y&3EA_vl>&>m0l$U(7k6v6i?Aj=3Rps^4@&&<Wa)#w8gS~( z|8BV4{xZwa4_-?{&i8S^K-lpGou+{vTCBuurh<Qir^xuFprzuzP$#&x5yoP;>^?RO z)frfOe(TDU5?cKm|4G;cJ~*8EVUnffJiWK!gi6TIg^r?z;=uNlN9bq?fl!PI^Jgls z2=pKvun`B4H18-%Q{eF+zppBghT+2rkO&k3z1o!rgJqPg%h@>_DF9)aOl(sWTAG^3 zz(#PfXg;k;tboR{A{NIc;VOy;$RygT<Ydb@at4&iHuFX4O2BeZfc(bFfSt&H{1fac z9=SL>LU{ewwjg7I5KN#&_9?fi{lxUP`BkKN&^2`TN$};l6HT5ldvFt4I3l`p<KEMG z%e&d-AbjTIU>scmZ}vTKhO<*tCOk-M6_HgofOSU<@GgJxxdzeRPg~#YvxWF@9W8}* zH#eCb{)K9drbWY2(0LuIC+C!ERoy(HCz3I<i6zrWbPXjTnDO8+OSs_XbyG(w23UXG z{|1|iXVP?KGswyq)qZN*8=WHbti^*KzUDuj{_fF3CNwPQBv7<a^szUvUfvCCMP<6h zR=5irJY{ACC@?R4O=y!$zYm5~Bwz*kQmfDrF;9Oj0tMGdzK<e_*3YwVO!kQ6NiL_( zA$^5NwI4)_fDMiaaz{`TDg+^7K1iP}$ErV7E}wvr<A_wo0tE6#NoL~$pC#n@Be#lq z1z2m~(f+%pj^s_z(_JJf^kuj*>kz$AV~I8T8hRnX$Sb({v#TW45s1DduNueKDxA4H zAPj&utG7oia6$D^AHO3*-1OLd&&vlaFN*+8*%R6)x(Z<n4`C3-s45Pe!gso;1N=qj zkrq{f63G>zKapBU6w*3eGNT3Mv^^@HBQv;o$h*r9nj~hE_*64S*=1wcLYh<%kKK_^ zfdgePa><S!fGAoRo2|1(*llU(8fLMQ|6(WOfRX3!e*%NqK>DvGQlBhKO?<$S$Jm8# z>+3#<Bua!X?HmOM;6{+J*QM_aCdVJJ-@1<1M&ulgX^|8oyQBs3&0+)qerdudpzu*~ zEqg@BbjieHhJCfoy+Y-XnTrm3M1w*TvZ?=baON3pq_Y4IGFiI8IFgARA_P@+*(nF% zyE6{u40>&{MD^t6<p&88u1d^e%nD+YFaRMVDOMlBboyXNTKM0!&iy(Dv$=0v$z9}A zA()Z-ws4$US4V=8^yNlo8J!S(q!l4tuz(BUE@Ak)bMs?q3hQ9*%Ixn90@rBsD9dMQ za~og@XX4X7hvGX<#rynntnjeaJFRSRisg)_QwWbiRs{|jzTGNDfZlEKz~{!n{-d!u zEiDeT`QpvZa%kATM*cgKO`7ZMnN)G(*a#-rcZkF1Fm+r24|*??Hamqb`#L~v#tRS= zc|3gx#gSneBxi%TLv{{IQ=B8!KUE{uN}nNs4$ZrN3na4zV;;Sdf!u%i0C(X0wqb#w zDgCvDy`>;!W*xBOS=(?Z*<N9h^VH?cZK%=5b{dOgDlNku)*Fzqtg@8kii4`Nw>(y; zZTW%fYq0jS9D({KO=81{b>Efq><I6wNaaHCZ<Ra{=m#Rn+)}!UKTY8rBjKEeDsL+F z?ke!Z!gxEtrYK!0mZvaOkG$<`i{0sWi~@r3XDUke*W*i?0;ZLwPmA`Lmxlt6Dx7Lx zZU_yrUgkm=ktiHUnv2Q`<ft|F9sAO;WW@~^xFo_FOWD%EvLW(iw(5eiuICCMoPgjD ztb=a~l4bs(KYLA>-&PM$N)$451uVAu*eUyHLOiONLCUa2U6ZF@!1913p?2<05K7F} zm5Rcvn?=vBrlRt70rV)7U=Ud~NYj+_k>aB*zp&!Y%l=XV)vCu6fzvBIV}iPS@$*~L z1yGGS3Gf*~CiRN~+H2Akr9LUFI0-eHXa<xaUBgf-Y~eg~wFj2s&nGmTqDOd)1--P# zf3H2&ZCaKnOFo7dnJ>g^I))06we^2@e@%C*{LJRS>flJ5p7efa?~{YV+z~*hRtg31 zEDtWbOLH|v#|f&EbsGyETNc&xvSF8qu^!|C_{q8{{_$fa=+6=f8cz(kQKJr-S=Q2f z@(AMT_=BIv-EaV<k!XnD+ua0TC@vg<FiV;P+fA7-I`kjhuSs~Geo2K=xXynszpJL6 zRoTTU$?@F(Bitj|2E?eCwql5KB9dn%u<3h+HIcjv+%qGPC>UW{#xH!QGjhy#uLr^p zHxLx&q7EOCIB}VS?l?i}B2^W--4ldh*da~n)w8vuG*B~%)Z!-<XuYx<tdX{2j@_!q zEtx`IV;fe5Ee@+u$q_%yRSVU89H8o`_O+pq`_cb$a4ZgxYqg(d$ve(zL&{`;jG1oK zT){coU9*wJ*$n$c*94T)!x!PPOuy%>8XhB3uli-aF+0bQQUuB{IQ<*={x|FdQV$^R zP>~|()zC5;&#=gm5ET`z@zt$!pqRzr3okP3{4jUBGw=52n*~*m5-g~_xP6_W;=fbj zT9p6ghu*`X7|C-Gwv<z^Xo|M%2Sw9+z48(zazv4y!VgM1+1}u167II(jXdGpCkJG( zN*+>uFf<1RqK8XINfBqF`9!Fj(CXAc`2b=}j*Kq0RX~gg=@iu8K*T@mA`2iHxD@ms z@j;pUxYysLc)#y10hEtb$86sP9TNZT2y$?m`-WH4POLE0V3Xm4>}&8@#;hA2=uXK= zbKV?9)c?db5{KBS$kA!6_U-anOViI?(Um`qL?GM|MohculNImp^Y6Q_w)Px!A5$CX zCLgXku_Z6t)3hAMet%LV(~>l>xMpWX_(YH9Mm-aZ{WD+dU=GPFo24mOx)0E#nz}kC zE7)H3&f7-x3W*moX8z*Lq)u>J!ig=Y!+ml>%@K$jc$$E1e%&G0_xpzn`?ELad{l~j zoWev8w&;G_ZOj0k<zp1f{BtpKN0p9}4F;%bWhsvl=}*>xg2;$lS86ZBY-%owIn!_$ z5F>ALa;R%6)MopAT+JGvqoSzk<py${wguYv*JERX%#WFM!p_d?jbW$?-;V3rZ+|BV zMmO3pIepoQAL6OBiu}gE$w~<a6%^<x)CIX%mgl`;BkQ=R&Pf{}4NHm>4qRN%mWefw zc5=x1h~*d$%t#z`qy|y-!1f@^zUm^}ZN^r&DrJ8pM?nWeiPWNv8!~@!W@es-p~2vw zk**O&o+?V;`EZ?)Zk9F)o)dD@F-VVJ6p<BOaf(;noNe?gT9F&C12peD@dY6Qm%Y?{ z+k}cFYO<&7e^1h@C}pQAKHL&ns>avimPLy**d~qfXs3$LI5_}fgTEHip((J0s=F57 za^v*#WK?1i;s7H+lNvVT8JvMw!p@!6W`<<d|C4s!9=J_D<tC`EA}7<>o}?Bzy`_rg zXd9}sy&V?D5;={~l|H7}!f`Lm=a%-;i-l*tD#5LnZZDLY+|g+h#;+Uzr}n;YWn#nj zhr&}FvEEpNC<IU{MM9H_8QMn8wshakQ=r+_;sDM8UCyfx023W<FqXl1;8N_EAKNky zYA~4^wv8#h^;brlLt=k9GJ!4$<z%Tbf28&bbxN%YGQ(cL4)RCAj7E)xTTVyi4~Z$O z{u@Er{^!e`vfiq)eF-cI3ga#fjW^BRFSrOS#pV(=CuEzZ-+Jcg)LQm4?E%M28Wmm5 z(D=j{;sxhRfPB8X>Jy`M`4$UOhMp*Oo{l6f9|5jw<#g5c@3g$_j2T@=SDu`uOqEBQ zKv0$^Ao#`m<?1jI%F|Dvt%B%*U;fEX5a3Yq+W&xKX13ium}J_!sv(mM+$j2-0GTUg z`td)K&cUzF|9|5rn`<rGwq467oa`2sjpb$A#&QeG%V!x&t7Y3<*6;p&e}6%b?sMPo z_Y2qcy#C~cc#LzBy;{F}^Rr{!9+OrkN}ZhUiy`2r$jBvubDq!LW#9sY%Yml?tDi~h zie?zO2qat-I6;JCz4Z<(%XB1XB{em9x;%<ZS>L+5fsIsq4*z-pT41Dko|UZ-J)kqo zFmz=s=-9YEcua3t*#JE60y}E?K4*)Kw63`!jqbjD67S^CPe+zXi8t1oOi1MUp!w?> z_VEaKs3ZenE|x~jI7nd9)FGgI1(LxF6@WIqkYeMP)z7N>V!U`r!2*e&{)q`?feMX{ z%R?7AR|`wO345-x0SkE4Q|#|8w3avPm|u4p+x#|MdrzyC+b%DMf~!+t_@b9W>tg`o z&eO=vA@B~shRZ_jD8eYr1w;LaTDx1aBlhR7(%Ai@6jJCozrMl>EiFUUX*3j;^!075 zZD}m^X6OET+<h7>if|cRv~umOAL4vTl=kr!t0LAQ`+CAD_VpLSedv7|_EpO%%!cv& zdvQMea&piYG*CwXeHb#0!&3)guG60H@2hu%?SD)ip)&7a>)1xFbAZ~oj1H%_G_X~x zXU5`7kf~aCK^Ak){T%i6!z&7P+v5cjAZTAbx(cFQM7eWbL1AjCP0Tbb0Ca2pGkhKn zC~NCeqdCmkHV5*5@|Df4amTcEM<s=V6Ne<`;iF<hh7z0PW@zd=wCsdCIB7SoAAfKY zmIQA7;rdMCA|OZZhMqzPHUkU<UN7CGC+Fj!pEl;a?}ieJxrtu1B#6Y1F(Pi&nO0um z0t@hvfhyy~^;sbJD%9ak_tytz*RG&Ltp}hWl9QaG$*ND10%#ln9^uOGELeG2rAOu` zF&I_SWw@`vSbrdd++n96gQUNx54GZ4o`j>n#b|8Q1z_XPi7zf1?%U@wg{OL<N3qei zK>BC!fo)WMDp-l;BiJ|hhSg>1n++~u&V*+8jUzViyx)yoY>q%uZ?BYJfOwQl?k_E^ z)U-4h(@Z*A+R_fv`yR(}{W8@oDPNwej6k05o=F(B(-PAMh0^z@V{tvLFh7pb7T;8& zm*>{slVojA3)*^d%EhwuJ00~y@ClcJ<s%2hq#Q6EO62-Z)?w@Vb-AtC{2<t{V5IrY zXt=}9;9<U0L(ttC#$%J_7DmcykDE7rHax4bI}WHPxIdYajl}NyxRcHYv~mZoH5>C% zax@fima$Ejjw!EdS?M9`>MxIYBurY}@AP>e-(*}q`1xAe$9!Njd)!f2xWG!7ty?5Y z2*vhgN0&Vf)_&0&c3Pd`$RwSZZ}Bi8=9O70Ki=PcMBkfhx?Zc&76~t@;*jrNr^#=r zJXgk5_)kq@l;MSrVH9oeLi&h8;Q90OFIT*9IsssM7Go#;^YpYCoe`a*jVr@?)OB0; z?i$4%59oD(ysX!kHQBjlSwdry5(ew!ZQcuCUbV!AT$YERh0Q-&Kljp_b`#|d`XOxR zrc18QBzG5Ndf9yk4cKpfn{dYdHy+*3rR+C{QZWN&GE_K#5Y!<*V9$ofOYPki+&n#N zyY%)g6X<No47Xr`>U9=Wc;IrtFwDR^t9|s1okS=T7!3TuQ@ETv`n>0GLXp%$n0Q>u zFr+l-X&qH+6IB*T>kx`}0NI+R$!@u$8ba`68vdA~morysKBfn#!E5!73H1pqjtc$0 zG5Yq1%a9<I;3*TI{P7p%>`C`sTZ4XU=OETMEBV7GXslzv!Hc1`plA9)ctOVqeOBsc z;Q}oJFaVvf2<O}dTI7GulXllAh|<3^T^7g^XtR_X0$zOZ*$m}ra5n*AyXCKMAH7O% zKZNPFHq&(IfYeUI#dlLuL3e*^?wCNHU#s`Y|24U?v156UQ_H^RZsSUrE)|r~z;~*# z-7JoC;PEJ#@{rUUR)WqV({uBDgfz)O^iaLRY87}G8{gW$sQY%xN+=>{3&A9Wp9by< zAeGQjz|;KUYo`-1hX{TrDqeXw^N~%5&k_<S@LKZZcJF^({t66p8vrUGV46jB?Gze2 z>g#O&mR0^?{_^Nb7HH(<7x}X37|}Dm+%W);$z6Lquk)gtrfSE(TPRLOq=&T&n-goz zr@5`aem7$}=9znraYb!ySs288KU{Ye0m%yoI$Xiz(97M5w2`^_@8ZKAZAB0Jt}l-y zpudieajHI>=P}FYXrPnD5^M*;-CQSRJ+TIsNK58uR}tl^-{wafB3$Wa>R|fDx#s$B zV!@NMj2Pa)&OktMnrw0k7d(?MKa(_U@jWJJa+b41VssTwiV|?bdYOB3xAt_U>yG|6 zGk|&wlSEQ5gi%-u5@hd`)LT|p#5nK!9*^8)108IjjL%!$HI)pXsUC8f)_dpP1BgnF z?jSJtPPU0a_?y?+-4JDkKYKk9jc;tQ*x&HTLF&?KW^6O8)V&VfpT0b5FgViaQVc(P zL4BsnyTq$w)t}roxrhBYFd)3TuF3S#!GZO=c8%HTQgc&Nlc^qldzrd6XJG4^S4srA z4+Cx5V-npCaG-f3h2j-X!R&L_!JaE&ugrrOBudlVV%c`@Z2)eKdzMEaLoit$3Y?oD zpvQ!B?XtI5;&9V?7h@-+P~za~Pe&_AhHjLoEKI|NPkM>&P|uTO5#CfYRoXuVAD()0 zgnLDRyByT9W;D5Mr!Q}XHx$q2io#g~*N8v**+bX)>YfW<^UKx23iv?EbtjT4Rqg3z zArxCTo+_z9EpWY<yG5iQ#avOq{12!MW1_r@LgIIWHEMZgPh|*T>$%(s)=!@cQz#+r zRfvg~$tI~&hzI2F(;OaAMI(-l5p;$L_1M9C*5UlxyxbPUYM9H47@j0ZV+}tXh?iUH zSz_FUz`$dQ!DszeRu(Qp6;yld)n)AJ>RM4jBL9>6H^#h)oRXYe4oa)RD4}VwtU-ka zcl@<<Q7*d;WDH4c!IJ#~-*`B`XC2O9`qlmDoR!|%#4G48+Zy|6g&p<;>$-p^0ri;c zL9A5^L3t5MFd6^zCoPRo;I`D$Cm$?Upu_mRTah#X*l8|_9IG^#%)clFlNoK@9pE8| z!i%<}g=fp42K8!%k^FsXKj7-Dt4MG@&at~Ul_uT?lMOf1$3eBDo&QJ)gVd(fvHu+b z{^>Lq`DM(?STOJyrfB$keg<3N|8;pyMXeR|6aYL220UTKm?Tf-qiixpimsh(nT!aV zUg7Dw(eb+BU*=mb9<S(Zg;R!EhST6hHQysvFkGnT0+Z~6A_~(DZVzQ6GhtMt2>x_F zw{;}qwmpM+=NGKH^5&W}3#upx>W~ZYSn2J^)D??Tsq$3JGwB3>QDm2WGQdxg4-F4T zBqAdA{udN+Z@QLSo0rBXVT)X>#5-ZZRRUoQ#TH+s1)V@##DV*~Rl>Oy<c#Hy4I4g0 zV)w8qjrwnrTqM$BaPTk*e?D#HjFZM#y03v`Y0Jh~Z)x}h!vUlj>i3(#csMedL{XZ~ zSen{qG4vgN7Rz-+k%F?(7B_91aSBOY_|TN$A%`#`|I}PpYf6{Xrzv=ZufF~mSOHB* zGea5IF^z+`N*$%dcUEcYjQpV`wW5-LTnUUxfUgY)wl@kL_+_Sf&-{Ev-+aEX_Qixe zKb~BovtmvWfytdAwMX?T9*i6qQI&1_fyETLzkhVo%KBR+mo|UWo{a#KkISjM9;W`{ zptGXlUZ7T?K5OnEc-sc>#<@iJp0&p?&R|iIL>1b&5;qT}k<lXGIfH4FtM%)1d5`Dn zfg=t7civF@QQT@l0mo++B-Mh6q#@F=DN3z_?09i(Q;7$V<HOVX{kT(rlElpZ2@lBe z*TFL*60{2@m>ek(wb_#8*IdDRjW6n-`0FpyDeI4e_0oXVtL-0nIm;1@+*u|=p{q~) z894BWm&|4(jMh4U8z7c#<ddd1CLG!`@}{<`k^!bCKNQ6syfMA%L*xzfuBXW3`|oc< z7C$MdE{}+M0vrWZ*{XJd5W)Lto8pz(hL@(>a07m6+^a*sx6O~8jon#M@7rQoCN?vt z2V$8fDTmBA_<2!b>DXBvHwLZJ6GsGAyaov{3H9Y^vK}<y3%^)~A1wY9mp(`3#^DJ| z0St?f`TW9m-a+7IWG3oE{`74&eX(_WFt(@y2=-br496slo;)9_KPAf|#ZDNoc5o;z zD+&UfJ=)d!i$KU>E_MXDi$Ds!ip7%TjKJ>f%mor`*X;w^2b13+2_jNzL_O<_pcB@> ziy6#7e~e&Zgh1bNaIEmH96*)fVHdN&&LdB0s!PowdVgVU4Z#I}uCP)4(JnX|97j4U zmwX__!5|JTk!*`)oGfD5`IzD;lw!%8Oqdh9yRktxMXbl}3f->d)kwJqV^A7`ST1~l z`9r|dGb*4f@8cap-yiM!ZXI88yBueN$CKIBl6NlJlK5!=rpn-5KWhfj_u=zTS5Ohe z4-c0|$+uqNAModAl180hqKex#HiDWyqZ#>U>#H)VBVP~!M%ZvX*q%!D`Sgu{Jze7m zBQp=DbpaE(2-k=9cI8DyL0R1Eg|$VW%FnejGlo#;^ZFU-^M?;O%?Z@he-&0$CA_SK zV2MC2GmOF!zbjXgUe$vZ>>h`$;6bg4gP0rmU#jJ<MfMQZg}vb=6I7@i&fO=<E0vUu zC~$zSV>7ACp5uY3jYH;yCZgQ0l4!&5ba;Zq<6^FLxhXq}P%2BoevP^GCPO1a=0(hV z^l@6pi(_l4tH$yS$ST?X*;pC3k3{0c&w<xLo>B$L0O-cv2koo-XQH#7D^q}LlW$@; z*%?R5QinB@z5wZE9KXC8Ak+frezB>$eslyr?I87^e(9<3z#bxx_j&h}$k=aFP(^UJ z<ZM#5_fvLuwza)=NquD!#_?QAJr^Dx9z|*Y_9cYVnIb5#z?4E>Pmk~+3_*A`V{T5H zC@1^p;}vtJ=sq<p<msK1VXHJ~C13L@3l@5^&~H3A-K9qab<ItI2(X(7`D4q)F@57r zUfVq|3?k+@o;I>!ORKN6QTpMmK|hw$%i~$*tcHgmg3kDlyNahj(Tx0~AelQjc|r(9 zlW(`yu1%ogZ2dhVc#e1Ae(d<WptmMt&&x{a3j}qxlw!!rc?QVLv$27Dd%2=SXGcjM zsZB|@&W>Z{<ZJ2&yqT6o2|*75sIZ7hC1IA#Vs-;Bnx1PwVW6}AK*mdz5ND^ejfHr7 z<Ue!B^IfNoE=&2U;OkpX4=@+Xl;R<T2qP~vt#V}gE0{F*z!hR|1>(c=QW9}18m*9x z?WhuE#>~(DI58qmf;eU>GHnM2CMQM!1jI6o(fz3^SVa7Lb!gQi1G$6kc8G@qOI^%= zKG&n#p+&1BFK|YaRt7BNN(P-#BFp$q!#6Q058qsFdJL%D@C%!t3^GtbWp>o((ca|c za@EEf_DK4&NOPG3j4fb6o27P`jSLX6LIdS{k31dy=dulS;9<*D^dtj^#B{;l-UvwK zT>f>djkUG$05+Yn#NzT9p!HjcBWeCAKeS>VpjyDBeeM42bXe!nF>jzRH@K91*a)D% z{=+NXnjWq;TQx5VufBi$WSv|%X{uI~5CwOgDMnLJ1uITwRNT$|t2bK(aPp6S1AjUa zdI#Vpy&A}5=6$O-xoOJElD21ngU_kP@sqt?<n(S)-e-ozFGMi#%5h#xdpGaFz}*0J zEp^LHi7t3iO~hPyW3M?6=!*VbL4`HIz693qXG4C*nh8{=+wVPDLaXX|iZY$vPiIP? zYU};yB~PES;<X*e)7*reI9QOnapt&bY6n^&G=H|j0b#i(rc1H7r3zIF=2j8t;PhJA z`Wnhq+9{r}Tsw`ra+A3;5@eoR{V6mo!(ucw^o|Vj4gi3Hf7+1&Sf96(12bS-*EL)o zX)hySKB59vl`eR|PD0m^`142qP>rFqVjHubZ+AMQ;9cg)>&xd}#3P~PT>cs=z!O_@ z+<iQC;N<9#mS{5MbR@!Sg<-i1C(!i4Y-ZIaej9Kp^aUfJ0jDo5Jsy=fdxFX9iPi7d z18P4hHe84wioECUq!SF#oBRI_f@MPzK-L#(D5cKpW>~l5@|1}5@;R5+R!JA7$#R+L z0Y3Ne41_Grtf7BZeuHUY49J;Y7<qHn;n^+l#QNLS)|lK*=EBU!-!_ovnujuVlZGym zHv(u8JaI<x5y3>lkl%(g{gGQFz*p8p5==(QI#w~W?qfh69TWzW@AH-Vm`ML&NvC#g zyX)`T+Qjq2wO*?uY5X=eGJHjK_0A>|`NrDQTS$~OUr7K_@KXNz%$N7iV#hViR4>qz z4j+VpZ~z`zg-L20IG<Qj-6g%f)|}5eM49V;UZf-$uR}jcZUJ1MifuBmjLVX!6%MM- zZ@z!4&m+e#QCQJQURS>POn&M^O-g=Ya#UfAq+^{Z5KA1|n{(b@K7JT<k&Y^N(0`%R z3JdTnlV#c_NfaLQoLyu5mntgq94=dgrCn#BB<(M{`~H2$0|_26zoW(9DlMRtQl62S z_h3TQzL+C+x@a|c#Z2TY4XBi=S&`*FLh4y<v?PgSr#MSl%Db6{cdE6fJD9#xh*X$o zt*&-p$!?0GsX0qdHa3C)0YUt{_L_ruOZ%mGL&w7fJzecti^uwm$e9ZT7hGDR#y~I& z3zKVCu0TubUsfF8*kV8?0PLT-5aP0K?x=i^TarM!l&;n<4TjMz&Pv8Wn)_<{quBih z96qalsKc_C2wAY8q@t3N*JEY*&)0C`$U!rB-WMX;+3#I>|A643TZv9VP!3)HIgQyw zb#qOV?4KR48&!LR3Kj;>G{t9UBVmQ*{NtnsA|S1k-Daq=YrhL)p@quSwjfe}(PJ#I zGU=Fm`0^mMQwXLGIAnf44pZKH#O-IyrqmnG<ynuK0n$8x7RnXhn_{V;U2sWz#&BUx zWV2i(hB<(M0GP&3IxTFML;F6Zvl<K{k^4z#XuK=4+2RC`j*eYslAU#Ks|4Kl5nDSs z(KFnv3n{MFufCX`AQCJ0d{{7|JOZV{y)Q&-qq5c0q0wj|5T=+1n`=Df|C~{;)i=yE z=W>!pVrRFLVW|BOIbd{bM8V~;*<ZO!$&Q4@2!!+AdXs~}iR2tWYa?V%$kifEb;?Cj z&JwXnD+vsP^D|A9L@c?#(HzXxV^0xIPT{Chhkk!0&Rz+pJ8GN*1Ucl@4!dEyaU}lz zIDVH^?6*}*WivKgmjav4nR|Pm=ju!*!!d|;J3LuyYHE-vIlw8;!LV0X*ID9LnEY>N zpUHf;T;QuQ<hO~Ttirtnd9N))RjXwFZAh2D#O%+#!fxmFi1mBKe=<O)i=zQM^_>k8 zUgEZg)<tVN|MmT|{-1QWI@Qq#UyD3*RG06?v)*rBcBh=%%&z~r6*zO3tQIND&i)99 z3i!SQP@jc@*#IUgeH*AOy#_@JqIBLJAg}4q#1<(`<naYMQ-#pM1IEguLFDmiJWEP) zZ?Uc%tx~J3KY7ip-{I^N{=pX%s#2#n{CvTfC;2k)J|jt)PJsqjH~piP75$-mwzGgT zR~Aj0Vv<UE2Li3pJSRF_-F(d9<;Jy-UdLyQNzo?~Eb%LjN_QgmXVr{HeiF^?A=VUs zj6kEXg_)O&wp}K5+jZOdc0BRkJ%F_^pFpfmRKl`T#G1cI58Yz;@Ju9x+u7Na<jqSe z-{12Lc`94FvWLP9eYcr!9-1M4d1%&p-t0uV2P?2RoO_G{DwK7ni{5XDuaARF&)I_j zV1lGnzJwGQXbB|~l6(WDK8oUnivYrh<Q6`iWp19R;zEFDz@7i=d>UAYyD9^@?-DaB zrp`tw!Uzn}Ycr##VigZ349!YBuT>F7PHr_A?FDh8#*NHR1I2bLVs04Umo<J1xFc>4 zCRp796AwtGW2LHP8*C}|{c}LDprDs1nR}l^(T_j)m72+WWpw#p&jiW5?{Rvkkzs9N zA#ZsSD=jlPtO1obQKRiC<vJfG<NTrDp}szNcc~!X>d*C}y`fz*Z{}w4yl&2tfpuiO zp@0rI`Nypgvah>>i23zo)^P;}y}qcmI493#9VsiNL1j+z=<5T52Ghf#p1Jjb@|mXM z;*fgN`9<Osyrjnd{AArm8?6UAJ2F=dQ$kdlHvo`Vup;@!7?WygZguJhw14W+UQ36~ zj^Q(Ts0V}SK8>`r7+~BBzh~pwQmCE%-tIAql<|z^>LMwg=Au8t7v9gDzSnF*ew6Sn z+ljvybTRuOgj9^JqlN)cQxEA>@t#iD@#F3Mjx)1`$W35g;%*)Y%mVzyI*r+l>oRmj zWSh8^mE5?;(pig3+oAwlRTckVwJt|ek8v=FRjfZHdp6*_aLyCvaxX;c)c?H~eV=r0 z0!(+8amh<y?>q}}>4JeNgBLf$%`sog!0Y|g3E0rbnzk)~-=z7wNEyGu5=VNy`ox(+ z1tgMn)ZtN-$c^7qjaa2A$J*);^84{;L@k<2N)XB0eQ@?QJ?8J-6`S`w?lkguu)#(_ zqml{n`Ic1LsDE0(ESBd#^p~}P9mb*^OtoFi$N8p@8g*<=Y$V1cg*-c@0u}%cWcZSh zhO5PHXP%ZaVJ|oclA{za<S0p*<w4EdaG5+RSu~tJ_OcM7@%gZP7N6uDstG>9mm&3? zWD|+_Apk-v%n1aoRoM@vIkL)8BGkt5n1A^o1v`90R9ywkCk*UHK;qA9cbP7;I6S;O z5C~)|xGuGS+vUI7yQ0o&H+q*PyC)EQbHl^WJ53nnzAA#rgQkm<xa5m`Nf7<M1CGSM z3YL7B)AdR7ae3zHmX+Xjgx$keL3;mf^~xt3txSi@Q34ZSizzY!dj^_6`2UeK!0jtv zg$)D@KrjjES}?2MmI;@6eacoeJ24qEOB=$cSdl6FTjsA(A5JSAz%LJON)e!3&bHh^ zXWVim4&nITSy}|il(4^~zm3<!v4a~DBkF;<D$5w~jnieVB|A5x;a$HVLXdSD#ugUB zH<Ck;>YX)^h?lordS=<3R7>2%s#WqZV{sxS!&Ak2YIhY-1j+IYdlV$0g)H-9fg<cM zb+R02EIxDZa!2q>KK!h7OJ7y$G;L8e5O<|FF#lqgM48>-oGjcb;!~chxoS~kkmB}F z)1&prxq^<Zrs!i8TG0CJG>tW6i<`z~Y%|K67Z}fe@ISjYbX_d{?{T)b``FsqwLAD< z@Bg-3ys`|XR)=J{6HkFy5UWHZJ;AmyG}UU698=+Hw`8BRO)8-sMVMdtwAPK(f;y@> z&Aw0GRr*x7^Z)&TJNg=@Gmn_Z*_~@H_ko)B`Q@gW#R>g7ECk8zK2pj|&tuP=JkR;m z@0iG(#Q~YSgaVowjh()`ac$k%+K?8pr)@x1L|UR$?_6FE=HxumWj~TazaP-s7VtL{ z#K;>tqY{x!kgZ+cxD;$&xf)~=GOBYyM+TJ4e%A}1a>a^rb(g3}CV#Fiv5m}50kJzn zu6Wd=t^nibGBvDHX^!XP{aJC0bu?W8isFmC0b|A^xw<`bxh^FpT)0pLC#n_#I?PpY zcF-jC$X(735*YEreFe(}pjV!1*oAv0gVR{AZu1PvVdnMRHSU0vJmnkIs4|A7Vd$R0 zUe_jmV{<-*t!1-{N&F_vKnloM!fK-&Thhlr!|fV3$_a+o9#@{FitF@_Enr%Z3P~YD z^ltc*JnbSf+b#T+a_6=Aw&u|RBc*+BJp*~Sc#ap3)Jh9$A%-qmH7pTAHP5C4*!CEq zcg^*XSrg0GeA45jyYZUo!Wagchwuvy7xbifwX6X;Io0nF%&!fjLP$ed4j7gq<+L;< z`#=sEF(;q908l!hcp~loMGeG4o8B7A&XA`^a2!UB3ow@=t!KIHb)i-i@GxT>5HwEz z8`iel%v(ab|72YGV(F_AxwdbDo*<aT-_@>t*@{N*wlhp+yYvpQ1NJ<eeVM<6M*KzY zUkRKIs5C7OzH}LCM;CYimbQNTKXEkQKiDLcD_Gd0!qJT#QTZKjKJ;_po5#2cI2tlW zptBZotq(>1AvyDQg6r`LV9aJ+|HC_>7F~f2r1mU7uRK#!!N)d`YJJ|s)2m>FdO`P7 z^z~}jr!W}n)$ty|qt~6lz;i)SorK2)k089i+-^a!2!+EVE>KSH+kx_D4xYF|IqLKl zK>3%UN6+jrLY7<%VH2#xHeJMQftzj$bA{T;^EWY!Y0spQI|@fn$b>iT8uJ5u_HqYc zZf9gZp&KnTSjL_7%SDqPG|0v0nNGm}S&tDLH+4J1NB7+~Av3F^z#oXj9=gRS4wVv3 z%)0ceJ_@3WQug1k{E|ToATV;h#xGrRq~NVUme?N!up4LLGyhniJFmOVBu_1=uH6Dv z0ukQ=M>>x%LuVrm05StY8&Gco0zG~6Lt|c7#+8dC;Whoq=rVZ?H6kop(kDYSE9Z~3 z1sX#cT;^VsU%K1!@Az8+4l<S~g}cNw=c)EDGR=E3_qp91MI3ncl?f#@1O}QD*gwy; z<D>7?kX62@6`9#KBB>||O)%n5uqy_y+02s&=g!cj7okXUnO`@Sr(ca`)6rotnr>!m zgQUuSEnH!5GfV%cP8I%caKGNE&qMoKX|r{Fw4HB|P{Tm64pD4PB{JPaM~DvGgvywP zO5B6$bZiAtOWi5Kq6Ti#A50H|p9=v|8^$J$u~9L_K@oNO#GXe-izIOR#u;G^sYe6F z8y#i3>ks<~`B5pxFu4q->;?zQspRw&=hSzIJYk7^@m=0gD5Yv6)ubjCq}i3#?xb*Y zmZd+PZ~s<M9%J;=tz;|4V^g8KGsq2;y0aEBF)PGWgEj4&)9>U!sZz*K+(?1`4%f>{ zAmo$m84G5RyB2+zl%MeC!q+R*ae3w(1wdK+`}*Q2mx#&D-;kp#d9zd!KuDa_kl;um zql2CAmXGz;@G3DC{TYHcTOd7vhN_K1Ai#nX0+gJ8bN?g`As2l<pCvj}7n4ABv7c=r zOILd=))<_^S8{n0KAuXN^ez?AaNxE?Jrv>#cClPV%Kh^D!mQh^7g;ua&w2Xv{2k}U z<~oV0xo@s8nZX2FV->dqz1q$@q5(=Q(t2eb%Db=31H2o9zmR>9pyT3JtyZczSx4WZ zTwxWXKozhE@AWW#%19Cx!hFQ6k|<(9;KWFB=e3|+VPactE`v`jrjV0B<iJa1Oiekp z(xjNe{)CW&XPX!P0|cj;BcsjC5%%Q9^c@jx*Az_>kCG%cWdJ4%7rPkE?(b)(C%&K? z(V-KDR<Uz@q@^I3zz%rB0wT}~F=j#+N?_MZCmKlJ69+{AmXa)XF-sElezg^o@?fTI zFX0^K0=NKNhJV144AJub@D({v)UmQL%IsKQ3#9A6Y2QiE<GoY{WMl6}yP+|AK+PKR zD8cA~I(1oZ_t8NwPmO_->2TprSAg3czHF*jibJt&@Y*5vSu~f-1QRh%_z%OkB)oYN z{$QEWJ(KgA?OSs4k%4lI{cd`li#+k3^(yL#3q@87M$E=k?m0XzRYgqgXbe;juQ}#L z^X*e1kRu{Y^MG#ag>MuYW)5q$t65BtXNbgPYlnRo)l>eG{p4{A`7H=b2Ft)C;kaU4 zR;sl?G=P0}&VS_%=HeYVOqc@X?Bwm+szKA$I$W5LcF-U1V6}Rz<M*4kpYKbJr*r&w z7WDW($_iTEm?kgJx`=oPUY4F1F}A`AG^7Acedpn(Izz+LmoX-oOnX+&TA@VNJJd5H zL@`8{Hq2`@@yesL0x#Iml*U<ns)5;#_NhZ#V;D)Dsv0^)+oK+-*QMI{Bu6FB<ZG>$ ze;zFEcaFWq7=g5AtZLVfVSnrG9-j-D=x`(U@|Bd<lzvrvSB)#xX^DI(5F8Qo6!_Ju zv@hRn?pPJ5!#fH>unlfq+$ic7qV{JH5bO~vYtHF>Ozf8bRS&)Rz;0mH&0PDM$@#Bb zMX&`f`^1{rNi1)@eaqNoYw`VgM^bQ4P@VLz)gLRMVAgqdC_(36ss$bm2|Z^uQ^wGn z7nK#6(ZHYP(_H5RiPxLrVup$9%e`#6*ZV(;`T06S!AF=x!YPgl%5{<o!(*|VVW1F* z;>(8%4<#H9gOn{iga}FjeBG{&ZC5o$qiFGL2-)`y@vfkuIm=9h-Wf6#oKen)Cya>e z5O!rV>4-5!s>ZeXSS9fkoWzd5$v=YHNnt#{3UlaxWxKF~fA-{QIYkNoBU)3lOT4U5 zW`89`CPd9hWbjV8K(m)rTr|3TeFd7rJ%7D*B}?PDnot!C>QjUTB;UY-J0o45v98Wu z?63Nk9{2*Gut<)4?z4$+-3=3MVnkre1m5^53Y(B6!ERW<Qm;aMuD%MDrAOGXJ1D8k zprxt@kY$VCpI%d*l^~e;^CVG{H5$sMmc-dG=r7@FrXt>7YNgmXsb2o;Al4>`-0x+y zyZZJRe;IQmJSrkpOf|3M2p#tYmz-_~?FSwQwk|T!x{@b|7n9735~^B6(z1M3W*x9P zk})GpW{gpTN}wv*m!e`+9Ig`pl1Jc&Y1ynwAa(!F22U;b0ivE1qPwK*%kxphCP{Iz zB$*77j`3q8@v8kKnCOIocU4`}{vZ<TTZoNuC20u?4yX)<9TX<vSEr=am1IiwL!CAR zDNNvU7%)!9fjO6Y8JC10j(kyvr3{lXa`Uhwv3Y<6;P$_N*Iy{2Lv)wzX&JMiG9|@4 zStqH_T>}@hywWZ@Nm&mM|8W?@8`K2Qr|nav>{DUgc|s-JOiP0OiUeRKg`;;SCORZe zd{7IQqIJ!dJ^%cAr^G<2g}jMZN(%!~h`GI`AwHr8m=9LK67w?+muLQ?m*MKO>{mWt z;LnGw!&Knjy=o`T!k6JCHbH~b@-x(GTVw7bZ(C@f(c=g^ts~UULA#6OR;QK7cP?{3 zNk1jZBs!m<1yWB6e@0$F-6BkcO^_?Mmq`3$CVm(z?U)bbjtw0smnFQvn7D=NIq(Lp z_8dDs`5)iG-i54tmQy}m|NCVrsi+9c23kV>!)IZi7;GW%(O-kaw6<oYm0!;0wCMJ+ z-cV<;Q|BPfr>ZsG^`stug7s_LEwYN36M7Tv3O~tiJfkHwD4~e+_D7JR*B){pn#<Ie zaz7cJOvTBNqOWcL{~9G|B<)tZ@v4NKR-kS~hR~-`qWRU9%yM67GHfx%Xb!?ot(<pI z(san6Hhr|uc81FhTR`)kui}Zjo~?|~P7k<4ijcDEMd+%@DTcOCX74e7h%cu&ASCX4 zj7rD&rRC2t4g0s}7LalSBei)(99UJvef+}bojzux%E`r}lrmX=rC?c|Xxr(M!sEYS z{|>vQ(=~$wDQt~f(QrI!$Hy~D3qqI$HiQ;zYz1yF2&4GhktB%UGS#iDr0#h0AA28Q zKtbwxad7;d>F_owoA>1=t5{&OpR%^9!r}d1!4Cov4jHYF@vyPRoOR4sCJv;r)wjD; z{8XNM+A!s-ZyoOh?lYOJqk~>K$JVu{@b{PJmG_zV<7q2%I{=W^{n`SL(NQ<{%XIkv z-u|bin`&Y!W)Jz_^=l*7MCC6JkJR`3<f@^u+ltBtUzsi6kznuK_c0+jHx|z(xxNu5 z$T7;6k~}p<I&`7>ZQmA<j(;@CMIXP+Gk}AQw4iXft`pCPA`D@%wy3kylRkM(_sEKq z+P!hhg%{pZ&yL($)um8QrCh6esi!hAXl}HU4ArR(5aw2*B7%m#zJ`7p;19S{qf=pZ z``hnq`&4BXAHhp3)V5<Vc|ARvo*ML=qcan*UD&&P^fyQNkJf#emCDyUuh!bk*1rOa zvdQi})M*#X0`&c)Pcj>(rl_Xqgo%CZwSu8zwV6AL4GJ+vRj(Gz4F4pT_Hx8?MjYOZ zh*BcY?@I%|w1R&ypOk%oRj(hvI^JYGm&Aq6y)WwD6P@LzZ>1;f<?BcKrxHH(Vk}PB zYefLME7$Nihb^onNh`)PhKB)1+Qe@a{%k;m4QZ@%_1UQdVzK%F6T;D_G{3hh#z<W8 zSvkJOo>OZTG{4Y3M#s(vqu199v%m+K$~QG+W349;2my9k-HN8(2_9J4;%rq^?xHhK zewrPYiWh4NPOcKM1_$n*<e#cDB6~x>U*9e7U4^XoNDr#Np(DQt!K*iC!2H<H|DPFC z<U%W26a+nS3P#ncN*(n`6<r7}X3207z`C$9K{O>&JDK(f#~dxK;);;ml^jL&izUjR zOvU-An+_Lmc0VlD1nK!sHOO6fS|Vk~%y1!98}asP#X0}F=fKz8Puf!^&Wtl@(2}NI z@fk^x<%1u$L^tMX_!PbZ<32+vk>`65Z7}-nw8GGXnDbmoQrPoGjE2DOJtbZSB6QYJ zfjv7so~A>K$T7x6XoK5S0&`NdJ+<!b1j9CaJ0>Ux_K%l-U`^=KcM!6HM$LZ*C5SBY zHq{7Tf-(_`KBO+4GMaw`b%Am~(c}|S@!r2zPc#X%As{ej_xAQ)NFOIY?^LQM-+Ml% zVxq&7o`MS?6-s9Dae&j>m6W1JHB6M(Khf6XlnYXgkP^QE#Bl$zKV%BlVb)Del|UO< zv4bU47&=@?AR{!F?nD@Kz9p};NH>EMAk*7@>f(40R%dOS{DgB8!K`y*PQu0&EEhCf zLY<|?_rff2t-{+pybP#60`$1~UmW<bL^^PhjA6)b(EI`45tDA8F)TD+0x+h&fV@nJ zQoi5<zxR*}o6?qH&4x88fts<(?#3_cY*|N!gy3FS*Q=}HNp=ZqSGT|)+qFNf3cQ18 z(ZqH_0Qq4PVcPTguK@x<GBR&7L9DLMY@`4Wk_=-}LLxI?v3W&Fmq2-|<m;Y)=yd_Q zWB(L1Du~2LW_TExndu!$qlUKJ!~16c+ME4tuxtty<|gYO2S#nw@Re&I4ke1C1i`t< zpyM$#V0w^@V(2_!EgQ=m9*@^Q<I8q<TCJG7k5KpP_Xi!fw?<~~?GXJc;%}gFs4tY| zUE64?D;OVJ!yhGZ`K0u}6ATJBn9^bn5`npo$3|CK&|V6+2^mG=@Lu8>WkytkKolK~ z$tdJ$Qh*f;Fh@^v&a~zMfQ~$1X<MSQA!+GxI%BU(Z<SnQSxL41>8zaV$G3|RLc_Z* z>D3>J-L@^kl9bsxt=yNfNKk|Rw*9;iTwLLlU!L|S)jEs7vX3^IB~v`Y<Gc2!QZDiX z$Qr0KOiBP7uYx)iB8SSzWIvQe0Tz59{t&<2p#v^5GmK(BZSFTZR6dh#RBYur2x*eu z9#q+5x7q5V1^+f#`rSJK4oxAfPMyhjK0(AdyOVz*Qv?6w1l?-JJpnfX=<bapxCW#q zff>EcG9-j^A6-c(`+K7BP^diL4|N7pG*wwhngyR4KPG9SL>(1UiKk6BbE-L25<YoO zpQ14HXF=Y`pVUsLhAQ7PjH!-4BRN<kIg1B8ev|9=kK*jDZ)6AWsgQN?3+Nk4#qaGe z;@)xO>tYe_R7J9`qEWfh!)k5h8Iu;Hw*f@649nnF7@BTRB@x^=%-@=hqA@{Guc#cg zY8chmZTE@iUU(hLb7hb6U4N<?y9{rhiz8EO3$(Z7$dda%H+7d&-|Yx>AyRU_!qdv1 z^RO=I!K2Gs<Zv5&rohWfju!aDO4yq}rz0NNt01@3;_(S_;)^Lnk|MI!j>p3j_u}E_ zzlJeFK_B$7bhhHIE(f#?P$J~p@tOHQuP$V~9KLGvwH3jph&}@7kLhAUL3aW;CT2zk zrorQztp$9vJ=Tp%tNfi~{_a6IEI&+0i=Fs8;e``i{y?wq?e7Kjd<}GzgcFCI_fVwU z4h!6Ldy3MdgWwKNtm*%(Nebolo?lO|%?<X_#;8jS|AQoFL?m)qA3SD-18^pCD33C1 z5D3VJVKJzW^;RMl<Q4;BAm=$L2k5^hmad3woe45t&OlPOY95*a%xCyJ6(P(`24KPV zQgppP*#j25T?{B%r3uTdxkY8WgV=ZXkP_e)Li}6V?#xj*3RBw!&lWzQF;p|KnqNsG z;h@8NpJkQTr*0jaJPDP)hszXqf;n_YO&FRvCP8CFxqp$N#@P$_2V*x^Q%u31p`jw2 zS4AnE2<h`Ap_)dnw1{@6i^EP{Sux!6=SldomN#O=Pd4&*T@25*cR8aB1EsyBjZ#s= z7Z=>#Y<umhe03!vuknQxORtVA0B*=d;PKlVr=1?LHw?Q&QY3SfqQaodkDzI4Sq_g! z_h{6Zi-(sIZkunL3{je>;Q0>8bsqG!ujiupEV+}#`~^@1lT75edjIPm9sMXqj%YuP zCerhpxl#QLZ{o_^?j8`k?+28eQ>juj#x_P3(^>TU8&$=@c5=RkA?x=guULTIsucdG z(UU0v>M8x!(DVKyq^j=1vd59G;%O`XWk7Ow_mz86EaEVNT*a6nLC3^5tI6RqOsQK! zB|wZ>r<x*V#5DW!IhNXgnj%eLxi-cws_JIPOi%WOB*PHM)-1Jb@^Du(S^sZ`Sg#vv z!KFZ#LYbnHB2QOY!BAdSmQ`+S)c?SZsKF!f!HiHREUgzKY#JexD89I&_RPZEC^Oa) zK=ku84_4MD{8>tp5sEHcm+|t@(Tw$^7z7vBdtldfJ+LVX=DIu*l6d@^4iy%%v31%` z3@LLP_^Y#hjTA}$u73+<t6pG46BS6r3QHSFoTz%REG=a*?hM~$w!0q{G*4<@5UsnZ z<&zFB`c%r=JB>H;6D*ScYgE9?FB~nl#q}w9`_oJG=kBMDI|5-Bq4#NUkspggg@sY% zs5G^-Tn=Ih7Y<|9H4J?H{?t$Mgvu-IJfFTFI~seLGr_YFhk<sXX*|{8s8I|8uFW|d z=?ItGeKA#aJ;7t0y3P7GF)13N%}%$8zU?~zu8OF0#R(2gTxDT2x~@AG5-Uh}uat4M zx9r4af51`u^D0I;QzYyN%v-J3m2IuP^~YynwcU8sMFJTyHRFf%h-=mN<)8P#muwe$ zsLP)6rS@AWF%uJb7&kb!MCQMZSNgv<+72&72a~YVB8Vk3=EQm6=nE(JZxgyRUSOjB z`8mC{WFo4{gS)%D{(?D_>kJ!%|9gM+Zq2gy{?gESq_kSEBfZ&f9w%W)!4hUk6g`iX zhJrce*YVx<0;ZBq?S2zAk~(KKG*0gXSED2}5Jr&f;y^E(+3K#(lm{i8Ca<ZY_R!++ z$g}F0nulko(k5Dc2D`LNG|EQ)xsB{jtc@(+&yzNxt2>HurflQV2hdf5XXNQ{d3bmV ziRqBYU6J1n#?j+PrOxv3<vK801vBnm|8z<A_3*Wa!7ca%niW?dSQw*d6jutQ3=9fE zG)MatO{?T}TKb_L!Z`8tj6h&aK0ZEv{}PZ2={Ku)R0EDYg{Z?zz>wf3{+RfHw#V(i zBx&fgXendHxi_9CN0;)81DyxFTuTICcvDm~bPaz)gZjLECz$xyY|083CP&}b$l%)0 zB);QOpmo?|vD^E~J<n|?31_qXD>3;>O1zvzeMC=AM_mhtDy?Nflf1Nx8l@Rg{C-!O z#c1u92M~wl@{Z2++~~{Y;BWp+Asem_#;z#M%^o~_JX<$DMk?Zz?GCwBNHZ0X+IfLI zMRm@KVA>dEZKtCR)5cMRwnCUTV*sXZ+q>d1>6ibtJln)?+Z0o<sn;X@M5^8kzE*?U zywMdb%zLAb7p*o0J-^#pKn14=#DA+4m2~qB9)%G^XG2TY$Wl`B#YH#>k9Uo!=m;+P zv>`ymo5MG~^k+0OiTdZ!n91hqm-W3v`g{R#TZ4}Pau~LMuuFlU=rJWuTmiK5w9$n2 z@vB(W93ym&2W(g6wDC8?m?CY&`L=Bz2RZEE<fNYm%$0>sdg@TZO&I!HF%Uu#+8<%| za`gAN2}c2n`H;)vhaP!1V9}US0|L_WevAos?xHZX|DsD#co!AQ$TnWwt#a}E_*lTg zmGLx>@k*LZS;Ksw-Sg~m9rg1><p7L(zqE1F9qSN^7QY;O_x8x{wn=_-6n8w4vX)+C zP$?pUmiO~cU1Mf*XNcRRU`8bpc(>^3t&f;{edB;Se&-rcLq1{<FErV_BTE<>-%TSb z9Jb)ngT7mwW&g|i3-;b$jD)tL2BpJz9!64L_xD3ZdV*NhHaQmSr^QFUvUmpfZK~!q zSFRTQXeQ=U%i@V?_$b}*Qsx{RM^y-9gPLgUVj@>I-RXb=S84n1NSVYKiZe4h#q+Cd z3Ay<O2lJXZvrLAnH7UA1KVoQ`GEb%6;?fKdTx7Z2<Dgd)03kvm&h8pY*TeyoJ#?Xd z9(Ct3(^!E>JX5C&D2-p2U=gTPrLA-L98J$68tYkdG*krRa#vOyFO*6l?(Uvu2Kecg zfF60&MV?lJP0vPXJo@i<26oo%Ep|gi7JT!Y(Z39(9I@jGT8dE)%evZSPu{xPh|K1j z3?GH^q-NZE^FEQtZC=`@;y)h5mUz3Vke;(!TkNd}37Oj{_uD6wt?n=wBTh|S^qxZF zh>42}dT#1V(?BM#&-I>eqjg>XBw01+!MnfRCN@hy7;h|o$TvR<RWS5AES>#3uhCWC zZlH)DUy2JXOK~rM5>wIh!4-bWTrC5QHMpdXhl4*&(I$vC1+TB%QljZJ!*W=<<EXx! z@=OSshaS^9g6$7~PL&*wx8$7>(9qD}68<41u2j-rPT}Dla>nygj*~M1@-ELEEgr%# z8<=c8Jf$MYxXLoQ6DrLHcer51^2*}!tT7o_mh_hxn3#G;byv*~lZQJx?>w5D0iqta z?LUUvhlwv<7eR06Mt~+6O)NrOfij@zKwZ4lgy>|s>t|~xRPmJEw9%xcFwhEUKVli- z%ky3E2X=R5dN->_QAzVon_8RITPw5U_q0idWCbzf9g5Y`F}UEawkA!6)#>x0oq}$F zbZm$xj+KO_#bIV;MTRa#619y`w*j{_6&H{wzD>g>Z~AomAIi+lf6U_T3G%qvWQ$lC zEi79{+HyioJIG6v#1o3=rmZ|#`4l2+s5QUhw^TUF)%|s~x!SNhSp03hpn`!MidEZ_ zuPHR}Ei7ilg3C*!*1x*AIL}KY-jxJB0V!+T`cU64-h5jC)o4EI<MwYKCw%?@7m^U> ztNW|EbtzbrE<dh}T&`GY`i!Fe7ja)JGLj(=vitSBc3(CU5s5^2ti)6XMJj3~zK_$m z4*H(%w9zDXr!xBViuQK=i&tllx{Jr-WD}buifId%Wf0FT585i-B&C*}X11kvOB;{O z68THIkGTC9&WM?WzeQJPUe;bYxv?dJ@l~-)_Hukaf=GUw8s9y2o%^hR2+B1OMH0CT zz|gy|olJTqx*&~_sthJ4KrKb3l5+b!c!%NN=bgX2GU--_<!a3V=M0s7<*lx!=ln;l zHuozWbUhDE`z~yC{p*h1^z{AdP7K-l{TcoeevRqs&GEGU_5xpvLvgd%1gm-_g12_H zu8Oa(aKhUTeP_KTH+Z!DUD8mQs-2hBCJ$~AJ1l5I4O!Oz-E&XkcJ->)3@eLnQ>0mu z8iq1~v{-?aJ<E74e`_);KFTkp;1l>;lw|B8HLl0Gic`N`@%1m{<25xWUUu{?4sj+q zk9M>v3ef|w@!O`tD&r?L8|jLgB3SEpBP9?LQUV#qkn<c(LQ&Lz!t$-f)kCQlv7Glk zRa9{}*yd`(*}1p;&ExqUCp}+ZzN)j}-47PL5hhuO)&WjD;7ap6UHMq4NrfAQ4G%N2 z!%zyrS@uK@>q|vN5Sjmo1k-(P9!r@qve9lywaJjBoNiAyFnGsqHuehtoh@f9y<iQa zu~%zjAlFvKxB<Dl($+V;>MMuNr{#QjS#&u$#nctlG5lt1*DCch`!#b8V~e*WyoBy4 zun85`59-**_?p=eHPJF1lMK|U%(nM6PL-yPpjwUL$Gt?b8j6G-i(z|cJgt(otqtW) zsI`qvRtbs<PXcoqYRm`rvMztJw|`jcrB2od=h-YzN;B=b=y5U!+?>Kz*}nzeuV?1K zn$H<`d6JSUr9+1Ifx=<(dicW?o~t+J*&4WBmxk`Pm?6MwOAZ@K(B<+U$#rj{w6zs0 zzHL~Mv0;&=6cS|35^hrI>~0!(vOrMkmk+6wFWoARlZB&HS3Q(?DgNco%Pbt0IMvMN zv`4e26-yy6r}8v8VPj+TFO2<b6re8a_I`We;pM#!V-HADqv?%r_1tLxn=4xbmpnpK z3W?Iy;FiRmn*TdsYC;|`0B1f`_Q=-kf)}Ybb;MvG-s(Tqm^e(n79jZbdUDzOzKHZ^ z&|Wt4hl`N}lV5o~^$kbVB&@;34ERj;>p4)DP@UGHhh_4!GTke^Rl%ILMrw-&Ht7*6 z|4WhgH84KetWV1nSOn&-pQACFZyQsok2VvB`(Qt<A2eG|o;#=hEoy!fUKL#>e%IG$ z*kJqql$4af9C+rEjA3&=$!0jHVF%~u<&~vbScV<(YxHDq4kk!ni)2d6yr(<qlPgYR zNCW7<*Q=CUJDA~53HkB~A!Fk-ETV@=!Kg>C)%MZ+VKf`X#D2Z}xn3tL<8*4+f*z8n zOgHpm?Q!p&FUOZdiHEwKHcGP4m}9}DhXn;xyPzn83h9<)hu}_Y<>vlW!8q_oN)=-r zGDQ5<n?uz`vt7mR>z<x*XR3*>0Gu<6yDpD4hhKv&0|jVN;VLzwA(ax<m06G?=&PtN z0k|Al%gD7ul1!_j4>36%;w_0u$XPR($p^=ycPq}Q>$d(<H(P}+AOT%_r55>jf+O~{ zoN*n;ZZf&Wd+OW-jTc4f{WQS-h34MrYY&2n9oE9X$L@QULWG0zrE1Ygv#!quM~rcV zVvDI&OO1xKSM999gA}8W#xgm+ijEKLSSM?L)!EW?8@6y+mcKF1`H{dMcmJC1M@AFE zpT@&vXYV+}z)32%9uC8Y&tgQK|IHQhaU@@2`va=CL2BZN#qj6BNIrh<m1U)M3Gt*V zyDd;Ae-*RRV9_>lmlP%Q{&;~ZRT8xBKD4(;;fHED<S)zDv8|1@RssduE{-FoR7e8F z=km&~vfS`+zmsc(C~rD11`=1kHIKU<%a?Gh%VH#Qi|e_X70+u{7UQ{*7XI~q4<o4} z>~zbdF-u0gswJB?O|#`WR?Sh%J>FIb3%;MESi;3ozf@iG9T*gWQ_CY;H);d6t4<@H zGa2fQ54-PHrOYsY%ZC%WxL+1|QDlF695-0Ju)D^g?ewSVD|jj3ziejXW8T+5yuNn1 zuD&&{`uyjR`v(c#^XHE;uYxplWBN$zCqjM)?*{zxcQZ`laX<19iJpD=ew|`|nLNN^ zZz3@-v7R=Vd5s8-X;Y07G6>}47D=@DJX`X;Av{=zZM%)^!7sin9UpQD?|XY%YW@nl z*F4!b|4I;9%imQa_mS7HgqA2zxV$Fr--0f$DO6a{ebGL=!GI1whI3&ROeLr&Q?1He z`bz)fI+moeY;FHGFM{(CEq}V;{vtfi@a7fkqLDt|bY@1}YIUjE@NE;T(P7y$dSJ_| zztxZ}WyAtmjtV{idgib^B?)amb~0THe((|+HeLAgEryN?Ug*C4d$ZfiBi5DE*{e}{ zT_>KUUMMvVK8x}1A;%{V$CZ0^*+F#v)hB`VhfPOA{*9j3RdxkSqwF;Qy1{2Z2yu{` zZ=Ji|Xg4>_+>5ka#A25RTGZyJXNpYsmX6nls%}+ly8^5!$e4i;dmqV+aS;p@4SFJq z18+6V0Bi2prYu%4fD$%b202-53)!<yP5Z8+aS0b_Z0=m1x&7V1K!4;zOsZ1pr8{aV zUMVEWo==GemoiP+b?1VTWG4XUVMH&6ft1^@_&ihGicLwo+VrjarStyT&9K2<u;((T z=i?Vu_FV|!kc%xN%X>(rh1LutI;7(+abjP$#a{6G18bQs)2EF@oD@C{kIfn~QwL^Z zx9jL#=KI;zFYoMZsd7|wG{TwQM?Z+{Lb9~J>s((7pM$8L|K7D;Hut>H_Ki@fTfRi$ zkcqYA_qpGH`?#Y@HTqg?Uq2kw<x8Mcjx&~xd$sGDrA8APJaAL%v+rigR(&JpK(v8C zYxcP}(!iNRP)KpngYiR5XR|-?Xp8QbK1BQFGD8NcDR7seDXXn@m1K}oj#aa^(;&)g zF$MDQ=f-9Wg8?-Y^7l1&i|H@>`>sfwQ&xKT`p32wi*9;LiwaCBlm%mP1?KoTR}ZlH z`#4duhsQ@|0xq+mlm)T$0zv{3lo@@&<w^R5s&xOBD&nFs#mp%kh@Cp?ZP`9^r8F_% zP$KiRDdRKmIRDK~D~W#J(ka@|s<-$BW#w!BdGEPg>PxdGU*E5;j_DxrkqF^e!e>w= zuGOV?`Fg+IG-xC2)2+(5xZpXQd2HaNNP>jjqi;K-H(C1s1#S+J@quEYfNfV(Ry542 z)pnj_assWYmd97WBkQK6TXqRYBV^KPM&m~bA%AL&Ipajyx*0Upu;9(iSeimUkMH|< zr81>biCjL9<2d8msqgy~3VEWj7@1Ux-ouBn;aj${KUXZ|Ika~#ZmCqUMLjy%#5R-C zMm+dbXU8HgU%i@CGKuf|$N8z0QUt~)l}wTvNf3f`lV#s-;K%3J3aM$eV*WaW{Agfc zfT8{YLdR74sRpttIFSf8EHuW1XNvi9F-3>pa~j~xV75TD-x?LyqmauHf<D)Chj(q= z%4i}^^Q=}3T%}NUz4yZeld$qmS2Z&ZD9`f{CD@itd|&`q>ph~>qsQAar{f4e@o+?K zE&0AljgDeF4#rXx3MDL=eBi!VER1WaNA@3}g6XxC^_RdSB66^h%c8a3f~bS_4feRM zXoees^($9jNmFw(qoc{{=a#8*#UL>}L_CqeLj66^drHc#Ifom)0o$^^>O*3nyBn=F zYJwIhB4`s33P-R-EisrChMDu2agO!V2jHpe!56w8U<PcW2Jns6D5Y?02LmG^%lTLk z_}dTc-bEps#TK>3VCGGM&s08}sUEVQXgUcvVTbs@Aj3n0ghakKWdzTh-5p$%dc(k$ z;h{mAnwz=wvQ_kVcTp@9QMO%k>Ic<iXUAb=XozGcO<39YiAbgf<zHCJMug`DQ>j|O zW>N(lB??yuUug=5W$m@sl1`^dCX<Y7!{hK!_*yeGFhI|tLn!1)QR=U%?gR6#{!Mc- z8>gJ=mN(UdehXeM6!UnVcU&+8K#4*`wPDPnndHRANZlQCK?g_Pdp^Ju`|_uIRE*X* zj!m?w2?MLNF$W#XzAdQu-MMTQORRYa_l!q?YY!Xs_HaB-&*8%~H@A#?s4Zm?_yL1` zy#$zDj@aLy^5#9uJBAo47QB!e9i?0@v+}abDVIwm;=|a-<R?}t72-ofSn$$#V5a&y zPb1`vk=KshZ0kd7{oxAc_8T^Qh>pdJIdb?2zJI*`%(iXvxf};~@22FsM{LWw2aNZt z?uChw&a-Jnh<R7HLfQ$1v6MBns;TPlC~fC65`6q%-2GxM;NZx67J%lwPrQs3^3|Qc zsig%VYK*={8#7`l>yt{URBeC#J*pYL<6<fGfH5YyZR-}|!-KT6w2r4M=paBFgMufG z;GWo-EoW_~FanOqtNBcZ^vEdf3m4KnYZe2&eYGQb)frcoMIoCbpUt9>f2sQQ#@}fZ zhHIhPOx;k=`>PHSD4XDGF(<?aZ@7Wf*ch2?X57a(J~x&{paXgiA0m|*!x8nz#*le8 z|K?f0kLne8-Ziw!GTX8dC6mm3U8~ew@jL>f5vd*?o5`aAz=kP&(nFN>jO$kz>gyvK zjbed~G1t``%x?j=Aq*SC)y9}*#u$u@n;hL?Wq-!?T>q69o+my$M69U^CuE}ogZ6y{ zdh{fO9Iph5oV|@eiM6X7_ya=&eT2dx7B5=D@X#QoLZMazPuJ?=jl*~Jn3wQ?gD1RJ zTHmSR_Uo=&&)oU#968)|oXJ@Kek2iRpr;1~-&LZXmnlrpvzyW(<CAG>{yTFr_n2Xs zhHGQ7*m#kII+1P5!gd_`d%E$A*()N?G?a=4052wa#1i#XU)K?`V`DTmwO}yoCj9?a z3?CKvLlKGBP2dTO>ZypbZ_gA8+2?+?iNT(3+UGAI+7tyPXt+a;_2f?&??hGWoodYq zv?FtJ12bq~AUQgU=X$JIbs6PyiT<7*!jVv|O{c=LZ7j<MxZ+o74l*I}TSRb;{_4D0 zv-!wPzfSj&Zt}U@c>d$Wz(Lt_8R+SuSS}rPME#F5TpQM@a&TOuH1GU-q7mreLpHR{ z@93B`*G?!zv?<1(ojW<w)m3y*|H;7EjB){<1<y(YfETqM_^zTYrT(MV{=iUQAA#?q zl(p1Mb{oA7`~b+E;4gnRrtCj(ecyZer570<=x1r?auzM^1o*f%!SA2i0-jJ%!JNo( zf8vLNu5_*X%>4NanLTSZhYuYbKdR?A4xvbdXj2T0x%%DA()tkOBLQ50^)=TJibfe6 z7{ocIM~ZFR1c7E~pr8Jp9u)EqqSV+K*lg9)aOY4em^<dpX=BmSrBpnxS_&)_!U>0Y zYx8EdY<?q;F~4gm^^3+jZ2<6M^fLBYmi=25&r4LQsT`M!Ft4utoaC<hc+9fzEPGz@ z<>#NJTr6_sRqw;GZG2-sf9jd8wIK0njF6}&GWi@kwr(L54)KBY*ON?+5<hwr#|aaQ z#)w9vG|!qv0Jn-r=gFv56&>8w9FDMJ<z@8s_D<Ov)OB4(lOuHP-%rVNdmPL9_F38) z&(%h{(7?@Y?d^mkk!lNrPzc+ydGobbd28p6R0z4%QO>5uT516BVus*OQR?1WZM9Ae zSG|*PdXn#A_*u-de?M0$^WxJ#$FUt&UVa4uTyKoIWxAANCDyYcv0m8s_5ogb@p(Fz zFJtc9Ho6ZVMk&FzLxjU&+S=O*D{H<V_@6l$tI{>PxMax^X3d^WW-K$w^sPshv$-t8 z{r#lV>2gTaJ>~>j^Gp$~_2(nXn%jBlB~&Utj^hvxN7%Oc4R-C@OBlJ=R`%;OdUrGc zc%eh^M41E=d{<8)d=cn37&YY?*mqk{hMz{2{mDdfH2&PCCqabPNDO1leVj&+?)0){ z%$Ox|M?}>3_U_xq=2u^3_MEx&_H;8kIzl)SCK8U&Hh(_zJ36RfK8GQEEbxvU3ZAc? zkf|0sm|Q+ea9x*jsYK%FFa{n`O1(M*H@XRbvCMHXpY2?+f&~jZFghR{iLhhq7WVAh zOBn94mGziz!0(*PX|=^{$f?Uoq@8RAek>xpWMT>hC&rf?|NZ`uQjh0L#SNL!WQVGz zR&<KUCJ}~DHP!1h#aBw6vXFdYBz{9VpAVHP9;tYorJc)YYHqHksu)dTaA3AJW<)8q zc~V-<goSS~*hpwBpZoW#uDHT#ojseebOy_+CqHXS<r3MkF$TN4!I*D}$gWet(V1P> z$;sL$GkhKVyO3?)ecgr)%xP-_VE6Vn*}mf~9Y%fDR@Q^{dd70W-RCEm*%{gvbEebp zqB(SEPA=zSkTbM-3>*qu_D#l^pH@5{K^%<v+H{BYl#*{bV!gjosXP`{7V%V)mtS}u zw_Ik{tl2DH+R5DZb}E=Z#jyPNv!)Y*E20kju;cLC2beu;Ruzl2`3wS0pfz6ECC~wa zWTyAJ%83H)Cmb&36H7anvuwpB#D|A@>6xe5zI{6m@<+C1{Y#@|WkUmmYVxlI1n((L zP)>dukg2|})><elQICp91lRzw2G~~{)3a?=clnf3>Ip>J98slIKDR6xKgztecG?#% z#Ih`gdwZjS){88$9-ZPP>QE1~(R1>d?9FSgdLMz-lxk(bDwPUl*QJy%FglU|!;eJd z?U}mI8e`@e%-0t$Uec0Ij`G?oFENr%Zx11V>{!;r<`^xfp#h#-4REHLz?yUF1vWDe zf@cAMwVS{I&l^lpL^dJ}Av`-RDgKjN5c?Q52|N%IHI~ljZtd^smT<`7vMW|2mZE>4 ze~pC<iOBZ4_9N8u0Bdb}p(|4^{ob6`)|M;Q{2GaPoO%f^&n;uLX7uPVfev1=#Cr2o z(sxdGp`YFfGTCU0{D*WZMNe;!Yl7gL5oP}YBKzu5_yzzQ0E7!Wzw-1Uc=iBT|JmyX z`LV#$oa6qoCjj8YuQxkN9V~h7$9j8uqWNr=rOTJ&77C1I#y+Z$hY`l6nj;Y@RE%ye zWOFxOw|+fk&!bc<;@CD7-=~l-kQg39YyAtQ)a&Q^4A&WesSS~}zF&FP5$j%C*$)}; z$FErffDHgnA75u61kW-6Yu_bhy5RS#0SJaYwx}1xm`jf)M=weA58&7#++r~VEI}sL z>zn)uZRBveko#OyG!|L8Y8B~J8r!z<Yt7?RBO{bNZ@?1u#B_edQ<Oo2`JPhhF%gL$ zw{RN(Yyj{g0N+XJ7Sjm8>0L<ju3ry{s2_wx9dW(#!hAlr)K)gY>e{itH|yr_L{Xx0 z#^}n?p`lyXUb_xE6e5?)VcQPc7>fBknatR73waWekr@iW@fQ%LfItI)4FFyY7VgQC z_P7i4-T+`-c3GkxvXpuYLkq&9nwkESsTLG~EoxuRb3a?mW}DZ%?|tO5d6bfBu?2y# zL?Y@1{wgKv!3F>u0Bito#@{gSX#fKFBJ2l#2s~xPJcA*9>>SBEy+K?XQ|gb$e>0m* zv2^(|L@BDpWi33<BR!VB)E4!MK+m~~`7{970ANEJ06ZH2oOlz*k;(9zYL1jxTP>tC zI1<0v&F5LVd^yorjEd)>Y@1ASl#=Jpw?sX3`Z;yd0AK@v4QT*yS^+rabB>!M14`6u zmPlbZIeJSupJ(C14kFPQmB2?3Mn@8tiQzdB>2CnA0l)?T8vwj`0Qk<&U$+gJcxv>v zp@BZy=C;w?+KLkjkx8b=my63CW&Pk(kE%@-fN21*0l<bd063!nSS#)S%aEv^T(PjO zr>m>g1e$pZ7T`DzBSXWN7-RM-CHqcyF`w|9w4C`IH2~NEU;}^+0G<&5YqHZ3>;L-N zUz8Y0tjVQP%$YZjitAD=<`*eZ56rv^-vD3(fDLH?@azB(V9XNrsD<pw7V_7oM-p>H z6u#$mipc8*bL6C&6irtrpauXN0BlGDfM*ea_2=$)L_OmBe#mpn>ub%%uK^wtk^DLR ztPKD*%3(F6A?I5RW>_if3zlWw1@r({iO3_<0{n(tP|^TkLoR0dF|ZEU1Y{f2(U4=s uZcIT#E^-+K9s!!qx!K>SV|u~K{~rJ&|MDjXdEFEM0000<MNUMnLSTYfJURRT diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js deleted file mode 100755 index 27494f23..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js +++ /dev/null @@ -1,485 +0,0 @@ -/* - HTTP Hawk Authentication Scheme - Copyright (c) 2012-2013, Eran Hammer <eran@hueniverse.com> - MIT Licensed -*/ - - -// Declare namespace - -var hawk = {}; - - -// Export if used as a module - -if (typeof module !== "undefined" && module.exports) { - module.exports = hawk; -} - -hawk.client = { - - // Generate an Authorization header for a given request - - /* - uri: 'http://example.com/resource?a=b' - method: HTTP verb (e.g. 'GET', 'POST') - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - timestamp: Date.now() / 1000, // A pre-calculated timestamp in seconds - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash - app: '24s23423f34dx', // Oz application id - dlg: '234sz34tww3sd' // Oz delegated-by application id - } - */ - - header: function (uri, method, options) { - - var result = { - field: '', - artifacts: {} - }; - - // Validate inputs - - if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') || - !method || typeof method !== 'string' || - !options || typeof options !== 'object') { - - return result; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((hawk.utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return result; - } - - if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return result; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = hawk.utils.parseUri(uri); - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || hawk.utils.randomString(6), - method: method, - resource: uri.relative, - host: uri.hostname, - port: uri.port, - hash: options.hash, - ext: options.ext, - app: options.app, - dlg: options.dlg - }; - - result.artifacts = artifacts; - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = hawk.crypto.calculateMac('header', credentials, artifacts); - - // Construct header - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + hawk.utils.escapeHeaderAttribute(artifacts.ext) : '') + - '", mac="' + mac + '"'; - - if (artifacts.app) { - header += ', app="' + artifacts.app + - (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'; - } - - result.field = header; - - return result; - }, - - - // Validate server response - - /* - request: object created via 'new XMLHttpRequest()' after response received - artifacts: object recieved from header().artifacts - options: { - payload: optional payload received - required: specifies if a Server-Authorization header is required. Defaults to 'false' - } - */ - - authenticate: function (request, credentials, artifacts, options) { - - options = options || {}; - - if (request.getResponseHeader('www-authenticate')) { - - // Parse HTTP WWW-Authenticate header - - var attributes = hawk.utils.parseAuthorizationHeader(request.getResponseHeader('www-authenticate'), ['ts', 'tsm', 'error']); - if (!attributes) { - return false; - } - - if (attributes.ts) { - var tsm = hawk.crypto.calculateTsMac(attributes.ts, credentials); - if (tsm !== attributes.tsm) { - return false; - } - - hawk.utils.setNtpOffset(attributes.ts - Math.floor(Date.now() / 1000)); // Keep offset at 1 second precision - } - } - - // Parse HTTP Server-Authorization header - - if (!request.getResponseHeader('server-authorization') && - !options.required) { - - return true; - } - - var attributes = hawk.utils.parseAuthorizationHeader(request.getResponseHeader('server-authorization'), ['mac', 'ext', 'hash']); - if (!attributes) { - return false; - } - - var modArtifacts = { - ts: artifacts.ts, - nonce: artifacts.nonce, - method: artifacts.method, - resource: artifacts.resource, - host: artifacts.host, - port: artifacts.port, - hash: attributes.hash, - ext: attributes.ext, - app: artifacts.app, - dlg: artifacts.dlg - }; - - var mac = hawk.crypto.calculateMac('response', credentials, modArtifacts); - if (mac !== attributes.mac) { - return false; - } - - if (!options.hasOwnProperty('payload')) { - return true; - } - - if (!attributes.hash) { - return false; - } - - var calculatedHash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.getResponseHeader('content-type')); - return (calculatedHash === attributes.hash); - }, - - message: function (host, port, message, options) { - - // Validate inputs - - if (!host || typeof host !== 'string' || - !port || typeof port !== 'number' || - message === null || message === undefined || typeof message !== 'string' || - !options || typeof options !== 'object') { - - return null; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((hawk.utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return null; - } - - if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return null; - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || hawk.utils.randomString(6), - host: host, - port: port, - hash: hawk.crypto.calculatePayloadHash(message, credentials.algorithm) - }; - - // Construct authorization - - var result = { - id: credentials.id, - ts: artifacts.ts, - nonce: artifacts.nonce, - hash: artifacts.hash, - mac: hawk.crypto.calculateMac('message', credentials, artifacts) - }; - - return result; - } -}; - - -hawk.crypto = { - - headerVersion: '1', - - algorithms: ['sha1', 'sha256'], - - calculateMac: function (type, credentials, options) { - - var normalized = hawk.crypto.generateNormalizedString(type, options); - - var hmac = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()](normalized, credentials.key); - return hmac.toString(CryptoJS.enc.Base64); - }, - - generateNormalizedString: function (type, options) { - - var normalized = 'hawk.' + hawk.crypto.headerVersion + '.' + type + '\n' + - options.ts + '\n' + - options.nonce + '\n' + - (options.method || '').toUpperCase() + '\n' + - (options.resource || '') + '\n' + - options.host.toLowerCase() + '\n' + - options.port + '\n' + - (options.hash || '') + '\n'; - - if (options.ext) { - normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n'); - } - - normalized += '\n'; - - if (options.app) { - normalized += options.app + '\n' + - (options.dlg || '') + '\n'; - } - - return normalized; - }, - - calculatePayloadHash: function (payload, algorithm, contentType) { - - var hash = CryptoJS.algo[algorithm.toUpperCase()].create(); - hash.update('hawk.' + hawk.crypto.headerVersion + '.payload\n'); - hash.update(hawk.utils.parseContentType(contentType) + '\n'); - hash.update(payload || ''); - hash.update('\n'); - return hash.finalize().toString(CryptoJS.enc.Base64); - }, - - calculateTsMac: function (ts, credentials) { - - var hash = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()]('hawk.' + hawk.crypto.headerVersion + '.ts\n' + ts + '\n', credentials.key); - return hash.toString(CryptoJS.enc.Base64); - } -}; - - -hawk.utils = { - - storage: { // localStorage compatible interface - _cache: {}, - setItem: function (key, value) { - - hawk.utils.storage._cache[key] = value; - }, - getItem: function (key) { - - return hawk.utils.storage._cache[key]; - } - }, - - setStorage: function (storage) { - - var ntpOffset = hawk.utils.getNtpOffset() || 0; - hawk.utils.storage = storage; - hawk.utils.setNtpOffset(ntpOffset); - }, - - setNtpOffset: function (offset) { - - hawk.utils.storage.setItem('hawk_ntp_offset', offset); - }, - - getNtpOffset: function () { - - return parseInt(hawk.utils.storage.getItem('hawk_ntp_offset') || '0', 10); - }, - - now: function () { - - return Date.now() + hawk.utils.getNtpOffset(); - }, - - escapeHeaderAttribute: function (attribute) { - - return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); - }, - - parseContentType: function (header) { - - if (!header) { - return ''; - } - - return header.split(';')[0].trim().toLowerCase(); - }, - - parseAuthorizationHeader: function (header, keys) { - - if (!header) { - return null; - } - - var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something] - if (!headerParts) { - return null; - } - - var scheme = headerParts[1]; - if (scheme.toLowerCase() !== 'hawk') { - return null; - } - - var attributesString = headerParts[2]; - if (!attributesString) { - return null; - } - - var attributes = {}; - var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) { - - // Check valid attribute names - - if (keys.indexOf($1) === -1) { - return; - } - - // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9 - - if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) { - return; - } - - // Check for duplicates - - if (attributes.hasOwnProperty($1)) { - return; - } - - attributes[$1] = $2; - return ''; - }); - - if (verify !== '') { - return null; - } - - return attributes; - }, - - randomString: function (size) { - - var randomSource = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - var len = randomSource.length; - - var result = []; - for (var i = 0; i < size; ++i) { - result[i] = randomSource[Math.floor(Math.random() * len)]; - } - - return result.join(''); - }, - - parseUri: function (input) { - - // Based on: parseURI 1.2.2 - // http://blog.stevenlevithan.com/archives/parseuri - // (c) Steven Levithan <stevenlevithan.com> - // MIT License - - var keys = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'hostname', 'port', 'resource', 'relative', 'pathname', 'directory', 'file', 'query', 'fragment']; - - var uriRegex = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?(((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?)(?:#(.*))?)/; - var uriByNumber = uriRegex.exec(input); - var uri = {}; - - var i = 15; - while (i--) { - uri[keys[i]] = uriByNumber[i] || ''; - } - - if (uri.port === null || - uri.port === '') { - - uri.port = (uri.protocol.toLowerCase() === 'http' ? '80' : (uri.protocol.toLowerCase() === 'https' ? '443' : '')); - } - - return uri; - } -}; - - -// Based on: Crypto-JS v3.1.2 -// Copyright (c) 2009-2013, Jeff Mott. All rights reserved. -// http://code.google.com/p/crypto-js/ -// http://code.google.com/p/crypto-js/wiki/License - -var CryptoJS=CryptoJS||function(h,r){var k={},l=k.lib={},n=function(){},f=l.Base={extend:function(a){n.prototype=this;var b=new n;a&&b.mixIn(a);b.hasOwnProperty("init")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},j=l.WordArray=f.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=r?b:4*a.length},toString:function(a){return(a||s).stringify(this)},concat:function(a){var b=this.words,d=a.words,c=this.sigBytes;a=a.sigBytes;this.clamp();if(c%4)for(var e=0;e<a;e++)b[c+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((c+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)b[c+e>>>2]=d[e>>>2];else b.push.apply(b,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d<a;d+=4)b.push(4294967296*h.random()|0);return new j.init(b,a)}}),m=k.enc={},s=m.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++){var e=b[c>>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c+=2)d[c>>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return new j.init(d,b/2)}},p=m.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++)d.push(String.fromCharCode(b[c>>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c++)d[c>>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return new j.init(d,b)}},t=m.Utf8={stringify:function(a){try{return decodeURIComponent(escape(p.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return p.parse(unescape(encodeURIComponent(a)))}},q=l.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new j.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=t.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,f=c/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;c=h.min(4*a,c);if(a){for(var g=0;g<a;g+=e)this._doProcessBlock(d,g);g=d.splice(0,a);b.sigBytes-=c}return new j.init(g,c)},clone:function(){var a=f.clone.call(this);a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:f.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,d){return(new a.init(d)).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return(new u.HMAC.init(a,d)).finalize(b)}}});var u=k.algo={};return k}(Math); -(function () { var k = CryptoJS, b = k.lib, m = b.WordArray, l = b.Hasher, d = [], b = k.algo.SHA1 = l.extend({ _doReset: function () { this._hash = new m.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (n, p) { for (var a = this._hash.words, e = a[0], f = a[1], h = a[2], j = a[3], b = a[4], c = 0; 80 > c; c++) { if (16 > c) d[c] = n[p + c] | 0; else { var g = d[c - 3] ^ d[c - 8] ^ d[c - 14] ^ d[c - 16]; d[c] = g << 1 | g >>> 31 } g = (e << 5 | e >>> 27) + b + d[c]; g = 20 > c ? g + ((f & h | ~f & j) + 1518500249) : 40 > c ? g + ((f ^ h ^ j) + 1859775393) : 60 > c ? g + ((f & h | f & j | h & j) - 1894007588) : g + ((f ^ h ^ j) - 899497514); b = j; j = h; h = f << 30 | f >>> 2; f = e; e = g } a[0] = a[0] + e | 0; a[1] = a[1] + f | 0; a[2] = a[2] + h | 0; a[3] = a[3] + j | 0; a[4] = a[4] + b | 0 }, _doFinalize: function () { var b = this._data, d = b.words, a = 8 * this._nDataBytes, e = 8 * b.sigBytes; d[e >>> 5] |= 128 << 24 - e % 32; d[(e + 64 >>> 9 << 4) + 14] = Math.floor(a / 4294967296); d[(e + 64 >>> 9 << 4) + 15] = a; b.sigBytes = 4 * d.length; this._process(); return this._hash }, clone: function () { var b = l.clone.call(this); b._hash = this._hash.clone(); return b } }); k.SHA1 = l._createHelper(b); k.HmacSHA1 = l._createHmacHelper(b) })(); -(function (k) { for (var g = CryptoJS, h = g.lib, v = h.WordArray, j = h.Hasher, h = g.algo, s = [], t = [], u = function (q) { return 4294967296 * (q - (q | 0)) | 0 }, l = 2, b = 0; 64 > b;) { var d; a: { d = l; for (var w = k.sqrt(d), r = 2; r <= w; r++) if (!(d % r)) { d = !1; break a } d = !0 } d && (8 > b && (s[b] = u(k.pow(l, 0.5))), t[b] = u(k.pow(l, 1 / 3)), b++); l++ } var n = [], h = h.SHA256 = j.extend({ _doReset: function () { this._hash = new v.init(s.slice(0)) }, _doProcessBlock: function (q, h) { for (var a = this._hash.words, c = a[0], d = a[1], b = a[2], k = a[3], f = a[4], g = a[5], j = a[6], l = a[7], e = 0; 64 > e; e++) { if (16 > e) n[e] = q[h + e] | 0; else { var m = n[e - 15], p = n[e - 2]; n[e] = ((m << 25 | m >>> 7) ^ (m << 14 | m >>> 18) ^ m >>> 3) + n[e - 7] + ((p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10) + n[e - 16] } m = l + ((f << 26 | f >>> 6) ^ (f << 21 | f >>> 11) ^ (f << 7 | f >>> 25)) + (f & g ^ ~f & j) + t[e] + n[e]; p = ((c << 30 | c >>> 2) ^ (c << 19 | c >>> 13) ^ (c << 10 | c >>> 22)) + (c & d ^ c & b ^ d & b); l = j; j = g; g = f; f = k + m | 0; k = b; b = d; d = c; c = m + p | 0 } a[0] = a[0] + c | 0; a[1] = a[1] + d | 0; a[2] = a[2] + b | 0; a[3] = a[3] + k | 0; a[4] = a[4] + f | 0; a[5] = a[5] + g | 0; a[6] = a[6] + j | 0; a[7] = a[7] + l | 0 }, _doFinalize: function () { var d = this._data, b = d.words, a = 8 * this._nDataBytes, c = 8 * d.sigBytes; b[c >>> 5] |= 128 << 24 - c % 32; b[(c + 64 >>> 9 << 4) + 14] = k.floor(a / 4294967296); b[(c + 64 >>> 9 << 4) + 15] = a; d.sigBytes = 4 * b.length; this._process(); return this._hash }, clone: function () { var b = j.clone.call(this); b._hash = this._hash.clone(); return b } }); g.SHA256 = j._createHelper(h); g.HmacSHA256 = j._createHmacHelper(h) })(Math); -(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;"string"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d<c;d++)h[d]^=1549556828,j[d]^=909522486;f.sigBytes=g.sigBytes=e;this.reset()},reset:function(){var a=this._hasher;a.reset();a.update(this._iKey)},update:function(a){this._hasher.update(a);return this},finalize:function(a){var b=this._hasher;a=b.finalize(a);b.reset();return b.finalize(this._oKey.clone().concat(a))}})})(); -(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js deleted file mode 100755 index 41984582..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js +++ /dev/null @@ -1,367 +0,0 @@ -// Load modules - -var Url = require('url'); -var Hoek = require('hoek'); -var Cryptiles = require('cryptiles'); -var Crypto = require('./crypto'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// Generate an Authorization header for a given request - -/* - uri: 'http://example.com/resource?a=b' or object from Url.parse() - method: HTTP verb (e.g. 'GET', 'POST') - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - timestamp: Date.now(), // A pre-calculated timestamp - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash - app: '24s23423f34dx', // Oz application id - dlg: '234sz34tww3sd' // Oz delegated-by application id - } -*/ - -exports.header = function (uri, method, options) { - - var result = { - field: '', - artifacts: {} - }; - - // Validate inputs - - if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') || - !method || typeof method !== 'string' || - !options || typeof options !== 'object') { - - return result; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return result; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return result; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = Url.parse(uri); - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || Cryptiles.randomString(6), - method: method, - resource: uri.pathname + (uri.search || ''), // Maintain trailing '?' - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - hash: options.hash, - ext: options.ext, - app: options.app, - dlg: options.dlg - }; - - result.artifacts = artifacts; - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = Crypto.calculateMac('header', credentials, artifacts); - - // Construct header - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + Utils.escapeHeaderAttribute(artifacts.ext) : '') + - '", mac="' + mac + '"'; - - if (artifacts.app) { - header += ', app="' + artifacts.app + - (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'; - } - - result.field = header; - - return result; -}; - - -// Validate server response - -/* - res: node's response object - artifacts: object recieved from header().artifacts - options: { - payload: optional payload received - required: specifies if a Server-Authorization header is required. Defaults to 'false' - } -*/ - -exports.authenticate = function (res, credentials, artifacts, options) { - - artifacts = Hoek.clone(artifacts); - options = options || {}; - - if (res.headers['www-authenticate']) { - - // Parse HTTP WWW-Authenticate header - - var attributes = Utils.parseAuthorizationHeader(res.headers['www-authenticate'], ['ts', 'tsm', 'error']); - if (attributes instanceof Error) { - return false; - } - - if (attributes.ts) { - var tsm = Crypto.calculateTsMac(attributes.ts, credentials); - if (tsm !== attributes.tsm) { - return false; - } - } - } - - // Parse HTTP Server-Authorization header - - if (!res.headers['server-authorization'] && - !options.required) { - - return true; - } - - var attributes = Utils.parseAuthorizationHeader(res.headers['server-authorization'], ['mac', 'ext', 'hash']); - if (attributes instanceof Error) { - return false; - } - - artifacts.ext = attributes.ext; - artifacts.hash = attributes.hash; - - var mac = Crypto.calculateMac('response', credentials, artifacts); - if (mac !== attributes.mac) { - return false; - } - - if (!options.hasOwnProperty('payload')) { - return true; - } - - if (!attributes.hash) { - return false; - } - - var calculatedHash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, res.headers['content-type']); - return (calculatedHash === attributes.hash); -}; - - -// Generate a bewit value for a given URI - -/* - * credentials is an object with the following keys: 'id, 'key', 'algorithm'. - * options is an object with the following optional keys: 'ext', 'localtimeOffsetMsec' - */ -/* - uri: 'http://example.com/resource?a=b' or object from Url.parse() - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - ttlSec: 60 * 60, // TTL in seconds - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - localtimeOffsetMsec: 400 // Time offset to sync with server time - }; -*/ - -exports.getBewit = function (uri, options) { - - // Validate inputs - - if (!uri || - (typeof uri !== 'string' && typeof uri !== 'object') || - !options || - typeof options !== 'object' || - !options.ttlSec) { - - return ''; - } - - options.ext = (options.ext === null || options.ext === undefined ? '' : options.ext); // Zero is valid value - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - return ''; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return ''; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = Url.parse(uri); - } - - // Calculate signature - - var exp = Math.floor(now / 1000) + options.ttlSec; - var mac = Crypto.calculateMac('bewit', credentials, { - ts: exp, - nonce: '', - method: 'GET', - resource: uri.pathname + (uri.search || ''), // Maintain trailing '?' - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - ext: options.ext - }); - - // Construct bewit: id\exp\mac\ext - - var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + options.ext; - return Utils.base64urlEncode(bewit); -}; - - -// Generate an authorization string for a message - -/* - host: 'example.com', - port: 8000, - message: '{"some":"payload"}', // UTF-8 encoded string for body hash generation - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - timestamp: Date.now(), // A pre-calculated timestamp - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - } -*/ - -exports.message = function (host, port, message, options) { - - // Validate inputs - - if (!host || typeof host !== 'string' || - !port || typeof port !== 'number' || - message === null || message === undefined || typeof message !== 'string' || - !options || typeof options !== 'object') { - - return null; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return null; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return null; - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || Cryptiles.randomString(6), - host: host, - port: port, - hash: Crypto.calculatePayloadHash(message, credentials.algorithm) - }; - - // Construct authorization - - var result = { - id: credentials.id, - ts: artifacts.ts, - nonce: artifacts.nonce, - hash: artifacts.hash, - mac: Crypto.calculateMac('message', credentials, artifacts) - }; - - return result; -}; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js deleted file mode 100755 index 150340a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js +++ /dev/null @@ -1,111 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Url = require('url'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// MAC normalization format version - -exports.headerVersion = '1'; // Prevent comparison of mac values generated with different normalized string formats - - -// Supported HMAC algorithms - -exports.algorithms = ['sha1', 'sha256']; - - -// Calculate the request MAC - -/* - type: 'header', // 'header', 'bewit', 'response' - credentials: { - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - options: { - method: 'GET', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8080, - ts: 1357718381034, - nonce: 'd3d345f', - hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=', - ext: 'app-specific-data', - app: 'hf48hd83qwkj', // Application id (Oz) - dlg: 'd8djwekds9cj' // Delegated by application id (Oz), requires options.app - } -*/ - -exports.calculateMac = function (type, credentials, options) { - - var normalized = exports.generateNormalizedString(type, options); - - var hmac = Crypto.createHmac(credentials.algorithm, credentials.key).update(normalized); - var digest = hmac.digest('base64'); - return digest; -}; - - -exports.generateNormalizedString = function (type, options) { - - var normalized = 'hawk.' + exports.headerVersion + '.' + type + '\n' + - options.ts + '\n' + - options.nonce + '\n' + - (options.method || '').toUpperCase() + '\n' + - (options.resource || '') + '\n' + - options.host.toLowerCase() + '\n' + - options.port + '\n' + - (options.hash || '') + '\n'; - - if (options.ext) { - normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n'); - } - - normalized += '\n'; - - if (options.app) { - normalized += options.app + '\n' + - (options.dlg || '') + '\n'; - } - - return normalized; -}; - - -exports.calculatePayloadHash = function (payload, algorithm, contentType) { - - var hash = exports.initializePayloadHash(algorithm, contentType); - hash.update(payload || ''); - return exports.finalizePayloadHash(hash); -}; - - -exports.initializePayloadHash = function (algorithm, contentType) { - - var hash = Crypto.createHash(algorithm); - hash.update('hawk.' + exports.headerVersion + '.payload\n'); - hash.update(Utils.parseContentType(contentType) + '\n'); - return hash; -}; - - -exports.finalizePayloadHash = function (hash) { - - hash.update('\n'); - return hash.digest('base64'); -}; - - -exports.calculateTsMac = function (ts, credentials) { - - var hmac = Crypto.createHmac(credentials.algorithm, credentials.key); - hmac.update('hawk.' + exports.headerVersion + '.ts\n' + ts + '\n'); - return hmac.digest('base64'); -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js deleted file mode 100755 index 1d713cb6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Export sub-modules - -exports.error = exports.Error = require('boom'); -exports.sntp = require('sntp'); -exports.server = require('./server'); -exports.client = require('./client'); -exports.crypto = require('./crypto'); -exports.utils = require('./utils'); - -exports.uri = { - authenticate: exports.server.authenticateBewit, - getBewit: exports.client.getBewit -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js deleted file mode 100755 index 478c47b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js +++ /dev/null @@ -1,524 +0,0 @@ -// Load modules - -var Boom = require('boom'); -var Hoek = require('hoek'); -var Cryptiles = require('cryptiles'); -var Crypto = require('./crypto'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// Hawk authentication - -/* - req: node's HTTP request object or an object as follows: - - var request = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="' - }; - - credentialsFunc: required function to lookup the set of Hawk credentials based on the provided credentials id. - The credentials include the MAC key, MAC algorithm, and other attributes (such as username) - needed by the application. This function is the equivalent of verifying the username and - password in Basic authentication. - - var credentialsFunc = function (id, callback) { - - // Lookup credentials in database - db.lookup(id, function (err, item) { - - if (err || !item) { - return callback(err); - } - - var credentials = { - // Required - key: item.key, - algorithm: item.algorithm, - // Application specific - user: item.user - }; - - return callback(null, credentials); - }); - }; - - options: { - - hostHeaderName: optional header field name, used to override the default 'Host' header when used - behind a cache of a proxy. Apache2 changes the value of the 'Host' header while preserving - the original (which is what the module must verify) in the 'x-forwarded-host' header field. - Only used when passed a node Http.ServerRequest object. - - nonceFunc: optional nonce validation function. The function signature is function(nonce, ts, callback) - where 'callback' must be called using the signature function(err). - - timestampSkewSec: optional number of seconds of permitted clock skew for incoming timestamps. Defaults to 60 seconds. - Provides a +/- skew which means actual allowed window is double the number of seconds. - - localtimeOffsetMsec: optional local clock time offset express in a number of milliseconds (positive or negative). - Defaults to 0. - - payload: optional payload for validation. The client calculates the hash value and includes it via the 'hash' - header attribute. The server always ensures the value provided has been included in the request - MAC. When this option is provided, it validates the hash value itself. Validation is done by calculating - a hash value over the entire payload (assuming it has already be normalized to the same format and - encoding used by the client to calculate the hash on request). If the payload is not available at the time - of authentication, the authenticatePayload() method can be used by passing it the credentials and - attributes.hash returned in the authenticate callback. - - host: optional host name override. Only used when passed a node request object. - port: optional port override. Only used when passed a node request object. - } - - callback: function (err, credentials, artifacts) { } - */ - -exports.authenticate = function (req, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Default options - - options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation - options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); // Measure now before any other processing - - // Convert node Http request object to a request configuration object - - var request = Utils.parseRequest(req, options); - if (request instanceof Error) { - return callback(Boom.badRequest(request.message)); - } - - // Parse HTTP Authorization header - - var attributes = Utils.parseAuthorizationHeader(request.authorization); - if (attributes instanceof Error) { - return callback(attributes); - } - - // Construct artifacts container - - var artifacts = { - method: request.method, - host: request.host, - port: request.port, - resource: request.url, - ts: attributes.ts, - nonce: attributes.nonce, - hash: attributes.hash, - ext: attributes.ext, - app: attributes.app, - dlg: attributes.dlg, - mac: attributes.mac, - id: attributes.id - }; - - // Verify required header attributes - - if (!attributes.id || - !attributes.ts || - !attributes.nonce || - !attributes.mac) { - - return callback(Boom.badRequest('Missing attributes'), null, artifacts); - } - - // Fetch Hawk credentials - - credentialsFunc(attributes.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null, artifacts); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, artifacts); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials, artifacts); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials, artifacts); - } - - // Calculate MAC - - var mac = Crypto.calculateMac('header', credentials, artifacts); - if (!Cryptiles.fixedTimeComparison(mac, attributes.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, artifacts); - } - - // Check payload hash - - if (options.payload !== null && - options.payload !== undefined) { // '' is valid - - if (!attributes.hash) { - return callback(Boom.unauthorized('Missing required payload hash', 'Hawk'), credentials, artifacts); - } - - var hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.contentType); - if (!Cryptiles.fixedTimeComparison(hash, attributes.hash)) { - return callback(Boom.unauthorized('Bad payload hash', 'Hawk'), credentials, artifacts); - } - } - - // Check nonce - - options.nonceFunc(attributes.nonce, attributes.ts, function (err) { - - if (err) { - return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials, artifacts); - } - - // Check timestamp staleness - - if (Math.abs((attributes.ts * 1000) - now) > (options.timestampSkewSec * 1000)) { - var fresh = Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000); // Get fresh now - var tsm = Crypto.calculateTsMac(fresh, credentials); - return callback(Boom.unauthorized('Stale timestamp', 'Hawk', { ts: fresh, tsm: tsm }), credentials, artifacts); - } - - // Successful authentication - - return callback(null, credentials, artifacts); - }); - }); -}; - - -// Authenticate payload hash - used when payload cannot be provided during authenticate() - -/* - payload: raw request payload - credentials: from authenticate callback - artifacts: from authenticate callback - contentType: req.headers['content-type'] -*/ - -exports.authenticatePayload = function (payload, credentials, artifacts, contentType) { - - var calculatedHash = Crypto.calculatePayloadHash(payload, credentials.algorithm, contentType); - return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash); -}; - - -// Generate a Server-Authorization header for a given response - -/* - credentials: {}, // Object received from authenticate() - artifacts: {} // Object received from authenticate(); 'mac', 'hash', and 'ext' - ignored - options: { - ext: 'application-specific', // Application specific data sent via the ext attribute - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=' // Pre-calculated payload hash - } -*/ - -exports.header = function (credentials, artifacts, options) { - - // Prepare inputs - - options = options || {}; - - if (!artifacts || - typeof artifacts !== 'object' || - typeof options !== 'object') { - - return ''; - } - - artifacts = Hoek.clone(artifacts); - delete artifacts.mac; - artifacts.hash = options.hash; - artifacts.ext = options.ext; - - // Validate credentials - - if (!credentials || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return ''; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return ''; - } - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = Crypto.calculateMac('response', credentials, artifacts); - - // Construct header - - var header = 'Hawk mac="' + mac + '"' + - (artifacts.hash ? ', hash="' + artifacts.hash + '"' : ''); - - if (artifacts.ext !== null && - artifacts.ext !== undefined && - artifacts.ext !== '') { // Other falsey values allowed - - header += ', ext="' + Utils.escapeHeaderAttribute(artifacts.ext) + '"'; - } - - return header; -}; - - -/* - * Arguments and options are the same as authenticate() with the exception that the only supported options are: - * 'hostHeaderName', 'localtimeOffsetMsec', 'host', 'port' - */ - -exports.authenticateBewit = function (req, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); - - // Convert node Http request object to a request configuration object - - var request = Utils.parseRequest(req, options); - if (request instanceof Error) { - return callback(Boom.badRequest(request.message)); - } - - // Extract bewit - - // 1 2 3 4 - var resource = request.url.match(/^(\/.*)([\?&])bewit\=([^&$]*)(?:&(.+))?$/); - if (!resource) { - return callback(Boom.unauthorized(null, 'Hawk')); - } - - // Bewit not empty - - if (!resource[3]) { - return callback(Boom.unauthorized('Empty bewit', 'Hawk')); - } - - // Verify method is GET - - if (request.method !== 'GET' && - request.method !== 'HEAD') { - - return callback(Boom.unauthorized('Invalid method', 'Hawk')); - } - - // No other authentication - - if (request.authorization) { - return callback(Boom.badRequest('Multiple authentications', 'Hawk')); - } - - // Parse bewit - - var bewitString = Utils.base64urlDecode(resource[3]); - if (bewitString instanceof Error) { - return callback(Boom.badRequest('Invalid bewit encoding')); - } - - // Bewit format: id\exp\mac\ext ('\' is used because it is a reserved header attribute character) - - var bewitParts = bewitString.split('\\'); - if (!bewitParts || - bewitParts.length !== 4) { - - return callback(Boom.badRequest('Invalid bewit structure')); - } - - var bewit = { - id: bewitParts[0], - exp: parseInt(bewitParts[1], 10), - mac: bewitParts[2], - ext: bewitParts[3] || '' - }; - - if (!bewit.id || - !bewit.exp || - !bewit.mac) { - - return callback(Boom.badRequest('Missing bewit attributes')); - } - - // Construct URL without bewit - - var url = resource[1]; - if (resource[4]) { - url += resource[2] + resource[4]; - } - - // Check expiration - - if (bewit.exp * 1000 <= now) { - return callback(Boom.unauthorized('Access expired', 'Hawk'), null, bewit); - } - - // Fetch Hawk credentials - - credentialsFunc(bewit.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null, bewit.ext); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, bewit); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials, bewit); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials, bewit); - } - - // Calculate MAC - - var mac = Crypto.calculateMac('bewit', credentials, { - ts: bewit.exp, - nonce: '', - method: 'GET', - resource: url, - host: request.host, - port: request.port, - ext: bewit.ext - }); - - if (!Cryptiles.fixedTimeComparison(mac, bewit.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, bewit); - } - - // Successful authentication - - return callback(null, credentials, bewit); - }); -}; - - -/* - * options are the same as authenticate() with the exception that the only supported options are: - * 'nonceFunc', 'timestampSkewSec', 'localtimeOffsetMsec' - */ - -exports.authenticateMessage = function (host, port, message, authorization, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Default options - - options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation - options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); // Measure now before any other processing - - // Validate authorization - - if (!authorization.id || - !authorization.ts || - !authorization.nonce || - !authorization.hash || - !authorization.mac) { - - return callback(Boom.badRequest('Invalid authorization')) - } - - // Fetch Hawk credentials - - credentialsFunc(authorization.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk')); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials); - } - - // Construct artifacts container - - var artifacts = { - ts: authorization.ts, - nonce: authorization.nonce, - host: host, - port: port, - hash: authorization.hash - }; - - // Calculate MAC - - var mac = Crypto.calculateMac('message', credentials, artifacts); - if (!Cryptiles.fixedTimeComparison(mac, authorization.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials); - } - - // Check payload hash - - var hash = Crypto.calculatePayloadHash(message, credentials.algorithm); - if (!Cryptiles.fixedTimeComparison(hash, authorization.hash)) { - return callback(Boom.unauthorized('Bad message hash', 'Hawk'), credentials); - } - - // Check nonce - - options.nonceFunc(authorization.nonce, authorization.ts, function (err) { - - if (err) { - return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials); - } - - // Check timestamp staleness - - if (Math.abs((authorization.ts * 1000) - now) > (options.timestampSkewSec * 1000)) { - return callback(Boom.unauthorized('Stale timestamp'), credentials); - } - - // Successful authentication - - return callback(null, credentials); - }); - }); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js deleted file mode 100755 index c8938fe8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js +++ /dev/null @@ -1,183 +0,0 @@ -// Load modules - -var Hoek = require('hoek'); -var Sntp = require('sntp'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Import Hoek Utilities - -internals.import = function () { - - for (var i in Hoek) { - if (Hoek.hasOwnProperty(i)) { - exports[i] = Hoek[i]; - } - } -}; - -internals.import(); - - -// Hawk version - -exports.version = function () { - - return exports.loadPackage(__dirname + '/..').version; -}; - - -// Extract host and port from request - -exports.parseHost = function (req, hostHeaderName) { - - hostHeaderName = (hostHeaderName ? hostHeaderName.toLowerCase() : 'host'); - var hostHeader = req.headers[hostHeaderName]; - if (!hostHeader) { - return null; - } - - var hostHeaderRegex; - if (hostHeader[0] === '[') { - hostHeaderRegex = /^(?:(?:\r\n)?\s)*(\[[^\]]+\])(?::(\d+))?(?:(?:\r\n)?\s)*$/; // IPv6 - } - else { - hostHeaderRegex = /^(?:(?:\r\n)?\s)*([^:]+)(?::(\d+))?(?:(?:\r\n)?\s)*$/; // IPv4, hostname - } - - var hostParts = hostHeader.match(hostHeaderRegex); - - if (!hostParts || - hostParts.length !== 3 || - !hostParts[1]) { - - return null; - } - - return { - name: hostParts[1], - port: (hostParts[2] ? hostParts[2] : (req.connection && req.connection.encrypted ? 443 : 80)) - }; -}; - - -// Parse Content-Type header content - -exports.parseContentType = function (header) { - - if (!header) { - return ''; - } - - return header.split(';')[0].trim().toLowerCase(); -}; - - -// Convert node's to request configuration object - -exports.parseRequest = function (req, options) { - - if (!req.headers) { - return req; - } - - // Obtain host and port information - - if (!options.host || !options.port) { - var host = exports.parseHost(req, options.hostHeaderName); - if (!host) { - return new Error('Invalid Host header'); - } - } - - var request = { - method: req.method, - url: req.url, - host: options.host || host.name, - port: options.port || host.port, - authorization: req.headers.authorization, - contentType: req.headers['content-type'] || '' - }; - - return request; -}; - - -exports.now = function () { - - return Sntp.now(); -}; - - -// Parse Hawk HTTP Authorization header - -exports.parseAuthorizationHeader = function (header, keys) { - - keys = keys || ['id', 'ts', 'nonce', 'hash', 'ext', 'mac', 'app', 'dlg']; - - if (!header) { - return Boom.unauthorized(null, 'Hawk'); - } - - var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something] - if (!headerParts) { - return Boom.badRequest('Invalid header syntax'); - } - - var scheme = headerParts[1]; - if (scheme.toLowerCase() !== 'hawk') { - return Boom.unauthorized(null, 'Hawk'); - } - - var attributesString = headerParts[2]; - if (!attributesString) { - return Boom.badRequest('Invalid header syntax'); - } - - var attributes = {}; - var errorMessage = ''; - var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) { - - // Check valid attribute names - - if (keys.indexOf($1) === -1) { - errorMessage = 'Unknown attribute: ' + $1; - return; - } - - // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9 - - if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) { - errorMessage = 'Bad attribute value: ' + $1; - return; - } - - // Check for duplicates - - if (attributes.hasOwnProperty($1)) { - errorMessage = 'Duplicate attribute: ' + $1; - return; - } - - attributes[$1] = $2; - return ''; - }); - - if (verify !== '') { - return Boom.badRequest(errorMessage || 'Bad header format'); - } - - return attributes; -}; - - -exports.unauthorized = function (message) { - - return Boom.unauthorized(message, 'Hawk'); -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE deleted file mode 100755 index 911b97ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Walmart. -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 Walmart 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 WALMART 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile deleted file mode 100755 index 884ec6db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md deleted file mode 100755 index 1970b1c4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md +++ /dev/null @@ -1,6 +0,0 @@ -<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a> -![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png) - -HTTP-friendly error objects - -[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png deleted file mode 100755 index 373bc13455bc0a71a6a4538158aee59c6994b761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29479 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 QhhSjjq?9Eq#J`37AMgo!6951J diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js deleted file mode 100755 index 0bbeed95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js +++ /dev/null @@ -1,207 +0,0 @@ -// Load modules - -var Http = require('http'); -var NodeUtil = require('util'); -var Hoek = require('hoek'); - - -// Declare internals - -var internals = {}; - - -exports = module.exports = internals.Boom = function (/* (new Error) or (code, message) */) { - - var self = this; - - Hoek.assert(this.constructor === internals.Boom, 'Error must be instantiated using new'); - - Error.call(this); - this.isBoom = true; - - this.response = { - code: 0, - payload: {}, - headers: {} - // type: 'content-type' - }; - - if (arguments[0] instanceof Error) { - - // Error - - var error = arguments[0]; - - this.data = error; - this.response.code = error.code || 500; - if (error.message) { - this.message = error.message; - } - } - else { - - // code, message - - var code = arguments[0]; - var message = arguments[1]; - - Hoek.assert(!isNaN(parseFloat(code)) && isFinite(code) && code >= 400, 'First argument must be a number (400+)'); - - this.response.code = code; - if (message) { - this.message = message; - } - } - - // Response format - - this.reformat(); - - return this; -}; - -NodeUtil.inherits(internals.Boom, Error); - - -internals.Boom.prototype.reformat = function () { - - this.response.payload.code = this.response.code; - this.response.payload.error = Http.STATUS_CODES[this.response.code] || 'Unknown'; - if (this.message) { - this.response.payload.message = Hoek.escapeHtml(this.message); // Prevent XSS from error message - } -}; - - -// Utilities - -internals.Boom.badRequest = function (message) { - - return new internals.Boom(400, message); -}; - - -internals.Boom.unauthorized = function (message, scheme, attributes) { // Or function (message, wwwAuthenticate[]) - - var err = new internals.Boom(401, message); - - if (!scheme) { - return err; - } - - var wwwAuthenticate = ''; - - if (typeof scheme === 'string') { - - // function (message, scheme, attributes) - - wwwAuthenticate = scheme; - if (attributes) { - var names = Object.keys(attributes); - for (var i = 0, il = names.length; i < il; ++i) { - if (i) { - wwwAuthenticate += ','; - } - - var value = attributes[names[i]]; - if (value === null || - value === undefined) { // Value can be zero - - value = ''; - } - wwwAuthenticate += ' ' + names[i] + '="' + Hoek.escapeHeaderAttribute(value.toString()) + '"'; - } - } - - if (message) { - if (attributes) { - wwwAuthenticate += ','; - } - wwwAuthenticate += ' error="' + Hoek.escapeHeaderAttribute(message) + '"'; - } - else { - err.isMissing = true; - } - } - else { - - // function (message, wwwAuthenticate[]) - - var wwwArray = scheme; - for (var i = 0, il = wwwArray.length; i < il; ++i) { - if (i) { - wwwAuthenticate += ', '; - } - - wwwAuthenticate += wwwArray[i]; - } - } - - err.response.headers['WWW-Authenticate'] = wwwAuthenticate; - - return err; -}; - - -internals.Boom.clientTimeout = function (message) { - - return new internals.Boom(408, message); -}; - - -internals.Boom.serverTimeout = function (message) { - - return new internals.Boom(503, message); -}; - - -internals.Boom.forbidden = function (message) { - - return new internals.Boom(403, message); -}; - - -internals.Boom.notFound = function (message) { - - return new internals.Boom(404, message); -}; - - -internals.Boom.internal = function (message, data) { - - var err = new internals.Boom(500, message); - - if (data && data.stack) { - err.trace = data.stack.split('\n'); - err.outterTrace = Hoek.displayStack(1); - } - else { - err.trace = Hoek.displayStack(1); - } - - err.data = data; - err.response.payload.message = 'An internal server error occurred'; // Hide actual error from user - - return err; -}; - - -internals.Boom.passThrough = function (code, payload, contentType, headers) { - - var err = new internals.Boom(500, 'Pass-through'); // 500 code is only used to initialize - - err.data = { - code: code, - payload: payload, - type: contentType - }; - - err.response.code = code; - err.response.type = contentType; - err.response.headers = headers; - err.response.payload = payload; - - return err; -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json deleted file mode 100755 index c57a11a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "boom", - "description": "HTTP-friendly error objects", - "version": "0.4.2", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/spumko/boom" - }, - "main": "index", - "keywords": [ - "error", - "http" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/spumko/boom/raw/master/LICENSE" - } - ], - "readme": "<a href=\"https://github.com/spumko\"><img src=\"https://raw.github.com/spumko/spumko/master/images/from.png\" align=\"right\" /></a>\n![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png)\n\nHTTP-friendly error objects\n\n[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/spumko/boom/issues" - }, - "homepage": "https://github.com/spumko/boom", - "_id": "boom@0.4.2", - "_from": "boom@0.4.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js deleted file mode 100755 index a20c1c34..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js +++ /dev/null @@ -1,245 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Boom = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Boom', function () { - - it('returns an error with info when constructed using another error', function (done) { - - var error = new Error('ka-boom'); - error.xyz = 123; - var err = new Boom(error); - expect(err.data.xyz).to.equal(123); - expect(err.message).to.equal('ka-boom'); - expect(err.response).to.deep.equal({ - code: 500, - payload: { - code: 500, - error: 'Internal Server Error', - message: 'ka-boom' - }, - headers: {} - }); - done(); - }); - - describe('#isBoom', function () { - - it('returns true for Boom object', function (done) { - - expect(Boom.badRequest().isBoom).to.equal(true); - done(); - }); - - it('returns false for Error object', function (done) { - - expect(new Error().isBoom).to.not.exist; - done(); - }); - }); - - describe('#badRequest', function () { - - it('returns a 400 error code', function (done) { - - expect(Boom.badRequest().response.code).to.equal(400); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.badRequest('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#unauthorized', function () { - - it('returns a 401 error code', function (done) { - - var err = Boom.unauthorized(); - expect(err.response.code).to.equal(401); - expect(err.response.headers).to.deep.equal({}); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.unauthorized('my message').message).to.equal('my message'); - done(); - }); - - it('returns a WWW-Authenticate header when passed a scheme', function (done) { - - var err = Boom.unauthorized('boom', 'Test'); - expect(err.response.code).to.equal(401); - expect(err.response.headers['WWW-Authenticate']).to.equal('Test error="boom"'); - done(); - }); - - it('returns a WWW-Authenticate header when passed a scheme and attributes', function (done) { - - var err = Boom.unauthorized('boom', 'Test', { a: 1, b: 'something', c: null, d: 0 }); - expect(err.response.code).to.equal(401); - expect(err.response.headers['WWW-Authenticate']).to.equal('Test a="1", b="something", c="", d="0", error="boom"'); - done(); - }); - - it('sets the isMissing flag when error message is empty', function (done) { - - var err = Boom.unauthorized('', 'Basic'); - expect(err.isMissing).to.equal(true); - done(); - }); - - it('does not set the isMissing flag when error message is not empty', function (done) { - - var err = Boom.unauthorized('message', 'Basic'); - expect(err.isMissing).to.equal(undefined); - done(); - }); - - it('sets a WWW-Authenticate when passed as an array', function (done) { - - var err = Boom.unauthorized('message', ['Basic', 'Example e="1"', 'Another x="3", y="4"']); - expect(err.response.headers['WWW-Authenticate']).to.equal('Basic, Example e="1", Another x="3", y="4"'); - done(); - }); - }); - - describe('#clientTimeout', function () { - - it('returns a 408 error code', function (done) { - - expect(Boom.clientTimeout().response.code).to.equal(408); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.clientTimeout('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#serverTimeout', function () { - - it('returns a 503 error code', function (done) { - - expect(Boom.serverTimeout().response.code).to.equal(503); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.serverTimeout('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#forbidden', function () { - - it('returns a 403 error code', function (done) { - - expect(Boom.forbidden().response.code).to.equal(403); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.forbidden('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#notFound', function () { - - it('returns a 404 error code', function (done) { - - expect(Boom.notFound().response.code).to.equal(404); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.notFound('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#internal', function () { - - it('returns a 500 error code', function (done) { - - expect(Boom.internal().response.code).to.equal(500); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - var err = Boom.internal('my message'); - expect(err.message).to.equal('my message'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - - it('passes data on the callback if its passed in', function (done) { - - expect(Boom.internal('my message', { my: 'data' }).data.my).to.equal('data'); - done(); - }); - - it('uses passed in stack if its available', function (done) { - - var error = new Error(); - error.stack = 'my stack line\nmy second stack line'; - expect(Boom.internal('my message', error).trace[0]).to.equal('my stack line'); - done(); - }); - }); - - describe('#passThrough', function () { - - it('returns a pass-through error', function (done) { - - var err = Boom.passThrough(499, { a: 1 }, 'application/text', { 'X-Test': 'Boom' }); - expect(err.response.code).to.equal(499); - expect(err.message).to.equal('Pass-through'); - expect(err.response).to.deep.equal({ - code: 499, - payload: { a: 1 }, - headers: { 'X-Test': 'Boom' }, - type: 'application/text' - }); - done(); - }); - }); - - describe('#reformat', function () { - - it('encodes any HTML markup in the response payload', function (done) { - - var boom = new Boom(new Error('<script>alert(1)</script>')); - expect(boom.response.payload.message).to.not.contain('<script>'); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore deleted file mode 100644 index b3bb5176..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml deleted file mode 100755 index 40ca59ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile deleted file mode 100755 index 9e7138c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @./node_modules/.bin/lab -test-cov: - @./node_modules/.bin/lab -r threshold -t 100 -test-cov-html: - @./node_modules/.bin/lab -r html -o coverage.html -complexity: - @./node_modules/.bin/cr -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md deleted file mode 100644 index 6a900a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md +++ /dev/null @@ -1,6 +0,0 @@ -cryptiles -========= - -General purpose crypto utilities - -[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js deleted file mode 100755 index dcf2bc38..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js +++ /dev/null @@ -1,68 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Generate a cryptographically strong pseudo-random data - -exports.randomString = function (size) { - - var buffer = exports.randomBits((size + 1) * 6); - if (buffer instanceof Error) { - return buffer; - } - - var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); - return string.slice(0, size); -}; - - -exports.randomBits = function (bits) { - - if (!bits || - bits < 0) { - - return Boom.internal('Invalid random bits count'); - } - - var bytes = Math.ceil(bits / 8); - try { - return Crypto.randomBytes(bytes); - } - catch (err) { - return Boom.internal('Failed generating random bits: ' + err.message); - } -}; - - -// Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match) - -exports.fixedTimeComparison = function (a, b) { - - if (typeof a !== 'string' || - typeof b !== 'string') { - - return false; - } - - var mismatch = (a.length === b.length ? 0 : 1); - if (mismatch) { - b = a; - } - - for (var i = 0, il = a.length; i < il; ++i) { - var ac = a.charCodeAt(i); - var bc = b.charCodeAt(i); - mismatch += (ac === bc ? 0 : 1); - } - - return (mismatch === 0); -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json deleted file mode 100755 index cc1f7393..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "cryptiles", - "description": "General purpose crypto utilities", - "version": "0.2.2", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/cryptiles" - }, - "main": "index", - "keywords": [ - "cryptography", - "security", - "utilites" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "boom": "0.4.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/cryptiles/raw/master/LICENSE" - } - ], - "readme": "cryptiles\n=========\n\nGeneral purpose crypto utilities\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/cryptiles/issues" - }, - "homepage": "https://github.com/hueniverse/cryptiles", - "_id": "cryptiles@0.2.2", - "_from": "cryptiles@0.2.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js deleted file mode 100755 index 58aaa70b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js +++ /dev/null @@ -1,101 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Cryptiles = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Cryptiles', function () { - - describe('#randomString', function () { - - it('should generate the right length string', function (done) { - - for (var i = 1; i <= 1000; ++i) { - expect(Cryptiles.randomString(i).length).to.equal(i); - } - - done(); - }); - - it('returns an error on invalid bits size', function (done) { - - expect(Cryptiles.randomString(99999999999999999999).message).to.equal('Failed generating random bits: Argument #1 must be number > 0'); - done(); - }); - }); - - describe('#randomBits', function () { - - it('returns an error on invalid input', function (done) { - - expect(Cryptiles.randomBits(0).message).to.equal('Invalid random bits count'); - done(); - }); - }); - - describe('#fixedTimeComparison', function () { - - var a = Cryptiles.randomString(50000); - var b = Cryptiles.randomString(150000); - - it('should take the same amount of time comparing different string sizes', function (done) { - - var now = Date.now(); - Cryptiles.fixedTimeComparison(b, a); - var t1 = Date.now() - now; - - now = Date.now(); - Cryptiles.fixedTimeComparison(b, b); - var t2 = Date.now() - now; - - expect(t2 - t1).to.be.within(-20, 20); - done(); - }); - - it('should return true for equal strings', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a)).to.equal(true); - done(); - }); - - it('should return false for different strings (size, a < b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a + 'x')).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a > b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a)).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a = b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a + 'y')).to.equal(false); - done(); - }); - - it('should return false when not a string', function (done) { - - expect(Cryptiles.fixedTimeComparison('x', null)).to.equal(false); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore deleted file mode 100644 index 9966e5e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml deleted file mode 100755 index 40ca59ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE deleted file mode 100755 index 394adcff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -Copyright (c) 2011-2013, Walmart. -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 Walmart 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 WALMART BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - * * * - - -Portions of this project were initially based on Postmile, Copyright (c) 2011, Yahoo Inc. -Postmile is published at https://github.com/yahoo/postmile and its licensing terms are -published at https://github.com/yahoo/postmile/blob/master/LICENSE. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile deleted file mode 100755 index e605d6c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md deleted file mode 100755 index ac64e2fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md +++ /dev/null @@ -1,436 +0,0 @@ -<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a> -![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png) - -General purpose node utilities - -[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek) - -# Table of Contents - -* [Introduction](#introduction "Introduction") -* [Object](#object "Object") - * [clone](#cloneobj "clone") - * [merge](#mergetarget-source-isnulloverride-ismergearrays "merge") - * [applyToDefaults](#applytodefaultsdefaults-options "applyToDefaults") - * [unique](#uniquearray-key "unique") - * [mapToObject](#maptoobjectarray-key "mapToObject") - * [intersect](#intersectarray1-array2 "intersect") - * [matchKeys](#matchkeysobj-keys "matchKeys") - * [flatten](#flattenarray-target "flatten") - * [removeKeys](#removekeysobject-keys "removeKeys") - * [reach](#reachobj-chain "reach") - * [inheritAsync](#inheritasyncself-obj-keys "inheritAsync") - * [rename](#renameobj-from-to "rename") -* [Timer](#timer "Timer") -* [Binary Encoding/Decoding](#binary "Binary Encoding/Decoding") - * [base64urlEncode](#binary64urlEncodevalue "binary64urlEncode") - * [base64urlDecode](#binary64urlDecodevalue "binary64urlDecode") -* [Escaping Characters](#escaped "Escaping Characters") - * [escapeHtml](#escapeHtmlstring "escapeHtml") - * [escapeHeaderAttribute](#escapeHeaderAttributeattribute "escapeHeaderAttribute") - * [escapeRegex](#escapeRegexstring "escapeRegex") -* [Errors](#errors "Errors") - * [assert](#assertmessage "assert") - * [abort](#abortmessage "abort") - * [displayStack](#displayStackslice "displayStack") - * [callStack](#callStackslice "callStack") - * [toss](#tosscondition "toss") -* [Load files](#load-files "Load Files") - * [loadPackage](#loadPackagedir "loadpackage") - * [loadDirModules](#loadDirModulespath-excludefiles-target "loaddirmodules") - - - -# Introduction - -The *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. - -For example, to use Hoek to set configuration with default options: -```javascript -var Hoek = require('hoek'); - -var default = {url : "www.github.com", port : "8000", debug : true} - -var config = Hoek.applyToDefaults(default, {port : "3000", admin : true}); - -// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true } -``` - -Under each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require('hoek') is omitted for brevity. - -## Object - -Hoek provides several helpful methods for objects and arrays. - -### clone(obj) - -This method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). - -```javascript - -var nestedObj = { - w: /^something$/ig, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date() - }, - y: 'y', - z: new Date() - }; - -var copy = Hoek.clone(nestedObj); - -copy.x.b = 100; - -console.log(copy.y) // results in 'y' -console.log(nestedObj.x.b) // results in 123456 -console.log(copy.x.b) // results in 100 -``` - -### merge(target, source, isNullOverride, isMergeArrays) -isNullOverride, isMergeArrays default to true - -Merge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied - - -```javascript - -var target = {a: 1, b : 2} -var source = {a: 0, c: 5} -var source2 = {a: null, c: 5} - -var targetArray = [1, 2, 3]; -var sourceArray = [4, 5]; - -var newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5} -newTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5} -newTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5} - -newTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5] -newTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5] - - - - -``` - -### applyToDefaults(defaults, options) - -Apply options to a copy of the defaults - -```javascript - -var defaults = {host: "localhost", port: 8000}; -var options = {port: 8080}; - -var config = Hoek.applyToDefaults(defaults, options); // results in {host: "localhost", port: 8080}; - - -``` - -### unique(array, key) - -Remove duplicate items from Array - -```javascript - -var array = [1, 2, 2, 3, 3, 4, 5, 6]; - -var newArray = Hoek.unique(array); // results in [1,2,3,4,5,6]; - -array = [{id: 1}, {id: 1}, {id: 2}]; - -newArray = Hoek.unique(array, "id") // results in [{id: 1}, {id: 2}] - -``` - -### mapToObject(array, key) - -Convert an Array into an Object - -```javascript - -var array = [1,2,3]; -var newObject = Hoek.mapToObject(array); // results in [{"1": true}, {"2": true}, {"3": true}] - -array = [{id: 1}, {id: 2}]; -newObject = Hoek.mapToObject(array, "id") // results in [{"id": 1}, {"id": 2}] - -``` -### intersect(array1, array2) - -Find the common unique items in two arrays - -```javascript - -var array1 = [1, 2, 3]; -var array2 = [1, 4, 5]; - -var newArray = Hoek.intersect(array1, array2) // results in [1] - -``` - -### matchKeys(obj, keys) - -Find which keys are present - -```javascript - -var obj = {a: 1, b: 2, c: 3}; -var keys = ["a", "e"]; - -Hoek.matchKeys(obj, keys) // returns ["a"] - -``` - -### flatten(array, target) - -Flatten an array - -```javascript - -var array = [1, 2, 3]; -var target = [4, 5]; - -var flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3]; - -``` - -### removeKeys(object, keys) - -Remove keys - -```javascript - -var object = {a: 1, b: 2, c: 3, d: 4}; - -var keys = ["a", "b"]; - -Hoek.removeKeys(object, keys) // object is now {c: 3, d: 4} - -``` - -### reach(obj, chain) - -Converts an object key chain string to reference - -```javascript - -var chain = 'a.b.c'; -var obj = {a : {b : { c : 1}}}; - -Hoek.reach(obj, chain) // returns 1 - -``` - -### inheritAsync(self, obj, keys) - -Inherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors - -```javascript - -var targetFunc = function () { }; - -var proto = { - a: function () { - return 'a!'; - }, - b: function () { - return 'b!'; - }, - c: function () { - throw new Error('c!'); - } - }; - -var keys = ['a', 'c']; - -Hoek.inheritAsync(targetFunc, proto, ['a', 'c']); - -var target = new targetFunc(); - -target.a(function(err, result){console.log(result)} // returns 'a!' - -target.c(function(err, result){console.log(result)} // returns undefined - -target.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method 'b' - -``` - -### rename(obj, from, to) - -Rename a key of an object - -```javascript - -var obj = {a : 1, b : 2}; - -Hoek.rename(obj, "a", "c"); // obj is now {c : 1, b : 2} - -``` - - -# Timer - -A Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. - -```javascript - - -example : - - -var timerObj = new Hoek.Timer(); -console.log("Time is now: " + timerObj.ts) -console.log("Elapsed time from initialization: " + timerObj.elapsed() + 'milliseconds') - -``` - -# Binary Encoding/Decoding - -### base64urlEncode(value) - -Encodes value in Base64 or URL encoding - -### base64urlDecode(value) - -Decodes data in Base64 or URL encoding. -# Escaping Characters - -Hoek provides convenient methods for escaping html characters. The escaped characters are as followed: - -```javascript - -internals.htmlEscaped = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' -}; - -``` - -### escapeHtml(string) - -```javascript - -var string = '<html> hey </html>'; -var escapedString = Hoek.escapeHtml(string); // returns <html> hey </html> - -``` - -### escapeHeaderAttribute(attribute) - -Escape attribute value for use in HTTP header - -```javascript - -var a = Hoek.escapeHeaderAttribute('I said "go w\\o me"'); //returns I said \"go w\\o me\" - - -``` - - -### escapeRegex(string) - -Escape string for Regex construction - -```javascript - -var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); // returns 4\^f\$s\.4\*5\+\-_\?%\=#\!\:@\|~\\\/`"\(>\)\[<\]d\{\}s\, - - - -``` - -# Errors - -### assert(message) - -```javascript - -var a = 1, b =2; - -Hoek.assert(a === b, 'a should equal b'); // ABORT: a should equal b - -``` - -### abort(message) - -First checks if process.env.NODE_ENV === 'test', and if so, throws error message. Otherwise, -displays most recent stack and then exits process. - - - -### displayStack(slice) - -Displays the trace stack - -```javascript - -var stack = Hoek.displayStack(); -console.log(stack) // returns something like: - -[ 'null (/Users/user/Desktop/hoek/test.js:4:18)', - 'Module._compile (module.js:449:26)', - 'Module._extensions..js (module.js:467:10)', - 'Module.load (module.js:356:32)', - 'Module._load (module.js:312:12)', - 'Module.runMain (module.js:492:10)', - 'startup.processNextTick.process._tickCallback (node.js:244:9)' ] - -``` - -### callStack(slice) - -Returns a trace stack array. - -```javascript - -var stack = Hoek.callStack(); -console.log(stack) // returns something like: - -[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ], - [ 'module.js', 449, 26, 'Module._compile', false ], - [ 'module.js', 467, 10, 'Module._extensions..js', false ], - [ 'module.js', 356, 32, 'Module.load', false ], - [ 'module.js', 312, 12, 'Module._load', false ], - [ 'module.js', 492, 10, 'Module.runMain', false ], - [ 'node.js', - 244, - 9, - 'startup.processNextTick.process._tickCallback', - false ] ] - - -``` - -### toss(condition) - -toss(condition /*, [message], callback */) - -Return an error as first argument of a callback - - -# Load Files - -### loadPackage(dir) - -Load and parse package.json process root or given directory - -```javascript - -var pack = Hoek.loadPackage(); // pack.name === 'hoek' - -``` - -### loadDirModules(path, excludeFiles, target) - -Loads modules from a given path; option to exclude files (array). - - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png deleted file mode 100755 index 6ccfcb12be76a7a8331428c87337b20b901e869c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37939 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 T*vZ8J00000NkvXXu0mjfKFT-e diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js deleted file mode 100755 index 666b3dc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js +++ /dev/null @@ -1,132 +0,0 @@ -// Declare internals - -var internals = {}; - - -exports.escapeJavaScript = function (input) { - - if (!input) { - return ''; - } - - var escaped = ''; - - for (var i = 0, il = input.length; i < il; ++i) { - - var charCode = input.charCodeAt(i); - - if (internals.isSafe(charCode)) { - escaped += input[i]; - } - else { - escaped += internals.escapeJavaScriptChar(charCode); - } - } - - return escaped; -}; - - -exports.escapeHtml = function (input) { - - if (!input) { - return ''; - } - - var escaped = ''; - - for (var i = 0, il = input.length; i < il; ++i) { - - var charCode = input.charCodeAt(i); - - if (internals.isSafe(charCode)) { - escaped += input[i]; - } - else { - escaped += internals.escapeHtmlChar(charCode); - } - } - - return escaped; -}; - - -internals.escapeJavaScriptChar = function (charCode) { - - if (charCode >= 256) { - return '\\u' + internals.padLeft('' + charCode, 4); - } - - var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex'); - return '\\x' + internals.padLeft(hexValue, 2); -}; - - -internals.escapeHtmlChar = function (charCode) { - - var namedEscape = internals.namedHtml[charCode]; - if (typeof namedEscape !== 'undefined') { - return namedEscape; - } - - if (charCode >= 256) { - return '&#' + charCode + ';'; - } - - var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex'); - return '&#x' + internals.padLeft(hexValue, 2) + ';'; -}; - - -internals.padLeft = function (str, len) { - - while (str.length < len) { - str = '0' + str; - } - - return str; -}; - - -internals.isSafe = function (charCode) { - - return (typeof internals.safeCharCodes[charCode] !== 'undefined'); -}; - - -internals.namedHtml = { - '38': '&', - '60': '<', - '62': '>', - '34': '"', - '160': ' ', - '162': '¢', - '163': '£', - '164': '¤', - '169': '©', - '174': '®' -}; - - -internals.safeCharCodes = (function () { - - var safe = {}; - - for (var i = 32; i < 123; ++i) { - - if ((i >= 97 && i <= 122) || // a-z - (i >= 65 && i <= 90) || // A-Z - (i >= 48 && i <= 57) || // 0-9 - i === 32 || // space - i === 46 || // . - i === 44 || // , - i === 45 || // - - i === 58 || // : - i === 95) { // _ - - safe[i] = null; - } - } - - return safe; -}()); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js deleted file mode 100755 index 806260d2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js +++ /dev/null @@ -1,585 +0,0 @@ -// Load modules - -var Fs = require('fs'); -var Escape = require('./escape'); - - -// Declare internals - -var internals = {}; - - -// Clone object or array - -exports.clone = function (obj, seen) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - seen = seen || { orig: [], copy: [] }; - - var lookup = seen.orig.indexOf(obj); - if (lookup !== -1) { - return seen.copy[lookup]; - } - - var newObj = (obj instanceof Array) ? [] : {}; - - seen.orig.push(obj); - seen.copy.push(newObj); - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (obj[i] instanceof Buffer) { - newObj[i] = new Buffer(obj[i]); - } - else if (obj[i] instanceof Date) { - newObj[i] = new Date(obj[i].getTime()); - } - else if (obj[i] instanceof RegExp) { - var flags = '' + (obj[i].global ? 'g' : '') + (obj[i].ignoreCase ? 'i' : '') + (obj[i].multiline ? 'm' : ''); - newObj[i] = new RegExp(obj[i].source, flags); - } - else { - newObj[i] = exports.clone(obj[i], seen); - } - } - } - - return newObj; -}; - - -// Merge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied - -exports.merge = function (target, source, isNullOverride /* = true */, isMergeArrays /* = true */) { - - exports.assert(target && typeof target == 'object', 'Invalid target value: must be an object'); - exports.assert(source === null || source === undefined || typeof source === 'object', 'Invalid source value: must be null, undefined, or an object'); - - if (!source) { - return target; - } - - if (source instanceof Array) { - exports.assert(target instanceof Array, 'Cannot merge array onto an object'); - if (isMergeArrays === false) { // isMergeArrays defaults to true - target.length = 0; // Must not change target assignment - } - - for (var i = 0, il = source.length; i < il; ++i) { - target.push(source[i]); - } - - return target; - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - if (value && - typeof value === 'object') { - - if (!target[key] || - typeof target[key] !== 'object') { - - target[key] = exports.clone(value); - } - else { - exports.merge(target[key], source[key], isNullOverride, isMergeArrays); - } - } - else { - if (value !== null && value !== undefined) { // Explicit to preserve empty strings - target[key] = value; - } - else if (isNullOverride !== false) { // Defaults to true - target[key] = value; - } - } - } - - return target; -}; - - -// Apply options to a copy of the defaults - -exports.applyToDefaults = function (defaults, options) { - - exports.assert(defaults && typeof defaults == 'object', 'Invalid defaults value: must be an object'); - exports.assert(!options || options === true || typeof options === 'object', 'Invalid options value: must be true, falsy or an object'); - - if (!options) { // If no options, return null - return null; - } - - var copy = exports.clone(defaults); - - if (options === true) { // If options is set to true, use defaults - return copy; - } - - return exports.merge(copy, options, false, false); -}; - - -// Remove duplicate items from array - -exports.unique = function (array, key) { - - var index = {}; - var result = []; - - for (var i = 0, il = array.length; i < il; ++i) { - var id = (key ? array[i][key] : array[i]); - if (index[id] !== true) { - - result.push(array[i]); - index[id] = true; - } - } - - return result; -}; - - -// Convert array into object - -exports.mapToObject = function (array, key) { - - if (!array) { - return null; - } - - var obj = {}; - for (var i = 0, il = array.length; i < il; ++i) { - if (key) { - if (array[i][key]) { - obj[array[i][key]] = true; - } - } - else { - obj[array[i]] = true; - } - } - - return obj; -}; - - -// Find the common unique items in two arrays - -exports.intersect = function (array1, array2, justFirst) { - - if (!array1 || !array2) { - return []; - } - - var common = []; - var hash = (array1 instanceof Array ? exports.mapToObject(array1) : array1); - var found = {}; - for (var i = 0, il = array2.length; i < il; ++i) { - if (hash[array2[i]] && !found[array2[i]]) { - if (justFirst) { - return array2[i]; - } - - common.push(array2[i]); - found[array2[i]] = true; - } - } - - return (justFirst ? null : common); -}; - - -// Find which keys are present - -exports.matchKeys = function (obj, keys) { - - var matched = []; - for (var i = 0, il = keys.length; i < il; ++i) { - if (obj.hasOwnProperty(keys[i])) { - matched.push(keys[i]); - } - } - return matched; -}; - - -// Flatten array - -exports.flatten = function (array, target) { - - var result = target || []; - - for (var i = 0, il = array.length; i < il; ++i) { - if (Array.isArray(array[i])) { - exports.flatten(array[i], result); - } - else { - result.push(array[i]); - } - } - - return result; -}; - - -// Remove keys - -exports.removeKeys = function (object, keys) { - - for (var i = 0, il = keys.length; i < il; i++) { - delete object[keys[i]]; - } -}; - - -// Convert an object key chain string ('a.b.c') to reference (object[a][b][c]) - -exports.reach = function (obj, chain) { - - var path = chain.split('.'); - var ref = obj; - for (var i = 0, il = path.length; i < il; ++i) { - if (ref) { - ref = ref[path[i]]; - } - } - - return ref; -}; - - -// Inherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors - -exports.inheritAsync = function (self, obj, keys) { - - keys = keys || null; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (keys instanceof Array && - keys.indexOf(i) < 0) { - - continue; - } - - self.prototype[i] = (function (fn) { - - return function (next) { - - var result = null; - try { - result = fn(); - } - catch (err) { - return next(err); - } - - return next(null, result); - }; - })(obj[i]); - } - } -}; - - -exports.formatStack = function (stack) { - - var trace = []; - for (var i = 0, il = stack.length; i < il; ++i) { - var item = stack[i]; - trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]); - } - - return trace; -}; - - -exports.formatTrace = function (trace) { - - var display = []; - - for (var i = 0, il = trace.length; i < il; ++i) { - var row = trace[i]; - display.push((row[4] ? 'new ' : '') + row[3] + ' (' + row[0] + ':' + row[1] + ':' + row[2] + ')'); - } - - return display; -}; - - -exports.callStack = function (slice) { - - // http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi - - var v8 = Error.prepareStackTrace; - Error.prepareStackTrace = function (err, stack) { - - return stack; - }; - - var capture = {}; - Error.captureStackTrace(capture, arguments.callee); - var stack = capture.stack; - - Error.prepareStackTrace = v8; - - var trace = exports.formatStack(stack); - - if (slice) { - return trace.slice(slice); - } - - return trace; -}; - - -exports.displayStack = function (slice) { - - var trace = exports.callStack(slice === undefined ? 1 : slice + 1); - - return exports.formatTrace(trace); -}; - - -exports.abortThrow = false; - - -exports.abort = function (message, hideStack) { - - if (process.env.NODE_ENV === 'test' || exports.abortThrow === true) { - throw new Error(message || 'Unknown error'); - } - - var stack = ''; - if (!hideStack) { - stack = exports.displayStack(1).join('\n\t'); - } - console.log('ABORT: ' + message + '\n\t' + stack); - process.exit(1); -}; - - -exports.assert = function (condition /*, msg1, msg2, msg3 */) { - - if (condition) { - return; - } - - var msgs = Array.prototype.slice.call(arguments, 1); - msgs = msgs.map(function (msg) { - - return typeof msg === 'string' ? msg : msg instanceof Error ? msg.message : JSON.stringify(msg); - }); - throw new Error(msgs.join(' ') || 'Unknown error'); -}; - - -exports.loadDirModules = function (path, excludeFiles, target) { // target(filename, name, capName) - - var exclude = {}; - for (var i = 0, il = excludeFiles.length; i < il; ++i) { - exclude[excludeFiles[i] + '.js'] = true; - } - - var files = Fs.readdirSync(path); - for (i = 0, il = files.length; i < il; ++i) { - var filename = files[i]; - if (/\.js$/.test(filename) && - !exclude[filename]) { - - var name = filename.substr(0, filename.lastIndexOf('.')); - var capName = name.charAt(0).toUpperCase() + name.substr(1).toLowerCase(); - - if (typeof target !== 'function') { - target[capName] = require(path + '/' + name); - } - else { - target(path + '/' + name, name, capName); - } - } - } -}; - - -exports.rename = function (obj, from, to) { - - obj[to] = obj[from]; - delete obj[from]; -}; - - -exports.Timer = function () { - - this.reset(); -}; - - -exports.Timer.prototype.reset = function () { - - this.ts = Date.now(); -}; - - -exports.Timer.prototype.elapsed = function () { - - return Date.now() - this.ts; -}; - - -// Load and parse package.json process root or given directory - -exports.loadPackage = function (dir) { - - var result = {}; - var filepath = (dir || process.env.PWD) + '/package.json'; - if (Fs.existsSync(filepath)) { - try { - result = JSON.parse(Fs.readFileSync(filepath)); - } - catch (e) { } - } - - return result; -}; - - -// Escape string for Regex construction - -exports.escapeRegex = function (string) { - - // Escape ^$.*+-?=!:|\/()[]{}, - return string.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, '\\$&'); -}; - - -// Return an error as first argument of a callback - -exports.toss = function (condition /*, [message], next */) { - - var message = (arguments.length === 3 ? arguments[1] : ''); - var next = (arguments.length === 3 ? arguments[2] : arguments[1]); - - var err = (message instanceof Error ? message : (message ? new Error(message) : (condition instanceof Error ? condition : new Error()))); - - if (condition instanceof Error || - !condition) { - - return next(err); - } -}; - - -// Base64url (RFC 4648) encode - -exports.base64urlEncode = function (value) { - - return (new Buffer(value, 'binary')).toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); -}; - - -// Base64url (RFC 4648) decode - -exports.base64urlDecode = function (encoded) { - - if (encoded && - !encoded.match(/^[\w\-]*$/)) { - - return new Error('Invalid character'); - } - - try { - return (new Buffer(encoded.replace(/-/g, '+').replace(/:/g, '/'), 'base64')).toString('binary'); - } - catch (err) { - return err; - } -}; - - -// Escape attribute value for use in HTTP header - -exports.escapeHeaderAttribute = function (attribute) { - - // Allowed value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \, " - - exports.assert(attribute.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/), 'Bad attribute value (' + attribute + ')'); - - return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); // Escape quotes and slash -}; - - -exports.escapeHtml = function (string) { - - return Escape.escapeHtml(string); -}; - - -exports.escapeJavaScript = function (string) { - - return Escape.escapeJavaScript(string); -}; - - -/* -var event = { - timestamp: now.getTime(), - tags: ['tag'], - data: { some: 'data' } -}; -*/ - -exports.consoleFunc = console.log; - -exports.printEvent = function (event) { - - var pad = function (value) { - - return (value < 10 ? '0' : '') + value; - }; - - var now = new Date(event.timestamp); - var timestring = (now.getYear() - 100).toString() + - pad(now.getMonth() + 1) + - pad(now.getDate()) + - '/' + - pad(now.getHours()) + - pad(now.getMinutes()) + - pad(now.getSeconds()) + - '.' + - now.getMilliseconds(); - - var data = event.data; - if (typeof event.data !== 'string') { - try { - data = JSON.stringify(event.data); - } - catch (e) { - data = 'JSON Error: ' + e.message; - } - } - - var output = timestring + ', ' + event.tags[0] + ', ' + data; - exports.consoleFunc(output); -}; - - -exports.nextTick = function (callback) { - - return function () { - - var args = arguments; - process.nextTick(function () { - - callback.apply(null, args); - }); - }; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json deleted file mode 100755 index e18f1485..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "hoek", - "description": "General purpose node utilities", - "version": "0.9.1", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [ - { - "name": "Van Nguyen", - "email": "the.gol.effect@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/spumko/hoek" - }, - "main": "index", - "keywords": [ - "utilities" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": {}, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/spumko/hoek/raw/master/LICENSE" - } - ], - "readme": "<a href=\"https://github.com/spumko\"><img src=\"https://raw.github.com/spumko/spumko/master/images/from.png\" align=\"right\" /></a>\r\n![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png)\r\n\r\nGeneral purpose node utilities\r\n\r\n[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek)\r\n\r\n# Table of Contents\r\n\r\n* [Introduction](#introduction \"Introduction\")\r\n* [Object](#object \"Object\")\r\n * [clone](#cloneobj \"clone\")\r\n * [merge](#mergetarget-source-isnulloverride-ismergearrays \"merge\")\r\n * [applyToDefaults](#applytodefaultsdefaults-options \"applyToDefaults\")\r\n * [unique](#uniquearray-key \"unique\")\r\n * [mapToObject](#maptoobjectarray-key \"mapToObject\")\r\n * [intersect](#intersectarray1-array2 \"intersect\")\r\n * [matchKeys](#matchkeysobj-keys \"matchKeys\")\r\n * [flatten](#flattenarray-target \"flatten\")\r\n * [removeKeys](#removekeysobject-keys \"removeKeys\")\r\n * [reach](#reachobj-chain \"reach\")\r\n * [inheritAsync](#inheritasyncself-obj-keys \"inheritAsync\")\r\n * [rename](#renameobj-from-to \"rename\")\r\n* [Timer](#timer \"Timer\")\r\n* [Binary Encoding/Decoding](#binary \"Binary Encoding/Decoding\")\r\n * [base64urlEncode](#binary64urlEncodevalue \"binary64urlEncode\")\r\n * [base64urlDecode](#binary64urlDecodevalue \"binary64urlDecode\")\r\n* [Escaping Characters](#escaped \"Escaping Characters\")\r\n * [escapeHtml](#escapeHtmlstring \"escapeHtml\")\r\n * [escapeHeaderAttribute](#escapeHeaderAttributeattribute \"escapeHeaderAttribute\")\r\n * [escapeRegex](#escapeRegexstring \"escapeRegex\")\r\n* [Errors](#errors \"Errors\")\r\n * [assert](#assertmessage \"assert\")\r\n * [abort](#abortmessage \"abort\")\r\n * [displayStack](#displayStackslice \"displayStack\")\r\n * [callStack](#callStackslice \"callStack\")\r\n * [toss](#tosscondition \"toss\")\r\n* [Load files](#load-files \"Load Files\")\r\n * [loadPackage](#loadPackagedir \"loadpackage\")\r\n * [loadDirModules](#loadDirModulespath-excludefiles-target \"loaddirmodules\")\r\n\r\n\r\n\r\n# Introduction\r\n\r\nThe *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. \r\n\r\nFor example, to use Hoek to set configuration with default options:\r\n```javascript\r\nvar Hoek = require('hoek');\r\n\r\nvar default = {url : \"www.github.com\", port : \"8000\", debug : true}\r\n\r\nvar config = Hoek.applyToDefaults(default, {port : \"3000\", admin : true});\r\n\r\n// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true }\r\n```\r\n\r\nUnder each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require('hoek') is omitted for brevity.\r\n\r\n## Object\r\n\r\nHoek provides several helpful methods for objects and arrays.\r\n\r\n### clone(obj)\r\n\r\nThis method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). \r\n\r\n```javascript\r\n\r\nvar nestedObj = {\r\n w: /^something$/ig,\r\n x: {\r\n a: [1, 2, 3],\r\n b: 123456,\r\n c: new Date()\r\n },\r\n y: 'y',\r\n z: new Date()\r\n };\r\n\r\nvar copy = Hoek.clone(nestedObj);\r\n\r\ncopy.x.b = 100;\r\n\r\nconsole.log(copy.y) // results in 'y'\r\nconsole.log(nestedObj.x.b) // results in 123456\r\nconsole.log(copy.x.b) // results in 100\r\n```\r\n\r\n### merge(target, source, isNullOverride, isMergeArrays)\r\nisNullOverride, isMergeArrays default to true\r\n\r\nMerge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied\r\n\r\n\r\n```javascript\r\n\r\nvar target = {a: 1, b : 2}\r\nvar source = {a: 0, c: 5}\r\nvar source2 = {a: null, c: 5}\r\n\r\nvar targetArray = [1, 2, 3];\r\nvar sourceArray = [4, 5];\r\n\r\nvar newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5}\r\n\r\nnewTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5]\r\nnewTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5]\r\n\r\n\r\n\r\n\r\n```\r\n\r\n### applyToDefaults(defaults, options)\r\n\r\nApply options to a copy of the defaults\r\n\r\n```javascript\r\n\r\nvar defaults = {host: \"localhost\", port: 8000};\r\nvar options = {port: 8080};\r\n\r\nvar config = Hoek.applyToDefaults(defaults, options); // results in {host: \"localhost\", port: 8080};\r\n\r\n\r\n```\r\n\r\n### unique(array, key)\r\n\r\nRemove duplicate items from Array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 2, 3, 3, 4, 5, 6];\r\n\r\nvar newArray = Hoek.unique(array); // results in [1,2,3,4,5,6];\r\n\r\narray = [{id: 1}, {id: 1}, {id: 2}];\r\n\r\nnewArray = Hoek.unique(array, \"id\") // results in [{id: 1}, {id: 2}]\r\n\r\n```\r\n\r\n### mapToObject(array, key)\r\n\r\nConvert an Array into an Object\r\n\r\n```javascript\r\n\r\nvar array = [1,2,3];\r\nvar newObject = Hoek.mapToObject(array); // results in [{\"1\": true}, {\"2\": true}, {\"3\": true}]\r\n\r\narray = [{id: 1}, {id: 2}];\r\nnewObject = Hoek.mapToObject(array, \"id\") // results in [{\"id\": 1}, {\"id\": 2}]\r\n\r\n```\r\n### intersect(array1, array2)\r\n\r\nFind the common unique items in two arrays\r\n\r\n```javascript\r\n\r\nvar array1 = [1, 2, 3];\r\nvar array2 = [1, 4, 5];\r\n\r\nvar newArray = Hoek.intersect(array1, array2) // results in [1]\r\n\r\n```\r\n\r\n### matchKeys(obj, keys) \r\n\r\nFind which keys are present\r\n\r\n```javascript\r\n\r\nvar obj = {a: 1, b: 2, c: 3};\r\nvar keys = [\"a\", \"e\"];\r\n\r\nHoek.matchKeys(obj, keys) // returns [\"a\"]\r\n\r\n```\r\n\r\n### flatten(array, target)\r\n\r\nFlatten an array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 3];\r\nvar target = [4, 5]; \r\n\r\nvar flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3];\r\n\r\n```\r\n\r\n### removeKeys(object, keys)\r\n\r\nRemove keys\r\n\r\n```javascript\r\n\r\nvar object = {a: 1, b: 2, c: 3, d: 4};\r\n\r\nvar keys = [\"a\", \"b\"];\r\n\r\nHoek.removeKeys(object, keys) // object is now {c: 3, d: 4}\r\n\r\n```\r\n\r\n### reach(obj, chain)\r\n\r\nConverts an object key chain string to reference\r\n\r\n```javascript\r\n\r\nvar chain = 'a.b.c';\r\nvar obj = {a : {b : { c : 1}}};\r\n\r\nHoek.reach(obj, chain) // returns 1\r\n\r\n```\r\n\r\n### inheritAsync(self, obj, keys) \r\n\r\nInherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors\r\n\r\n```javascript\r\n\r\nvar targetFunc = function () { };\r\n\r\nvar proto = {\r\n a: function () {\r\n return 'a!';\r\n },\r\n b: function () {\r\n return 'b!';\r\n },\r\n c: function () {\r\n throw new Error('c!');\r\n }\r\n };\r\n\r\nvar keys = ['a', 'c'];\r\n\r\nHoek.inheritAsync(targetFunc, proto, ['a', 'c']);\r\n\r\nvar target = new targetFunc();\r\n\r\ntarget.a(function(err, result){console.log(result)} // returns 'a!' \r\n\r\ntarget.c(function(err, result){console.log(result)} // returns undefined\r\n\r\ntarget.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method 'b'\r\n\r\n```\r\n\r\n### rename(obj, from, to)\r\n\r\nRename a key of an object\r\n\r\n```javascript\r\n\r\nvar obj = {a : 1, b : 2};\r\n\r\nHoek.rename(obj, \"a\", \"c\"); // obj is now {c : 1, b : 2}\r\n\r\n```\r\n\r\n\r\n# Timer\r\n\r\nA Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.\r\n\r\n```javascript\r\n\r\n\r\nexample : \r\n\r\n\r\nvar timerObj = new Hoek.Timer();\r\nconsole.log(\"Time is now: \" + timerObj.ts)\r\nconsole.log(\"Elapsed time from initialization: \" + timerObj.elapsed() + 'milliseconds')\r\n\r\n```\r\n\r\n# Binary Encoding/Decoding\r\n\r\n### base64urlEncode(value)\r\n\r\nEncodes value in Base64 or URL encoding\r\n\r\n### base64urlDecode(value)\r\n\r\nDecodes data in Base64 or URL encoding.\r\n# Escaping Characters\r\n\r\nHoek provides convenient methods for escaping html characters. The escaped characters are as followed:\r\n\r\n```javascript\r\n\r\ninternals.htmlEscaped = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n};\r\n\r\n```\r\n\r\n### escapeHtml(string)\r\n\r\n```javascript\r\n\r\nvar string = '<html> hey </html>';\r\nvar escapedString = Hoek.escapeHtml(string); // returns <html> hey </html>\r\n\r\n```\r\n\r\n### escapeHeaderAttribute(attribute)\r\n\r\nEscape attribute value for use in HTTP header\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeHeaderAttribute('I said \"go w\\\\o me\"'); //returns I said \\\"go w\\\\o me\\\"\r\n\r\n\r\n```\r\n\r\n\r\n### escapeRegex(string)\r\n\r\nEscape string for Regex construction\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\\\/`\"(>)[<]d{}s,'); // returns 4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`\"\\(>\\)\\[<\\]d\\{\\}s\\,\r\n\r\n\r\n\r\n```\r\n\r\n# Errors\r\n\r\n### assert(message)\r\n\r\n```javascript\r\n\r\nvar a = 1, b =2;\r\n\r\nHoek.assert(a === b, 'a should equal b'); // ABORT: a should equal b\r\n\r\n```\r\n\r\n### abort(message)\r\n\r\nFirst checks if process.env.NODE_ENV === 'test', and if so, throws error message. Otherwise,\r\ndisplays most recent stack and then exits process.\r\n\r\n\r\n\r\n### displayStack(slice)\r\n\r\nDisplays the trace stack\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.displayStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ 'null (/Users/user/Desktop/hoek/test.js:4:18)',\r\n 'Module._compile (module.js:449:26)',\r\n 'Module._extensions..js (module.js:467:10)',\r\n 'Module.load (module.js:356:32)',\r\n 'Module._load (module.js:312:12)',\r\n 'Module.runMain (module.js:492:10)',\r\n 'startup.processNextTick.process._tickCallback (node.js:244:9)' ]\r\n\r\n```\r\n\r\n### callStack(slice)\r\n\r\nReturns a trace stack array.\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.callStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ],\r\n [ 'module.js', 449, 26, 'Module._compile', false ],\r\n [ 'module.js', 467, 10, 'Module._extensions..js', false ],\r\n [ 'module.js', 356, 32, 'Module.load', false ],\r\n [ 'module.js', 312, 12, 'Module._load', false ],\r\n [ 'module.js', 492, 10, 'Module.runMain', false ],\r\n [ 'node.js',\r\n 244,\r\n 9,\r\n 'startup.processNextTick.process._tickCallback',\r\n false ] ]\r\n\r\n\r\n```\r\n\r\n### toss(condition)\r\n\r\ntoss(condition /*, [message], callback */)\r\n\r\nReturn an error as first argument of a callback\r\n\r\n\r\n# Load Files\r\n\r\n### loadPackage(dir)\r\n\r\nLoad and parse package.json process root or given directory\r\n\r\n```javascript\r\n\r\nvar pack = Hoek.loadPackage(); // pack.name === 'hoek'\r\n\r\n```\r\n\r\n### loadDirModules(path, excludeFiles, target) \r\n\r\nLoads modules from a given path; option to exclude files (array).\r\n\r\n\r\n\r\n\r\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/spumko/hoek/issues" - }, - "homepage": "https://github.com/spumko/hoek", - "_id": "hoek@0.9.1", - "_from": "hoek@0.9.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js deleted file mode 100644 index 4dddd77d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js +++ /dev/null @@ -1,86 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hoek', function () { - - describe('#escapeJavaScript', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeJavaScript('<script>alert(1)</script>'); - expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e'); - done(); - }); - - it('encodes \' characters', function (done) { - - var encoded = Hoek.escapeJavaScript('something(\'param\')'); - expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29'); - done(); - }); - - it('encodes large unicode characters with the correct padding', function (done) { - - var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('\\u0500\\u1000'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeJavaScript(null); - expect(encoded).to.equal(''); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeHtml('<script>alert(1)</script>'); - expect(encoded).to.equal('<script>alert(1)</script>'); - done(); - }); - - it('encodes < and > as named characters', function (done) { - - var encoded = Hoek.escapeHtml('<script><>'); - expect(encoded).to.equal('<script><>'); - done(); - }); - - it('encodes large unicode characters', function (done) { - - var encoded = Hoek.escapeHtml(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('ǴϨ'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeHtml(null); - expect(encoded).to.equal(''); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js deleted file mode 100755 index c40e3ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js +++ /dev/null @@ -1,1078 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hoek', function () { - - var nestedObj = { - v: [7,8,9], - w: /^something$/igm, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - d: /hi/igm, - e: /hello/ - }, - y: 'y', - z: new Date() - }; - - var dupsArray = [nestedObj, { z: 'z' }, nestedObj]; - var reducedDupsArray = [nestedObj, { z: 'z' }]; - - describe('#clone', function () { - - it('should clone a nested object', function (done) { - - var a = nestedObj; - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - expect(a.z.getTime()).to.equal(b.z.getTime()); - done(); - }); - - it('should clone a null object', function (done) { - - var b = Hoek.clone(null); - - expect(b).to.equal(null); - done(); - }); - - it('should not convert undefined properties to null', function (done) { - - var obj = { something: undefined }; - var b = Hoek.clone(obj); - - expect(typeof b.something).to.equal('undefined'); - done(); - }); - - it('should not throw on circular reference', function (done) { - - var a = {}; - a.x = a; - - var test = (function () { - - var b = Hoek.clone(a); - }); - - expect(test).to.not.throw(); - done(); - }); - - it('should properly clone circular reference', function (done) { - - var x = { - 'z': new Date() - }; - x.y = x; - - var b = Hoek.clone(x); - expect(Object.keys(b.y)).to.deep.equal(Object.keys(x)) - expect(b.z).to.not.equal(x.z); - expect(b.y).to.not.equal(x.y); - expect(b.y.z).to.not.equal(x.y.z); - expect(b.y).to.equal(b); - expect(b.y.y.y.y).to.equal(b); - done(); - }); - - it('should properly clone deeply nested object', function (done) { - - var a = { - x: { - y: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - d: /hi/igm, - e: /hello/ - }, - } - }; - - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - expect(a.x.y.c.getTime()).to.equal(b.x.y.c.getTime()); - done(); - }); - - it('should properly clone arrays', function (done) { - - var a = [1,2,3]; - - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - done(); - }); - - it('should perform actual copy for shallow keys (no pass by reference)', function (done) { - - var x = Hoek.clone(nestedObj); - var y = Hoek.clone(nestedObj); - - // Date - expect(x.z).to.not.equal(nestedObj.z); - expect(x.z).to.not.equal(y.z); - - // Regex - expect(x.w).to.not.equal(nestedObj.w); - expect(x.w).to.not.equal(y.w); - - // Array - expect(x.v).to.not.equal(nestedObj.v); - expect(x.v).to.not.equal(y.v); - - // Immutable(s) - x.y = 5; - expect(x.y).to.not.equal(nestedObj.y); - expect(x.y).to.not.equal(y.y); - - done(); - }); - - it('should perform actual copy for deep keys (no pass by reference)', function (done) { - - var x = Hoek.clone(nestedObj); - var y = Hoek.clone(nestedObj); - - expect(x.x.c).to.not.equal(nestedObj.x.c); - expect(x.x.c).to.not.equal(y.x.c); - - expect(x.x.c.getTime()).to.equal(nestedObj.x.c.getTime()); - expect(x.x.c.getTime()).to.equal(y.x.c.getTime()); - done(); - }); - - it('copies functions with properties', function (done) { - - var a = { - x: function () { return 1; }, - y: {} - }; - a.x.z = 'string in function'; - a.x.v = function () { return 2; }; - a.y.u = a.x; - - var b = Hoek.clone(a); - expect(b.x()).to.equal(1); - expect(b.x.v()).to.equal(2); - expect(b.y.u).to.equal(b.x); - expect(b.x.z).to.equal('string in function'); - done(); - }); - - it('should copy a buffer', function(done){ - var tls = { - key: new Buffer([1,2,3,4,5]), - cert: new Buffer([1,2,3,4,5,6,10]) - } - - copiedTls = Hoek.clone(tls); - expect(Buffer.isBuffer(copiedTls.key)).to.equal(true); - expect(JSON.stringify(copiedTls.key)).to.equal(JSON.stringify(tls.key)) - expect(Buffer.isBuffer(copiedTls.cert)).to.equal(true); - expect(JSON.stringify(copiedTls.cert)).to.equal(JSON.stringify(tls.cert)) - done(); - }); - }); - - describe('#merge', function () { - - it('does not throw if source is null', function (done) { - - var a = {}; - var b = null; - var c = null; - - expect(function () { - - c = Hoek.merge(a, b); - }).to.not.throw(); - - expect(c).to.equal(a); - done(); - }); - - it('does not throw if source is undefined', function (done) { - - var a = {}; - var b = undefined; - var c = null; - - expect(function () { - - c = Hoek.merge(a, b); - }).to.not.throw(); - - expect(c).to.equal(a); - done(); - }); - - it('throws if source is not an object', function (done) { - - expect(function () { - - var a = {}; - var b = 0; - - Hoek.merge(a, b); - }).to.throw('Invalid source value: must be null, undefined, or an object'); - done(); - }); - - it('throws if target is not an object', function (done) { - - expect(function () { - - var a = 0; - var b = {}; - - Hoek.merge(a, b); - }).to.throw('Invalid target value: must be an object'); - done(); - }); - - it('throws if target is not an array and source is', function (done) { - - expect(function () { - - var a = {}; - var b = [1, 2]; - - Hoek.merge(a, b); - }).to.throw('Cannot merge array onto an object'); - done(); - }); - - it('returns the same object when merging arrays', function (done) { - - var a = []; - var b = [1, 2]; - - expect(Hoek.merge(a, b)).to.equal(a); - done(); - }); - - it('should combine an empty object with a non-empty object', function (done) { - - var a = {}; - var b = nestedObj; - - var c = Hoek.merge(a, b); - expect(a).to.deep.equal(b); - expect(c).to.deep.equal(b); - done(); - }); - - it('should override values in target', function (done) { - - var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' }; - var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' }; - - var c = Hoek.merge(a, b); - expect(c.x).to.equal(null); - expect(c.y).to.equal(2); - expect(c.z).to.equal(4); - expect(c.v).to.equal(0); - expect(c.m).to.equal('123'); - expect(c.t).to.deep.equal({ u: 6 }); - done(); - }); - - it('should override values in target (flip)', function (done) { - - var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' }; - var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' }; - - var d = Hoek.merge(b, a); - expect(d.x).to.equal(1); - expect(d.y).to.equal(2); - expect(d.z).to.equal(3); - expect(d.v).to.equal(5); - expect(d.m).to.equal('abc'); - expect(d.t).to.deep.equal('test'); - done(); - }); - }); - - describe('#applyToDefaults', function () { - - var defaults = { - a: 1, - b: 2, - c: { - d: 3, - e: [5, 6] - }, - f: 6, - g: 'test' - }; - - it('should return null if options is false', function (done) { - - var result = Hoek.applyToDefaults(defaults, false); - expect(result).to.equal(null); - done(); - }); - - it('should return a copy of defaults if options is true', function (done) { - - var result = Hoek.applyToDefaults(defaults, true); - expect(result).to.deep.equal(result); - done(); - }); - - it('should apply object to defaults', function (done) { - - var obj = { - a: null, - c: { - e: [4] - }, - f: 0, - g: { - h: 5 - } - }; - - var result = Hoek.applyToDefaults(defaults, obj); - expect(result.c.e).to.deep.equal([4]); - expect(result.a).to.equal(1); - expect(result.b).to.equal(2); - expect(result.f).to.equal(0); - expect(result.g).to.deep.equal({ h: 5 }); - done(); - }); - }); - - describe('#unique', function () { - - it('should ensure uniqueness within array of objects based on subkey', function (done) { - - var a = Hoek.unique(dupsArray, 'x'); - expect(a).to.deep.equal(reducedDupsArray); - done(); - }); - - it('removes duplicated without key', function (done) { - - expect(Hoek.unique([1, 2, 3, 4, 2, 1, 5])).to.deep.equal([1, 2, 3, 4, 5]); - done(); - }); - }); - - describe('#mapToObject', function () { - - it('should return null on null array', function (done) { - - var a = Hoek.mapToObject(null); - expect(a).to.equal(null); - done(); - }); - - it('should convert basic array to existential object', function (done) { - - var keys = [1, 2, 3, 4]; - var a = Hoek.mapToObject(keys); - for (var i in keys) { - expect(a[keys[i]]).to.equal(true); - } - done(); - }); - - it('should convert array of objects to existential object', function (done) { - - var keys = [{ x: 1 }, { x: 2 }, { x: 3 }]; - var subkey = 'x'; - var a = Hoek.mapToObject(keys, subkey); - for (var i in keys) { - expect(a[keys[i][subkey]]).to.equal(true); - } - done(); - }); - }); - - describe('#intersect', function () { - - it('should return the common objects of two arrays', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(array1, array2); - expect(common.length).to.equal(2); - done(); - }); - - it('should return just the first common object of two arrays', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(array1, array2, true); - expect(common).to.equal(5); - done(); - }); - - it('should return an empty array if either input is null', function (done) { - - expect(Hoek.intersect([1], null).length).to.equal(0); - expect(Hoek.intersect(null, [1]).length).to.equal(0); - done(); - }); - - it('should return the common objects of object and array', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(Hoek.mapToObject(array1), array2); - expect(common.length).to.equal(2); - done(); - }); - }); - - describe('#matchKeys', function () { - - it('should match the existing object keys', function (done) { - - var obj = { - a: 1, - b: 2, - c: 3, - d: null - }; - - expect(Hoek.matchKeys(obj, ['b', 'c', 'd', 'e'])).to.deep.equal(['b', 'c', 'd']); - done(); - }); - }); - - describe('#flatten', function () { - - it('should return a flat array', function (done) { - - var result = Hoek.flatten([1, 2, [3, 4, [5, 6], [7], 8], [9], [10, [11, 12]], 13]); - expect(result.length).to.equal(13); - expect(result).to.deep.equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]); - done(); - }); - }); - - describe('#removeKeys', function () { - - var objWithHiddenKeys = { - location: { - name: 'San Bruno' - }, - company: { - name: '@WalmartLabs' - } - }; - - it('should delete params with definition\'s hide set to true', function (done) { - - var a = Hoek.removeKeys(objWithHiddenKeys, ['location']); - expect(objWithHiddenKeys.location).to.not.exist; - expect(objWithHiddenKeys.company).to.exist; - done(); - }); - }); - - describe('#reach', function () { - - var obj = { - a: { - b: { - c: { - d: 1, - e: 2 - }, - f: 'hello' - }, - g: { - h: 3 - } - }, - i: function () { } - }; - - it('returns a valid member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d')).to.equal(1); - done(); - }); - - it('returns null on null object', function (done) { - - expect(Hoek.reach(null, 'a.b.c.d')).to.not.exist; - done(); - }); - - it('returns null on missing member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d.x')).to.not.exist; - done(); - }); - - it('returns null on invalid member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d-.x')).to.not.exist; - done(); - }); - - it('returns function member', function (done) { - - expect(typeof Hoek.reach(obj, 'i')).to.equal('function'); - done(); - }); - }); - - describe('#inheritAsync', function () { - - it('should inherit selected methods and wrap in async call', function (done) { - - var proto = { - a: function () { - return 'a!'; - }, - b: function () { - return 'b!'; - }, - c: function () { - throw new Error('c!'); - } - }; - - var targetFunc = function () { }; - targetFunc.prototype.c = function () { - - return 'oops'; - }; - - Hoek.inheritAsync(targetFunc, proto, ['a', 'c']); - var target = new targetFunc(); - - expect(typeof target.a).to.equal('function'); - expect(typeof target.c).to.equal('function'); - expect(target.b).to.not.exist; - - target.a(function (err, result) { - - expect(err).to.not.exist; - expect(result).to.equal('a!'); - - target.c(function (err, result) { - - expect(result).to.not.exist; - expect(err.message).to.equal('c!'); - done(); - }); - }); - }); - }); - - describe('#callStack', function () { - - it('should return the full call stack', function (done) { - - var stack = Hoek.callStack(); - expect(stack[0][0]).to.contain('index.js'); - expect(stack[0][2]).to.equal(30); - done(); - }); - }); - - describe('#displayStack ', function () { - - it('should return the full call stack for display', function (done) { - - var stack = Hoek.displayStack(); - expect(stack[0]).to.contain('test/index.js:'); - done(); - }); - - it('should include constructor functions correctly', function (done) { - - var Something = function (next) { - - next(); - }; - - var something = new Something(function () { - - var stack = Hoek.displayStack(); - expect(stack[1]).to.contain('new Something'); - done(); - }); - }); - }); - - describe('#abort', function () { - - it('should exit process when not in test mode', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - - process.env.NODE_ENV = 'nottatest'; - process.stdout.write = function () { }; - process.exit = function (state) { - - process.exit = exit; - process.env.NODE_ENV = env; - process.stdout.write = write; - - expect(state).to.equal(1); - done(); - }; - - Hoek.abort('Boom'); - }); - - it('should throw when not in test mode and abortThrow is true', function (done) { - - var env = process.env.NODE_ENV; - process.env.NODE_ENV = 'nottatest'; - Hoek.abortThrow = true; - - var fn = function () { - - Hoek.abort('my error message'); - }; - - expect(fn).to.throw('my error message'); - Hoek.abortThrow = false; - process.env.NODE_ENV = env; - - done(); - }); - - - it('should respect hideStack argument', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - var output = ''; - - process.exit = function () { }; - process.env.NODE_ENV = ''; - process.stdout.write = function (message) { - - output = message; - }; - - Hoek.abort('my error message', true); - - process.env.NODE_ENV = env; - process.stdout.write = write; - process.exit = exit; - - expect(output).to.equal('ABORT: my error message\n\t\n'); - - done(); - }); - - it('should default to showing stack', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - var output = ''; - - process.exit = function () { }; - process.env.NODE_ENV = ''; - process.stdout.write = function (message) { - - output = message; - }; - - Hoek.abort('my error message'); - - process.env.NODE_ENV = env; - process.stdout.write = write; - process.exit = exit; - - expect(output).to.contain('index.js'); - - done(); - }); - }); - - describe('#assert', function () { - - it('should throw an Error when using assert in a test', function (done) { - - var fn = function () { - - Hoek.assert(false, 'my error message'); - }; - - expect(fn).to.throw('my error message'); - done(); - }); - - it('should throw an Error when using assert in a test with no message', function (done) { - - var fn = function () { - - Hoek.assert(false); - }; - - expect(fn).to.throw('Unknown error'); - done(); - }); - - it('should throw an Error when using assert in a test with multipart message', function (done) { - - var fn = function () { - - Hoek.assert(false, 'This', 'is', 'my message'); - }; - - expect(fn).to.throw('This is my message'); - done(); - }); - - it('should throw an Error when using assert in a test with object message', function (done) { - - var fn = function () { - - Hoek.assert(false, 'This', 'is', { spinal: 'tap' }); - }; - - expect(fn).to.throw('This is {"spinal":"tap"}'); - done(); - }); - - it('should throw an Error when using assert in a test with error object message', function (done) { - - var fn = function () { - - Hoek.assert(false, new Error('This is spinal tap')); - }; - - expect(fn).to.throw('This is spinal tap'); - done(); - }); - }); - - describe('#loadDirModules', function () { - - it('should load modules from directory', function (done) { - - var target = {}; - Hoek.loadDirModules(__dirname + '/modules', ['test2'], target); - expect(target.Test1.x).to.equal(1); - expect(target.Test2).to.not.exist; - expect(target.Test3.z).to.equal(3); - done(); - }); - - it('should list modules from directory into function', function (done) { - - var target = {}; - Hoek.loadDirModules(__dirname + '/modules', ['test2'], function (path, name, capName) { - - target[name] = capName; - }); - - expect(target.test1).to.equal('Test1'); - expect(target.test2).to.not.exist; - expect(target.test3).to.equal('Test3'); - done(); - }); - }); - - describe('#rename', function () { - - it('should rename object key', function (done) { - - var a = { b: 'c' }; - Hoek.rename(a, 'b', 'x'); - expect(a.b).to.not.exist; - expect(a.x).to.equal('c'); - done(); - }); - }); - - describe('Timer', function () { - - it('should return time elapsed', function (done) { - - var timer = new Hoek.Timer(); - setTimeout(function () { - - expect(timer.elapsed()).to.be.above(9); - done(); - }, 12); - }); - }); - - describe('#loadPackage', function () { - - it('should', function (done) { - - var pack = Hoek.loadPackage(); - expect(pack.name).to.equal('hoek'); - done(); - }); - }); - - describe('#escapeRegex', function () { - - it('should escape all special regular expression characters', function (done) { - - var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); - expect(a).to.equal('4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`"\\(>\\)\\[<\\]d\\{\\}s\\,'); - done(); - }); - }); - - describe('#toss', function () { - - it('should call callback with new error', function (done) { - - var callback = function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('bug'); - done(); - }; - - Hoek.toss(true, 'feature', callback); - Hoek.toss(false, 'bug', callback); - }); - - it('should call callback with new error and no message', function (done) { - - Hoek.toss(false, function (err) { - - expect(err).to.exist; - expect(err.message).to.equal(''); - done(); - }); - }); - - it('should call callback with error condition', function (done) { - - Hoek.toss(new Error('boom'), function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - - it('should call callback with new error using message with error condition', function (done) { - - Hoek.toss(new Error('ka'), 'boom', function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - - it('should call callback with new error using passed error with error condition', function (done) { - - Hoek.toss(new Error('ka'), new Error('boom'), function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - }); - - describe('Base64Url', function () { - - var base64str = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w'; - var str = unescape('%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29*+%2C-./0123456789%3A%3B%3C%3D%3E%3F@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF'); - - describe('#base64urlEncode', function () { - - it('should base64 URL-safe a string', function (done) { - - expect(Hoek.base64urlEncode(str)).to.equal(base64str); - done(); - }); - }); - - describe('#base64urlDecode', function () { - - it('should un-base64 URL-safe a string', function (done) { - - expect(Hoek.base64urlDecode(base64str)).to.equal(str); - done(); - }); - - it('should return error on undefined input', function (done) { - - expect(Hoek.base64urlDecode().message).to.exist; - done(); - }); - - it('should return error on invalid input', function (done) { - - expect(Hoek.base64urlDecode('*').message).to.exist; - done(); - }); - }); - }); - - describe('#escapeHeaderAttribute', function () { - - it('should not alter ascii values', function (done) { - - var a = Hoek.escapeHeaderAttribute('My Value'); - expect(a).to.equal('My Value'); - done(); - }); - - it('should escape all special HTTP header attribute characters', function (done) { - - var a = Hoek.escapeHeaderAttribute('I said go!!!#"' + String.fromCharCode(92)); - expect(a).to.equal('I said go!!!#\\"\\\\'); - done(); - }); - - it('should throw on large unicode characters', function (done) { - - var fn = function () { - - Hoek.escapeHeaderAttribute('this is a test' + String.fromCharCode(500) + String.fromCharCode(300)); - }; - - expect(fn).to.throw(Error); - done(); - }); - - it('should throw on CRLF to prevent response splitting', function (done) { - - var fn = function () { - - Hoek.escapeHeaderAttribute('this is a test\r\n'); - }; - - expect(fn).to.throw(Error); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('should escape all special HTML characters', function (done) { - - var a = Hoek.escapeHtml('&<>"\'`'); - expect(a).to.equal('&<>"'`'); - done(); - }); - - it('should return empty string on falsy input', function (done) { - - var a = Hoek.escapeHtml(''); - expect(a).to.equal(''); - done(); - }); - - it('should return unchanged string on no reserved input', function (done) { - - var a = Hoek.escapeHtml('abc'); - expect(a).to.equal('abc'); - done(); - }); - }); - - describe('#printEvent', function () { - - it('outputs event as string', function (done) { - - var event = { - timestamp: (new Date(2013, 1, 1, 6, 30, 45, 123)).getTime(), - tags: ['a', 'b', 'c'], - data: { some: 'data' } - }; - - Hoek.consoleFunc = function (string) { - - Hoek.consoleFunc = console.log; - expect(string).to.equal('130201/063045.123, a, {"some":"data"}'); - done(); - }; - - Hoek.printEvent(event); - }); - - it('outputs JSON error', function (done) { - - var event = { - timestamp: (new Date(2013, 1, 1, 6, 30, 45, 123)).getTime(), - tags: ['a', 'b', 'c'], - data: { some: 'data' } - }; - - event.data.a = event.data; - - Hoek.consoleFunc = function (string) { - - Hoek.consoleFunc = console.log; - expect(string).to.equal('130201/063045.123, a, JSON Error: Converting circular structure to JSON'); - done(); - }; - - Hoek.printEvent(event); - }); - }); - - describe('#nextTick', function () { - - it('calls the provided callback on nextTick', function (done) { - - var a = 0; - - var inc = function (step, next) { - - a += step; - next(); - }; - - var ticked = Hoek.nextTick(inc); - - ticked(5, function () { - - expect(a).to.equal(6); - done(); - }); - - expect(a).to.equal(0); - inc(1, function () { - - expect(a).to.equal(1); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js deleted file mode 100755 index 3f41e601..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js +++ /dev/null @@ -1 +0,0 @@ -exports.x = 1; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js deleted file mode 100755 index 38556b27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js +++ /dev/null @@ -1 +0,0 @@ -exports.y = 2; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js deleted file mode 100755 index 436b860b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js +++ /dev/null @@ -1 +0,0 @@ -exports.z = 3; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile deleted file mode 100755 index 9e7138c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @./node_modules/.bin/lab -test-cov: - @./node_modules/.bin/lab -r threshold -t 100 -test-cov-html: - @./node_modules/.bin/lab -r html -o coverage.html -complexity: - @./node_modules/.bin/cr -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md deleted file mode 100755 index 98a6e025..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# sntp - -An SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time -along with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset -to the local time. - -[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp) - -# Usage - -```javascript -var Sntp = require('sntp'); - -// All options are optional - -var options = { - host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org - port: 123, // Defaults to 123 (NTP) - resolveReference: true, // Default to false (not resolving) - timeout: 1000 // Defaults to zero (no timeout) -}; - -// Request server time - -Sntp.time(options, function (err, time) { - - if (err) { - console.log('Failed: ' + err.message); - process.exit(1); - } - - console.log('Local clock is off by: ' + time.t + ' milliseconds'); - process.exit(0); -}); -``` - -If an application needs to maintain continuous time synchronization, the module provides a stateful method for -querying the current offset only when the last one is too old (defaults to daily). - -```javascript -// Request offset once - -Sntp.offset(function (err, offset) { - - console.log(offset); // New (served fresh) - - // Request offset again - - Sntp.offset(function (err, offset) { - - console.log(offset); // Identical (served from cache) - }); -}); -``` - -To set a background offset refresh, start the interval and use the provided now() method. If for any reason the -client fails to obtain an up-to-date offset, the current system clock is used. - -```javascript -var before = Sntp.now(); // System time without offset - -Sntp.start(function () { - - var now = Sntp.now(); // With offset - Sntp.stop(); -}); -``` - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js deleted file mode 100755 index 0303f6dc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js +++ /dev/null @@ -1,16 +0,0 @@ -var Sntp = require('../lib'); - -// Request offset once - -Sntp.offset(function (err, offset) { - - console.log(offset); // New (served fresh) - - // Request offset again - - Sntp.offset(function (err, offset) { - - console.log(offset); // Identical (served from cache) - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js deleted file mode 100755 index bd70d0e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js +++ /dev/null @@ -1,25 +0,0 @@ -var Sntp = require('../lib'); - -// All options are optional - -var options = { - host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org - port: 123, // Defaults to 123 (NTP) - resolveReference: true, // Default to false (not resolving) - timeout: 1000 // Defaults to zero (no timeout) -}; - -// Request server time - -Sntp.time(options, function (err, time) { - - if (err) { - console.log('Failed: ' + err.message); - process.exit(1); - } - - console.log(time); - console.log('Local clock is off by: ' + time.t + ' milliseconds'); - process.exit(0); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js deleted file mode 100755 index e492cd93..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js +++ /dev/null @@ -1,409 +0,0 @@ -// Load modules - -var Dgram = require('dgram'); -var Dns = require('dns'); -var Hoek = require('hoek'); - - -// Declare internals - -var internals = {}; - - -exports.time = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - var settings = Hoek.clone(options); - settings.host = settings.host || 'pool.ntp.org'; - settings.port = settings.port || 123; - settings.resolveReference = settings.resolveReference || false; - - // Declare variables used by callback - - var timeoutId = 0; - var sent = 0; - - // Ensure callback is only called once - - var isFinished = false; - var finish = function (err, result) { - - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = 0; - } - - if (!isFinished) { - isFinished = true; - socket.removeAllListeners(); - socket.close(); - return callback(err, result); - } - }; - - // Create UDP socket - - var socket = Dgram.createSocket('udp4'); - - socket.once('error', function (err) { - - return finish(err); - }); - - // Listen to incoming messages - - socket.on('message', function (buffer, rinfo) { - - var received = Date.now(); - - var message = new internals.NtpMessage(buffer); - if (!message.isValid) { - return finish(new Error('Invalid server response'), message); - } - - if (message.originateTimestamp !== sent) { - return finish(new Error('Wrong originate timestamp'), message); - } - - // Timestamp Name ID When Generated - // ------------------------------------------------------------ - // Originate Timestamp T1 time request sent by client - // Receive Timestamp T2 time request received by server - // Transmit Timestamp T3 time reply sent by server - // Destination Timestamp T4 time reply received by client - // - // The roundtrip delay d and system clock offset t are defined as: - // - // d = (T4 - T1) - (T3 - T2) t = ((T2 - T1) + (T3 - T4)) / 2 - - var T1 = message.originateTimestamp; - var T2 = message.receiveTimestamp; - var T3 = message.transmitTimestamp; - var T4 = received; - - message.d = (T4 - T1) - (T3 - T2); - message.t = ((T2 - T1) + (T3 - T4)) / 2; - message.receivedLocally = received; - - if (!settings.resolveReference || - message.stratum !== 'secondary') { - - return finish(null, message); - } - - // Resolve reference IP address - - Dns.reverse(message.referenceId, function (err, domains) { - - if (!err) { - message.referenceHost = domains[0]; - } - - return finish(null, message); - }); - }); - - // Set timeout - - if (settings.timeout) { - timeoutId = setTimeout(function () { - - timeoutId = 0; - return finish(new Error('Timeout')); - }, settings.timeout); - } - - // Construct NTP message - - var message = new Buffer(48); - for (var i = 0; i < 48; i++) { // Zero message - message[i] = 0; - } - - message[0] = (0 << 6) + (4 << 3) + (3 << 0) // Set version number to 4 and Mode to 3 (client) - sent = Date.now(); - internals.fromMsecs(sent, message, 40); // Set transmit timestamp (returns as originate) - - // Send NTP request - - socket.send(message, 0, message.length, settings.port, settings.host, function (err, bytes) { - - if (err || - bytes !== 48) { - - return finish(err || new Error('Could not send entire message')); - } - }); -}; - - -internals.NtpMessage = function (buffer) { - - this.isValid = false; - - // Validate - - if (buffer.length !== 48) { - return; - } - - // Leap indicator - - var li = (buffer[0] >> 6); - switch (li) { - case 0: this.leapIndicator = 'no-warning'; break; - case 1: this.leapIndicator = 'last-minute-61'; break; - case 2: this.leapIndicator = 'last-minute-59'; break; - case 3: this.leapIndicator = 'alarm'; break; - } - - // Version - - var vn = ((buffer[0] & 0x38) >> 3); - this.version = vn; - - // Mode - - var mode = (buffer[0] & 0x7); - switch (mode) { - case 1: this.mode = 'symmetric-active'; break; - case 2: this.mode = 'symmetric-passive'; break; - case 3: this.mode = 'client'; break; - case 4: this.mode = 'server'; break; - case 5: this.mode = 'broadcast'; break; - case 0: - case 6: - case 7: this.mode = 'reserved'; break; - } - - // Stratum - - var stratum = buffer[1]; - if (stratum === 0) { - this.stratum = 'death'; - } - else if (stratum === 1) { - this.stratum = 'primary'; - } - else if (stratum <= 15) { - this.stratum = 'secondary'; - } - else { - this.stratum = 'reserved'; - } - - // Poll interval (msec) - - this.pollInterval = Math.round(Math.pow(2, buffer[2])) * 1000; - - // Precision (msecs) - - this.precision = Math.pow(2, buffer[3]) * 1000; - - // Root delay (msecs) - - var rootDelay = 256 * (256 * (256 * buffer[4] + buffer[5]) + buffer[6]) + buffer[7]; - this.rootDelay = 1000 * (rootDelay / 0x10000); - - // Root dispersion (msecs) - - this.rootDispersion = ((buffer[8] << 8) + buffer[9] + ((buffer[10] << 8) + buffer[11]) / Math.pow(2, 16)) * 1000; - - // Reference identifier - - this.referenceId = ''; - switch (this.stratum) { - case 'death': - case 'primary': - this.referenceId = String.fromCharCode(buffer[12]) + String.fromCharCode(buffer[13]) + String.fromCharCode(buffer[14]) + String.fromCharCode(buffer[15]); - break; - case 'secondary': - this.referenceId = '' + buffer[12] + '.' + buffer[13] + '.' + buffer[14] + '.' + buffer[15]; - break; - } - - // Reference timestamp - - this.referenceTimestamp = internals.toMsecs(buffer, 16); - - // Originate timestamp - - this.originateTimestamp = internals.toMsecs(buffer, 24); - - // Receive timestamp - - this.receiveTimestamp = internals.toMsecs(buffer, 32); - - // Transmit timestamp - - this.transmitTimestamp = internals.toMsecs(buffer, 40); - - // Validate - - if (this.version === 4 && - this.stratum !== 'reserved' && - this.mode === 'server' && - this.originateTimestamp && - this.receiveTimestamp && - this.transmitTimestamp) { - - this.isValid = true; - } - - return this; -}; - - -internals.toMsecs = function (buffer, offset) { - - var seconds = 0; - var fraction = 0; - - for (var i = 0; i < 4; ++i) { - seconds = (seconds * 256) + buffer[offset + i]; - } - - for (i = 4; i < 8; ++i) { - fraction = (fraction * 256) + buffer[offset + i]; - } - - return ((seconds - 2208988800 + (fraction / Math.pow(2, 32))) * 1000); -}; - - -internals.fromMsecs = function (ts, buffer, offset) { - - var seconds = Math.floor(ts / 1000) + 2208988800; - var fraction = Math.round((ts % 1000) / 1000 * Math.pow(2, 32)); - - buffer[offset + 0] = (seconds & 0xFF000000) >> 24; - buffer[offset + 1] = (seconds & 0x00FF0000) >> 16; - buffer[offset + 2] = (seconds & 0x0000FF00) >> 8; - buffer[offset + 3] = (seconds & 0x000000FF); - - buffer[offset + 4] = (fraction & 0xFF000000) >> 24; - buffer[offset + 5] = (fraction & 0x00FF0000) >> 16; - buffer[offset + 6] = (fraction & 0x0000FF00) >> 8; - buffer[offset + 7] = (fraction & 0x000000FF); -}; - - -// Offset singleton - -internals.last = { - offset: 0, - expires: 0, - host: '', - port: 0 -}; - - -exports.offset = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - var now = Date.now(); - var clockSyncRefresh = options.clockSyncRefresh || 24 * 60 * 60 * 1000; // Daily - - if (internals.last.offset && - internals.last.host === options.host && - internals.last.port === options.port && - now < internals.last.expires) { - - process.nextTick(function () { - - callback(null, internals.last.offset); - }); - - return; - } - - exports.time(options, function (err, time) { - - if (err) { - return callback(err, 0); - } - - internals.last = { - offset: Math.round(time.t), - expires: now + clockSyncRefresh, - host: options.host, - port: options.port - }; - - return callback(null, internals.last.offset); - }); -}; - - -// Now singleton - -internals.now = { - intervalId: 0 -}; - - -exports.start = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - if (internals.now.intervalId) { - process.nextTick(function () { - - callback(); - }); - - return; - } - - exports.offset(options, function (err, offset) { - - internals.now.intervalId = setInterval(function () { - - exports.offset(options, function () { }); - }, options.clockSyncRefresh || 24 * 60 * 60 * 1000); // Daily - - return callback(); - }); -}; - - -exports.stop = function () { - - if (!internals.now.intervalId) { - return; - } - - clearInterval(internals.now.intervalId); - internals.now.intervalId = 0; -}; - - -exports.isLive = function () { - - return !!internals.now.intervalId; -}; - - -exports.now = function () { - - var now = Date.now(); - if (!exports.isLive() || - now >= internals.last.expires) { - - return now; - } - - return now + internals.last.offset; -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json deleted file mode 100755 index 4c4b2f57..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "sntp", - "description": "SNTP Client", - "version": "0.2.4", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/sntp" - }, - "main": "index", - "keywords": [ - "sntp", - "ntp", - "time" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/sntp/raw/master/LICENSE" - } - ], - "readme": "# sntp\n\nAn SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time\nalong with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset\nto the local time.\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp)\n\n# Usage\n\n```javascript\nvar Sntp = require('sntp');\n\n// All options are optional\n\nvar options = {\n host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org\n port: 123, // Defaults to 123 (NTP)\n resolveReference: true, // Default to false (not resolving)\n timeout: 1000 // Defaults to zero (no timeout)\n};\n\n// Request server time\n\nSntp.time(options, function (err, time) {\n\n if (err) {\n console.log('Failed: ' + err.message);\n process.exit(1);\n }\n\n console.log('Local clock is off by: ' + time.t + ' milliseconds');\n process.exit(0);\n});\n```\n\nIf an application needs to maintain continuous time synchronization, the module provides a stateful method for\nquerying the current offset only when the last one is too old (defaults to daily).\n\n```javascript\n// Request offset once\n\nSntp.offset(function (err, offset) {\n\n console.log(offset); // New (served fresh)\n\n // Request offset again\n\n Sntp.offset(function (err, offset) {\n\n console.log(offset); // Identical (served from cache)\n });\n});\n```\n\nTo set a background offset refresh, start the interval and use the provided now() method. If for any reason the\nclient fails to obtain an up-to-date offset, the current system clock is used.\n\n```javascript\nvar before = Sntp.now(); // System time without offset\n\nSntp.start(function () {\n\n var now = Sntp.now(); // With offset\n Sntp.stop();\n});\n```\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/sntp/issues" - }, - "homepage": "https://github.com/hueniverse/sntp", - "_id": "sntp@0.2.4", - "_from": "sntp@0.2.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js deleted file mode 100755 index 38a55346..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js +++ /dev/null @@ -1,359 +0,0 @@ -// Load modules - -var Dgram = require('dgram'); -var Lab = require('lab'); -var Sntp = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('SNTP', function () { - - describe('#time', function () { - - it('returns consistent result over multiple tries', function (done) { - - Sntp.time(function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - var t1 = time.t; - - Sntp.time(function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - var t2 = time.t; - expect(Math.abs(t1 - t2)).is.below(200); - done(); - }); - }); - }); - - it('resolves reference IP', function (done) { - - Sntp.time({ host: 'ntp.exnet.com', resolveReference: true }, function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - expect(time.referenceHost).to.exist; - done(); - }); - }); - - it('times out on no response', function (done) { - - Sntp.time({ port: 124, timeout: 100 }, function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('Timeout'); - done(); - }); - }); - - it('errors on error event', function (done) { - - var orig = Dgram.createSocket; - Dgram.createSocket = function (type) { - - Dgram.createSocket = orig; - var socket = Dgram.createSocket(type); - process.nextTick(function () { socket.emit('error', new Error('Fake')) }); - return socket; - }; - - Sntp.time(function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('Fake'); - done(); - }); - }); - - it('times out on invalid host', function (done) { - - Sntp.time({ host: 'error', timeout: 10000 }, function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('getaddrinfo ENOTFOUND'); - done(); - }); - }); - - it('fails on bad response buffer size', function (done) { - - var server = Dgram.createSocket('udp4'); - server.on('message', function (message, remote) { - var message = new Buffer(10); - server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) { - - server.close(); - }); - }); - - server.bind(49123); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid server response'); - done(); - }); - }); - - var messup = function (bytes) { - - var server = Dgram.createSocket('udp4'); - server.on('message', function (message, remote) { - - var message = new Buffer([ - 0x24, 0x01, 0x00, 0xe3, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x41, 0x43, 0x54, 0x53, - 0xd4, 0xa8, 0x2d, 0xc7, - 0x1c, 0x5d, 0x49, 0x1b, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x67, 0xef, 0x9d, 0xb2, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x71, 0xed, 0xb5, 0xfb, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x71, 0xee, 0x6c, 0xc5 - ]); - - for (var i = 0, il = bytes.length; i < il; ++i) { - message[bytes[i][0]] = bytes[i][1]; - } - - server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) { - - server.close(); - }); - }); - - server.bind(49123); - }; - - it('fails on bad version', function (done) { - - messup([[0, (0 << 6) + (3 << 3) + (4 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.version).to.equal(3); - expect(err.message).to.equal('Invalid server response'); - done(); - }); - }); - - it('fails on bad originate timestamp and alarm li', function (done) { - - messup([[0, (3 << 6) + (4 << 3) + (4 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(err.message).to.equal('Wrong originate timestamp'); - expect(time.leapIndicator).to.equal('alarm'); - done(); - }); - }); - - it('returns time with death stratum and last61 li', function (done) { - - messup([[0, (1 << 6) + (4 << 3) + (4 << 0)], [1, 0]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(time.stratum).to.equal('death'); - expect(time.leapIndicator).to.equal('last-minute-61'); - done(); - }); - }); - - it('returns time with reserved stratum and last59 li', function (done) { - - messup([[0, (2 << 6) + (4 << 3) + (4 << 0)], [1, 0x1f]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(time.stratum).to.equal('reserved'); - expect(time.leapIndicator).to.equal('last-minute-59'); - done(); - }); - }); - - it('fails on bad mode (symmetric-active)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (1 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('symmetric-active'); - done(); - }); - }); - - it('fails on bad mode (symmetric-passive)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (2 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('symmetric-passive'); - done(); - }); - }); - - it('fails on bad mode (client)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (3 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('client'); - done(); - }); - }); - - it('fails on bad mode (broadcast)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (5 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('broadcast'); - done(); - }); - }); - - it('fails on bad mode (reserved)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (6 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('reserved'); - done(); - }); - }); - }); - - describe('#offset', function () { - - it('gets the current offset', function (done) { - - Sntp.offset(function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.not.equal(0); - done(); - }); - }); - - it('gets the current offset from cache', function (done) { - - Sntp.offset(function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.not.equal(0); - var offset1 = offset; - Sntp.offset({}, function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.equal(offset1); - done(); - }); - }); - }); - - it('fails getting the current offset on invalid server', function (done) { - - Sntp.offset({ host: 'error' }, function (err, offset) { - - expect(err).to.exist; - expect(offset).to.equal(0); - done(); - }); - }); - }); - - describe('#now', function () { - - it('starts auto-sync, gets now, then stops', function (done) { - - Sntp.stop(); - - var before = Sntp.now(); - expect(before).to.equal(Date.now()); - - Sntp.start(function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - Sntp.stop(); - - done(); - }); - }); - - it('starts twice', function (done) { - - Sntp.start(function () { - - Sntp.start(function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - Sntp.stop(); - - done(); - }); - }); - }); - - it('starts auto-sync, gets now, waits, gets again after timeout', function (done) { - - Sntp.stop(); - - var before = Sntp.now(); - expect(before).to.equal(Date.now()); - - Sntp.start({ clockSyncRefresh: 100 }, function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - expect(now).to.equal(Sntp.now()); - - setTimeout(function () { - - expect(Sntp.now()).to.not.equal(now); - Sntp.stop(); - done(); - }, 110); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json deleted file mode 100755 index 16feb783..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "hawk", - "description": "HTTP Hawk Authentication Scheme", - "version": "1.0.0", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/hawk" - }, - "main": "index", - "keywords": [ - "http", - "authentication", - "scheme", - "hawk" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x", - "boom": "0.4.x", - "cryptiles": "0.2.x", - "sntp": "0.2.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x", - "localStorage": "1.0.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/hawk/raw/master/LICENSE" - } - ], - "readme": "![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png)\n\n<img align=\"right\" src=\"https://raw.github.com/hueniverse/hawk/master/images/logo.png\" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial\nHTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz).\n\nCurrent version: **1.0**\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk)\n\n# Table of Content\n\n- [**Introduction**](#introduction)\n - [Replay Protection](#replay-protection)\n - [Usage Example](#usage-example)\n - [Protocol Example](#protocol-example)\n - [Payload Validation](#payload-validation)\n - [Response Payload Validation](#response-payload-validation)\n - [Browser Support and Considerations](#browser-support-and-considerations)\n<p></p>\n- [**Single URI Authorization**](#single-uri-authorization)\n - [Usage Example](#bewit-usage-example)\n<p></p>\n- [**Security Considerations**](#security-considerations)\n - [MAC Keys Transmission](#mac-keys-transmission)\n - [Confidentiality of Requests](#confidentiality-of-requests)\n - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers)\n - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials)\n - [Entropy of Keys](#entropy-of-keys)\n - [Coverage Limitations](#coverage-limitations)\n - [Future Time Manipulation](#future-time-manipulation)\n - [Client Clock Poisoning](#client-clock-poisoning)\n - [Bewit Limitations](#bewit-limitations)\n - [Host Header Forgery](#host-header-forgery)\n<p></p>\n- [**Frequently Asked Questions**](#frequently-asked-questions)\n<p></p>\n- [**Acknowledgements**](#acknowledgements)\n\n# Introduction\n\n**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with\npartial cryptographic verification of the request and response, covering the HTTP method, request URI, host,\nand optionally the request payload.\n\nSimilar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of\nclient credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme,\nthe key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is\nincluded in its place.\n\nHowever, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of\nreplay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less\n\"chattiness\" (interaction with the server).\n\nAlso unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because\nthe client and server must both have access to the key material in the clear.\n\nThe primary design goals of this scheme are to:\n* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources,\n* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where\n to send an authenticated request), and\n* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client\n failure to validate the server's identity as part of its TLS handshake.\n\nIn addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using\na query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).\n\nThe **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server,\nwhich is beyond the scope of this module. Typically, the shared credentials are established via an initial\nTLS-protected phase or derived from some other shared confidential information available to both the client\nand the server.\n\n\n## Replay Protection\n\nWithout replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more \nthan once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when \nmaking requests. This gives the server enough information to prevent replay attacks.\n\nThe nonce is generated by the client, and is a string unique across all requests with the same timestamp and\nkey identifier combination. \n\nThe timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards\nare rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks.\nBy default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in\npractice translates to a maximum of 2 minutes as the skew can be positive or negative).\n\nUsing a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client\nclock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types\n(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response\nto a bad timestamp.\n\nThere is no expectation that the client will adjust its system clock to match the server (in fact, this would be a\npotential attack vector). Instead, the client only uses the server's time to calculate an offset used only\nfor communications with that particular server. The protocol rewards clients with synchronized clocks by reducing\nthe number of round trips required to authenticate the first request.\n\n\n## Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256',\n user: 'Steve'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n // Authenticate incoming request\n\n Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {\n\n // Prepare response\n\n var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');\n var headers = { 'Content-Type': 'text/plain' };\n\n // Generate Server-Authorization response header\n\n var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] });\n headers['Server-Authorization'] = header;\n\n // Send the response back\n\n res.writeHead(!err ? 200 : 401, headers);\n res.end(payload);\n });\n};\n\n// Start server\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nClient code:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Request options\n\nvar requestOptions = {\n uri: 'http://example.com:8000/resource/1?b=1&a=2',\n method: 'GET',\n headers: {}\n};\n\n// Generate Authorization request header\n\nvar header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' });\nrequestOptions.headers.Authorization = header.field;\n\n// Send authenticated request\n\nRequest(requestOptions, function (error, response, body) {\n\n // Authenticate the server's response\n\n var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });\n\n // Output results\n\n console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));\n});\n```\n\n**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local\nmachine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method.\n\n```javascript\nHawk.sntp.start();\n```\n\n\n## Protocol Example\n\nThe client attempts to access a protected resource without authentication, sending the following HTTP request to\nthe resource server:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\n```\n\nThe resource server returns an authentication challenge.\n\n```\nHTTP/1.1 401 Unauthorized\nWWW-Authenticate: Hawk\n```\n\nThe client has previously obtained a set of **Hawk** credentials for accessing resources on the \"http://example.com/\"\nserver. The **Hawk** credentials issued to the client include the following attributes:\n\n* Key identifier: dh37fgj492je\n* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\n* Algorithm: sha256\n\nThe client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1,\n1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline\ncharacter):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nGET\n/resource/1?b=1&a=2\nexample.com\n8000\n\nsome-app-ext-data\n\n```\n\nThe request MAC is calculated using HMAC with the specified hash algorithm \"sha256\" and the key over the normalized request string.\nThe result is base64-encoded to produce the request MAC:\n\n```\n6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\n```\n\nThe client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using\nthe HTTP `Authorization` request header field:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", ext=\"some-app-ext-data\", mac=\"6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\"\n```\n\nThe server validates the request by calculating the request MAC again based on the request received and verifies the validity\nand scope of the **Hawk** credentials. If valid, the server responds with the requested resource.\n\n\n### Payload Validation\n\n**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash\nusing the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):\n* `hawk.1.payload`\n* the content-type in lowercase, without any parameters (e.g. `application/json`)\n* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability)\n\nFor example:\n\n* Payload: `Thank you for flying Hawk`\n* Content Type: `text/plain`\n* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=`\n\nResults in the following input to the payload hash function (newline terminated values):\n\n```\nhawk.1.payload\ntext/plain\nThank you for flying Hawk\n\n```\n\nWhich produces the following hash value:\n\n```\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\n```\n\nThe client constructs the normalized request string (newline terminated values):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource/1?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n\n```\n\nThen calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data,\nand request MAC, with the request using the HTTP `Authorization` request header field:\n\n```\nPOST /resource/1?a=1&b=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", hash=\"Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\", ext=\"some-app-ext-data\", mac=\"aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=\"\n```\n\nIt is up to the server if and when it validates the payload for any given request, based solely on it's security policy\nand the nature of the data included.\n\nIf the payload is available at the time of authentication, the server uses the hash value provided by the client to construct\nthe normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value\nwith the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.\n\nHowever, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed\nat a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value\nprovided by the client after validating the MAC.\n\nIt is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value\nincluded in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided\nby the client, the payload may be modified by an attacker.\n\n\n## Response Payload Validation\n\n**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the\nclient to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header\nas a response header using the exact same syntax as the `Authorization` request header field.\n\nThe header is contructed using the same process as the client's request header. The server uses the same credentials and other\nartifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with\nnew values based on the server response. The rest as identical to those used by the client.\n\nThe result MAC digest is included with the optional `hash` and `ext` values:\n\n```\nServer-Authorization: Hawk mac=\"XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\", ext=\"response-specific\"\n```\n\n\n## Browser Support and Considerations\n\nA browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js).\n\n**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client.\nTherefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value\n_\"WWW-Authenticate, Server-Authorization\"_ on each response from your server. As explained in the\n[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers\ncan safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a\n[\"simple response header\"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the\nHawk client from authenticating the requests.You can read more about the why and how in this\n[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server)\n\n\n# Single URI Authorization\n\nThere are cases in which limited and short-term access to a protected resource is granted to a third party which does not\nhave access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk**\nprovides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains\nthe necessary credentials to authenticate the request.\n\nBecause of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests\nand for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same\ncredentials as the client to maintain clear traceability as to who issued which credentials.\n\nIn order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within\nthe granted access timeframe. \n\n\n## Bewit Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {\n\n res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' });\n res.end(!err ? 'Access granted' : 'Shoosh!');\n });\n};\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nBewit code generation:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Generate bewit\n\nvar duration = 60 * 5; // 5 Minutes\nvar bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' });\nvar uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit;\n```\n\n\n# Security Considerations\n\nThe greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use.\nImplementers are strongly encouraged to assess how this module addresses their security requirements. This section includes\nan incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server.\nMany of the protections provided in **Hawk** depends on whether and how they are used.\n\n### MAC Keys Transmission\n\n**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used\nto obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.\n\n### Confidentiality of Requests\n\nWhile **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request\nconfidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should\ncarefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms\nto protect sensitive resources.\n\n### Spoofing by Counterfeit Servers\n\n**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server\nmay choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to\nthe server to determine when such measure is included, to up to the client to enforce that policy.\n\nA hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise\nincorrect responses. Service providers should consider such attacks when developing services using this protocol, and should\nrequire transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.\n\n### Plaintext Storage of Credentials\n\nThe **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC,\nthe server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which\nstore only a one-way hash of user credentials.\n\nIf an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able\nto perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized\naccess.\n\n### Entropy of Keys\n\nUnless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request\nMAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to\nassign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk**\ncredentials are valid.\n\nFor example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force\nattack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the\nlongest key reasonable.\n\nIt is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high\nquality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit\npatterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use\ncryptographically secure PRNGs to avoid these problems.\n\n### Coverage Limitations\n\nThe request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers\nwhich can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence\nor value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the\n`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC.\n\nThe response authentication, when performed, only covers the response payload, content-type, and the request information \nprovided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or\nany other response header field (e.g. Location) which can affect the client's behaviour.\n\n### Future Time Manipulation\n\nThe protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its\ncurrent time when an invalid timestamp is received.\n\nIf an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause\nthe client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will\nnot likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then\nbe able to replay the request at the correct time without detection.\n\nThe client must only use the time information provided by the server if:\n* it was delivered over a TLS connection and the server identity has been verified, or\n* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified.\n\n### Client Clock Poisoning\n\nWhen receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use\nthe time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with\nthat particular server.\n\n### Bewit Limitations\n\nSpecial care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot\nbe revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with\naccess to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET\nrequests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private\nand sensitive information.\n\n### Host Header Forgery\n\nHawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port`\noptions are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and\nuse that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server\nimplementors must manually verify that the host header received matches their expectation (or use the options mentioned above).\n\n# Frequently Asked Questions\n\n### Where is the protocol specification?\n\nIf you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source\nproject instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about\nsomething? Open an issue!\n\n### Is it done?\n\nAt if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental\nand is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions\nand suggestions.\n\n### Where can I find **Hawk** implementations in other languages?\n\n**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other\nplatforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk),\n[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list\nis maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another\nport. A cross-platform test-suite is in the works.\n\n### Why isn't the algorithm part of the challenge or dynamically negotiated?\n\nThe algorithm used is closely related to the key issued as different algorithms require different key sizes (and other\nrequirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm\ntogether as part of the issued credentials.\n\n### Why is Host and Content-Type the only headers covered by the request MAC?\n\nIt is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no\nwell-established way to normalize them. Many platforms change the case of header field names and values. The only\nstraight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request,\nan approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information,\nand introduces other security issues because firewalls will not be aware of these \"hidden\" headers. In addition, any information\nrepeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.\n\n### Why not just use HTTP Digest?\n\nDigest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send\na protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile\nwhere extra round-trip are costly.\n\n### Why bother with all this nonce and timestamp business?\n\n**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp\nand nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses\nit by requiring the client to sync its clock, but provides it with tools to accomplish it.\n\nIn general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected\nsystem where the clients are implemented using best practices and are under the control of the server. Instead of dropping\nreplay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers\nwith the ability to decide how to enforce their security policy without impacting the client's implementation.\n\n### What are `app` and `dlg` in the authorization header and normalized mac string?\n\nThe original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which\nthis module is specifically designed for, and a delegated access mode which is being developed separately in\n[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`.\nThis provides binding between the credentials and the application in a way that prevents an attacker from tricking an application\nto use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the\napplication the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly,\nbut with the additional security of delegated credentials.\n\n### What is the purpose of the static strings used in each normalized MAC input?\n\nWhen calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being\nused or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request,\nresponse, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol\ncreates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it\ncan create an exploit opportunity for cases where the nonce is similar in format to a timestamp.\n\n### Does **Hawk** have anything to do with OAuth?\n\nShort answer: no.\n\n**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent\nincompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it\nto authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard\nat work to produce more garbage.\n\n**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case\nof delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz).\n\n\n# Acknowledgements\n\n**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal\nco-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.\n\nSpecial thanks to Ben Laurie for his always insightful feedback and advice.\n\nThe **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com).\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/hawk/issues" - }, - "homepage": "https://github.com/hueniverse/hawk", - "_id": "hawk@1.0.0", - "_from": "hawk@~1.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js deleted file mode 100755 index b25a10fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js +++ /dev/null @@ -1,771 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); -var Browser = require('../lib/browser'); -var LocalStorage = require('localStorage'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Browser', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a header then successfully parse it (configuration)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (node request)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' }); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header options)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header with stale ts and successfully authenticate on second call', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - Browser.utils.setNtpOffset(60 * 60 * 1000); - var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }); - req.authorization = header.field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - - var res = { - headers: { - 'www-authenticate': err.response.headers['WWW-Authenticate'] - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000); - expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true); - expect(Browser.utils.getNtpOffset()).to.equal(0); - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - }); - - it('should generate a header with stale ts and successfully authenticate on second call (manual localStorage)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - Browser.utils.setStorage(LocalStorage) - - Browser.utils.setNtpOffset(60 * 60 * 1000); - var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }); - req.authorization = header.field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - - var res = { - headers: { - 'www-authenticate': err.response.headers['WWW-Authenticate'] - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(parseInt(LocalStorage.getItem('hawk_ntp_offset'))).to.equal(60 * 60 * 1000); - expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000); - expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true); - expect(Browser.utils.getNtpOffset()).to.equal(0); - expect(parseInt(LocalStorage.getItem('hawk_ntp_offset'))).to.equal(0); - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - }); - - it('should generate a header then fails to parse it (missing server header hash)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (with hash)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it then validate payload', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true; - expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false; - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app, dlg)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - expect(artifacts.dlg).to.equal('23434szr3q4d'); - done(); - }); - }); - }); - - it('should generate a header then fail authentication due to bad hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad payload hash'); - done(); - }); - }); - }); - - it('should generate a header for one resource then fail to authenticate another', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - req.url = '/something/else'; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(credentials).to.exist; - done(); - }); - }); - }); - - describe('client', function () { - - describe('#header', function () { - - it('should return a valid authorization header (sha1)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha1' - }; - - var header = Browser.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="'); - done(); - }); - - it('should return a valid authorization header (sha256)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="'); - done(); - }); - - it('should return a valid authorization header (no ext)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="'); - done(); - }); - - it('should return an empty authorization header on missing options', function (done) { - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST').field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - }); - - describe('#authenticate', function () { - - it('should return false on invalid header', function (done) { - - var res = { - headers: { - 'server-authorization': 'Hawk mac="abc", bad="xyz"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should return false on invalid mac', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(false); - done(); - }); - - it('should return true on ignoring hash', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var res = { - headers: { - 'www-authenticate': 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - var res = { - headers: { - 'www-authenticate': 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, credentials)).to.equal(false); - done(); - }); - }); - - describe('#message', function () { - it('should generate an authorization then successfully parse it', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should fail on missing host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Browser.client.message(null, 8080, 'some message', { credentials: credentials }); - expect(auth).to.not.exist; - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var auth = Browser.client.message('example.com', 8080, 'some message', {}); - expect(auth).to.not.exist; - done(); - }); - - it('should fail on invalid algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var creds = Hoek.clone(credentials); - creds.algorithm = 'blah'; - var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: creds }); - expect(auth).to.not.exist; - done(); - }); - }); - }); - }); - - describe('#parseAuthorizationHeader', function (done) { - - it('returns null on missing header', function (done) { - - expect(Browser.utils.parseAuthorizationHeader()).to.equal(null); - done(); - }); - - it('returns null on bad header syntax (structure)', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk')).to.equal(null); - done(); - }); - - it('returns null on bad header syntax (parts)', function (done) { - - expect(Browser.utils.parseAuthorizationHeader(' ')).to.equal(null); - done(); - }); - - it('returns null on bad scheme name', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Basic asdasd')).to.equal(null); - done(); - }); - - it('returns null on bad attribute value', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk test="\t"', ['test'])).to.equal(null); - done(); - }); - - it('returns null on duplicated attribute', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk test="a", test="b"', ['test'])).to.equal(null); - done(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js deleted file mode 100755 index bcc4222a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js +++ /dev/null @@ -1,206 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('client', function () { - - describe('#header', function () { - - it('should return a valid authorization header (sha1)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha1' - }; - - var header = Hawk.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="'); - done(); - }); - - it('should return a valid authorization header (sha256)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="'); - done(); - }); - - it('should return a valid authorization header (no ext)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="'); - done(); - }); - - it('should return an empty authorization header on missing options', function (done) { - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST').field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - }); - - describe('#authenticate', function () { - - it('should return false on invalid header', function (done) { - - var res = { - headers: { - 'server-authorization': 'Hawk mac="abc", bad="xyz"' - } - }; - - expect(Hawk.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should return false on invalid mac', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(false); - done(); - }); - - it('should return true on ignoring hash', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var header = 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"'; - expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, {})).to.equal(false); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - var header = 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"'; - expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, credentials)).to.equal(false); - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js deleted file mode 100755 index b62c2177..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js +++ /dev/null @@ -1,86 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Crypto', function () { - - describe('#generateNormalizedString', function () { - - it('should return a valid normalized string', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080 - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\n\n'); - - done(); - }); - - it('should return a valid normalized string (ext)', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080, - ext: 'this is some app data' - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\nthis is some app data\n'); - - done(); - }); - - it('should return a valid normalized string (payload + ext)', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080, - hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=', - ext: 'this is some app data' - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\nU4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=\nthis is some app data\n'); - - done(); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js deleted file mode 100755 index ba837388..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js +++ /dev/null @@ -1,316 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a header then successfully parse it (configuration)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header(Url.parse('http://example.com:8080/resource/4?filter=a'), req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (node request)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' }); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header options)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then fails to parse it (missing server header hash)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (with hash)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it then validate payload', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true; - expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false; - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app, dlg)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - expect(artifacts.dlg).to.equal('23434szr3q4d'); - done(); - }); - }); - }); - - it('should generate a header then fail authentication due to bad hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad payload hash'); - done(); - }); - }); - }); - - it('should generate a header for one resource then fail to authenticate another', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - req.url = '/something/else'; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(credentials).to.exist; - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js deleted file mode 100755 index 04b91d41..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js +++ /dev/null @@ -1,246 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate an authorization then successfully parse it', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should fail authorization on mismatching host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example1.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - it('should fail authorization on stale timestamp', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - done(); - }); - }); - }); - - it('should fail authorization on invalid authorization', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - delete auth.id; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid authorization'); - done(); - }); - }); - }); - - it('should fail authorization on bad hash', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message1', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Bad message hash'); - done(); - }); - }); - }); - - it('should fail authorization on nonce error', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { nonceFunc: function (nonce, ts, callback) { callback (new Error('kaboom')); } }, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid nonce'); - done(); - }); - }); - }); - - it('should fail authorization on credentials error', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(new Error('kablooey')); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('kablooey'); - done(); - }); - }); - }); - - it('should fail authorization on missing credentials', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown credentials'); - done(); - }); - }); - }); - - it('should fail authorization on invalid credentials', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(null, {}); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - done(); - }); - }); - }); - - it('should fail authorization on invalid credentials algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(null, { key: '123', algorithm: '456' }); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - done(); - }); - }); - }); - - it('should fail on missing host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message(null, 8080, 'some message', { credentials: credentials }); - expect(auth).to.not.exist; - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', {}); - expect(auth).to.not.exist; - done(); - }); - - it('should fail on invalid algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var creds = Hoek.clone(credentials); - creds.algorithm = 'blah'; - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: creds }); - expect(auth).to.not.exist; - done(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js deleted file mode 100755 index f39e033d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js +++ /dev/null @@ -1,98 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('README', function () { - - describe('core', function () { - - var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' - }; - - var options = { - credentials: credentials, - timestamp: 1353832234, - nonce: 'j4h3g2', - ext: 'some-app-ext-data' - }; - - it('should generate a header protocol example', function (done) { - - var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', options).field; - - expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="'); - done(); - }); - - it('should generate a normalized string protocol example', function (done) { - - var normalized = Hawk.crypto.generateNormalizedString('header', { - credentials: credentials, - ts: options.timestamp, - nonce: options.nonce, - method: 'GET', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8000, - ext: options.ext - }); - - expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nGET\n/resource?a=1&b=2\nexample.com\n8000\n\nsome-app-ext-data\n'); - done(); - }); - - var payloadOptions = Hoek.clone(options); - payloadOptions.payload = 'Thank you for flying Hawk'; - payloadOptions.contentType = 'text/plain'; - - it('should generate a header protocol example (with payload)', function (done) { - - var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'POST', payloadOptions).field; - - expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="'); - done(); - }); - - it('should generate a normalized string protocol example (with payload)', function (done) { - - var normalized = Hawk.crypto.generateNormalizedString('header', { - credentials: credentials, - ts: options.timestamp, - nonce: options.nonce, - method: 'POST', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8000, - hash: Hawk.crypto.calculatePayloadHash(payloadOptions.payload, credentials.algorithm, payloadOptions.contentType), - ext: options.ext - }); - - expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n'); - done(); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js deleted file mode 100755 index 3e92427a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js +++ /dev/null @@ -1,686 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('server', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - describe('#authenticate', function () { - - it('should parse a valid authentication header (sha1)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (sha256)', function (done) { - - var req = { - method: 'GET', - url: '/resource/1?b=1&a=2', - host: 'example.com', - port: 8000, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (host override)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example1.com:8080', - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (host port override)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example1.com:80', - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', port: 8080, localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (POST with payload)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123456", ts="1357926341", nonce="1AwuJD", hash="qAiXIVv+yjDATneWxZP2YCTa9aHRgQdnH9b3Wc+o3dg=", ext="some-app-data", mac="UeYcj5UoTVaAWXNvJfLVia7kU3VabxCqrccXP8sUGC4="' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1357926341000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should fail on missing hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/1?b=1&a=2', - host: 'example.com', - port: 8000, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { payload: 'body', localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing required payload hash'); - done(); - }); - }); - - it('should fail on a stale timestamp', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123456", ts="1362337299", nonce="UzmxSs", ext="some-app-data", mac="wnNUxchvvryMH2RxckTdZ/gY3ijzvccx4keVvELC61w="' - }; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Stale timestamp'); - var header = err.response.headers['WWW-Authenticate']; - var ts = header.match(/^Hawk ts\=\"(\d+)\"\, tsm\=\"([^\"]+)\"\, error=\"Stale timestamp\"$/); - var now = Hawk.utils.now(); - expect(parseInt(ts[1], 10) * 1000).to.be.within(now - 1000, now + 1000); - - var res = { - headers: { - 'www-authenticate': header - } - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - - it('should fail on a replay', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="bXx7a7p1h9QYQNZ8x7QhvDQym8ACgab4m3lVSFn4DBw=", ext="hello"' - }; - - var memoryCache = {}; - var options = { - localtimeOffsetMsec: 1353788437000 - Hawk.utils.now(), - nonceFunc: function (nonce, ts, callback) { - - if (memoryCache[nonce]) { - return callback(new Error()); - } - - memoryCache[nonce] = true; - return callback(); - } - }; - - Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - - Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid nonce'); - done(); - }); - }); - }); - - it('should fail on an invalid authentication header: wrong scheme', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Basic asdasdasdasd' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.not.exist; - done(); - }); - }); - - it('should fail on an invalid authentication header: no scheme', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: '!@#' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid header syntax'); - done(); - }); - }); - - it('should fail on an missing authorization header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.isMissing).to.equal(true); - done(); - }); - }); - - it('should fail on an missing host header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (id)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (ts)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (nonce)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (mac)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an unknown authorization attribute', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", x="3", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown attribute: x'); - done(); - }); - }); - - it('should fail on an bad authorization header format', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123\\", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad header format'); - done(); - }); - }); - - it('should fail on an bad authorization attribute value', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="\t", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad attribute value: id'); - done(); - }); - }); - - it('should fail on an empty authorization attribute value', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad attribute value: id'); - done(); - }); - }); - - it('should fail on duplicated authorization attribute key', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", id="456", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Duplicate attribute: id'); - done(); - }); - }); - - it('should fail on an invalid authorization header format', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid header syntax'); - done(); - }); - }); - - it('should fail on an bad host header (missing host)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: ':8080', - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on an bad host header (pad port)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:something', - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on credentialsFunc error', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - return callback(new Error('Unknown user')); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown user'); - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - return callback(null, null); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown credentials'); - done(); - }); - }); - - it('should fail on invalid credentials', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - }); - - it('should fail on unknown credentials algorithm', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'hmac-sha-0', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - }); - - it('should fail on unknown bad mac', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcU4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - describe('#header', function () { - - it('should return an empty authorization header on missing options', function (done) { - - var header = Hawk.server.header(); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on missing credentials', function (done) { - - var header = Hawk.server.header(null, {}); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q' - }; - - var header = Hawk.server.header(credentials); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var artifacts = { - id: '123456' - }; - - var credentials = { - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Hawk.server.header(credentials, artifacts); - expect(header).to.equal(''); - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js deleted file mode 100755 index 44ffd7fb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js +++ /dev/null @@ -1,456 +0,0 @@ -// Load modules - -var Http = require('http'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Uri', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a bewit then successfully authenticate it', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 80 - }; - - credentialsFunc('123456', function (err, credentials) { - - var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100, ext: 'some-app-data' }); - req.url += '&bewit=' + bewit; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a bewit then successfully authenticate it (no ext)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 80 - }; - - credentialsFunc('123456', function (err, credentials) { - - var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100 }); - req.url += '&bewit=' + bewit; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should successfully authenticate a request (last param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should successfully authenticate a request (first param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ&a=1&b=2', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should successfully authenticate a request (only param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should fail on multiple authentication', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080, - authorization: 'Basic asdasdasdasd' - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Multiple authentications'); - done(); - }); - }); - - it('should fail on method other than GET', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - var exp = Math.floor(Hawk.utils.now() / 1000) + 60; - var ext = 'some-app-data'; - var mac = Hawk.crypto.calculateMac('bewit', credentials, { - timestamp: exp, - nonce: '', - method: req.method, - resource: req.url, - host: req.host, - port: req.port, - ext: ext - }); - - var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + ext; - - req.url += '&bewit=' + Hawk.utils.base64urlEncode(bewit); - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid method'); - done(); - }); - }); - }); - - it('should fail on invalid host header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - headers: { - host: 'example.com:something' - } - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on empty bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Empty bewit'); - expect(err.isMissing).to.not.exist; - done(); - }); - }); - - it('should fail on invalid bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=*', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid bewit encoding'); - expect(err.isMissing).to.not.exist; - done(); - }); - }); - - it('should fail on missing bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.not.exist; - expect(err.isMissing).to.equal(true); - done(); - }); - }); - - it('should fail on invalid bewit structure', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=abc', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid bewit structure'); - done(); - }); - }); - - it('should fail on empty bewit attribute', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=YVxcY1xk', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing bewit attributes'); - done(); - }); - }); - - it('should fail on expired access', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDEzNTY0MTg1ODNcWk1wZlMwWU5KNHV0WHpOMmRucTRydEk3NXNXTjFjeWVITTcrL0tNZFdVQT1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Access expired'); - done(); - }); - }); - - it('should fail on credentials function error', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(Hawk.error.badRequest('Boom')); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Boom'); - done(); - }); - }); - - it('should fail on null credentials function response', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, null); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown credentials'); - done(); - }); - }); - - it('should fail on invalid credentials function response', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, {}); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - done(); - }); - }); - - it('should fail on invalid credentials function response (unknown algorithm)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'xxx' }); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - done(); - }); - }); - - it('should fail on expired access', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'sha256' }); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - describe('#getBewit', function () { - - it('should return a valid bewit value', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' }); - expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdca3NjeHdOUjJ0SnBQMVQxekRMTlBiQjVVaUtJVTl0T1NKWFRVZEc3WDloOD1ceGFuZHlhbmR6'); - done(); - }); - - it('should return an empty bewit on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' }); - expect(bewit).to.equal(''); - done(); - }); - - it('should return an empty bewit on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, ext: 'xandyandz' }); - expect(bewit).to.equal(''); - done(); - }); - - it('should return an empty bewit on missing options', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow'); - expect(bewit).to.equal(''); - done(); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js deleted file mode 100755 index 0f5fef77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js +++ /dev/null @@ -1,120 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hawk = require('../lib'); -var Package = require('../package.json'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Utils', function () { - - describe('#parseHost', function () { - - it('returns port 80 for non tls node request', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com', - 'content-type': 'text/plain;x=y' - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(80); - done(); - }); - - it('returns port 443 for non tls node request', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443); - done(); - }); - - it('returns port 443 for non tls node request (IPv6)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: '[123:123:123]', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443); - done(); - }); - - it('parses IPv6 headers', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: '[123:123:123]:8000', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - var host = Hawk.utils.parseHost(req, 'Host'); - expect(host.port).to.equal('8000'); - expect(host.name).to.equal('[123:123:123]'); - done(); - }); - }); - - describe('#version', function () { - - it('returns the correct package version number', function (done) { - - expect(Hawk.utils.version()).to.equal(Package.version); - done(); - }); - }); - - describe('#unauthorized', function () { - - it('returns a hawk 401', function (done) { - - expect(Hawk.utils.unauthorized('kaboom').response.headers['WWW-Authenticate']).to.equal('Hawk error="kaboom"'); - done(); - }); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el deleted file mode 100644 index 3bc9235f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el +++ /dev/null @@ -1,6 +0,0 @@ -((nil . ((indent-tabs-mode . nil) - (tab-width . 8) - (fill-column . 80))) - (js-mode . ((js-indent-level . 2) - (indent-tabs-mode . nil) - ))) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore deleted file mode 100644 index c143fb3a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -.gitmodules -deps -docs -Makefile -node_modules -test -tools \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE deleted file mode 100644 index f6d947d2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md deleted file mode 100644 index 0c707149..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# node-http-signature - -node-http-signature is a node.js library that has client and server components -for Joyent's [HTTP Signature Scheme](http_signing.md). - -## Usage - -Note the example below signs a request with the same key/cert used to start an -HTTP server. This is almost certainly not what you actaully want, but is just -used to illustrate the API calls; you will need to provide your own key -management in addition to this library. - -### Client - - var fs = require('fs'); - var https = require('https'); - var httpSignature = require('http-signature'); - - var key = fs.readFileSync('./key.pem', 'ascii'); - - var options = { - host: 'localhost', - port: 8443, - path: '/', - method: 'GET', - headers: {} - }; - - // Adds a 'Date' header in, signs it, and adds the - // 'Authorization' header in. - var req = https.request(options, function(res) { - console.log(res.statusCode); - }); - - - httpSignature.sign(req, { - key: key, - keyId: './cert.pem' - }); - - req.end(); - -### Server - - var fs = require('fs'); - var https = require('https'); - var httpSignature = require('http-signature'); - - var options = { - key: fs.readFileSync('./key.pem'), - cert: fs.readFileSync('./cert.pem') - }; - - https.createServer(options, function (req, res) { - var rc = 200; - var parsed = httpSignature.parseRequest(req); - var pub = fs.readFileSync(parsed.keyId, 'ascii'); - if (!httpSignature.verifySignature(parsed, pub)) - rc = 401; - - res.writeHead(rc); - res.end(); - }).listen(8443); - -## Installation - - npm install http-signature - -## License - -MIT. - -## Bugs - -See <https://github.com/joyent/node-http-signature/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md deleted file mode 100644 index ba7321da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md +++ /dev/null @@ -1,296 +0,0 @@ -# Abstract - -This document describes a way to add origin authentication, message integrity, -and replay resistance to HTTP REST requests. It is intended to be used over -the HTTPS protocol. - -# Copyright Notice - -Copyright (c) 2011 Joyent, Inc. and the persons identified as document authors. -All rights reserved. - -Code Components extracted from this document must include MIT License text. - -# Introduction - -This protocol is intended to provide a standard way for clients to sign HTTP -requests. RFC2617 (HTTP Authentication) defines Basic and Digest authentication -mechanisms, and RFC5246 (TLS 1.2) defines client-auth, both of which are widely -employed on the Internet today. However, it is common place that the burdens of -PKI prevent web service operators from deploying that methodoloy, and so many -fall back to Basic authentication, which has poor security characteristics. - -Additionally, OAuth provides a fully-specified alternative for authorization -of web service requests, but is not (always) ideal for machine to machine -communication, as the key acquisition steps (generally) imply a fixed -infrastructure that may not make sense to a service provider (e.g., symmetric -keys). - -Several web service providers have invented their own schemes for signing -HTTP requests, but to date, none have been placed in the public domain as a -standard. This document serves that purpose. There are no techniques in this -proposal that are novel beyond previous art, however, this aims to be a simple -mechanism for signing these requests. - -# Signature Authentication Scheme - -The "signature" authentication scheme is based on the model that the client must -authenticate itself with a digital signature produced by either a private -asymmetric key (e.g., RSA) or a shared symmetric key (e.g., HMAC). The scheme -is parameterized enough such that it is not bound to any particular key type or -signing algorithm. However, it does explicitly assume that clients can send an -HTTP `Date` header. - -## Authorization Header - -The client is expected to send an Authorization header (as defined in RFC 2617) -with the following parameterization: - - credentials := "Signature" params - params := 1#(keyId | algorithm | [headers] | [ext] | signature) - digitalSignature := plain-string - - keyId := "keyId" "=" <"> plain-string <"> - algorithm := "algorithm" "=" <"> plain-string <"> - headers := "headers" "=" <"> 1#headers-value <"> - ext := "ext" "=" <"> plain-string <"> - signature := "signature" "=" <"> plain-string <"> - - headers-value := plain-string - plain-string = 1*( %x20-21 / %x23-5B / %x5D-7E ) - -### Signature Parameters - -#### keyId - -REQUIRED. The `keyId` field is an opaque string that the server can use to look -up the component they need to validate the signature. It could be an SSH key -fingerprint, an LDAP DN, etc. Management of keys and assignment of `keyId` is -out of scope for this document. - -#### algorithm - -REQUIRED. The `algorithm` parameter is used if the client and server agree on a -non-standard digital signature algorithm. The full list of supported signature -mechanisms is listed below. - -#### headers - -OPTIONAL. The `headers` parameter is used to specify the list of HTTP headers -used to sign the request. If specified, it should be a quoted list of HTTP -header names, separated by a single space character. By default, only one -HTTP header is signed, which is the `Date` header. Note that the list MUST be -specified in the order the values are concatenated together during signing. To -include the HTTP request line in the signature calculation, use the special -`request-line` value. While this is overloading the definition of `headers` in -HTTP linguism, the request-line is defined in RFC 2616, and as the outlier from -headers in useful signature calculation, it is deemed simpler to simply use -`request-line` than to add a separate parameter for it. - -#### extensions - -OPTIONAL. The `extensions` parameter is used to include additional information -which is covered by the request. The content and format of the string is out of -scope for this document, and expected to be specified by implementors. - -#### signature - -REQUIRED. The `signature` parameter is a `Base64` encoded digital signature -generated by the client. The client uses the `algorithm` and `headers` request -parameters to form a canonicalized `signing string`. This `signing string` is -then signed with the key associated with `keyId` and the algorithm -corresponding to `algorithm`. The `signature` parameter is then set to the -`Base64` encoding of the signature. - -### Signing String Composition - -In order to generate the string that is signed with a key, the client MUST take -the values of each HTTP header specified by `headers` in the order they appear. - -1. If the header name is not `request-line` then append the lowercased header - name followed with an ASCII colon `:` and an ASCII space ` `. -2. If the header name is `request-line` then appened the HTTP request line, - otherwise append the header value. -3. If value is not the last value then append an ASCII newline `\n`. The string - MUST NOT include a trailing ASCII newline. - -# Example Requests - -All requests refer to the following request (body ommitted): - - POST /foo HTTP/1.1 - Host: example.org - Date: Tue, 07 Jun 2011 20:51:35 GMT - Content-Type: application/json - Content-MD5: h0auK8hnYJKmHTLhKtMTkQ== - Content-Length: 123 - -The "rsa-key-1" keyId refers to a private key known to the client and a public -key known to the server. The "hmac-key-1" keyId refers to key known to the -client and server. - -## Default parameterization - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",signature="Base64(RSA-SHA256(signing string))" - -The client would compose the signing string as: - - date: Tue, 07 Jun 2011 20:51:35 GMT - -## Header List - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",headers="request-line date content-type content-md5",signature="Base64(RSA-SHA256(signing string))" - -The client would compose the signing string as (`+ "\n"` inserted for -readability): - - POST /foo HTTP/1.1 + "\n" - date: Tue, 07 Jun 2011 20:51:35 GMT + "\n" - content-type: application/json + "\n" - content-md5: h0auK8hnYJKmHTLhKtMTkQ== - -## Algorithm - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="hmac-key-1",algorithm="hmac-sha1",signature="Base64(HMAC-SHA1(signing string))" - -The client would compose the signing string as: - - date: Tue, 07 Jun 2011 20:51:35 GMT - -# Signing Algorithms - -Currently supported algorithm names are: - -* rsa-sha1 -* rsa-sha256 -* rsa-sha512 -* dsa-sha1 -* hmac-sha1 -* hmac-sha256 -* hmac-sha512 - -# Security Considerations - -## Default Parameters - -Note the default parameterization of the `Signature` scheme is only safe if all -requests are carried over a secure transport (i.e., TLS). Sending the default -scheme over a non-secure transport will leave the request vulnerable to -spoofing, tampering, replay/repudiaton, and integrity violations (if using the -STRIDE threat-modeling methodology). - -## Insecure Transports - -If sending the request over plain HTTP, service providers SHOULD require clients -to sign ALL HTTP headers, and the `request-line`. Additionally, service -providers SHOULD require `Content-MD5` calculations to be performed to ensure -against any tampering from clients. - -## Nonces - -Nonces are out of scope for this document simply because many service providers -fail to implement them correctly, or do not adopt security specfiications -because of the infrastructure complexity. Given the `header` parameterization, -a service provider is fully enabled to add nonce semantics into this scheme by -using something like an `x-request-nonce` header, and ensuring it is signed -with the `Date` header. - -## Clock Skew - -As the default scheme is to sign the `Date` header, service providers SHOULD -protect against logged replay attacks by enforcing a clock skew. The server -SHOULD be synchronized with NTP, and the recommendation in this specification -is to allow 300s of clock skew (in either direction). - -## Required Headers to Sign - -It is out of scope for this document to dictate what headers a service provider -will want to enforce, but service providers SHOULD at minimum include the -`Date` header. - -# References - -## Normative References - -* [RFC2616] Hypertext Transfer Protocol -- HTTP/1.1 -* [RFC2617] HTTP Authentication: Basic and Digest Access Authentication -* [RFC5246] The Transport Layer Security (TLS) Protocol Version 1.2 - -## Informative References - - Name: Mark Cavage (editor) - Company: Joyent, Inc. - Email: mark.cavage@joyent.com - URI: http://www.joyent.com - -# Appendix A - Test Values - -The following test data uses the RSA (2048b) keys, which we will refer -to as `keyId=Test` in the following samples: - - -----BEGIN PUBLIC KEY----- - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCFENGw33yGihy92pDjZQhl0C3 - 6rPJj+CvfSC8+q28hxA161QFNUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6 - Z4UMR7EOcpfdUE9Hf3m/hs+FUR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJw - oYi+1hqp1fIekaxsyQIDAQAB - -----END PUBLIC KEY----- - - -----BEGIN RSA PRIVATE KEY----- - MIICXgIBAAKBgQDCFENGw33yGihy92pDjZQhl0C36rPJj+CvfSC8+q28hxA161QF - NUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6Z4UMR7EOcpfdUE9Hf3m/hs+F - UR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJwoYi+1hqp1fIekaxsyQIDAQAB - AoGBAJR8ZkCUvx5kzv+utdl7T5MnordT1TvoXXJGXK7ZZ+UuvMNUCdN2QPc4sBiA - QWvLw1cSKt5DsKZ8UETpYPy8pPYnnDEz2dDYiaew9+xEpubyeW2oH4Zx71wqBtOK - kqwrXa/pzdpiucRRjk6vE6YY7EBBs/g7uanVpGibOVAEsqH1AkEA7DkjVH28WDUg - f1nqvfn2Kj6CT7nIcE3jGJsZZ7zlZmBmHFDONMLUrXR/Zm3pR5m0tCmBqa5RK95u - 412jt1dPIwJBANJT3v8pnkth48bQo/fKel6uEYyboRtA5/uHuHkZ6FQF7OUkGogc - mSJluOdc5t6hI1VsLn0QZEjQZMEOWr+wKSMCQQCC4kXJEsHAve77oP6HtG/IiEn7 - kpyUXRNvFsDE0czpJJBvL/aRFUJxuRK91jhjC68sA7NsKMGg5OXb5I5Jj36xAkEA - gIT7aFOYBFwGgQAQkWNKLvySgKbAZRTeLBacpHMuQdl1DfdntvAyqpAZ0lY0RKmW - G6aFKaqQfOXKCyWoUiVknQJAXrlgySFci/2ueKlIE1QqIiLSZ8V8OlpFLRnb1pzI - 7U1yQXnTAEFYM560yJlzUpOb1V4cScGd365tiSMvxLOvTA== - -----END RSA PRIVATE KEY----- - -And all examples use this request: - - POST /foo?param=value&pet=dog HTTP/1.1 - Host: example.com - Date: Thu, 05 Jan 2012 21:31:40 GMT - Content-Type: application/json - Content-MD5: Sd/dVLAcvNLSq16eXua5uQ== - Content-Length: 18 - - {"hello": "world"} - -### Default - -The string to sign would be: - - date: Thu, 05 Jan 2012 21:31:40 GMT - -The Authorization header would be: - - Authorization: Signature keyId="Test",algorithm="rsa-sha256",signature="JldXnt8W9t643M2Sce10gqCh/+E7QIYLiI+bSjnFBGCti7s+mPPvOjVb72sbd1FjeOUwPTDpKbrQQORrm+xBYfAwCxF3LBSSzORvyJ5nRFCFxfJ3nlQD6Kdxhw8wrVZX5nSem4A/W3C8qH5uhFTRwF4ruRjh+ENHWuovPgO/HGQ=" - -### All Headers - -Parameterized to include all headers, the string to sign would be (`+ "\n"` -inserted for readability): - - POST /foo?param=value&pet=dog HTTP/1.1 + "\n" - host: example.com + "\n" - date: Thu, 05 Jan 2012 21:31:40 GMT + "\n" - content-type: application/json + "\n" - content-md5: Sd/dVLAcvNLSq16eXua5uQ== + "\n" - content-length: 18 - -The Authorization header would be: - - Authorization: Signature keyId="Test",algorithm="rsa-sha256",headers="request-line host date content-type content-md5 content-length",signature="Gm7W/r+e90REDpWytALMrft4MqZxCmslOTOvwJX17ViEBA5E65QqvWI0vIH3l/vSsGiaMVmuUgzYsJLYMLcm5dGrv1+a+0fCoUdVKPZWHyImQEqpLkopVwqEH67LVECFBqFTAKlQgBn676zrfXQbb+b/VebAsNUtvQMe6cTjnDY=" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js deleted file mode 100644 index 3ac70b77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2011 Joyent, Inc. All rights reserved. - -var parser = require('./parser'); -var signer = require('./signer'); -var verify = require('./verify'); -var util = require('./util'); - - - -///--- API - -module.exports = { - - parse: parser.parseRequest, - parseRequest: parser.parseRequest, - - sign: signer.signRequest, - signRequest: signer.signRequest, - - sshKeyToPEM: util.sshKeyToPEM, - sshKeyFingerprint: util.fingerprint, - - verify: verify.verifySignature, - verifySignature: verify.verifySignature -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js deleted file mode 100644 index fd9ac102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js +++ /dev/null @@ -1,304 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var util = require('util'); - - - -///--- Globals - -var Algorithms = { - 'rsa-sha1': true, - 'rsa-sha256': true, - 'rsa-sha512': true, - 'dsa-sha1': true, - 'hmac-sha1': true, - 'hmac-sha256': true, - 'hmac-sha512': true -}; - -var State = { - New: 0, - Params: 1 -}; - -var ParamsState = { - Name: 0, - Quote: 1, - Value: 2, - Comma: 3 -}; - - - -///--- Specific Errors - -function HttpSignatureError(message, caller) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, caller || HttpSignatureError); - - this.message = message; - this.name = caller.name; -} -util.inherits(HttpSignatureError, Error); - -function ExpiredRequestError(message) { - HttpSignatureError.call(this, message, ExpiredRequestError); -} -util.inherits(ExpiredRequestError, HttpSignatureError); - - -function InvalidHeaderError(message) { - HttpSignatureError.call(this, message, InvalidHeaderError); -} -util.inherits(InvalidHeaderError, HttpSignatureError); - - -function InvalidParamsError(message) { - HttpSignatureError.call(this, message, InvalidParamsError); -} -util.inherits(InvalidParamsError, HttpSignatureError); - - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - - - -///--- Exported API - -module.exports = { - - /** - * Parses the 'Authorization' header out of an http.ServerRequest object. - * - * Note that this API will fully validate the Authorization header, and throw - * on any error. It will not however check the signature, or the keyId format - * as those are specific to your environment. You can use the options object - * to pass in extra constraints. - * - * As a response object you can expect this: - * - * { - * "scheme": "Signature", - * "params": { - * "keyId": "foo", - * "algorithm": "rsa-sha256", - * "headers": [ - * "date" or "x-date", - * "content-md5" - * ], - * "signature": "base64" - * }, - * "signingString": "ready to be passed to crypto.verify()" - * } - * - * @param {Object} request an http.ServerRequest. - * @param {Object} options an optional options object with: - * - clockSkew: allowed clock skew in seconds (default 300). - * - headers: required header names (def: date or x-date) - * - algorithms: algorithms to support (default: all). - * @return {Object} parsed out object (see above). - * @throws {TypeError} on invalid input. - * @throws {InvalidHeaderError} on an invalid Authorization header error. - * @throws {InvalidParamsError} if the params in the scheme are invalid. - * @throws {MissingHeaderError} if the params indicate a header not present, - * either in the request headers from the params, - * or not in the params from a required header - * in options. - * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew. - */ - parseRequest: function parseRequest(request, options) { - assert.object(request, 'request'); - assert.object(request.headers, 'request.headers'); - if (options === undefined) { - options = {}; - } - if (options.headers === undefined) { - options.headers = [request.headers['x-date'] ? 'x-date' : 'date']; - } - assert.object(options, 'options'); - assert.arrayOfString(options.headers, 'options.headers'); - assert.optionalNumber(options.clockSkew, 'options.clockSkew'); - - if (!request.headers.authorization) - throw new MissingHeaderError('no authorization header present in ' + - 'the request'); - - options.clockSkew = options.clockSkew || 300; - - - var i = 0; - var state = State.New; - var substate = ParamsState.Name; - var tmpName = ''; - var tmpValue = ''; - - var parsed = { - scheme: '', - params: {}, - signingString: '', - - get algorithm() { - return this.params.algorithm.toUpperCase(); - }, - - get keyId() { - return this.params.keyId; - } - - }; - - var authz = request.headers.authorization; - for (i = 0; i < authz.length; i++) { - var c = authz.charAt(i); - - switch (Number(state)) { - - case State.New: - if (c !== ' ') parsed.scheme += c; - else state = State.Params; - break; - - case State.Params: - switch (Number(substate)) { - - case ParamsState.Name: - var code = c.charCodeAt(0); - // restricted name of A-Z / a-z - if ((code >= 0x41 && code <= 0x5a) || // A-Z - (code >= 0x61 && code <= 0x7a)) { // a-z - tmpName += c; - } else if (c === '=') { - if (tmpName.length === 0) - throw new InvalidHeaderError('bad param format'); - substate = ParamsState.Quote; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Quote: - if (c === '"') { - tmpValue = ''; - substate = ParamsState.Value; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Value: - if (c === '"') { - parsed.params[tmpName] = tmpValue; - substate = ParamsState.Comma; - } else { - tmpValue += c; - } - break; - - case ParamsState.Comma: - if (c === ',') { - tmpName = ''; - substate = ParamsState.Name; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - default: - throw new Error('Invalid substate'); - } - break; - - default: - throw new Error('Invalid substate'); - } - - } - - if (!parsed.params.headers || parsed.params.headers === '') { - if (request.headers['x-date']) { - parsed.params.headers = ['x-date']; - } else { - parsed.params.headers = ['date']; - } - } else { - parsed.params.headers = parsed.params.headers.split(' '); - } - - // Minimally validate the parsed object - if (!parsed.scheme || parsed.scheme !== 'Signature') - throw new InvalidHeaderError('scheme was not "Signature"'); - - if (!parsed.params.keyId) - throw new InvalidHeaderError('keyId was not specified'); - - if (!parsed.params.algorithm) - throw new InvalidHeaderError('algorithm was not specified'); - - if (!parsed.params.signature) - throw new InvalidHeaderError('signature was not specified'); - - // Check the algorithm against the official list - parsed.params.algorithm = parsed.params.algorithm.toLowerCase(); - if (!Algorithms[parsed.params.algorithm]) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not supported'); - - // Build the signingString - for (i = 0; i < parsed.params.headers.length; i++) { - var h = parsed.params.headers[i].toLowerCase(); - parsed.params.headers[i] = h; - - if (h !== 'request-line') { - var value = request.headers[h]; - if (!value) - throw new MissingHeaderError(h + ' was not in the request'); - parsed.signingString += h + ': ' + value; - } else { - parsed.signingString += - request.method + ' ' + request.url + ' HTTP/' + request.httpVersion; - } - - if ((i + 1) < parsed.params.headers.length) - parsed.signingString += '\n'; - } - - // Check against the constraints - var date; - if (request.headers.date || request.headers['x-date']) { - if (request.headers['x-date']) { - date = new Date(request.headers['x-date']); - } else { - date = new Date(request.headers.date); - } - var now = new Date(); - var skew = Math.abs(now.getTime() - date.getTime()); - - if (skew > options.clockSkew * 1000) { - throw new ExpiredRequestError('clock skew of ' + - (skew / 1000) + - 's was greater than ' + - options.clockSkew + 's'); - } - } - - options.headers.forEach(function (hdr) { - // Remember that we already checked any headers in the params - // were in the request, so if this passes we're good. - if (parsed.params.headers.indexOf(hdr) < 0) - throw new MissingHeaderError(hdr + ' was not a signed header'); - }); - - if (options.algorithms) { - if (options.algorithms.indexOf(parsed.params.algorithm) === -1) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not a supported algorithm'); - } - - return parsed; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js deleted file mode 100644 index 8095f0d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); -var http = require('http'); - -var sprintf = require('util').format; - - - -///--- Globals - -var Algorithms = { - 'rsa-sha1': true, - 'rsa-sha256': true, - 'rsa-sha512': true, - 'dsa-sha1': true, - 'hmac-sha1': true, - 'hmac-sha256': true, - 'hmac-sha512': true -}; - -var Authorization = - 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"'; - - - -///--- Specific Errors - -function MissingHeaderError(message) { - this.name = 'MissingHeaderError'; - this.message = message; - this.stack = (new Error()).stack; -} -MissingHeaderError.prototype = new Error(); - - -function InvalidAlgorithmError(message) { - this.name = 'InvalidAlgorithmError'; - this.message = message; - this.stack = (new Error()).stack; -} -InvalidAlgorithmError.prototype = new Error(); - - - -///--- Internal Functions - -function _pad(val) { - if (parseInt(val, 10) < 10) { - val = '0' + val; - } - return val; -} - - -function _rfc1123() { - var date = new Date(); - - var months = ['Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec']; - var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - return days[date.getUTCDay()] + ', ' + - _pad(date.getUTCDate()) + ' ' + - months[date.getUTCMonth()] + ' ' + - date.getUTCFullYear() + ' ' + - _pad(date.getUTCHours()) + ':' + - _pad(date.getUTCMinutes()) + ':' + - _pad(date.getUTCSeconds()) + - ' GMT'; -} - - - -///--- Exported API - -module.exports = { - - /** - * Adds an 'Authorization' header to an http.ClientRequest object. - * - * Note that this API will add a Date header if it's not already set. Any - * other headers in the options.headers array MUST be present, or this - * will throw. - * - * You shouldn't need to check the return type; it's just there if you want - * to be pedantic. - * - * @param {Object} request an instance of http.ClientRequest. - * @param {Object} options signing parameters object: - * - {String} keyId required. - * - {String} key required (either a PEM or HMAC key). - * - {Array} headers optional; defaults to ['date']. - * - {String} algorithm optional; defaults to 'rsa-sha256'. - * - {String} httpVersion optional; defaults to '1.1'. - * @return {Boolean} true if Authorization (and optionally Date) were added. - * @throws {TypeError} on bad parameter types (input). - * @throws {InvalidAlgorithmError} if algorithm was bad. - * @throws {MissingHeaderError} if a header to be signed was specified but - * was not present. - */ - signRequest: function signRequest(request, options) { - assert.object(request, 'request'); - assert.object(options, 'options'); - assert.optionalString(options.algorithm, 'options.algorithm'); - assert.string(options.keyId, 'options.keyId'); - assert.optionalArrayOfString(options.headers, 'options.headers'); - assert.optionalString(options.httpVersion, 'options.httpVersion'); - - if (!request.getHeader('Date')) - request.setHeader('Date', _rfc1123()); - if (!options.headers) - options.headers = ['date']; - if (!options.algorithm) - options.algorithm = 'rsa-sha256'; - if (!options.httpVersion) - options.httpVersion = '1.1'; - - options.algorithm = options.algorithm.toLowerCase(); - - if (!Algorithms[options.algorithm]) - throw new InvalidAlgorithmError(options.algorithm + ' is not supported'); - - var i; - var stringToSign = ''; - for (i = 0; i < options.headers.length; i++) { - if (typeof (options.headers[i]) !== 'string') - throw new TypeError('options.headers must be an array of Strings'); - - var h = options.headers[i].toLowerCase(); - - if (h !== 'request-line') { - var value = request.getHeader(h); - if (!value) { - throw new MissingHeaderError(h + ' was not in the request'); - } - stringToSign += h + ': ' + value; - } else { - value = - stringToSign += - request.method + ' ' + request.path + ' HTTP/' + options.httpVersion; - } - - if ((i + 1) < options.headers.length) - stringToSign += '\n'; - } - - var alg = options.algorithm.match(/(hmac|rsa)-(\w+)/); - var signature; - if (alg[1] === 'hmac') { - var hmac = crypto.createHmac(alg[2].toUpperCase(), options.key); - hmac.update(stringToSign); - signature = hmac.digest('base64'); - } else { - var signer = crypto.createSign(options.algorithm.toUpperCase()); - signer.update(stringToSign); - signature = signer.sign(options.key, 'base64'); - } - - request.setHeader('Authorization', sprintf(Authorization, - options.keyId, - options.algorithm, - options.headers.join(' '), - signature)); - - return true; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js deleted file mode 100644 index 30bbf045..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); - -var asn1 = require('asn1'); -var ctype = require('ctype'); - - - -///--- Helpers - -function readNext(buffer, offset) { - var len = ctype.ruint32(buffer, 'big', offset); - offset += 4; - - var newOffset = offset + len; - - return { - data: buffer.slice(offset, newOffset), - offset: newOffset - }; -} - - -function writeInt(writer, buffer) { - writer.writeByte(0x02); // ASN1.Integer - writer.writeLength(buffer.length); - - for (var i = 0; i < buffer.length; i++) - writer.writeByte(buffer[i]); - - return writer; -} - - -function rsaToPEM(key) { - var buffer; - var der; - var exponent; - var i; - var modulus; - var newKey = ''; - var offset = 0; - var type; - var tmp; - - try { - buffer = new Buffer(key.split(' ')[1], 'base64'); - - tmp = readNext(buffer, offset); - type = tmp.data.toString(); - offset = tmp.offset; - - if (type !== 'ssh-rsa') - throw new Error('Invalid ssh key type: ' + type); - - tmp = readNext(buffer, offset); - exponent = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - modulus = tmp.data; - } catch (e) { - throw new Error('Invalid ssh key: ' + key); - } - - // DER is a subset of BER - der = new asn1.BerWriter(); - - der.startSequence(); - - der.startSequence(); - der.writeOID('1.2.840.113549.1.1.1'); - der.writeNull(); - der.endSequence(); - - der.startSequence(0x03); // bit string - der.writeByte(0x00); - - // Actual key - der.startSequence(); - writeInt(der, modulus); - writeInt(der, exponent); - der.endSequence(); - - // bit string - der.endSequence(); - - der.endSequence(); - - tmp = der.buffer.toString('base64'); - for (i = 0; i < tmp.length; i++) { - if ((i % 64) === 0) - newKey += '\n'; - newKey += tmp.charAt(i); - } - - if (!/\\n$/.test(newKey)) - newKey += '\n'; - - return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n'; -} - - -function dsaToPEM(key) { - var buffer; - var offset = 0; - var tmp; - var der; - var newKey = ''; - - var type; - var p; - var q; - var g; - var y; - - try { - buffer = new Buffer(key.split(' ')[1], 'base64'); - - tmp = readNext(buffer, offset); - type = tmp.data.toString(); - offset = tmp.offset; - - /* JSSTYLED */ - if (!/^ssh-ds[as].*/.test(type)) - throw new Error('Invalid ssh key type: ' + type); - - tmp = readNext(buffer, offset); - p = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - q = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - g = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - y = tmp.data; - } catch (e) { - console.log(e.stack); - throw new Error('Invalid ssh key: ' + key); - } - - // DER is a subset of BER - der = new asn1.BerWriter(); - - der.startSequence(); - - der.startSequence(); - der.writeOID('1.2.840.10040.4.1'); - - der.startSequence(); - writeInt(der, p); - writeInt(der, q); - writeInt(der, g); - der.endSequence(); - - der.endSequence(); - - der.startSequence(0x03); // bit string - der.writeByte(0x00); - writeInt(der, y); - der.endSequence(); - - der.endSequence(); - - tmp = der.buffer.toString('base64'); - for (var i = 0; i < tmp.length; i++) { - if ((i % 64) === 0) - newKey += '\n'; - newKey += tmp.charAt(i); - } - - if (!/\\n$/.test(newKey)) - newKey += '\n'; - - return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n'; -} - - -///--- API - -module.exports = { - - /** - * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. - * - * The intent of this module is to interoperate with OpenSSL only, - * specifically the node crypto module's `verify` method. - * - * @param {String} key an OpenSSH public key. - * @return {String} PEM encoded form of the RSA public key. - * @throws {TypeError} on bad input. - * @throws {Error} on invalid ssh key formatted data. - */ - sshKeyToPEM: function sshKeyToPEM(key) { - assert.string(key, 'ssh_key'); - - /* JSSTYLED */ - if (/^ssh-rsa.*/.test(key)) - return rsaToPEM(key); - - /* JSSTYLED */ - if (/^ssh-ds[as].*/.test(key)) - return dsaToPEM(key); - - throw new Error('Only RSA and DSA public keys are allowed'); - }, - - - /** - * Generates an OpenSSH fingerprint from an ssh public key. - * - * @param {String} key an OpenSSH public key. - * @return {String} key fingerprint. - * @throws {TypeError} on bad input. - * @throws {Error} if what you passed doesn't look like an ssh public key. - */ - fingerprint: function fingerprint(key) { - assert.string(key, 'ssh_key'); - - var pieces = key.split(' '); - if (!pieces || !pieces.length || pieces.length < 2) - throw new Error('invalid ssh key'); - - var data = new Buffer(pieces[1], 'base64'); - - var hash = crypto.createHash('md5'); - hash.update(data); - var digest = hash.digest('hex'); - - var fp = ''; - for (var i = 0; i < digest.length; i++) { - if (i && i % 2 === 0) - fp += ':'; - - fp += digest[i]; - } - - return fp; - } - - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js deleted file mode 100644 index 5bf95896..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); - - - -///--- Exported API - -module.exports = { - - /** - * Simply wraps up the node crypto operations for you, and returns - * true or false. You are expected to pass in an object that was - * returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} key either an RSA private key PEM or HMAC secret. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - */ - verifySignature: function verifySignature(parsedSignature, key) { - assert.object(parsedSignature, 'parsedSignature'); - assert.string(key, 'key'); - - var alg = parsedSignature.algorithm.match(/(HMAC|RSA|DSA)-(\w+)/); - if (!alg || alg.length !== 3) - throw new TypeError('parsedSignature: unsupported algorithm ' + - parsedSignature.algorithm); - - if (alg[1] === 'HMAC') { - var hmac = crypto.createHmac(alg[2].toUpperCase(), key); - hmac.update(parsedSignature.signingString); - return (hmac.digest('base64') === parsedSignature.params.signature); - } else { - var verify = crypto.createVerify(alg[0]); - verify.update(parsedSignature.signingString); - return verify.verify(key, parsedSignature.params.signature, 'base64'); - } - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore deleted file mode 100644 index eb03e3e1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -*.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE deleted file mode 100644 index 9b5dcdb7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Mark Cavage, All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md deleted file mode 100644 index 7cebf7a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md +++ /dev/null @@ -1,50 +0,0 @@ -node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. -Currently BER encoding is supported; at some point I'll likely have to do DER. - -## Usage - -Mostly, if you're *actually* needing to read and write ASN.1, you probably don't -need this readme to explain what and why. If you have no idea what ASN.1 is, -see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -The source is pretty much self-explanatory, and has read/write methods for the -common types out there. - -### Decoding - -The following reads an ASN.1 sequence with a boolean. - - var Ber = require('asn1').Ber; - - var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - - reader.readSequence(); - console.log('Sequence len: ' + reader.length); - if (reader.peek() === Ber.Boolean) - console.log(reader.readBoolean()); - -### Encoding - -The following generates the same payload as above. - - var Ber = require('asn1').Ber; - - var writer = new Ber.Writer(); - - writer.startSequence(); - writer.writeBoolean(true); - writer.endSequence(); - - console.log(writer.buffer); - -## Installation - - npm install asn1 - -## License - -MIT. - -## Bugs - -See <https://github.com/mcavage/node-asn1/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js deleted file mode 100644 index ff21d4fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function(msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js deleted file mode 100644 index 4fb90aea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var errors = require('./errors'); -var types = require('./types'); - -var Reader = require('./reader'); -var Writer = require('./writer'); - - -///--- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js deleted file mode 100644 index bd3357a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var assert = require('assert'); - -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -///--- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; - - var self = this; - this.__defineGetter__('length', function() { return self._len; }); - this.__defineGetter__('offset', function() { return self._offset; }); - this.__defineGetter__('remain', function() { - return self._size - self._offset; - }); - this.__defineGetter__('buffer', function() { - return self._buf.slice(self._offset); - }); -} - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function(peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function() { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function(offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) == 0x80) { - lenB &= 0x7f; - - if (lenB == 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function(tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function() { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function() { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function() { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function(tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function(tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - var values = []; - var value = 0; - - for (var i = 0; i < this.length; i++) { - var byte = this._buf[this._offset++] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) == 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function(tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset++]; - var value = 0; - - value = fb & 0x7F; - for (var i = 1; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) == 0x80) - value = -value; - - return value; -}; - - - -///--- Exported API - -module.exports = Reader; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js deleted file mode 100644 index 8aea0001..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js deleted file mode 100644 index 7b445cc6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var assert = require('assert'); -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -///--- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof(from), 'object'); - assert.ok(to); - assert.equal(typeof(to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function(key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -///--- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = new Buffer(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; - - var self = this; - this.__defineGetter__('buffer', function() { - if (self._seq.length) - throw new InvalidAsn1Error(self._seq.length + ' unended sequence(s)'); - - return self._buf.slice(0, self._offset); - }); -} - - -Writer.prototype.writeByte = function(b) { - if (typeof(b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function() { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function(b, tag) { - if (typeof(b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof(tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof(s) + ')'); - if (typeof(tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function(buf, tag) { - if (typeof(tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function(strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function(s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof(tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function(b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function(b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function(len) { - if (typeof(len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw new InvalidAsn1ERror('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function(tag) { - if (typeof(tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function() { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw new InvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function(start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function(len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = new Buffer(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -///--- Exported API - -module.exports = Writer; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js deleted file mode 100644 index d1766e7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = require('./ber/index'); - - - -///--- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json deleted file mode 100644 index 79f0b054..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "contributors": [ - { - "name": "David Gwynne", - "email": "loki@animata.net" - }, - { - "name": "Yunong Xiao", - "email": "yunong@joyent.com" - } - ], - "name": "asn1", - "description": "Contains parsers and serializers for ASN.1 (currently BER only)", - "version": "0.1.11", - "repository": { - "type": "git", - "url": "git://github.com/mcavage/node-asn1.git" - }, - "main": "lib/index.js", - "engines": { - "node": ">=0.4.9" - }, - "dependencies": {}, - "devDependencies": { - "tap": "0.1.4" - }, - "scripts": { - "pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi", - "test": "./node_modules/.bin/tap ./tst" - }, - "readme": "node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.\nCurrently BER encoding is supported; at some point I'll likely have to do DER.\n\n## Usage\n\nMostly, if you're *actually* needing to read and write ASN.1, you probably don't\nneed this readme to explain what and why. If you have no idea what ASN.1 is,\nsee this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nThe source is pretty much self-explanatory, and has read/write methods for the\ncommon types out there.\n\n### Decoding\n\nThe following reads an ASN.1 sequence with a boolean.\n\n var Ber = require('asn1').Ber;\n\n var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));\n\n reader.readSequence();\n console.log('Sequence len: ' + reader.length);\n if (reader.peek() === Ber.Boolean)\n console.log(reader.readBoolean());\n\n### Encoding\n\nThe following generates the same payload as above.\n\n var Ber = require('asn1').Ber;\n\n var writer = new Ber.Writer();\n\n writer.startSequence();\n writer.writeBoolean(true);\n writer.endSequence();\n\n console.log(writer.buffer);\n\n## Installation\n\n npm install asn1\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-asn1/issues>.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mcavage/node-asn1/issues" - }, - "homepage": "https://github.com/mcavage/node-asn1", - "_id": "asn1@0.1.11", - "_from": "asn1@0.1.11" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js deleted file mode 100644 index 0b78b474..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var test = require('tap').test; - - - -///--- Globals - -var BerReader; - - - -///--- Tests - -test('load library', function(t) { - BerReader = require('../../lib/index').BerReader; - t.ok(BerReader); - try { - new BerReader(); - t.fail('Should have thrown'); - } catch (e) { - t.ok(e instanceof TypeError, 'Should have been a type error'); - } - t.end(); -}); - - -test('read byte', function(t) { - var reader = new BerReader(new Buffer([0xde])); - t.ok(reader); - t.equal(reader.readByte(), 0xde, 'wrong value'); - t.end(); -}); - - -test('read 1 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x01, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x03, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read 2 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede, 'wrong value'); - t.equal(reader.length, 0x02, 'wrong length'); - t.end(); -}); - - -test('read 3 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede03, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.end(); -}); - - -test('read 4 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede0301, 'wrong value'); - t.equal(reader.length, 0x04, 'wrong length'); - t.end(); -}); - - -test('read boolean true', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read boolean false', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0x00])); - t.ok(reader); - t.equal(reader.readBoolean(), false, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read enumeration', function(t) { - var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20])); - t.ok(reader); - t.equal(reader.readEnumeration(), 0x20, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read string', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var buf = new Buffer(dn.length + 2); - buf[0] = 0x04; - buf[1] = Buffer.byteLength(dn); - buf.write(dn, 2); - var reader = new BerReader(buf); - t.ok(reader); - t.equal(reader.readString(), dn, 'wrong value'); - t.equal(reader.length, dn.length, 'wrong length'); - t.end(); -}); - - -test('read sequence', function(t) { - var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readSequence(), 0x30, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('anonymous LDAPv3 bind', function(t) { - var BIND = new Buffer(14); - BIND[0] = 0x30; // Sequence - BIND[1] = 12; // len - BIND[2] = 0x02; // ASN.1 Integer - BIND[3] = 1; // len - BIND[4] = 0x04; // msgid (make up 4) - BIND[5] = 0x60; // Bind Request - BIND[6] = 7; // len - BIND[7] = 0x02; // ASN.1 Integer - BIND[8] = 1; // len - BIND[9] = 0x03; // v3 - BIND[10] = 0x04; // String (bind dn) - BIND[11] = 0; // len - BIND[12] = 0x80; // ContextSpecific (choice) - BIND[13] = 0; // simple bind - - // Start testing ^^ - var ber = new BerReader(BIND); - t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence'); - t.equal(ber.length, 12, 'Message length should be 12'); - t.equal(ber.readInt(), 4, 'Message id should have been 4'); - t.equal(ber.readSequence(), 96, 'Bind Request should have been 96'); - t.equal(ber.length, 7, 'Bind length should have been 7'); - t.equal(ber.readInt(), 3, 'LDAP version should have been 3'); - t.equal(ber.readString(), '', 'Bind DN should have been empty'); - t.equal(ber.length, 0, 'string length should have been 0'); - t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)'); - t.equal(ber.readByte(), 0, 'Should have been simple bind'); - t.equal(null, ber.readByte(), 'Should be out of data'); - t.end(); -}); - - -test('long string', function(t) { - var buf = new Buffer(256); - var o; - var s = - '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' + - 'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' + - 'Teena Vradmin\'s description.'; - buf[0] = 0x04; - buf[1] = 0x81; - buf[2] = 0x94; - buf.write(s, 3); - var ber = new BerReader(buf.slice(0, 3 + s.length)); - t.equal(ber.readString(), s); - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js deleted file mode 100644 index add0b9fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var test = require('tap').test; -var sys = require('sys'); - -///--- Globals - -var BerWriter; - -var BerReader; - - -///--- Tests - -test('load library', function(t) { - BerWriter = require('../../lib/index').BerWriter; - t.ok(BerWriter); - t.ok(new BerWriter()); - t.end(); -}); - - -test('write byte', function(t) { - var writer = new BerWriter(); - - writer.writeByte(0xC2); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 1, 'Wrong length'); - t.equal(ber[0], 0xC2, 'value wrong'); - - t.end(); -}); - - -test('write 1 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7f); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]); - t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]); - t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]); - - t.end(); -}); - - -test('write 2 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 4, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x02, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xfe, 'value wrong (byte 2)'); - - t.end(); -}); - - -test('write 3 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 5, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x03, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xfe, 'value wrong (byte 3)'); - - t.end(); -}); - - -test('write 4 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffffe); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 6, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x04, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xff, 'value wrong (byte 3)'); - t.equal(ber[5], 0xfe, 'value wrong (byte 4)'); - - t.end(); -}); - - -test('write boolean', function(t) { - var writer = new BerWriter(); - - writer.writeBoolean(true); - writer.writeBoolean(false); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 6, 'Wrong length'); - t.equal(ber[0], 0x01, 'tag wrong'); - t.equal(ber[1], 0x01, 'length wrong'); - t.equal(ber[2], 0xff, 'value wrong'); - t.equal(ber[3], 0x01, 'tag wrong'); - t.equal(ber[4], 0x01, 'length wrong'); - t.equal(ber[5], 0x00, 'value wrong'); - - t.end(); -}); - - -test('write string', function(t) { - var writer = new BerWriter(); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - -test('write buffer', function(t) { - var writer = new BerWriter(); - // write some stuff to start with - writer.writeString('hello world'); - var ber = writer.buffer; - var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01, - 0xff, 0x01, 0x01, 0xff]); - writer.writeBuffer(buf.slice(2, buf.length), 0x04); - ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 26, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[13], buf[0], 'wrong tag'); - t.equal(ber[14], buf[1], 'wrong length'); - for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) { - t.equal(ber[i], buf[j], 'buffer contents not identical'); - } - t.end(); -}); - -test('write string array', function(t) { - var writer = new BerWriter(); - writer.writeStringArray(['hello world', 'fubar!']); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 21, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - - t.equal(ber[13], 0x04, 'wrong tag'); - t.equal(ber[14], 6, 'wrong length'); - t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value'); - - t.end(); -}); - - -test('resize internal buffer', function(t) { - var writer = new BerWriter({size: 2}); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - console.log(ber); - t.equal(ber.length, 15, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 13, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('nested sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 30, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 28, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[15], 0x30, 'wrong tag'); - t.equal(ber[16], 13, 'wrong length'); - t.equal(ber[17], 0x04, 'wrong tag'); - t.equal(ber[18], 11, 'wrong length'); - t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('LDAP bind message', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var writer = new BerWriter(); - writer.startSequence(); - writer.writeInt(3); // msgid = 3 - writer.startSequence(0x60); // ldap bind - writer.writeInt(3); // ldap v3 - writer.writeString(dn); - writer.writeByte(0x80); - writer.writeByte(0x00); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 35, 'wrong length (buffer)'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 33, 'wrong length'); - t.equal(ber[2], 0x02, 'wrong tag'); - t.equal(ber[3], 1, 'wrong length'); - t.equal(ber[4], 0x03, 'wrong value'); - t.equal(ber[5], 0x60, 'wrong tag'); - t.equal(ber[6], 28, 'wrong length'); - t.equal(ber[7], 0x02, 'wrong tag'); - t.equal(ber[8], 1, 'wrong length'); - t.equal(ber[9], 0x03, 'wrong value'); - t.equal(ber[10], 0x04, 'wrong tag'); - t.equal(ber[11], dn.length, 'wrong length'); - t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value'); - t.equal(ber[33], 0x80, 'wrong tag'); - t.equal(ber[34], 0x00, 'wrong len'); - - t.end(); -}); - - -test('Write OID', function(t) { - var oid = '1.2.840.113549.1.1.1'; - var writer = new BerWriter(); - writer.writeOID(oid); - - var ber = writer.buffer; - t.ok(ber); - console.log(require('util').inspect(ber)); - console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x01, 0x01]))); - - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md deleted file mode 100644 index c0c3a530..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# node-assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object.<anonymous> (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - - function test(foo) { - assert.string(foo, 'foo'); - } - -There you go. You can check that arrays are of a homogenous type with `Arrayof$Type`: - - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - - assert.optionalString(foo, 'foo'); - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. - -The complete list of APIs is: - -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.object -* assert.string -* assert.arrayOfBool -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfObject -* assert.arrayOfString -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalObject -* assert.optionalString -* assert.optionalArrayOfBool -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -## Bugs - -See <https://github.com/mcavage/node-assert-plus/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js deleted file mode 100644 index 70583f12..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - - -///--- Globals - -var NDEBUG = process.env.NODE_NDEBUG || false; - - - -///--- Messages - -var ARRAY_TYPE_REQUIRED = '%s ([%s]) required'; -var TYPE_REQUIRED = '%s (%s) is required'; - - - -///--- Internal - -function capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function uncapitalize(str) { - return (str.charAt(0).toLowerCase() + str.slice(1)); -} - -function _() { - return (util.format.apply(util, arguments)); -} - - -function _assert(arg, type, name, stackFunc) { - if (!NDEBUG) { - name = name || type; - stackFunc = stackFunc || _assert.caller; - var t = typeof (arg); - - if (t !== type) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: t, - expected: type, - operator: '===', - stackStartFunction: stackFunc - }); - } - } -} - - - -///--- API - -function array(arr, type, name) { - if (!NDEBUG) { - name = name || type; - - if (!Array.isArray(arr)) { - throw new assert.AssertionError({ - message: _(ARRAY_TYPE_REQUIRED, name, type), - actual: typeof (arr), - expected: 'array', - operator: 'Array.isArray', - stackStartFunction: array.caller - }); - } - - for (var i = 0; i < arr.length; i++) { - _assert(arr[i], type, name, array); - } - } -} - - -function bool(arg, name) { - _assert(arg, 'boolean', name, bool); -} - - -function buffer(arg, name) { - if (!Buffer.isBuffer(arg)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: typeof (arg), - expected: 'buffer', - operator: 'Buffer.isBuffer', - stackStartFunction: buffer - }); - } -} - - -function func(arg, name) { - _assert(arg, 'function', name); -} - - -function number(arg, name) { - _assert(arg, 'number', name); -} - - -function object(arg, name) { - _assert(arg, 'object', name); -} - - -function stream(arg, name) { - if (!(arg instanceof Stream)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: typeof (arg), - expected: 'Stream', - operator: 'instanceof', - stackStartFunction: buffer - }); - } -} - - -function string(arg, name) { - _assert(arg, 'string', name); -} - - - -///--- Exports - -module.exports = { - bool: bool, - buffer: buffer, - func: func, - number: number, - object: object, - stream: stream, - string: string -}; - - -Object.keys(module.exports).forEach(function (k) { - if (k === 'buffer') - return; - - var name = 'arrayOf' + capitalize(k); - - if (k === 'bool') - k = 'boolean'; - if (k === 'func') - k = 'function'; - module.exports[name] = function (arg, name) { - array(arg, k, name); - }; -}); - -Object.keys(module.exports).forEach(function (k) { - var _name = 'optional' + capitalize(k); - var s = uncapitalize(k.replace('arrayOf', '')); - if (s === 'bool') - s = 'boolean'; - if (s === 'func') - s = 'function'; - - if (k.indexOf('arrayOf') !== -1) { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - array(arg, s, name); - } - }; - } else { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - _assert(arg, s, name); - } - }; - } -}); - - -// Reexport built-in assertions -Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - module.exports[k] = assert[k]; - return; - } - - module.exports[k] = function () { - if (!NDEBUG) { - assert[k].apply(assert[k], arguments); - } - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json deleted file mode 100644 index cf78c1bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "name": "assert-plus", - "description": "Extra assertions on top of node's assert module", - "version": "0.1.2", - "main": "./assert.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": ">=0.6" - }, - "readme": "# node-assert-plus\n\nThis library is a super small wrapper over node's assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks\nlike this:\n\n var assert = require('assert-plus');\n\n function fooAccount(options, callback) {\n\t assert.object(options, 'options');\n\t\tassert.number(options.id, 'options.id);\n\t\tassert.bool(options.isManager, 'options.isManager');\n\t\tassert.string(options.name, 'options.name');\n\t\tassert.arrayOfString(options.email, 'options.email');\n\t\tassert.func(callback, 'callback');\n\n // Do stuff\n\t\tcallback(null, {});\n }\n\n# API\n\nAll methods that *aren't* part of node's core assert API are simply assumed to\ntake an argument, and then a string 'name' that's not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n\tat test (/home/mark/work/foo/foo.js:3:9)\n\tat Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)\n\tat Module._compile (module.js:446:26)\n\tat Object..js (module.js:464:10)\n\tat Module.load (module.js:353:31)\n\tat Function._load (module.js:311:12)\n\tat Array.0 (module.js:484:10)\n\tat EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n function test(foo) {\n\t assert.string(foo, 'foo');\n }\n\nThere you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:\n\n function test(foo) {\n\t assert.arrayOfString(foo, 'foo');\n }\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n assert.optionalString(foo, 'foo');\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don't want to pay `typeof ()` taxes to v8 in\nproduction.\n\nThe complete list of APIs is:\n\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.object\n* assert.string\n* assert.arrayOfBool\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-assert-plus/issues>.\n", - "readmeFilename": "README.md", - "_id": "assert-plus@0.1.2", - "_from": "assert-plus@0.1.2", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG deleted file mode 100644 index 078c03ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG +++ /dev/null @@ -1,71 +0,0 @@ -This contains tickets fixed in each version release in reverse chronological -order. There is one ticket per line. Each commits message has the tickets fixed -in it. The commit message also has the corresponding github issue. i.e. CTYPE-42 -would be issue 42. Each issue can be found at: -https://github.com/rmustacc/node-ctype/issues/%d. - -CTYPE v0.5.2 -CTYPE-46 Release 0.5.2 -CTYPE-45 error in setEndian logic - -v0.5.1 -CTYPE-44 Release 0.5.1 -Contributed by Terin Stock: -CTYPE-41 CTypeParser.writeStruct should return its offset -Contributed by Terin Stock: -CTYPE-42 int64_t returns wrong size - -v0.5.0 -CTYPE-40 Release 0.5.0 -CTYPE-39 want > 0.6 engine support - -v0.4.0 -CTYPE-37 Release v0.4.0 -CTYPE-6 want additional entry point for write -CTYPE-20 Add 64-bit int support into core parser -CTYPE-31 Fix bounds errors node/2129 -CTYPE-33 Update copyright holders -CTYPE-34 ctf.js confuses sign bit. -CTYPE-35 Make the README more useful for getting started -CTYPE-36 want manual page on ctio functions - -v0.3.1 -CTYPE-29 Release 0.3.1 -CTYPE-28 Want v0.6 npm support - -v0.3.0 -CTYPE-27 Release v0.3.0 -CTYPE-26 Want alternate default char behavior - -v0.2.1 -CTYPE-25 Release v0.2.1 -CTYPE-24 Writing structs is busted - -v0.2.0: -CTYPE-23 Release v0.2.0 -CTYPE-21 Add support for CTF JSON data -CTYPE-22 Add Javascriptlint profile -CTYPE-15 Pull in ctio updates from node/master - -v0.1.0: -CTYPE-18 Bump version to v0.1.0 -CTYPE-17 Fix nested structures -CTYPE-16 Remove extraneous logging -CTYPE-14 toAbs64 and toApprox64 are not exported - -v0.0.3: -CTYPE-12 Bump version to v0.0.3 -CTYPE-11 fix typo in wuint64 -CTYPE-10 Integrate jsstyle - -v0.0.2: -CTYPE-8 dump npm version to v0.0.2 -CTYPE-9 want changelog -CTYPE-7 fix typo in detypes. - -v0.0.1: -CTYPE-5 Missing from NPM registry -CTYPE-4 int16_t calls wrong read function -CTYPE-3 API example types are missing quotes as strings -CTYPE-2 doc missing 64-bit functions -CTYPE-1 Need license diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE deleted file mode 100644 index 22ced3e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The following license applies to all files unless the file is specified below. -Each file specified below has its license information embedded in it: - -tools/jsstyle - -Copyright 2011, Robert Mustacchi. All rights reserved. -Copyright 2011, Joyent, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README deleted file mode 100644 index 4efd7ee5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README +++ /dev/null @@ -1,82 +0,0 @@ -Node-CType is a way to read and write binary data in structured and easy to use -format. Its name comes from the C header file. - -To get started, simply clone the repository or use npm to install it. Once it is -there, simply require it. - -git clone git://github.com/rmustacc/node-ctype -npm install ctype -var mod_ctype = require('ctype') - - -There are two APIs that you can use, depending on what abstraction you'd like. -The low level API let's you read and write individual integers and floats from -buffers. The higher level API let's you read and write structures of these. To -illustrate this, let's looks look at how we would read and write a binary -encoded x,y point. - -In C we would define this structure as follows: - -typedef struct point { - uint16_t p_x; - uint16_t p_y; -} point_t; - -To read a binary encoded point from a Buffer, we first need to create a CType -parser (where we specify the endian and other options) and add the typedef. - -var parser = new mod_ctype.Parser({ endian: 'big' }); -parser.typedef('point_t', [ - { x: { type: 'uint16_t' } }, - { y: { type: 'uint16_t' } } -]); - -From here, given a buffer buf and an offset into it, we can read a point. - -var out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0); -console.log(out); -{ point: { x: 23, y: 42 } } - -Another way to get the same information would be to use the low level methods. -Note that these require you to manually deal with the offset. Here's how we'd -get the same values of x and y from the buffer. - -var x = mod_ctype.ruint16(buf, 'big', 0); -var y = mod_ctype.ruint16(buf, 'big', 2); -console.log(x + ', ' + y); -23, 42 - -The true power of this API comes from the ability to define and nest typedefs, -just as you would in C. By default, the following types are defined by default. -Note that they return a Number, unless indicated otherwise. - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (either returns a buffer with that character or a uint8_t) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - - -ctf2json integration: - -Node-CType supports consuming the output of ctf2json. Once you read in a JSON file, -all you have to do to add all the definitions it contains is: - -var data, parser; -data = JSON.parse(parsedJSONData); -parser = mod_ctype.parseCTF(data, { endian: 'big' }); - -For more documentation, see the file README.old. Full documentation is in the -process of being rewritten as a series of manual pages which will be available -in the repository and online for viewing. - -To read the ctio manual page simple run, from the root of the workspace: - -man -Mman -s 3ctype ctio diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old deleted file mode 100644 index 9326b725..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old +++ /dev/null @@ -1,298 +0,0 @@ -This library provides a way to read and write binary data. - -Node CType is a way to read and write binary data in structured and easy to use -formats. It's name comes from the header file, though it does not share as much -with it as it perhaps should. - -There are two levels of the API. One is the raw API which everything is built on -top of, while the other provides a much nicer abstraction and is built entirely -by using the lower level API. The hope is that the low level API is both clear -and useful. The low level API gets it's names from stdint.h (a rather -appropriate source). The lower level API is presented at the end of this -document. - -Standard CType API - -The CType interface is presented as a parser object that controls the -endianness combined with a series of methods to change that value, parse and -write out buffers, and a way to provide typedefs. Standard Types - -The CType parser supports the following basic types which return Numbers except -as indicated: - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (returns a buffer with just that single character) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - -Specifying Structs - -The CType parser also supports the notion of structs. A struct is an array of -JSON objects that defines an order of keys which have types and values. One -would build a struct to represent a point (x,y) as follows: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -] - -When this is passed into the read routine, it would read the first two bytes -(as defined by int16_t) to determine the Number to use for X, and then it would -read the next two bytes to determine the value of Y. When read this could -return something like: - -{ - x: 42, - y: -23 -} - -When someone wants to write values, we use the same format as above, but with -additional value field: - -[ - { x: { type: 'int16_t', value: 42 }}, - { y: { type: 'int16_t', value: -23 }} -] - -Now, the structure above may be optionally annotated with offsets. This tells -us to rather than read continuously we should read the given value at the -specified offset. If an offset is provided, it is is effectively the equivalent -of lseek(offset, SEEK_SET). Thus, subsequent values will be read from that -offset and incremented by the appropriate value. As an example: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t', offset: 20 }}, - { z: { type: 'int16_t' }} -] - -We would read x from the first starting offset given to us, for the sake of -example, let's assume that's 0. After reading x, the next offset to read from -would be 2; however, y specifies an offset, thus we jump directly to that -offset and read y from byte 20. We would then read z from byte 22. - -The same offsets may be used when writing values. - -Typedef - -The basic set of types while covers the basics, is somewhat limiting. To make -this richer, there is functionality to typedef something like in C. One can use -typedef to add a new name to an existing type or to define a name to refer to a -struct. Thus the following are all examples of a typedef: - -typedef('size_t', 'uint32_t'); -typedef('ssize_t', 'int32_t'); -typedef('point_t', [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -]); - -Once something has been typedef'd it can be used in any of the definitions -previously shown. - -One cannot remove a typedef once created, this is analogous to C. - -The set of defined types can be printed with lstypes. The format of this output -is subject to change, but likely will look something like: - -> lstypes(); -{ - size_t: 'uint32_t', - ssize_t: 'int32_t', - point_t: [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} - ] -} - -Specifying arrays - -Arrays can be specified by appending []s to a type. Arrays must have the size -specified. The size must be specified and it can be done in one of two ways: - - * An explicit non-zero integer size - * A name of a previously declared variable in the struct whose value is a - number. - -Note, that when using the name of a variable, it should be the string name for -the key. This is only valid inside structs and the value must be declared -before the value with the array. The following are examples: - -[ - { ip_addr4: { type: 'uint8_t[4]' }}, - { len: { type: 'uint32_t' }}, - { data: { type: 'uint8_t[len]' }} -] - -Arrays are permitted in typedefs; however, they must have a declared integer -size. The following are examples of valid and invalid arrays: - -typedef('path', 'char[1024]'); /* Good */ -typedef('path', 'char[len]'); /* Bad! */ - -64 bit values: - -Unfortunately Javascript represents values with a double, so you lose precision -and the ability to represent Integers roughly beyond 2^53. To alleviate this, I -propose the following for returning 64 bit integers when read: - -value[2]: Each entry is a 32 bit number which can be reconstructed to the -original by the following formula: - -value[0] << 32 + value[1] (Note this will not work in Javascript) - -CTF JSON data: - -node-ctype can also handle JSON data that mathces the format described in the -documentation of the tool ctf2json. Given the JSON data which specifies type -information, it will transform that into a parser that understands all of the -types defined inside of it. This is useful for more complicated structures that -have a lot of typedefs. - -Interface overview - -The following is the header-file like interface to the parser object: - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -function CTypeParser(conf); - -/* - * Parses the CTF JSON data and creates a parser that understands all of those - * types. - * - * data Parsed JSON data that maches that CTF JSON - * specification. - * - * conf The configuration object to create a new CTypeParser - * from. - */ -CTypeParser parseCTF(data, conf); - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -Object CTypeParser.readData(<Type Definition>, buffer, offset); - -/* - * This is the second half of what we were born to do, write out the data - * itself. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - */ -void CTypeParser.writeData(<Type Definition>, buffer, offset); - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -void CTypeParser.prototype.typedef(name, value); - -Object CTypeParser.prototype.lstypes(); - -/* - * Get the endian value for the current parser - */ -String CTypeParser.prototype.getEndian(); - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -void CTypeParser.protoype.setEndian(String); - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -Number function toAbs64(val) - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -Number function toApprox64(val) - -Low Level API - -The following function are provided at the low level: - -Read unsigned integers from a buffer: -Number ruint8(buffer, endian, offset); -Number ruint16(buffer, endian, offset); -Number ruint32(buffer, endian, offset); -Number[] ruint64(buffer, endian, offset); - -Read signed integers from a buffer: -Number rsint8(buffer, endian, offset); -Number rsint16(buffer, endian, offset); -Number rsint32(buffer, endian, offset); -Number[] rsint64(buffer, endian, offset); - -Read floating point numbers from a buffer: -Number rfloat(buffer, endian, offset); /* IEEE-754 Single precision */ -Number rdouble(buffer, endian, offset); /* IEEE-754 Double precision */ - -Write unsigned integers to a buffer: -void wuint8(Number, endian, buffer, offset); -void wuint16(Number, endian, buffer, offset); -void wuint32(Number, endian, buffer, offset); -void wuint64(Number[], endian, buffer, offset); - -Write signed integers from a buffer: -void wsint8(Number, endian, buffer, offset); -void wsint16(Number, endian, buffer, offset); -void wsint32(Number, endian, buffer, offset); -void wsint64(Number[], endian, buffer offset); - -Write floating point numbers from a buffer: -void wfloat(Number, buffer, endian, offset); /* IEEE-754 Single precision */ -void wdouble(Number, buffer, endian, offset); /* IEEE-754 Double precision */ - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js deleted file mode 100644 index 66d5f735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js +++ /dev/null @@ -1,245 +0,0 @@ -/* - * ctf.js - * - * Understand and parse all of the different JSON formats of CTF data and - * translate that into a series of node-ctype friendly pieces. The reason for - * the abstraction is to handle different changes in the file format. - * - * We have to be careful here that we don't end up using a name that is already - * a built in type. - */ -var mod_assert = require('assert'); -var ASSERT = mod_assert.ok; - -var ctf_versions = [ '1.0' ]; -var ctf_entries = [ 'integer', 'float', 'typedef', 'struct' ]; -var ctf_deftypes = [ 'int8_t', 'uint8_t', 'int16_t', 'uint16_t', 'int32_t', - 'uint32_t', 'float', 'double' ]; - -function ctfParseInteger(entry, ctype) -{ - var name, sign, len, type; - - name = entry['name']; - if (!('signed' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'signed value')); - - - if (!('length' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'length value')); - - sign = entry['integer']['signed']; - len = entry['integer']['length']; - type = null; - - if (sign && len == 1) - type = 'int8_t'; - else if (len == 1) - type = 'uint8_t'; - else if (sign && len == 2) - type = 'int16_t'; - else if (len == 2) - type = 'uint16_t'; - else if (sign && len == 4) - type = 'int32_t'; - else if (len == 4) - type = 'uint32_t'; - else if (sign && len == 8) - type = 'int64_t'; - else if (len == 8) - type = 'uint64_t'; - - if (type === null) - throw (new Error('Malformed CTF JSON: integer has ' + - 'unsupported length and sign - ' + len + '/' + sign)); - - /* - * This means that this is the same as one of our built in types. If - * that's the case defining it would be an error. So instead of trying - * to typedef it, we'll return here. - */ - if (name == type) - return; - - if (name == 'char') { - ASSERT(type == 'int8_t'); - return; - } - - ctype.typedef(name, type); -} - -function ctfParseFloat(entry, ctype) -{ - var name, len; - - name = entry['name']; - if (!('length' in entry['float'])) - throw (new Error('Malformed CTF JSON: float missing ' + - 'length value')); - - len = entry['float']['length']; - if (len != 4 && len != 8) - throw (new Error('Malformed CTF JSON: float has invalid ' + - 'length value')); - - if (len == 4) { - if (name == 'float') - return; - ctype.typedef(name, 'float'); - } else if (len == 8) { - if (name == 'double') - return; - ctype.typedef(name, 'double'); - } -} - -function ctfParseTypedef(entry, ctype) -{ - var name, type, ii; - - name = entry['name']; - if (typeof (entry['typedef']) != 'string') - throw (new Error('Malformed CTF JSON: typedef value in not ' + - 'a string')); - - type = entry['typedef']; - - /* - * We need to ensure that we're not looking at type that's one of our - * built in types. Traditionally in C a uint32_t would be a typedef to - * some kind of integer. However, those size types are built ins. - */ - for (ii = 0; ii < ctf_deftypes.length; ii++) { - if (name == ctf_deftypes[ii]) - return; - } - - ctype.typedef(name, type); -} - -function ctfParseStruct(entry, ctype) -{ - var name, type, ii, val, index, member, push; - - member = []; - if (!Array.isArray(entry['struct'])) - throw (new Error('Malformed CTF JSON: struct value is not ' + - 'an array')); - - for (ii = 0; ii < entry['struct'].length; ii++) { - val = entry['struct'][ii]; - if (!('name' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing name')); - - if (!('type' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing type')); - - if (typeof (val['name']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'name isn\'t a string')); - - if (typeof (val['type']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'type isn\'t a string')); - - /* - * CTF version 2 specifies array names as <type> [<num>] where - * as node-ctype does this as <type>[<num>]. - */ - name = val['name']; - type = val['type']; - index = type.indexOf(' ['); - if (index != -1) { - type = type.substring(0, index) + - type.substring(index + 1, type.length); - } - push = {}; - push[name] = { 'type': type }; - member.push(push); - } - - name = entry['name']; - ctype.typedef(name, member); -} - -function ctfParseEntry(entry, ctype) -{ - var ii, found; - - if (!('name' in entry)) - throw (new Error('Malformed CTF JSON: entry missing "name" ' + - 'section')); - - for (ii = 0; ii < ctf_entries.length; ii++) { - if (ctf_entries[ii] in entry) - found++; - } - - if (found === 0) - throw (new Error('Malformed CTF JSON: found no entries')); - - if (found >= 2) - throw (new Error('Malformed CTF JSON: found more than one ' + - 'entry')); - - if ('integer' in entry) { - ctfParseInteger(entry, ctype); - return; - } - - if ('float' in entry) { - ctfParseFloat(entry, ctype); - return; - } - - if ('typedef' in entry) { - ctfParseTypedef(entry, ctype); - return; - } - - if ('struct' in entry) { - ctfParseStruct(entry, ctype); - return; - } - - ASSERT(false, 'shouldn\'t reach here'); -} - -function ctfParseJson(json, ctype) -{ - var version, ii; - - ASSERT(json); - ASSERT(ctype); - if (!('metadata' in json)) - throw (new Error('Invalid CTF JSON: missing metadata section')); - - if (!('ctf2json_version' in json['metadata'])) - throw (new Error('Invalid CTF JSON: missing ctf2json_version')); - - version = json['metadata']['ctf2json_version']; - for (ii = 0; ii < ctf_versions.length; ii++) { - if (ctf_versions[ii] == version) - break; - } - - if (ii == ctf_versions.length) - throw (new Error('Unsuported ctf2json_version: ' + version)); - - if (!('data' in json)) - throw (new Error('Invalid CTF JSON: missing data section')); - - if (!Array.isArray(json['data'])) - throw (new Error('Malformed CTF JSON: data section is not ' + - 'an array')); - - for (ii = 0; ii < json['data'].length; ii++) - ctfParseEntry(json['data'][ii], ctype); -} - -exports.ctfParseJson = ctfParseJson; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js deleted file mode 100644 index 62c5d7b2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js +++ /dev/null @@ -1,1485 +0,0 @@ -/* - * rm - Feb 2011 - * ctio.js: - * - * A simple way to read and write simple ctypes. Of course, as you'll find the - * code isn't as simple as it might appear. The following types are currently - * supported in big and little endian formats: - * - * uint8_t int8_t - * uint16_t int16_t - * uint32_t int32_t - * float (single precision IEEE 754) - * double (double precision IEEE 754) - * - * This is designed to work in Node and v8. It may in fact work in other - * Javascript interpreters (that'd be pretty neat), but it hasn't been tested. - * If you find that it does in fact work, that's pretty cool. Try and pass word - * back to the original author. - * - * Note to the reader: If you're tabstop isn't set to 8, parts of this may look - * weird. - */ - -/* - * Numbers in Javascript have a secret: all numbers must be represented with an - * IEEE-754 double. The double has a mantissa with a length of 52 bits with an - * implicit one. Thus the range of integers that can be represented is limited - * to the size of the mantissa, this makes reading and writing 64-bit integers - * difficult, but far from impossible. - * - * Another side effect of this representation is what happens when you use the - * bitwise operators, i.e. shift left, shift right, and, or, etc. In Javascript, - * each operand and the result is cast to a signed 32-bit number. However, in - * the case of >>> the values are cast to an unsigned number. - */ - -/* - * A reminder on endian related issues: - * - * Big Endian: MSB -> First byte - * Little Endian: MSB->Last byte - */ -var mod_assert = require('assert'); - -/* - * An 8 bit unsigned integer involves doing no significant work. - */ -function ruint8(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (buffer[offset]); -} - -/* - * For 16 bit unsigned numbers we can do all the casting that we want to do. - */ -function rgint16(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset] << 8; - val |= buffer[offset+1]; - } else { - val = buffer[offset]; - val |= buffer[offset+1] << 8; - } - - return (val); - -} - -function ruint16(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint16(buffer, endian, offset)); -} - -/* - * Because most bitshifting is done using signed numbers, if we would go into - * the realm where we use that 32nd bit, we'll end up going into the negative - * range. i.e.: - * > 200 << 24 - * -939524096 - * - * Not the value you'd expect. To work around this, we end up having to do some - * abuse of the JavaScript standard. in this case, we know that a >>> shift is - * defined to cast our value to an *unsigned* 32-bit number. Because of that, we - * use that instead to save us some additional math, though it does feel a - * little weird and it isn't obvious as to why you woul dwant to do this at - * first. - */ -function rgint32(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset+1] << 16; - val |= buffer[offset+2] << 8; - val |= buffer[offset+3]; - val = val + (buffer[offset] << 24 >>> 0); - } else { - val = buffer[offset+2] << 16; - val |= buffer[offset+1] << 8; - val |= buffer[offset]; - val = val + (buffer[offset + 3] << 24 >>> 0); - } - - return (val); -} - -function ruint32(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint32(buffer, endian, offset)); -} - -/* - * Reads a 64-bit unsigned number. The astue observer will note that this - * doesn't quite work. Javascript has chosen to only have numbers that can be - * represented by a double. A double only has 52 bits of mantissa with an - * implicit 1, thus we have up to 53 bits to represent an integer. However, 2^53 - * doesn't quite give us what we want. Isn't 53 bits enough for anyone? What - * could you have possibly wanted to represent that was larger than that? Oh, - * maybe a size? You mean we bypassed the 4 GB limit on file sizes, when did - * that happen? - * - * To get around this egregious language issue, we're going to instead construct - * an array of two 32 bit unsigned integers. Where arr[0] << 32 + arr[1] would - * give the actual number. However, note that the above code probably won't - * produce the desired results because of the way Javascript numbers are - * doubles. - */ -function rgint64(buffer, endian, offset) -{ - var val = new Array(2); - - if (endian == 'big') { - val[0] = ruint32(buffer, endian, offset); - val[1] = ruint32(buffer, endian, offset+4); - } else { - val[0] = ruint32(buffer, endian, offset+4); - val[1] = ruint32(buffer, endian, offset); - } - - return (val); -} - -function ruint64(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint64(buffer, endian, offset)); -} - - -/* - * Signed integer types, yay team! A reminder on how two's complement actually - * works. The first bit is the signed bit, i.e. tells us whether or not the - * number should be positive or negative. If the two's complement value is - * positive, then we're done, as it's equivalent to the unsigned representation. - * - * Now if the number is positive, you're pretty much done, you can just leverage - * the unsigned translations and return those. Unfortunately, negative numbers - * aren't quite that straightforward. - * - * At first glance, one might be inclined to use the traditional formula to - * translate binary numbers between the positive and negative values in two's - * complement. (Though it doesn't quite work for the most negative value) - * Mainly: - * - invert all the bits - * - add one to the result - * - * Of course, this doesn't quite work in Javascript. Take for example the value - * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of - * course, Javascript will do the following: - * - * > ~0xff80 - * -65409 - * - * Whoh there, Javascript, that's not quite right. But wait, according to - * Javascript that's perfectly correct. When Javascript ends up seeing the - * constant 0xff80, it has no notion that it is actually a signed number. It - * assumes that we've input the unsigned value 0xff80. Thus, when it does the - * binary negation, it casts it into a signed value, (positive 0xff80). Then - * when you perform binary negation on that, it turns it into a negative number. - * - * Instead, we're going to have to use the following general formula, that works - * in a rather Javascript friendly way. I'm glad we don't support this kind of - * weird numbering scheme in the kernel. - * - * (BIT-MAX - (unsigned)val + 1) * -1 - * - * The astute observer, may think that this doesn't make sense for 8-bit numbers - * (really it isn't necessary for them). However, when you get 16-bit numbers, - * you do. Let's go back to our prior example and see how this will look: - * - * (0xffff - 0xff80 + 1) * -1 - * (0x007f + 1) * -1 - * (0x0080) * -1 - * - * Doing it this way ends up allowing us to treat it appropriately in - * Javascript. Sigh, that's really quite ugly for what should just be a few bit - * shifts, ~ and &. - */ - -/* - * Endianness doesn't matter for 8-bit signed values. We could in fact optimize - * this case because the more traditional methods work, but for consistency, - * we'll keep doing this the same way. - */ -function rsint8(buffer, endian, offset) -{ - var neg; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - neg = buffer[offset] & 0x80; - if (!neg) - return (buffer[offset]); - - return ((0xff - buffer[offset] + 1) * -1); -} - -/* - * The 16-bit version requires a bit more effort. In this case, we can leverage - * our unsigned code to generate the value we want to return. - */ -function rsint16(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint16(buffer, endian, offset); - neg = val & 0x8000; - if (!neg) - return (val); - - return ((0xffff - val + 1) * -1); -} - -/* - * We really shouldn't leverage our 32-bit code here and instead utilize the - * fact that we know that since these are signed numbers, we can do all the - * shifting and binary anding to generate the 32-bit number. But, for - * consistency we'll do the same. If we want to do otherwise, we should instead - * make the 32 bit unsigned code do the optimization. But as long as there - * aren't floats secretly under the hood for that, we /should/ be okay. - */ -function rsint32(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint32(buffer, endian, offset); - neg = val & 0x80000000; - if (!neg) - return (val); - - return ((0xffffffff - val + 1) * -1); -} - -/* - * The signed version of this code suffers from all of the same problems of the - * other 64 bit version. - */ -function rsint64(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint64(buffer, endian, offset); - neg = val[0] & 0x80000000; - - if (!neg) - return (val); - - val[0] = (0xffffffff - val[0]) * -1; - val[1] = (0xffffffff - val[1] + 1) * -1; - - /* - * If we had the key 0x8000000000000000, that would leave the lower 32 - * bits as 0xffffffff, however, since we're goint to add one, that would - * actually leave the lower 32-bits as 0x100000000, which would break - * our ability to write back a value that we received. To work around - * this, if we actually get that value, we're going to bump the upper - * portion by 1 and set this to zero. - */ - mod_assert.ok(val[1] <= 0x100000000); - if (val[1] == -0x100000000) { - val[1] = 0; - val[0]--; - } - - return (val); -} - -/* - * We now move onto IEEE 754: The traditional form for floating point numbers - * and what is secretly hiding at the heart of everything in this. I really hope - * that someone is actually using this, as otherwise, this effort is probably - * going to be more wasted. - * - * One might be tempted to use parseFloat here, but that wouldn't work at all - * for several reasons. Mostly due to the way floats actually work, and - * parseFloat only actually works in base 10. I don't see base 10 anywhere near - * this file. - * - * In this case we'll implement the single and double precision versions. The - * quadruple precision, while probably useful, wouldn't really be accepted by - * Javascript, so let's not even waste our time. - * - * So let's review how this format looks like. A single precision value is 32 - * bits and has three parts: - * - Sign bit - * - Exponent (Using bias notation) - * - Mantissa - * - * |s|eeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmm| - * 31| 30-23 | 22 - 0 | - * - * The exponent is stored in a biased input. The bias in this case 127. - * Therefore, our exponent is equal to the 8-bit value - 127. - * - * By default, a number is normalized in IEEE, that means that the mantissa has - * an implicit one that we don't see. So really the value stored is 1.m. - * However, if the exponent is all zeros, then instead we have to shift - * everything to the right one and there is no more implicit one. - * - * Special values: - * - Positive Infinity: - * Sign: 0 - * Exponent: All 1s - * Mantissa: 0 - * - Negative Infinity: - * Sign: 1 - * Exponent: All 1s - * Mantissa: 0 - * - NaN: - * Sign: * - * Exponent: All 1s - * Mantissa: non-zero - * - Zero: - * Sign: * - * Exponent: All 0s - * Mantissa: 0 - * - * In the case of zero, the sign bit determines whether we get a positive or - * negative zero. However, since Javascript cannot determine the difference - * between the two: i.e. -0 == 0, we just always return 0. - * - */ -function rfloat(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val; - var bias = 127; - var maxexp = 0xff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - } else { - bytes[3] = buffer[offset]; - bytes[2] = buffer[offset+1]; - bytes[1] = buffer[offset+2]; - bytes[0] = buffer[offset+3]; - } - - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 1; - exponent |= (bytes[1] & 0x80) >>> 7; - mantissa = (bytes[1] & 0x7f) << 16; - mantissa |= bytes[2] << 8; - mantissa |= bytes[3]; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -23)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Doubles in IEEE 754 are like their brothers except for a few changes and - * increases in size: - * - The exponent is now 11 bits - * - The mantissa is now 52 bits - * - The bias is now 1023 - * - * |s|eeeeeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm| - * 63| 62 - 52 | 51 - 0 | - * 63| 62 - 52 | 51 - 0 | - * - * While the size has increased a fair amount, we're going to end up keeping the - * same general formula for calculating the final value. As a reminder, this - * formula is: - * - * (-1)^s * (n + m) * 2^(e-b) - * - * Where: - * s is the sign bit - * n is (exponent > 0) ? 1 : 0 -- Determines whether we're normalized - * or not - * m is the mantissa - * e is the exponent specified - * b is the bias for the exponent - * - */ -function rdouble(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val, lowmant; - var bias = 1023; - var maxexp = 0x7ff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - bytes[4] = buffer[offset+4]; - bytes[5] = buffer[offset+5]; - bytes[6] = buffer[offset+6]; - bytes[7] = buffer[offset+7]; - } else { - bytes[7] = buffer[offset]; - bytes[6] = buffer[offset+1]; - bytes[5] = buffer[offset+2]; - bytes[4] = buffer[offset+3]; - bytes[3] = buffer[offset+4]; - bytes[2] = buffer[offset+5]; - bytes[1] = buffer[offset+6]; - bytes[0] = buffer[offset+7]; - } - - /* - * We can construct the exponent and mantissa the same way as we did in - * the case of a float, just increase the range of the exponent. - */ - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 4; - exponent |= (bytes[1] & 0xf0) >>> 4; - - /* - * This is going to be ugly but then again, we're dealing with IEEE 754. - * This could probably be done as a node add on in a few lines of C++, - * but oh we'll, we've made it this far so let's be native the rest of - * the way... - * - * What we're going to do is break the mantissa into two parts, the - * lower 24 bits and the upper 28 bits. We'll multiply the upper 28 bits - * by the appropriate power and then add in the lower 24-bits. Not - * really that great. It's pretty much a giant kludge to deal with - * Javascript eccentricities around numbers. - */ - lowmant = bytes[7]; - lowmant |= bytes[6] << 8; - lowmant |= bytes[5] << 16; - mantissa = bytes[4]; - mantissa |= bytes[3] << 8; - mantissa |= bytes[2] << 16; - mantissa |= (bytes[1] & 0x0f) << 24; - mantissa *= Math.pow(2, 24); /* Equivalent to << 24, but JS compat */ - mantissa += lowmant; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -52)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Now that we have gone through the pain of reading the individual types, we're - * probably going to want some way to write these back. None of this is going to - * be good. But since we have Javascript numbers this should certainly be more - * interesting. Though we can constrain this end a little bit more in what is - * valid. For now, let's go back to our friends the unsigned value. - */ - -/* - * Unsigned numbers seem deceptively easy. Here are the general steps and rules - * that we are going to take: - * - If the number is negative, throw an Error - * - Truncate any floating point portion - * - Take the modulus of the number in our base - * - Write it out to the buffer in the endian format requested at the offset - */ - -/* - * We have to make sure that the value is a valid integer. This means that it is - * non-negative. It has no fractional component and that it does not exceed the - * maximum allowed value. - * - * value The number to check for validity - * - * max The maximum value - */ -function prepuint(value, max) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value < 0) - throw (new Error('specified a negative value for writing an ' + - 'unsigned value')); - - if (value > max) - throw (new Error('value is larger than maximum value for ' + - 'type')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * 8-bit version, classy. We can ignore endianness which is good. - */ -function wuint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xff); - buffer[offset] = val; -} - -/* - * Pretty much the same as the 8-bit version, just this time we need to worry - * about endian related issues. - */ -function wgint16(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val & 0xff00) >>> 8; - buffer[offset+1] = val & 0x00ff; - } else { - buffer[offset+1] = (val & 0xff00) >>> 8; - buffer[offset] = val & 0x00ff; - } -} - -function wuint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffff); - wgint16(val, endian, buffer, offset); -} - -/* - * The 32-bit version is going to have to be a little different unfortunately. - * We can't quite bitshift to get the largest byte, because that would end up - * getting us caught by the signed values. - * - * And yes, we do want to subtract out the lower part by default. This means - * that when we do the division, it will be treated as a bit shift and we won't - * end up generating a floating point value. If we did generate a floating point - * value we'd have to truncate it intelligently, this saves us that problem and - * may even be somewhat faster under the hood. - */ -function wgint32(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val - (val & 0x00ffffff)) / Math.pow(2, 24); - buffer[offset+1] = (val >>> 16) & 0xff; - buffer[offset+2] = (val >>> 8) & 0xff; - buffer[offset+3] = val & 0xff; - } else { - buffer[offset+3] = (val - (val & 0x00ffffff)) / - Math.pow(2, 24); - buffer[offset+2] = (val >>> 16) & 0xff; - buffer[offset+1] = (val >>> 8) & 0xff; - buffer[offset] = val & 0xff; - } -} - -function wuint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffffffff); - wgint32(val, endian, buffer, offset); -} - -/* - * Unlike the other versions, we expect the value to be in the form of two - * arrays where value[0] << 32 + value[1] would result in the value that we - * want. - */ -function wgint64(value, endian, buffer, offset) -{ - if (endian == 'big') { - wgint32(value[0], endian, buffer, offset); - wgint32(value[1], endian, buffer, offset+4); - } else { - wgint32(value[0], endian, buffer, offset+4); - wgint32(value[1], endian, buffer, offset); - } -} - -function wuint64(value, endian, buffer, offset) -{ - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - prepuint(value[0], 0xffffffff); - prepuint(value[1], 0xffffffff); - wgint64(value, endian, buffer, offset); -} - -/* - * We now move onto our friends in the signed number category. Unlike unsigned - * numbers, we're going to have to worry a bit more about how we put values into - * arrays. Since we are only worrying about signed 32-bit values, we're in - * slightly better shape. Unfortunately, we really can't do our favorite binary - * & in this system. It really seems to do the wrong thing. For example: - * - * > -32 & 0xff - * 224 - * - * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of - * this aren't treated as a signed number. Ultimately a bad thing. - * - * What we're going to want to do is basically create the unsigned equivalent of - * our representation and pass that off to the wuint* functions. To do that - * we're going to do the following: - * - * - if the value is positive - * we can pass it directly off to the equivalent wuint - * - if the value is negative - * we do the following computation: - * mb + val + 1, where - * mb is the maximum unsigned value in that byte size - * val is the Javascript negative integer - * - * - * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If - * you do out the computations: - * - * 0xffff - 128 + 1 - * 0xffff - 127 - * 0xff80 - * - * You can then encode this value as the signed version. This is really rather - * hacky, but it should work and get the job done which is our goal here. - * - * Thus the overall flow is: - * - Truncate the floating point part of the number - * - We don't have to take the modulus, because the unsigned versions will - * take care of that for us. And we don't have to worry about that - * potentially causing bad things to happen because of sign extension - * - Pass it off to the appropriate unsigned version, potentially modifying - * the negative portions as necessary. - */ - -/* - * A series of checks to make sure we actually have a signed 32-bit number - */ -function prepsint(value, max, min) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value > max) - throw (new Error('value larger than maximum allowed value')); - - if (value < min) - throw (new Error('value smaller than minimum allowed value')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * The 8-bit version of the signed value. Overall, fairly straightforward. - */ -function wsint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7f, -0x80); - if (val >= 0) - wuint8(val, endian, buffer, offset); - else - wuint8(0xff + val + 1, endian, buffer, offset); -} - -/* - * The 16-bit version of the signed value. Also, fairly straightforward. - */ -function wsint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fff, -0x8000); - if (val >= 0) - wgint16(val, endian, buffer, offset); - else - wgint16(0xffff + val + 1, endian, buffer, offset); - -} - -/* - * We can do this relatively easily by leveraging the code used for 32-bit - * unsigned code. - */ -function wsint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fffffff, -0x80000000); - if (val >= 0) - wgint32(val, endian, buffer, offset); - else - wgint32(0xffffffff + val + 1, endian, buffer, offset); -} - -/* - * The signed 64 bit integer should by in the same format as when received. - * Mainly it should ensure that the value is an array of two integers where - * value[0] << 32 + value[1] is the desired number. Furthermore, the two values - * need to be equal. - */ -function wsint64(value, endian, buffer, offset) -{ - var vzpos, vopos; - var vals = new Array(2); - - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* - * We need to make sure that we have the same sign on both values. The - * hokiest way to to do this is to multiply the number by +inf. If we do - * this, we'll get either +/-inf depending on the sign of the value. - * Once we have this, we can compare it to +inf to see if the number is - * positive or not. - */ - vzpos = (value[0] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - vopos = (value[1] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - - /* - * If either of these is zero, then we don't actually need this check. - */ - if (value[0] != 0 && value[1] != 0 && vzpos != vopos) - throw (new Error('Both entries in the array must have ' + - 'the same sign')); - - /* - * Doing verification for a signed 64-bit integer is actually a big - * trickier than it appears. We can't quite use our standard techniques - * because we need to compare both sets of values. The first value is - * pretty straightforward. If the first value is beond the extremes than - * we error out. However, the valid range of the second value varies - * based on the first one. If the first value is negative, and *not* the - * largest negative value, than it can be any integer within the range [ - * 0, 0xffffffff ]. If it is the largest negative number, it must be - * zero. - * - * If the first number is positive, than it doesn't matter what the - * value is. We just simply have to make sure we have a valid positive - * integer. - */ - if (vzpos) { - prepuint(value[0], 0x7fffffff); - prepuint(value[1], 0xffffffff); - } else { - prepsint(value[0], 0, -0x80000000); - prepsint(value[1], 0, -0xffffffff); - if (value[0] == -0x80000000 && value[1] != 0) - throw (new Error('value smaller than minimum ' + - 'allowed value')); - } - - /* Fix negative numbers */ - if (value[0] < 0 || value[1] < 0) { - vals[0] = 0xffffffff - Math.abs(value[0]); - vals[1] = 0x100000000 - Math.abs(value[1]); - if (vals[1] == 0x100000000) { - vals[1] = 0; - vals[0]++; - } - } else { - vals[0] = value[0]; - vals[1] = value[1]; - } - wgint64(vals, endian, buffer, offset); -} - -/* - * Now we are moving onto the weirder of these, the float and double. For this - * we're going to just have to do something that's pretty weird. First off, we - * have no way to get at the underlying float representation, at least not - * easily. But that doesn't mean we can't figure it out, we just have to use our - * heads. - * - * One might propose to use Number.toString(2). Of course, this is not really - * that good, because the ECMAScript 262 v3 Standard says the following Section - * 15.7.4.2-Number.prototype.toString (radix): - * - * If radix is an integer from 2 to 36, but not 10, the result is a string, the - * choice of which is implementation-dependent. - * - * Well that doesn't really help us one bit now does it? We could use the - * standard base 10 version of the string, but that's just going to create more - * errors as we end up trying to convert it back to a binary value. So, really - * this just means we have to be non-lazy and parse the structure intelligently. - * - * First off, we can do the basic checks: NaN, positive and negative infinity. - * - * Now that those are done we can work backwards to generate the mantissa and - * exponent. - * - * The first thing we need to do is determine the sign bit, easy to do, check - * whether the value is less than 0. And convert the number to its absolute - * value representation. Next, we need to determine if the value is less than - * one or greater than or equal to one and from there determine what power was - * used to get there. What follows is now specific to floats, though the general - * ideas behind this will hold for doubles as well, but the exact numbers - * involved will change. - * - * Once we have that power we can determine the exponent and the mantissa. Call - * the value that has the number of bits to reach the power ebits. In the - * general case they have the following values: - * - * exponent 127 + ebits - * mantissa value * 2^(23 - ebits) & 0x7fffff - * - * In the case where the value of ebits is <= -127 we are now in the case where - * we no longer have normalized numbers. In this case the values take on the - * following values: - * - * exponent 0 - * mantissa value * 2^149 & 0x7fffff - * - * Once we have the values for the sign, mantissa, and exponent. We reconstruct - * the four bytes as follows: - * - * byte0 sign bit and seven most significant bits from the exp - * sign << 7 | (exponent & 0xfe) >>> 1 - * - * byte1 lsb from the exponent and 7 top bits from the mantissa - * (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16 - * - * byte2 bits 8-15 (zero indexing) from mantissa - * mantissa & 0xff00 >> 8 - * - * byte3 bits 0-7 from mantissa - * mantissa & 0xff - * - * Once we have this we have to assign them into the buffer in proper endian - * order. - */ - -/* - * Compute the log base 2 of the value. Now, someone who remembers basic - * properties of logarithms will point out that we could use the change of base - * formula for logs, and in fact that would be astute, because that's what we'll - * do for now. It feels cleaner, albeit it may be less efficient than just - * iterating and dividing by 2. We may want to come back and revisit that some - * day. - */ -function log2(value) -{ - return (Math.log(value) / Math.log(2)); -} - -/* - * Helper to determine the exponent of the number we're looking at. - */ -function intexp(value) -{ - return (Math.floor(log2(value))); -} - -/* - * Helper to determine the exponent of the fractional part of the value. - */ -function fracexp(value) -{ - return (Math.floor(log2(value))); -} - -function wfloat(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0xff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0xff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0xff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* Time to deal with the issues surrounding normalization */ - if (ebits <= -127) { - exponent = 0; - mantissa = (value * Math.pow(2, 149)) & 0x7fffff; - } else { - exponent = 127 + ebits; - mantissa = value * Math.pow(2, 23 - ebits); - mantissa &= 0x7fffff; - } - } - - bytes[0] = sign << 7 | (exponent & 0xfe) >>> 1; - bytes[1] = (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16; - bytes[2] = (mantissa & 0x00ff00) >>> 8; - bytes[3] = mantissa & 0x0000ff; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - } else { - buffer[offset] = bytes[3]; - buffer[offset+1] = bytes[2]; - buffer[offset+2] = bytes[1]; - buffer[offset+3] = bytes[0]; - } -} - -/* - * Now we move onto doubles. Doubles are similar to floats in pretty much all - * ways except that the processing isn't quite as straightforward because we - * can't always use shifting, i.e. we have > 32 bit values. - * - * We're going to proceed in an identical fashion to floats and utilize the same - * helper functions. All that really is changing are the specific values that we - * use to do the calculations. Thus, to review we have to do the following. - * - * First get the sign bit and convert the value to its absolute value - * representation. Next, we determine the number of bits that we used to get to - * the value, branching whether the value is greater than or less than 1. Once - * we have that value which we will again call ebits, we have to do the - * following in the general case: - * - * exponent 1023 + ebits - * mantissa [value * 2^(52 - ebits)] % 2^52 - * - * In the case where the value of ebits <= -1023 we no longer use normalized - * numbers, thus like with floats we have to do slightly different processing: - * - * exponent 0 - * mantissa [value * 2^1074] % 2^52 - * - * Once we have determined the sign, exponent and mantissa we can construct the - * bytes as follows: - * - * byte0 sign bit and seven most significant bits form the exp - * sign << 7 | (exponent & 0x7f0) >>> 4 - * - * byte1 Remaining 4 bits from the exponent and the four most - * significant bits from the mantissa 48-51 - * (exponent & 0x00f) << 4 | mantissa >>> 48 - * - * byte2 Bits 40-47 from the mantissa - * (mantissa >>> 40) & 0xff - * - * byte3 Bits 32-39 from the mantissa - * (mantissa >>> 32) & 0xff - * - * byte4 Bits 24-31 from the mantissa - * (mantissa >>> 24) & 0xff - * - * byte5 Bits 16-23 from the Mantissa - * (mantissa >>> 16) & 0xff - * - * byte6 Bits 8-15 from the mantissa - * (mantissa >>> 8) & 0xff - * - * byte7 Bits 0-7 from the mantissa - * mantissa & 0xff - * - * Now we can't quite do the right shifting that we want in bytes 1 - 3, because - * we'll have extended too far and we'll lose those values when we try and do - * the shift. Instead we have to use an alternate approach. To try and stay out - * of floating point, what we'll do is say that mantissa -= bytes[4-7] and then - * divide by 2^32. Once we've done that we can use binary arithmetic. Oof, - * that's ugly, but it seems to avoid using floating point (just based on how v8 - * seems to be optimizing for base 2 arithmetic). - */ -function wdouble(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0x7ff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0x7ff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0x7ff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* - * This is a total hack to determine a denormalized value. - * Unfortunately, we sometimes do not get a proper value for - * ebits, i.e. we lose the values that would get rounded off. - * - * - * The astute observer may wonder why we would be - * multiplying by two Math.pows rather than just summing - * them. Well, that's to get around a small bug in the - * way v8 seems to implement the function. On occasion - * doing: - * - * foo * Math.pow(2, 1023 + 51) - * - * Causes us to overflow to infinity, where as doing: - * - * foo * Math.pow(2, 1023) * Math.pow(2, 51) - * - * Does not cause us to overflow. Go figure. - * - */ - if (value <= 2.225073858507201e-308 || ebits <= -1023) { - exponent = 0; - mantissa = value * Math.pow(2, 1023) * Math.pow(2, 51); - mantissa %= Math.pow(2, 52); - } else { - /* - * We might have gotten fucked by our floating point - * logarithm magic. This is rather crappy, but that's - * our luck. If we just had a log base 2 or access to - * the stupid underlying representation this would have - * been much easier and we wouldn't have such stupid - * kludges or hacks. - */ - if (ebits > 1023) - ebits = 1023; - exponent = 1023 + ebits; - mantissa = value * Math.pow(2, -ebits); - mantissa *= Math.pow(2, 52); - mantissa %= Math.pow(2, 52); - } - } - - /* Fill the bytes in backwards to deal with the size issues */ - bytes[7] = mantissa & 0xff; - bytes[6] = (mantissa >>> 8) & 0xff; - bytes[5] = (mantissa >>> 16) & 0xff; - mantissa = (mantissa - (mantissa & 0xffffff)) / Math.pow(2, 24); - bytes[4] = mantissa & 0xff; - bytes[3] = (mantissa >>> 8) & 0xff; - bytes[2] = (mantissa >>> 16) & 0xff; - bytes[1] = (exponent & 0x00f) << 4 | mantissa >>> 24; - bytes[0] = (sign << 7) | (exponent & 0x7f0) >>> 4; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - buffer[offset+4] = bytes[4]; - buffer[offset+5] = bytes[5]; - buffer[offset+6] = bytes[6]; - buffer[offset+7] = bytes[7]; - } else { - buffer[offset+7] = bytes[0]; - buffer[offset+6] = bytes[1]; - buffer[offset+5] = bytes[2]; - buffer[offset+4] = bytes[3]; - buffer[offset+3] = bytes[4]; - buffer[offset+2] = bytes[5]; - buffer[offset+1] = bytes[6]; - buffer[offset] = bytes[7]; - } -} - -/* - * Actually export our work above. One might argue that we shouldn't expose - * these interfaces and just force people to use the higher level abstractions - * around this work. However, unlike say other libraries we've come across, this - * interface has several properties: it makes sense, it's simple, and it's - * useful. - */ -exports.ruint8 = ruint8; -exports.ruint16 = ruint16; -exports.ruint32 = ruint32; -exports.ruint64 = ruint64; -exports.wuint8 = wuint8; -exports.wuint16 = wuint16; -exports.wuint32 = wuint32; -exports.wuint64 = wuint64; - -exports.rsint8 = rsint8; -exports.rsint16 = rsint16; -exports.rsint32 = rsint32; -exports.rsint64 = rsint64; -exports.wsint8 = wsint8; -exports.wsint16 = wsint16; -exports.wsint32 = wsint32; -exports.wsint64 = wsint64; - -exports.rfloat = rfloat; -exports.rdouble = rdouble; -exports.wfloat = wfloat; -exports.wdouble = wdouble; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js deleted file mode 100644 index 7d2f4a5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js +++ /dev/null @@ -1,944 +0,0 @@ -/* - * rm - Feb 2011 - * ctype.js - * - * This module provides a simple abstraction towards reading and writing - * different types of binary data. It is designed to use ctio.js and provide a - * richer and more expressive API on top of it. - * - * By default we support the following as built in basic types: - * int8_t - * int16_t - * int32_t - * uint8_t - * uint16_t - * uint32_t - * uint64_t - * float - * double - * char - * char[] - * - * Each type is returned as a Number, with the exception of char and char[] - * which are returned as Node Buffers. A char is considered a uint8_t. - * - * Requests to read and write data are specified as an array of JSON objects. - * This is also the same way that one declares structs. Even if just a single - * value is requested, it must be done as a struct. The array order determines - * the order that we try and read values. Each entry has the following format - * with values marked with a * being optional. - * - * { key: { type: /type/, value*: /value/, offset*: /offset/ } - * - * If offset is defined, we lseek(offset, SEEK_SET) before reading the next - * value. Value is defined when we're writing out data, otherwise it's ignored. - * - */ - -var mod_ctf = require('./ctf.js'); -var mod_ctio = require('./ctio.js'); -var mod_assert = require('assert'); - -/* - * This is the set of basic types that we support. - * - * read The function to call to read in a value from a buffer - * - * write The function to call to write a value to a buffer - * - */ -var deftypes = { - 'uint8_t': { read: ctReadUint8, write: ctWriteUint8 }, - 'uint16_t': { read: ctReadUint16, write: ctWriteUint16 }, - 'uint32_t': { read: ctReadUint32, write: ctWriteUint32 }, - 'uint64_t': { read: ctReadUint64, write: ctWriteUint64 }, - 'int8_t': { read: ctReadSint8, write: ctWriteSint8 }, - 'int16_t': { read: ctReadSint16, write: ctWriteSint16 }, - 'int32_t': { read: ctReadSint32, write: ctWriteSint32 }, - 'int64_t': { read: ctReadSint64, write: ctWriteSint64 }, - 'float': { read: ctReadFloat, write: ctWriteFloat }, - 'double': { read: ctReadDouble, write: ctWriteDouble }, - 'char': { read: ctReadChar, write: ctWriteChar }, - 'char[]': { read: ctReadCharArray, write: ctWriteCharArray } -}; - -/* - * The following are wrappers around the CType IO low level API. They encode - * knowledge about the size and return something in the expected format. - */ -function ctReadUint8(endian, buffer, offset) -{ - var val = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadUint16(endian, buffer, offset) -{ - var val = mod_ctio.ruint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadUint32(endian, buffer, offset) -{ - var val = mod_ctio.ruint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadUint64(endian, buffer, offset) -{ - var val = mod_ctio.ruint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadSint8(endian, buffer, offset) -{ - var val = mod_ctio.rsint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadSint16(endian, buffer, offset) -{ - var val = mod_ctio.rsint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadSint32(endian, buffer, offset) -{ - var val = mod_ctio.rsint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadSint64(endian, buffer, offset) -{ - var val = mod_ctio.rsint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadFloat(endian, buffer, offset) -{ - var val = mod_ctio.rfloat(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadDouble(endian, buffer, offset) -{ - var val = mod_ctio.rdouble(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -/* - * Reads a single character into a node buffer - */ -function ctReadChar(endian, buffer, offset) -{ - var res = new Buffer(1); - res[0] = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: res, size: 1 }); -} - -function ctReadCharArray(length, endian, buffer, offset) -{ - var ii; - var res = new Buffer(length); - - for (ii = 0; ii < length; ii++) - res[ii] = mod_ctio.ruint8(buffer, endian, offset + ii); - - return ({ value: res, size: length }); -} - -function ctWriteUint8(value, endian, buffer, offset) -{ - mod_ctio.wuint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteUint16(value, endian, buffer, offset) -{ - mod_ctio.wuint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteUint32(value, endian, buffer, offset) -{ - mod_ctio.wuint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteUint64(value, endian, buffer, offset) -{ - mod_ctio.wuint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteSint8(value, endian, buffer, offset) -{ - mod_ctio.wsint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteSint16(value, endian, buffer, offset) -{ - mod_ctio.wsint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteSint32(value, endian, buffer, offset) -{ - mod_ctio.wsint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteSint64(value, endian, buffer, offset) -{ - mod_ctio.wsint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteFloat(value, endian, buffer, offset) -{ - mod_ctio.wfloat(value, endian, buffer, offset); - return (4); -} - -function ctWriteDouble(value, endian, buffer, offset) -{ - mod_ctio.wdouble(value, endian, buffer, offset); - return (8); -} - -/* - * Writes a single character into a node buffer - */ -function ctWriteChar(value, endian, buffer, offset) -{ - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - mod_ctio.ruint8(value[0], endian, buffer, offset); - return (1); -} - -/* - * We're going to write 0s into the buffer if the string is shorter than the - * length of the array. - */ -function ctWriteCharArray(value, length, endian, buffer, offset) -{ - var ii; - - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - if (value.length > length) - throw (new Error('value length greater than array length')); - - for (ii = 0; ii < value.length && ii < length; ii++) - mod_ctio.wuint8(value[ii], endian, buffer, offset + ii); - - for (; ii < length; ii++) - mod_ctio.wuint8(0, endian, offset + ii); - - - return (length); -} - -/* - * Each parser has their own set of types. We want to make sure that they each - * get their own copy as they may need to modify it. - */ -function ctGetBasicTypes() -{ - var ret = {}; - var key; - for (key in deftypes) - ret[key] = deftypes[key]; - - return (ret); -} - -/* - * Given a string in the form of type[length] we want to split this into an - * object that extracts that information. We want to note that we could possibly - * have nested arrays so this should only check the furthest one. It may also be - * the case that we have no [] pieces, in which case we just return the current - * type. - */ -function ctParseType(str) -{ - var begInd, endInd; - var type, len; - if (typeof (str) != 'string') - throw (new Error('type must be a Javascript string')); - - endInd = str.lastIndexOf(']'); - if (endInd == -1) { - if (str.lastIndexOf('[') != -1) - throw (new Error('found invalid type with \'[\' but ' + - 'no corresponding \']\'')); - - return ({ type: str }); - } - - begInd = str.lastIndexOf('['); - if (begInd == -1) - throw (new Error('found invalid type with \']\' but ' + - 'no corresponding \'[\'')); - - if (begInd >= endInd) - throw (new Error('malformed type, \']\' appears before \'[\'')); - - type = str.substring(0, begInd); - len = str.substring(begInd + 1, endInd); - - return ({ type: type, len: len }); -} - -/* - * Given a request validate that all of the fields for it are valid and make - * sense. This includes verifying the following notions: - * - Each type requested is present in types - * - Only allow a name for a field to be specified once - * - If an array is specified, validate that the requested field exists and - * comes before it. - * - If fields is defined, check that each entry has the occurrence of field - */ -function ctCheckReq(def, types, fields) -{ - var ii, jj; - var req, keys, key; - var found = {}; - - if (!(def instanceof Array)) - throw (new Error('definition is not an array')); - - if (def.length === 0) - throw (new Error('definition must have at least one element')); - - for (ii = 0; ii < def.length; ii++) { - req = def[ii]; - if (!(req instanceof Object)) - throw (new Error('definition must be an array of' + - 'objects')); - - keys = Object.keys(req); - if (keys.length != 1) - throw (new Error('definition entry must only have ' + - 'one key')); - - if (keys[0] in found) - throw (new Error('Specified name already ' + - 'specified: ' + keys[0])); - - if (!('type' in req[keys[0]])) - throw (new Error('missing required type definition')); - - key = ctParseType(req[keys[0]]['type']); - - /* - * We may have nested arrays, we need to check the validity of - * the types until the len field is undefined in key. However, - * each time len is defined we need to verify it is either an - * integer or corresponds to an already seen key. - */ - while (key['len'] !== undefined) { - if (isNaN(parseInt(key['len'], 10))) { - if (!(key['len'] in found)) - throw (new Error('Given an array ' + - 'length without a matching type')); - - } - - key = ctParseType(key['type']); - } - - /* Now we can validate if the type is valid */ - if (!(key['type'] in types)) - throw (new Error('type not found or typdefed: ' + - key['type'])); - - /* Check for any required fields */ - if (fields !== undefined) { - for (jj = 0; jj < fields.length; jj++) { - if (!(fields[jj] in req[keys[0]])) - throw (new Error('Missing required ' + - 'field: ' + fields[jj])); - } - } - - found[keys[0]] = true; - } -} - - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following required - * values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - * And the following optional values: - * - * char-type Valid options here are uint8 and int8. If uint8 is - * specified this changes the default behavior of a single - * char from being a buffer of a single character to being - * a uint8_t. If int8, it becomes an int8_t instead. - */ -function CTypeParser(conf) -{ - if (!conf) throw (new Error('missing required argument')); - - if (!('endian' in conf)) - throw (new Error('missing required endian value')); - - if (conf['endian'] != 'big' && conf['endian'] != 'little') - throw (new Error('Invalid endian type')); - - if ('char-type' in conf && (conf['char-type'] != 'uint8' && - conf['char-type'] != 'int8')) - throw (new Error('invalid option for char-type: ' + - conf['char-type'])); - - this.endian = conf['endian']; - this.types = ctGetBasicTypes(); - - /* - * There may be a more graceful way to do this, but this will have to - * serve. - */ - if ('char-type' in conf && conf['char-type'] == 'uint8') - this.types['char'] = this.types['uint8_t']; - - if ('char-type' in conf && conf['char-type'] == 'int8') - this.types['char'] = this.types['int8_t']; -} - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -CTypeParser.prototype.setEndian = function (endian) -{ - if (endian != 'big' && endian != 'little') - throw (new Error('invalid endian type, must be big or ' + - 'little')); - - this.endian = endian; -}; - -/* - * Returns the current value of the endian value for the parser. - */ -CTypeParser.prototype.getEndian = function () -{ - return (this.endian); -}; - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -CTypeParser.prototype.typedef = function (name, value) -{ - var type; - - if (name === undefined) - throw (new (Error('missing required typedef argument: name'))); - - if (value === undefined) - throw (new (Error('missing required typedef argument: value'))); - - if (typeof (name) != 'string') - throw (new (Error('the name of a type must be a string'))); - - type = ctParseType(name); - - if (type['len'] !== undefined) - throw (new Error('Cannot have an array in the typedef name')); - - if (name in this.types) - throw (new Error('typedef name already present: ' + name)); - - if (typeof (value) != 'string' && !(value instanceof Array)) - throw (new Error('typedef value must either be a string or ' + - 'struct')); - - if (typeof (value) == 'string') { - type = ctParseType(value); - if (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) - throw (new (Error('typedef value must use ' + - 'fixed size array when outside of a ' + - 'struct'))); - } - - this.types[name] = value; - } else { - /* We have a struct, validate it */ - ctCheckReq(value, this.types); - this.types[name] = value; - } -}; - -/* - * Include all of the typedefs, but none of the built in types. This should be - * treated as read-only. - */ -CTypeParser.prototype.lstypes = function () -{ - var key; - var ret = {}; - - for (key in this.types) { - if (key in deftypes) - continue; - ret[key] = this.types[key]; - } - - return (ret); -}; - -/* - * Given a type string that may have array types that aren't numbers, try and - * fill them in from the values object. The object should be of the format where - * indexing into it should return a number for that type. - * - * str The type string - * - * values An object that can be used to fulfill type information - */ -function ctResolveArray(str, values) -{ - var ret = ''; - var type = ctParseType(str); - - while (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) { - if (typeof (values[type['len']]) != 'number') - throw (new Error('cannot sawp in non-number ' + - 'for array value')); - ret = '[' + values[type['len']] + ']' + ret; - } else { - ret = '[' + type['len'] + ']' + ret; - } - type = ctParseType(type['type']); - } - - ret = type['type'] + ret; - - return (ret); -} - -/* - * [private] Either the typedef resolves to another type string or to a struct. - * If it resolves to a struct, we just pass it off to read struct. If not, we - * can just pass it off to read entry. - */ -CTypeParser.prototype.resolveTypedef = function (type, dispatch, buffer, - offset, value) -{ - var pt; - - mod_assert.ok(type in this.types); - if (typeof (this.types[type]) == 'string') { - pt = ctParseType(this.types[type]); - if (dispatch == 'read') - return (this.readEntry(pt, buffer, offset)); - else if (dispatch == 'write') - return (this.writeEntry(value, pt, buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } else { - if (dispatch == 'read') - return (this.readStruct(this.types[type], buffer, - offset)); - else if (dispatch == 'write') - return (this.writeStruct(value, this.types[type], - buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } - -}; - -/* - * [private] Try and read in the specific entry. - */ -CTypeParser.prototype.readEntry = function (type, buffer, offset) -{ - var parse, len; - - /* - * Because we want to special case char[]s this is unfortunately - * a bit uglier than it really should be. We want to special - * case char[]s so that we return a node buffer, thus they are a - * first class type where as all other arrays just call into a - * generic array routine which calls their data-specific routine - * the specified number of times. - * - * The valid dispatch options we have are: - * - Array and char => char[] handler - * - Generic array handler - * - Generic typedef handler - * - Basic type handler - */ - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - parse = this.types['char[]']['read'](len, - this.endian, buffer, offset); - else - parse = this.readArray(type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - parse = this.types[type['type']]['read'](this.endian, - buffer, offset); - else - parse = this.resolveTypedef(type['type'], 'read', - buffer, offset); - } - - return (parse); -}; - -/* - * [private] Read an array of data - */ -CTypeParser.prototype.readArray = function (type, length, buffer, offset) -{ - var ii, ent, pt; - var baseOffset = offset; - var ret = new Array(length); - pt = ctParseType(type); - - for (ii = 0; ii < length; ii++) { - ent = this.readEntry(pt, buffer, offset); - offset += ent['size']; - ret[ii] = ent['value']; - } - - return ({ value: ret, size: offset - baseOffset }); -}; - -/* - * [private] Read a single struct in. - */ -CTypeParser.prototype.readStruct = function (def, buffer, offset) -{ - var parse, ii, type, entry, key; - var baseOffset = offset; - var ret = {}; - - /* Walk it and handle doing what's necessary */ - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - /* Resolve all array values */ - type = ctParseType(ctResolveArray(entry['type'], ret)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - parse = this.readEntry(type, buffer, offset); - - offset += parse['size']; - ret[key] = parse['value']; - } - - return ({ value: ret, size: (offset-baseOffset)}); -}; - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -CTypeParser.prototype.readData = function (def, buffer, offset) -{ - /* Sanity check for arguments */ - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - /* Sanity check the object definition */ - ctCheckReq(def, this.types); - - return (this.readStruct(def, buffer, offset)['value']); -}; - -/* - * [private] Write out an array of data - */ -CTypeParser.prototype.writeArray = function (value, type, length, buffer, - offset) -{ - var ii, pt; - var baseOffset = offset; - if (!(value instanceof Array)) - throw (new Error('asked to write an array, but value is not ' + - 'an array')); - - if (value.length != length) - throw (new Error('asked to write array of length ' + length + - ' but that does not match value length: ' + value.length)); - - pt = ctParseType(type); - for (ii = 0; ii < length; ii++) - offset += this.writeEntry(value[ii], pt, buffer, offset); - - return (offset - baseOffset); -}; - -/* - * [private] Write the specific entry - */ -CTypeParser.prototype.writeEntry = function (value, type, buffer, offset) -{ - var len, ret; - - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - ret = this.types['char[]']['write'](value, len, - this.endian, buffer, offset); - else - ret = this.writeArray(value, type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - ret = this.types[type['type']]['write'](value, - this.endian, buffer, offset); - else - ret = this.resolveTypedef(type['type'], 'write', - buffer, offset, value); - } - - return (ret); -}; - -/* - * [private] Write a single struct out. - */ -CTypeParser.prototype.writeStruct = function (value, def, buffer, offset) -{ - var ii, entry, type, key; - var baseOffset = offset; - var vals = {}; - - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - type = ctParseType(ctResolveArray(entry['type'], vals)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - offset += this.writeEntry(value[ii], type, buffer, offset); - /* Now that we've written it out, we can use it for arrays */ - vals[key] = value[ii]; - } - - return (offset); -}; - -/* - * Unfortunately, we're stuck with the sins of an initial poor design. Because - * of that, we are going to have to support the old way of writing data via - * writeData. There we insert the values that you want to write into the - * definition. A little baroque. Internally, we use the new model. So we need to - * just get those values out of there. But to maintain the principle of least - * surprise, we're not going to modify the input data. - */ -function getValues(def) -{ - var ii, out, key; - out = []; - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - mod_assert.ok('value' in def[ii][key]); - out.push(def[ii][key]['value']); - } - - return (out); -} - -/* - * This is the second half of what we were born to do, write out the data - * itself. Historically this function required you to put your values in the - * definition section. This was not the smartest thing to do and a bit of an - * oversight to be honest. As such, this function now takes a values argument. - * If values is non-null and non-undefined, it will be used to determine the - * values. This means that the old method is still supported, but is no longer - * acceptable. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - * - * values An array of values to write. - */ -CTypeParser.prototype.writeData = function (def, buffer, offset, values) -{ - var hv; - - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - hv = (values != null && values != undefined); - if (hv) { - if (!Array.isArray(values)) - throw (new Error('missing values for writing')); - ctCheckReq(def, this.types); - } else { - ctCheckReq(def, this.types, [ 'value' ]); - } - - this.writeStruct(hv ? values : getValues(def), def, buffer, offset); -}; - -/* - * Functions to go to and from 64 bit numbers in a way that is compatible with - * Javascript limitations. There are two sets. One where the user is okay with - * an approximation and one where they are definitely not okay with an - * approximation. - */ - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -function toAbs64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - /* We have 20 bits worth of precision in this range */ - if (val[0] >= 0x100000) - throw (new Error('value would become approximated')); - - return (val[0] * Math.pow(2, 32) + val[1]); -} - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -function toApprox64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - return (Math.pow(2, 32) * val[0] + val[1]); -} - -function parseCTF(json, conf) -{ - var ctype = new CTypeParser(conf); - mod_ctf.ctfParseJson(json, ctype); - - return (ctype); -} - -/* - * Export the few things we actually want to. Currently this is just the CType - * Parser and ctio. - */ -exports.Parser = CTypeParser; -exports.toAbs64 = toAbs64; -exports.toApprox64 = toApprox64; - -exports.parseCTF = parseCTF; - -exports.ruint8 = mod_ctio.ruint8; -exports.ruint16 = mod_ctio.ruint16; -exports.ruint32 = mod_ctio.ruint32; -exports.ruint64 = mod_ctio.ruint64; -exports.wuint8 = mod_ctio.wuint8; -exports.wuint16 = mod_ctio.wuint16; -exports.wuint32 = mod_ctio.wuint32; -exports.wuint64 = mod_ctio.wuint64; - -exports.rsint8 = mod_ctio.rsint8; -exports.rsint16 = mod_ctio.rsint16; -exports.rsint32 = mod_ctio.rsint32; -exports.rsint64 = mod_ctio.rsint64; -exports.wsint8 = mod_ctio.wsint8; -exports.wsint16 = mod_ctio.wsint16; -exports.wsint32 = mod_ctio.wsint32; -exports.wsint64 = mod_ctio.wsint64; - -exports.rfloat = mod_ctio.rfloat; -exports.rdouble = mod_ctio.rdouble; -exports.wfloat = mod_ctio.wfloat; -exports.wdouble = mod_ctio.wdouble; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype deleted file mode 100644 index 3f94986a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype +++ /dev/null @@ -1,241 +0,0 @@ -'\" te -.\" Copyright (c) 2011, Robert Mustacchi. All Rights Reserved. -.\" Copyright (c) 2011, Joyent, Inc. All Rights Reserved. -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a copy -.\" of this software and associated documentation files (the "Software"), to -.\" deal in the Software without restriction, including without limitation the -.\" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -.\" sell copies of the Software, and to permit persons to whom the Software is -.\" furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -.\" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -.\" IN THE SOFTWARE. -.TH CTIO 3CTYPE "December 12, 2011" -.SH NAME -ctio, ruint8, ruint16, ruint32, ruint64, wuint8, wuint16, wuint32, wuint64, -rsint8, rsint16, rsint32, rsint64, wsint8, wsint16, wsint32, wsint64, rfloat, -rdouble, wfloat, wdouble \- integer and float operations -.SH SYNOPSIS -.LP -.nf -var mod_ctype = require('ctype'); - -\fBNumber\fR \fBmod_ctype.ruint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.ruint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.rsint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rfloat\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rdouble\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wfloat\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wdouble\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.SH DESCRIPTION -.sp -.LP -The argument \fIbuf\fR refers to a valid buffer (from calling new Buffer()). The -argument \fIendian\fR is either the string 'big' or 'little' and controls -whether the data in the buffer is interpreted as big or little endian. The argument -\fIoffset\fR indicates the starting index into the buffer to read or write. All -functions ensure that starting at \fIoffset\fR does not overflow the end of the -buffer. The argument \fIvalue\fR is a Number that is the valid type for the -specific function. All functions that take \fIvalue\fR as an argument, verify -that the passed value is valid. - -.SS "\fBruint8()\fR, \fBruint16()\fR, \fBruint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions read an 8, -16, and 32-bit unsigned value from \fIbuf\fR and return it. The value read is -influenced by the values of \fIoffset\fR and \fRendian\fI. - - -.SS "\fBrsint8()\fR, \fBrsint16()\fR, \fBrsint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions work just as -\fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR, except they return signed -integers. - -.SS "\fBruint64()\fR, \fBrsint64()\fR" -.sp -.LP -The \fBruint64()\fR and \fBrsint64()\fR functions read unsigned and signed 64 -bit integers respectively from \fBbuf\fR. Due to the limitations of ECMAScript's -\fBNumber\fR type, they cannot be stored as one value without a loss of -precision. Instead of returning the values as a single \fBNumber\fR, the -functions return an array of two numbers. The first entry always contains the -upper 32-bits and the second value contains the lower 32-bits. The lossy -transformation into a number would be \fIres[0]*Math.pow(2,32)+res[1]\fR. -Note that, unless an entry is zero, both array entries are guaranteed to have -the same sign. - -.SS "\fBwuint8()\fR, \fBwuint16()\fR, \fBwuint32()\fR" -.sp -.LP -The functions \fBwuint8()\fR, \fBwuint16()\fR, and \fBwuint32()\fR modify the -contents of \fBbuf\fR by writing an 8, 16, and 32-bit unsigned integer -respectively to \fBbuf\fR. It is illegal to pass a number that is not an integer -within the domain of the integer size, for example, for \fBwuint8()\fR the valid -range is \fB[0, 255]\fR. The value will be written in either big or little -endian format based upon the value of \fBendian\fR. - - -.SS "\fBwsint8()\fR, \fBwsint16()\fR, \fBwsint32()\fR" -.sp -.LP -The functions \fBwsint8()\fR, \fBwsint16()\fR, and \fBwsint32()\fR function -identically to the functions \fBwuint8()\fR, \fBwuint16()\fR, and -\fBwuint32()\fR except that they the valid domain for \fBvalue\fR is that of a -signed number instead of an unsigned number. For example the \fBwsint8()\fR has -a domain of \fB[-128, 127]\fR. - -.SS "\fBwuint64()\fR, \fBwsint64()\fR" -.sp -.LP -The functions \fBwuint64()\fR and \fBswint64()\fR write out 64-bit unsigned and -signed integers to \fBbuf\fR. The \fBvalue\fR argument must be in the same -format as described in \fBruint64()\fR and \fBrsint64()\fR. - -.SS "\fBrfloat()\fR, \fBrdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other read -functions, except that they read a single precision and double precision -IEEE-754 floating point value instead. - -.SS "\fBwfloat()\fR, \fBwdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other write -functions, except that the domain for a float is that of a single precision 4 -byte value. The domain for a double is any \fBNumber\fR in ECMAScript, which is -defined to be represented by a double. - -.SH ATTRIBUTES -.sp -.LP -See \fBattributes\fR(5) for descriptions of the following attributes: -.sp - -.sp -.TS -box; -c | c -l | l . -ATTRIBUTE TYPE ATTRIBUTE VALUE -_ -Interface Stability Committed -_ -MT-Level See below. -_ -Standard Not standardized. -.TE - -.sp -.LP - -All functions are MT-safe in so far as there aren't shared memory MT concerns in -most node programs. If one where to concoct such an environment, these functions -wouldn't be MT-safe. - -.SH SEE ALSO -.sp -.LP diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json deleted file mode 100644 index edcc649a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "ctype", - "version": "0.5.2", - "description": "read and write binary structures and data types", - "homepage": "https://github.com/rmustacc/node-ctype", - "author": { - "name": "Robert Mustacchi", - "email": "rm@fingolfin.org" - }, - "engines": { - "node": ">= 0.4" - }, - "main": "ctype.js", - "readme": "Node-CType is a way to read and write binary data in structured and easy to use\nformat. Its name comes from the C header file.\n\nTo get started, simply clone the repository or use npm to install it. Once it is\nthere, simply require it.\n\ngit clone git://github.com/rmustacc/node-ctype\nnpm install ctype\nvar mod_ctype = require('ctype')\n\n\nThere are two APIs that you can use, depending on what abstraction you'd like.\nThe low level API let's you read and write individual integers and floats from\nbuffers. The higher level API let's you read and write structures of these. To\nillustrate this, let's looks look at how we would read and write a binary\nencoded x,y point.\n\nIn C we would define this structure as follows:\n\ntypedef struct point {\n\tuint16_t\tp_x;\n\tuint16_t\tp_y;\n} point_t;\n\nTo read a binary encoded point from a Buffer, we first need to create a CType\nparser (where we specify the endian and other options) and add the typedef.\n\nvar parser = new mod_ctype.Parser({ endian: 'big' });\nparser.typedef('point_t', [\n\t{ x: { type: 'uint16_t' } },\n\t{ y: { type: 'uint16_t' } }\n]);\n\nFrom here, given a buffer buf and an offset into it, we can read a point.\n\nvar out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0);\nconsole.log(out);\n{ point: { x: 23, y: 42 } }\n\nAnother way to get the same information would be to use the low level methods.\nNote that these require you to manually deal with the offset. Here's how we'd\nget the same values of x and y from the buffer.\n\nvar x = mod_ctype.ruint16(buf, 'big', 0);\nvar y = mod_ctype.ruint16(buf, 'big', 2);\nconsole.log(x + ', ' + y);\n23, 42\n\nThe true power of this API comes from the ability to define and nest typedefs,\njust as you would in C. By default, the following types are defined by default.\nNote that they return a Number, unless indicated otherwise.\n\n * int8_t\n * int16_t\n * int32_t\n * int64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * uint8_t\n * uint16_t\n * uint32_t\n * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * float\n * double\n * char (either returns a buffer with that character or a uint8_t)\n * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)\n\n\nctf2json integration:\n\nNode-CType supports consuming the output of ctf2json. Once you read in a JSON file,\nall you have to do to add all the definitions it contains is:\n\nvar data, parser;\ndata = JSON.parse(parsedJSONData);\nparser = mod_ctype.parseCTF(data, { endian: 'big' });\n\nFor more documentation, see the file README.old. Full documentation is in the\nprocess of being rewritten as a series of manual pages which will be available\nin the repository and online for viewing.\n\nTo read the ctio manual page simple run, from the root of the workspace:\n\nman -Mman -s 3ctype ctio\n", - "readmeFilename": "README", - "_id": "ctype@0.5.2", - "_from": "ctype@0.5.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf deleted file mode 100755 index 845f367a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf +++ /dev/null @@ -1,129 +0,0 @@ -# -# Configuration File for JavaScript Lint 0.3.0 -# Developed by Matthias Miller (http://www.JavaScriptLint.com) -# -# This configuration file can be used to lint a collection of scripts, or to enable -# or disable warnings for scripts that are linted via the command line. -# - -### Warnings -# Enable or disable warnings based on requirements. -# Use "+WarningName" to display or "-WarningName" to suppress. -# -+no_return_value # function {0} does not always return a value -+duplicate_formal # duplicate formal argument {0} -+equal_as_assign # test for equality (==) mistyped as assignment (=)?{0} -+var_hides_arg # variable {0} hides argument -+redeclared_var # redeclaration of {0} {1} -+anon_no_return_value # anonymous function does not always return a value -+missing_semicolon # missing semicolon -+meaningless_block # meaningless block; curly braces have no impact -+comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+unreachable_code # unreachable code -+missing_break # missing break statement -+missing_break_for_last_case # missing break statement for last case in switch -+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement -+useless_void # use of the void type may be unnecessary (void is always undefined) --useless_quotes # quotation marks are unnecessary -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+use_of_label # use of label --block_without_braces # block statement without curly braces -+leading_decimal_point # leading decimal point may indicate a number or an object member -+trailing_decimal_point # trailing decimal point may indicate a number or an object member --octal_number # leading zeros make an octal number -+nested_comment # nested comment -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+empty_statement # empty statement or extra semicolon --missing_option_explicit # the "option explicit" control comment is missing -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+dup_option_explicit # duplicate "option explicit" control comment -+useless_assign # useless assignment -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent) -+missing_default_case # missing default case in switch statement -+duplicate_case_in_switch # duplicate case in switch statements -+default_not_at_end # the default case is not at the end of the switch statement -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+useless_comparison # useless comparison; comparing identical expressions -+with_statement # with statement hides undeclared variables; use temporary variable instead -+trailing_comma_in_array # extra comma is not recommended in array initializers -+assign_to_function_call # assignment to a function call -+parseint_missing_radix # parseInt missing radix parameter --unreferenced_argument # argument declared but never referenced: {name} - -### Output format -# Customize the format of the error message. -# __FILE__ indicates current file path -# __FILENAME__ indicates current file name -# __LINE__ indicates current line -# __ERROR__ indicates error message -# -# Visual Studio syntax (default): -+output-format __FILE__(__LINE__): __ERROR__ -# Alternative syntax: -#+output-format __FILE__:__LINE__: __ERROR__ - - -### Context -# Show the in-line position of the error. -# Use "+context" to display or "-context" to suppress. -# -+context - - -### Semicolons -# By default, assignments of an anonymous function to a variable or -# property (such as a function prototype) must be followed by a semicolon. -# -#+lambda_assign_requires_semicolon # deprecated setting - - -### Control Comments -# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for -# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is -# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason, -# although legacy control comments are enabled by default for backward compatibility. -# -+legacy_control_comments - - -### JScript Function Extensions -# JScript allows member functions to be defined like this: -# function MyObj() { /*constructor*/ } -# function MyObj.prototype.go() { /*member function*/ } -# -# It also allows events to be attached like this: -# function window::onload() { /*init page*/ } -# -# This is a Microsoft-only JavaScript extension. Enable this setting to allow them. -# -#-jscript_function_extensions # deprecated setting - - -### Defining identifiers -# By default, "option explicit" is enabled on a per-file basis. -# To enable this for all files, use "+always_use_option_explicit" --always_use_option_explicit - -# Define certain identifiers of which the lint is not aware. -# (Use this in conjunction with the "undeclared identifier" warning.) -# -# Common uses for webpages might be: -#+define window -#+define document -+define require -+define exports -+define console -+define Buffer -+define JSON - -### Files -# Specify which files to lint -# Use "+recurse" to enable recursion (disabled by default). -# To add a set of files, use "+process FileName", "+process Folder\Path\*.js", -# or "+process Folder\Path\*.htm". -# -#+process jsl-test.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle deleted file mode 100755 index 96c72b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle +++ /dev/null @@ -1,839 +0,0 @@ -#!/usr/bin/env perl -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# Copyright 2011 Joyent, Inc. All rights reserved. -# -# jsstyle - check for some common stylistic errors. -# -# jsstyle is a sort of "lint" for Javascript coding style. This tool is -# derived from the cstyle tool, used to check for the style used in the -# Solaris kernel, sometimes known as "Bill Joy Normal Form". -# -# There's a lot this can't check for, like proper indentation of code -# blocks. There's also a lot more this could check for. -# -# A note to the non perl literate: -# -# perl regular expressions are pretty much like egrep -# regular expressions, with the following special symbols -# -# \s any space character -# \S any non-space character -# \w any "word" character [a-zA-Z0-9_] -# \W any non-word character -# \d a digit [0-9] -# \D a non-digit -# \b word boundary (between \w and \W) -# \B non-word boundary -# - -require 5.0; -use IO::File; -use Getopt::Std; -use strict; - -my $usage = -"usage: jsstyle [-chvC] [-o constructs] file ... - -c check continuation indentation inside functions - -h perform heuristic checks that are sometimes wrong - -v verbose - -C don't check anything in header block comments - -o constructs - allow a comma-seperated list of optional constructs: - doxygen allow doxygen-style block comments (/** /*!) - splint allow splint-style lint comments (/*@ ... @*/) -"; - -my %opts; - -if (!getopts("cho:vC", \%opts)) { - print $usage; - exit 2; -} - -my $check_continuation = $opts{'c'}; -my $heuristic = $opts{'h'}; -my $verbose = $opts{'v'}; -my $ignore_hdr_comment = $opts{'C'}; - -my $doxygen_comments = 0; -my $splint_comments = 0; - -if (defined($opts{'o'})) { - for my $x (split /,/, $opts{'o'}) { - if ($x eq "doxygen") { - $doxygen_comments = 1; - } elsif ($x eq "splint") { - $splint_comments = 1; - } else { - print "jsstyle: unrecognized construct \"$x\"\n"; - print $usage; - exit 2; - } - } -} - -my ($filename, $line, $prev); # shared globals - -my $fmt; -my $hdr_comment_start; - -if ($verbose) { - $fmt = "%s: %d: %s\n%s\n"; -} else { - $fmt = "%s: %d: %s\n"; -} - -if ($doxygen_comments) { - # doxygen comments look like "/*!" or "/**"; allow them. - $hdr_comment_start = qr/^\s*\/\*[\!\*]?$/; -} else { - $hdr_comment_start = qr/^\s*\/\*$/; -} - -# Note, following must be in single quotes so that \s and \w work right. -my $lint_re = qr/\/\*(?: - jsl:\w+?|ARGSUSED[0-9]*|NOTREACHED|LINTLIBRARY|VARARGS[0-9]*| - CONSTCOND|CONSTANTCOND|CONSTANTCONDITION|EMPTY| - FALLTHRU|FALLTHROUGH|LINTED.*?|PRINTFLIKE[0-9]*| - PROTOLIB[0-9]*|SCANFLIKE[0-9]*|JSSTYLED.*? - )\*\//x; - -my $splint_re = qr/\/\*@.*?@\*\//x; - -my $err_stat = 0; # exit status - -if ($#ARGV >= 0) { - foreach my $arg (@ARGV) { - my $fh = new IO::File $arg, "r"; - if (!defined($fh)) { - printf "%s: cannot open\n", $arg; - } else { - &jsstyle($arg, $fh); - close $fh; - } - } -} else { - &jsstyle("<stdin>", *STDIN); -} -exit $err_stat; - -my $no_errs = 0; # set for JSSTYLED-protected lines - -sub err($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $line; - $err_stat = 1; - } -} - -sub err_prefix($$) { - my ($prevline, $error) = @_; - my $out = $prevline."\n".$line; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $out; - $err_stat = 1; - } -} - -sub err_prev($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $. - 1, $error, $prev; - $err_stat = 1; - } -} - -sub jsstyle($$) { - -my ($fn, $filehandle) = @_; -$filename = $fn; # share it globally - -my $in_cpp = 0; -my $next_in_cpp = 0; - -my $in_comment = 0; -my $in_header_comment = 0; -my $comment_done = 0; -my $in_function = 0; -my $in_function_header = 0; -my $in_declaration = 0; -my $note_level = 0; -my $nextok = 0; -my $nocheck = 0; - -my $in_string = 0; - -my ($okmsg, $comment_prefix); - -$line = ''; -$prev = ''; -reset_indent(); - -line: while (<$filehandle>) { - s/\r?\n$//; # strip return and newline - - # save the original line, then remove all text from within - # double or single quotes, we do not want to check such text. - - $line = $_; - - # - # C allows strings to be continued with a backslash at the end of - # the line. We translate that into a quoted string on the previous - # line followed by an initial quote on the next line. - # - # (we assume that no-one will use backslash-continuation with character - # constants) - # - $_ = '"' . $_ if ($in_string && !$nocheck && !$in_comment); - - # - # normal strings and characters - # - s/'([^\\']|\\.)*'/\'\'/g; - s/"([^\\"]|\\.)*"/\"\"/g; - - # - # detect string continuation - # - if ($nocheck || $in_comment) { - $in_string = 0; - } else { - # - # Now that all full strings are replaced with "", we check - # for unfinished strings continuing onto the next line. - # - $in_string = - (s/([^"](?:"")*)"([^\\"]|\\.)*\\$/$1""/ || - s/^("")*"([^\\"]|\\.)*\\$/""/); - } - - # - # figure out if we are in a cpp directive - # - $in_cpp = $next_in_cpp || /^\s*#/; # continued or started - $next_in_cpp = $in_cpp && /\\$/; # only if continued - - # strip off trailing backslashes, which appear in long macros - s/\s*\\$//; - - # an /* END JSSTYLED */ comment ends a no-check block. - if ($nocheck) { - if (/\/\* *END *JSSTYLED *\*\//) { - $nocheck = 0; - } else { - reset_indent(); - next line; - } - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if ($nextok) { - if ($okmsg) { - err($okmsg); - } - $nextok = 0; - $okmsg = 0; - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - $no_errs = 1; - } elsif ($no_errs) { - $no_errs = 0; - } - - # check length of line. - # first, a quick check to see if there is any chance of being too long. - if (($line =~ tr/\t/\t/) * 7 + length($line) > 80) { - # yes, there is a chance. - # replace tabs with spaces and check again. - my $eline = $line; - 1 while $eline =~ - s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; - if (length($eline) > 80) { - err("line > 80 characters"); - } - } - - # ignore NOTE(...) annotations (assumes NOTE is on lines by itself). - if ($note_level || /\b_?NOTE\s*\(/) { # if in NOTE or this is NOTE - s/[^()]//g; # eliminate all non-parens - $note_level += s/\(//g - length; # update paren nest level - next; - } - - # a /* BEGIN JSSTYLED */ comment starts a no-check block. - if (/\/\* *BEGIN *JSSTYLED *\*\//) { - $nocheck = 1; - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - if (/\/\/ *JSSTYLED/) { - /^.*\/\/ *JSSTYLED *(.*)$/; - $okmsg = $1; - $nextok = 1; - } - - # universal checks; apply to everything - if (/\t +\t/) { - err("spaces between tabs"); - } - if (/ \t+ /) { - err("tabs between spaces"); - } - if (/\s$/) { - err("space or tab at end of line"); - } - if (/[^ \t(]\/\*/ && !/\w\(\/\*.*\*\/\);/) { - err("comment preceded by non-blank"); - } - - # is this the beginning or ending of a function? - # (not if "struct foo\n{\n") - if (/^{$/ && $prev =~ /\)\s*(const\s*)?(\/\*.*\*\/\s*)?\\?$/) { - $in_function = 1; - $in_declaration = 1; - $in_function_header = 0; - $prev = $line; - next line; - } - if (/^}\s*(\/\*.*\*\/\s*)*$/) { - if ($prev =~ /^\s*return\s*;/) { - err_prev("unneeded return at end of function"); - } - $in_function = 0; - reset_indent(); # we don't check between functions - $prev = $line; - next line; - } - if (/^\w*\($/) { - $in_function_header = 1; - } - - # a blank line terminates the declarations within a function. - # XXX - but still a problem in sub-blocks. - if ($in_declaration && /^$/) { - $in_declaration = 0; - } - - if ($comment_done) { - $in_comment = 0; - $in_header_comment = 0; - $comment_done = 0; - } - # does this looks like the start of a block comment? - if (/$hdr_comment_start/) { - if (!/^\t*\/\*/) { - err("block comment not indented by tabs"); - } - $in_comment = 1; - /^(\s*)\//; - $comment_prefix = $1; - if ($comment_prefix eq "") { - $in_header_comment = 1; - } - $prev = $line; - next line; - } - # are we still in the block comment? - if ($in_comment) { - if (/^$comment_prefix \*\/$/) { - $comment_done = 1; - } elsif (/\*\//) { - $comment_done = 1; - err("improper block comment close") - unless ($ignore_hdr_comment && $in_header_comment); - } elsif (!/^$comment_prefix \*[ \t]/ && - !/^$comment_prefix \*$/) { - err("improper block comment") - unless ($ignore_hdr_comment && $in_header_comment); - } - } - - if ($in_header_comment && $ignore_hdr_comment) { - $prev = $line; - next line; - } - - # check for errors that might occur in comments and in code. - - # allow spaces to be used to draw pictures in header comments. - #if (/[^ ] / && !/".* .*"/ && !$in_header_comment) { - # err("spaces instead of tabs"); - #} - #if (/^ / && !/^ \*[ \t\/]/ && !/^ \*$/ && - # (!/^ \w/ || $in_function != 0)) { - # err("indent by spaces instead of tabs"); - #} - if (/^ {2,}/ && !/^ [^ ]/) { - err("indent by spaces instead of tabs"); - } - if (/^\t+ [^ \t\*]/ || /^\t+ \S/ || /^\t+ \S/) { - err("continuation line not indented by 4 spaces"); - } - - if (/^\s*\/\*./ && !/^\s*\/\*.*\*\// && !/$hdr_comment_start/) { - err("improper first line of block comment"); - } - - if ($in_comment) { # still in comment, don't do further checks - $prev = $line; - next line; - } - - if ((/[^(]\/\*\S/ || /^\/\*\S/) && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank after open comment"); - } - if (/\S\*\/[^)]|\S\*\/$/ && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank before close comment"); - } - if (/\/\/\S/) { # C++ comments - err("missing blank after start comment"); - } - # check for unterminated single line comments, but allow them when - # they are used to comment out the argument list of a function - # declaration. - if (/\S.*\/\*/ && !/\S.*\/\*.*\*\// && !/\(\/\*/) { - err("unterminated single line comment"); - } - - if (/^(#else|#endif|#include)(.*)$/) { - $prev = $line; - next line; - } - - # - # delete any comments and check everything else. Note that - # ".*?" is a non-greedy match, so that we don't get confused by - # multiple comments on the same line. - # - s/\/\*.*?\*\///g; - s/\/\/.*$//; # C++ comments - - # delete any trailing whitespace; we have already checked for that. - s/\s*$//; - - # following checks do not apply to text in comments. - if (/"/) { - err("literal string using double-quote instead of single"); - } - - if (/[^=!<>\s][!<>=]=/ || /[^<>!=][!<>=]==?[^\s,=]/ || - (/[^->]>[^,=>\s]/ && !/[^->]>$/) || - (/[^<]<[^,=<\s]/ && !/[^<]<$/) || - /[^<\s]<[^<]/ || /[^->\s]>[^>]/) { - err("missing space around relational operator"); - } - if (/\S>>=/ || /\S<<=/ || />>=\S/ || /<<=\S/ || /\S[-+*\/&|^%]=/ || - (/[^-+*\/&|^%!<>=\s]=[^=]/ && !/[^-+*\/&|^%!<>=\s]=$/) || - (/[^!<>=]=[^=\s]/ && !/[^!<>=]=$/)) { - # XXX - should only check this for C++ code - # XXX - there are probably other forms that should be allowed - if (!/\soperator=/) { - err("missing space around assignment operator"); - } - } - if (/[,;]\S/ && !/\bfor \(;;\)/) { - err("comma or semicolon followed by non-blank"); - } - # allow "for" statements to have empty "while" clauses - if (/\s[,;]/ && !/^[\t]+;$/ && !/^\s*for \([^;]*; ;[^;]*\)/) { - err("comma or semicolon preceded by blank"); - } - if (/^\s*(&&|\|\|)/) { - err("improper boolean continuation"); - } - if (/\S *(&&|\|\|)/ || /(&&|\|\|) *\S/) { - err("more than one space around boolean operator"); - } - if (/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\(/) { - err("missing space between keyword and paren"); - } - if (/(\b(catch|for|if|with|while|switch|return)\b.*){2,}/) { - # multiple "case" and "sizeof" allowed - err("more than one keyword on line"); - } - if (/\b(delete|typeof|instanceOf|with|throw|catch|new|function|in|for|if|while|switch|return|case)\s\s+\(/ && - !/^#if\s+\(/) { - err("extra space between keyword and paren"); - } - # try to detect "func (x)" but not "if (x)" or - # "#define foo (x)" or "int (*func)();" - if (/\w\s\(/) { - my $s = $_; - # strip off all keywords on the line - s/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\s\(/XXX(/g; - s/#elif\s\(/XXX(/g; - s/^#define\s+\w+\s+\(/XXX(/; - # do not match things like "void (*f)();" - # or "typedef void (func_t)();" - s/\w\s\(+\*/XXX(*/g; - s/\b(void)\s+\(+/XXX(/og; - if (/\w\s\(/) { - err("extra space between function name and left paren"); - } - $_ = $s; - } - - if (/^\s*return\W[^;]*;/ && !/^\s*return\s*\(.*\);/) { - err("unparenthesized return expression"); - } - if (/\btypeof\b/ && !/\btypeof\s*\(.*\)/) { - err("unparenthesized typeof expression"); - } - if (/\(\s/) { - err("whitespace after left paren"); - } - # allow "for" statements to have empty "continue" clauses - if (/\s\)/ && !/^\s*for \([^;]*;[^;]*; \)/) { - err("whitespace before right paren"); - } - if (/^\s*\(void\)[^ ]/) { - err("missing space after (void) cast"); - } - if (/\S{/ && !/({|\(){/) { - err("missing space before left brace"); - } - if ($in_function && /^\s+{/ && - ($prev =~ /\)\s*$/ || $prev =~ /\bstruct\s+\w+$/)) { - err("left brace starting a line"); - } - if (/}(else|while)/) { - err("missing space after right brace"); - } - if (/}\s\s+(else|while)/) { - err("extra space after right brace"); - } - if (/^\s+#/) { - err("preprocessor statement not in column 1"); - } - if (/^#\s/) { - err("blank after preprocessor #"); - } - - # - # We completely ignore, for purposes of indentation: - # * lines outside of functions - # * preprocessor lines - # - if ($check_continuation && $in_function && !$in_cpp) { - process_indent($_); - } - - if ($heuristic) { - # cannot check this everywhere due to "struct {\n...\n} foo;" - if ($in_function && !$in_declaration && - /}./ && !/}\s+=/ && !/{.*}[;,]$/ && !/}(\s|)*$/ && - !/} (else|while)/ && !/}}/) { - err("possible bad text following right brace"); - } - # cannot check this because sub-blocks in - # the middle of code are ok - if ($in_function && /^\s+{/) { - err("possible left brace starting a line"); - } - } - if (/^\s*else\W/) { - if ($prev =~ /^\s*}$/) { - err_prefix($prev, - "else and right brace should be on same line"); - } - } - $prev = $line; -} - -if ($prev eq "") { - err("last line in file is blank"); -} - -} - -# -# Continuation-line checking -# -# The rest of this file contains the code for the continuation checking -# engine. It's a pretty simple state machine which tracks the expression -# depth (unmatched '('s and '['s). -# -# Keep in mind that the argument to process_indent() has already been heavily -# processed; all comments have been replaced by control-A, and the contents of -# strings and character constants have been elided. -# - -my $cont_in; # currently inside of a continuation -my $cont_off; # skipping an initializer or definition -my $cont_noerr; # suppress cascading errors -my $cont_start; # the line being continued -my $cont_base; # the base indentation -my $cont_first; # this is the first line of a statement -my $cont_multiseg; # this continuation has multiple segments - -my $cont_special; # this is a C statement (if, for, etc.) -my $cont_macro; # this is a macro -my $cont_case; # this is a multi-line case - -my @cont_paren; # the stack of unmatched ( and [s we've seen - -sub -reset_indent() -{ - $cont_in = 0; - $cont_off = 0; -} - -sub -delabel($) -{ - # - # replace labels with tabs. Note that there may be multiple - # labels on a line. - # - local $_ = $_[0]; - - while (/^(\t*)( *(?:(?:\w+\s*)|(?:case\b[^:]*)): *)(.*)$/) { - my ($pre_tabs, $label, $rest) = ($1, $2, $3); - $_ = $pre_tabs; - while ($label =~ s/^([^\t]*)(\t+)//) { - $_ .= "\t" x (length($2) + length($1) / 8); - } - $_ .= ("\t" x (length($label) / 8)).$rest; - } - - return ($_); -} - -sub -process_indent($) -{ - require strict; - local $_ = $_[0]; # preserve the global $_ - - s///g; # No comments - s/\s+$//; # Strip trailing whitespace - - return if (/^$/); # skip empty lines - - # regexps used below; keywords taking (), macros, and continued cases - my $special = '(?:(?:\}\s*)?else\s+)?(?:if|for|while|switch)\b'; - my $macro = '[A-Z_][A-Z_0-9]*\('; - my $case = 'case\b[^:]*$'; - - # skip over enumerations, array definitions, initializers, etc. - if ($cont_off <= 0 && !/^\s*$special/ && - (/(?:(?:\b(?:enum|struct|union)\s*[^\{]*)|(?:\s+=\s*)){/ || - (/^\s*{/ && $prev =~ /=\s*(?:\/\*.*\*\/\s*)*$/))) { - $cont_in = 0; - $cont_off = tr/{/{/ - tr/}/}/; - return; - } - if ($cont_off) { - $cont_off += tr/{/{/ - tr/}/}/; - return; - } - - if (!$cont_in) { - $cont_start = $line; - - if (/^\t* /) { - err("non-continuation indented 4 spaces"); - $cont_noerr = 1; # stop reporting - } - $_ = delabel($_); # replace labels with tabs - - # check if the statement is complete - return if (/^\s*\}?$/); - return if (/^\s*\}?\s*else\s*\{?$/); - return if (/^\s*do\s*\{?$/); - return if (/{$/); - return if (/}[,;]?$/); - - # Allow macros on their own lines - return if (/^\s*[A-Z_][A-Z_0-9]*$/); - - # cases we don't deal with, generally non-kosher - if (/{/) { - err("stuff after {"); - return; - } - - # Get the base line, and set up the state machine - /^(\t*)/; - $cont_base = $1; - $cont_in = 1; - @cont_paren = (); - $cont_first = 1; - $cont_multiseg = 0; - - # certain things need special processing - $cont_special = /^\s*$special/? 1 : 0; - $cont_macro = /^\s*$macro/? 1 : 0; - $cont_case = /^\s*$case/? 1 : 0; - } else { - $cont_first = 0; - - # Strings may be pulled back to an earlier (half-)tabstop - unless ($cont_noerr || /^$cont_base / || - (/^\t*(?: )?(?:gettext\()?\"/ && !/^$cont_base\t/)) { - err_prefix($cont_start, - "continuation should be indented 4 spaces"); - } - } - - my $rest = $_; # keeps the remainder of the line - - # - # The split matches 0 characters, so that each 'special' character - # is processed separately. Parens and brackets are pushed and - # popped off the @cont_paren stack. For normal processing, we wait - # until a ; or { terminates the statement. "special" processing - # (if/for/while/switch) is allowed to stop when the stack empties, - # as is macro processing. Case statements are terminated with a : - # and an empty paren stack. - # - foreach $_ (split /[^\(\)\[\]\{\}\;\:]*/) { - next if (length($_) == 0); - - # rest contains the remainder of the line - my $rxp = "[^\Q$_\E]*\Q$_\E"; - $rest =~ s/^$rxp//; - - if (/\(/ || /\[/) { - push @cont_paren, $_; - } elsif (/\)/ || /\]/) { - my $cur = $_; - tr/\)\]/\(\[/; - - my $old = (pop @cont_paren); - if (!defined($old)) { - err("unexpected '$cur'"); - $cont_in = 0; - last; - } elsif ($old ne $_) { - err("'$cur' mismatched with '$old'"); - $cont_in = 0; - last; - } - - # - # If the stack is now empty, do special processing - # for if/for/while/switch and macro statements. - # - next if (@cont_paren != 0); - if ($cont_special) { - if ($rest =~ /^\s*{?$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*;$/) { - err("empty if/for/while body ". - "not on its own line"); - $cont_in = 0; - last; - } - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - # We've finished this section, start - # processing the next. - goto section_ended; - } - if ($cont_macro) { - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - } - } elsif (/\;/) { - if ($cont_case) { - err("unexpected ;"); - } elsif (!$cont_special) { - err("unexpected ;") if (@cont_paren != 0); - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*special/) { - err("if/for/while/switch not started ". - "on its own line"); - } - goto section_ended; - } - } elsif (/\{/) { - err("{ while in parens/brackets") if (@cont_paren != 0); - err("stuff after {") if ($rest =~ /[^\s}]/); - $cont_in = 0; - last; - } elsif (/\}/) { - err("} while in parens/brackets") if (@cont_paren != 0); - if (!$cont_special && $rest !~ /^\s*(while|else)\b/) { - if ($rest =~ /^$/) { - err("unexpected }"); - } else { - err("stuff after }"); - } - $cont_in = 0; - last; - } - } elsif (/\:/ && $cont_case && @cont_paren == 0) { - err("stuff after multi-line case") if ($rest !~ /$^/); - $cont_in = 0; - last; - } - next; -section_ended: - # End of a statement or if/while/for loop. Reset - # cont_special and cont_macro based on the rest of the - # line. - $cont_special = ($rest =~ /^\s*$special/)? 1 : 0; - $cont_macro = ($rest =~ /^\s*$macro/)? 1 : 0; - $cont_case = 0; - next; - } - $cont_noerr = 0 if (!$cont_in); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json deleted file mode 100644 index 29d7bd89..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563626, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "float" ] - }, -"data": - [ - { "name": "float", "float": { "length": 4 } } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json deleted file mode 100644 index f9773a14..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563631, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "int" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json deleted file mode 100644 index e0ee5e0d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json +++ /dev/null @@ -1,104 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563573, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "psinfo_t" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } }, - { "name": "char", "integer": { "length": 1, "signed": true } }, - { "name": "unsigned short", "integer": { "length": 2, "signed": false } }, - { "name": "long", "integer": { "length": 4, "signed": true } }, - { "name": "unsigned", "integer": { "length": 4, "signed": false } }, - { "name": "size_t", "typedef": "unsigned" }, - { "name": "unsigned long", "integer": { "length": 4, "signed": false } }, - { "name": "time_t", "typedef": "long" }, - { "name": "struct timespec", "struct": [ - { "name": "tv_sec", "type": "time_t" }, - { "name": "tv_nsec", "type": "long" } - ] }, - { "name": "zoneid_t", "typedef": "long" }, - { "name": "taskid_t", "typedef": "long" }, - { "name": "dev_t", "typedef": "unsigned long" }, - { "name": "uid_t", "typedef": "unsigned" }, - { "name": "gid_t", "typedef": "unsigned" }, - { "name": "timestruc_t", "typedef": "struct timespec" }, - { "name": "short", "integer": { "length": 2, "signed": true } }, - { "name": "projid_t", "typedef": "long" }, - { "name": "ushort_t", "typedef": "unsigned short" }, - { "name": "poolid_t", "typedef": "long" }, - { "name": "uintptr_t", "typedef": "unsigned" }, - { "name": "id_t", "typedef": "long" }, - { "name": "pid_t", "typedef": "long" }, - { "name": "processorid_t", "typedef": "int" }, - { "name": "psetid_t", "typedef": "int" }, - { "name": "struct lwpsinfo", "struct": [ - { "name": "pr_flag", "type": "int" }, - { "name": "pr_lwpid", "type": "id_t" }, - { "name": "pr_addr", "type": "uintptr_t" }, - { "name": "pr_wchan", "type": "uintptr_t" }, - { "name": "pr_stype", "type": "char" }, - { "name": "pr_state", "type": "char" }, - { "name": "pr_sname", "type": "char" }, - { "name": "pr_nice", "type": "char" }, - { "name": "pr_syscall", "type": "short" }, - { "name": "pr_oldpri", "type": "char" }, - { "name": "pr_cpu", "type": "char" }, - { "name": "pr_pri", "type": "int" }, - { "name": "pr_pctcpu", "type": "ushort_t" }, - { "name": "pr_pad", "type": "ushort_t" }, - { "name": "pr_start", "type": "timestruc_t" }, - { "name": "pr_time", "type": "timestruc_t" }, - { "name": "pr_clname", "type": "char [8]" }, - { "name": "pr_name", "type": "char [16]" }, - { "name": "pr_onpro", "type": "processorid_t" }, - { "name": "pr_bindpro", "type": "processorid_t" }, - { "name": "pr_bindpset", "type": "psetid_t" }, - { "name": "pr_lgrp", "type": "int" }, - { "name": "pr_filler", "type": "int [4]" } - ] }, - { "name": "lwpsinfo_t", "typedef": "struct lwpsinfo" }, - { "name": "struct psinfo", "struct": [ - { "name": "pr_flag", "type": "int" }, - { "name": "pr_nlwp", "type": "int" }, - { "name": "pr_pid", "type": "pid_t" }, - { "name": "pr_ppid", "type": "pid_t" }, - { "name": "pr_pgid", "type": "pid_t" }, - { "name": "pr_sid", "type": "pid_t" }, - { "name": "pr_uid", "type": "uid_t" }, - { "name": "pr_euid", "type": "uid_t" }, - { "name": "pr_gid", "type": "gid_t" }, - { "name": "pr_egid", "type": "gid_t" }, - { "name": "pr_addr", "type": "uintptr_t" }, - { "name": "pr_size", "type": "size_t" }, - { "name": "pr_rssize", "type": "size_t" }, - { "name": "pr_pad1", "type": "size_t" }, - { "name": "pr_ttydev", "type": "dev_t" }, - { "name": "pr_pctcpu", "type": "ushort_t" }, - { "name": "pr_pctmem", "type": "ushort_t" }, - { "name": "pr_start", "type": "timestruc_t" }, - { "name": "pr_time", "type": "timestruc_t" }, - { "name": "pr_ctime", "type": "timestruc_t" }, - { "name": "pr_fname", "type": "char [16]" }, - { "name": "pr_psargs", "type": "char [80]" }, - { "name": "pr_wstat", "type": "int" }, - { "name": "pr_argc", "type": "int" }, - { "name": "pr_argv", "type": "uintptr_t" }, - { "name": "pr_envp", "type": "uintptr_t" }, - { "name": "pr_dmodel", "type": "char" }, - { "name": "pr_pad2", "type": "char [3]" }, - { "name": "pr_taskid", "type": "taskid_t" }, - { "name": "pr_projid", "type": "projid_t" }, - { "name": "pr_nzomb", "type": "int" }, - { "name": "pr_poolid", "type": "poolid_t" }, - { "name": "pr_zoneid", "type": "zoneid_t" }, - { "name": "pr_contract", "type": "id_t" }, - { "name": "pr_filler", "type": "int [1]" }, - { "name": "pr_lwp", "type": "lwpsinfo_t" } - ] }, - { "name": "psinfo_t", "typedef": "struct psinfo" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json deleted file mode 100644 index e0542ff4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json +++ /dev/null @@ -1,19 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563648, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "timestruc_t" ] - }, -"data": - [ - { "name": "long", "integer": { "length": 4, "signed": true } }, - { "name": "time_t", "typedef": "long" }, - { "name": "struct timespec", "struct": [ - { "name": "tv_sec", "type": "time_t" }, - { "name": "tv_nsec", "type": "long" } - ] }, - { "name": "timestruc_t", "typedef": "struct timespec" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js deleted file mode 100644 index d6a52cbb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Test several conditions that should always cause us to throw. - */ -var mod_assert = require('assert'); -var mod_ctype = require('../../ctype.js'); - -var cases = [ -{ json: { }, msg: 'bad JSON - no metadata or data' }, -{ json: { metadata: {} }, msg: 'bad JSON - bad metadata section' }, -{ json: { metadata: { 'JSON version': [] } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': 2 } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': '100.20' } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': '1.0' } }, - msg: 'missing data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: 1 }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: 1.1 }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: '1.1' }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: {} }, - msg: 'invalid data section' } -]; - -function test() -{ - var ii; - - for (ii = 0; ii < cases.length; ii++) { - mod_assert.throws(function () { - mod_ctype.parseCTF(cases[ii].json); - }, Error, cases[ii].msg); - } -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js deleted file mode 100644 index f2144994..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./float.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), {}); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js deleted file mode 100644 index 0ec0f769..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./int.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'int': 'int32_t' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js deleted file mode 100644 index ca1a544c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js +++ /dev/null @@ -1,17 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -/* - * This is too unwieldly to actually write out. Just make sure we can parse it - * without errrors. - */ -function test() -{ - var data; - - data = JSON.parse(mod_fs.readFileSync('./psinfo.json').toString()); - mod_ctype.parseCTF(data, { endian: 'big' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js deleted file mode 100644 index c62f41f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js +++ /dev/null @@ -1,18 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./struct.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'long': 'int32_t', - 'time_t': 'long', - 'timestruc_t': 'struct timespec', - 'struct timespec': [ { 'tv_sec': { 'type': 'time_t' } }, - { 'tv_nsec': { 'type': 'long' } } ] }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js deleted file mode 100644 index 9006cd1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js +++ /dev/null @@ -1,15 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./typedef.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'bar_t': 'int', - 'int': 'int32_t' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json deleted file mode 100644 index 35ddb50d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json +++ /dev/null @@ -1,14 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316302348, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "bar_t" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } }, - { "name": "bar_t", "typedef": "int" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js deleted file mode 100644 index 2c9504a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js +++ /dev/null @@ -1,767 +0,0 @@ -/* - * Battery of tests to break our floating point implementation. Oh ho ho. - * - * There are a few useful ways to generate the expected output. The first is - * just write a C program and write raw bytes out and inspect with xxd. Remember - * to consider whether or not you're on a big endian or little endian machine. - * Another useful site I found to help with some of this was: - * - * http://babbage.cs.qc.edu/IEEE-754/ - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testfloat() -{ - var buffer = new Buffer(4); - /* Start off with some of the easy ones: +zero */ - buffer[0] = 0; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'big', 0)); - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'little', 0)); - - /* Test -0 */ - buffer[0] = 0x80; - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = buffer[0]; - buffer[0] = 0; - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'little', 0)); - - /* Catch +infin */ - buffer[0] = 0x7f; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = 0x7f; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rfloat(buffer, 'litle', 0)); - - /* Catch -infin */ - buffer[0] = 0xff; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = 0xff; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rfloat(buffer, 'litle', 0)); - - /* Catch NaN */ - - buffer[0] = 0x7f; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'big', 0))); - buffer[3] = 0x7f; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'little', 0))); - - /* Catch -infin */ - buffer[0] = 0xff; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'big', 0))); - buffer[3] = 0xff; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'little', 0))); - - /* On to some basic tests */ - /* 1.125 */ - buffer[0] = 0x3f; - buffer[1] = 0x90; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(1.125, mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x3f; - buffer[2] = 0x90; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(1.125, mod_ctype.rfloat(buffer, 'little', 0)); - - /* ff34a2b0 -2.4010576103645774e+38 */ - buffer[0] = 0xff; - buffer[1] = 0x34; - buffer[2] = 0xa2; - buffer[3] = 0xb0; - ASSERT.equal(-2.4010576103645774e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0xff; - buffer[2] = 0x34; - buffer[1] = 0xa2; - buffer[0] = 0xb0; - ASSERT.equal(-2.4010576103645774e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Denormalized tests */ - - /* 0003f89a +/- 3.6468792534053364e-40 */ - buffer[0] = 0x00; - buffer[1] = 0x03; - buffer[2] = 0xf8; - buffer[3] = 0x9a; - ASSERT.equal(3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x03; - buffer[1] = 0xf8; - buffer[0] = 0x9a; - ASSERT.equal(3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x03; - buffer[2] = 0xf8; - buffer[3] = 0x9a; - ASSERT.equal(-3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x03; - buffer[1] = 0xf8; - buffer[0] = 0x9a; - ASSERT.equal(-3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'little', 0)); - - - /* Maximum and minimum normalized and denormalized values */ - - /* Largest normalized number +/- 3.4028234663852886e+38 */ - - buffer[0] = 0x7f; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x7f; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(-3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0xff; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Smallest normalied number +/- 1.1754943508222875e-38 */ - buffer[0] = 0x00; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(-1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(-1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - - /* Smallest denormalized number 1.401298464324817e-45 */ - buffer[0] = 0x00; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x01; - ASSERT.equal(1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x01; - ASSERT.equal(-1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(-1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Largest denormalized value +/- 1.1754942106924411e-38 */ - buffer[0] = 0x00; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(-1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Do some quick offset testing */ - buffer = new Buffer(6); - buffer[0] = 0x7f; - buffer[1] = 0x4e; - buffer[2] = 0x8a; - buffer[3] = 0x79; - buffer[4] = 0xcd; - buffer[5] = 0x3f; - - ASSERT.equal(2.745399582697325e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - ASSERT.equal(1161619072, - mod_ctype.rfloat(buffer, 'big', 1)); - ASSERT.equal(-1.2027516403607578e-32, - mod_ctype.rfloat(buffer, 'big', 2)); - - ASSERT.equal(8.97661320504413e+34, - mod_ctype.rfloat(buffer, 'little', 0)); - ASSERT.equal(-261661920, - mod_ctype.rfloat(buffer, 'little', 1)); - ASSERT.equal(1.605271577835083, - mod_ctype.rfloat(buffer, 'little', 2)); - -} - -function testdouble() -{ - var buffer = new Buffer(10); - - /* Check 0 */ - buffer[0] = 0; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'big', 0)); - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'big', 0)); - buffer[7] = 0x80; - buffer[6] = 0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Check NaN */ - buffer[0] = 0x7f; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'big', 0))); - - buffer[7] = 0x7f; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'little', 0))); - - buffer[0] = 0xff; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'big', 0))); - - buffer[7] = 0xff; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'little', 0))); - - /* pos inf */ - buffer[0] = 0x7f; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7f; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* neg inf */ - buffer[0] = 0xff; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xff; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Simple normalized values */ - - /* +/- 1.125 */ - buffer[0] = 0x3f; - buffer[1] = 0xf2; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(1.125, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x3f; - buffer[6] = 0xf2; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(1.125, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xbf; - buffer[1] = 0xf2; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(-1.125, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xbf; - buffer[6] = 0xf2; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(-1.125, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* +/- 1.4397318913736026e+283 */ - buffer[0] = 0x7a; - buffer[1] = 0xb8; - buffer[2] = 0xc9; - buffer[3] = 0x34; - buffer[4] = 0x72; - buffer[5] = 0x16; - buffer[6] = 0xf9; - buffer[7] = 0x0e; - ASSERT.equal(1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7a; - buffer[6] = 0xb8; - buffer[5] = 0xc9; - buffer[4] = 0x34; - buffer[3] = 0x72; - buffer[2] = 0x16; - buffer[1] = 0xf9; - buffer[0] = 0x0e; - ASSERT.equal(1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xfa; - buffer[1] = 0xb8; - buffer[2] = 0xc9; - buffer[3] = 0x34; - buffer[4] = 0x72; - buffer[5] = 0x16; - buffer[6] = 0xf9; - buffer[7] = 0x0e; - ASSERT.equal(-1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xfa; - buffer[6] = 0xb8; - buffer[5] = 0xc9; - buffer[4] = 0x34; - buffer[3] = 0x72; - buffer[2] = 0x16; - buffer[1] = 0xf9; - buffer[0] = 0x0e; - ASSERT.equal(-1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Denormalized values */ - /* +/- 8.82521232268344e-309 */ - buffer[0] = 0x00; - buffer[1] = 0x06; - buffer[2] = 0x58; - buffer[3] = 0x94; - buffer[4] = 0x13; - buffer[5] = 0x27; - buffer[6] = 0x8a; - buffer[7] = 0xcd; - ASSERT.equal(8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x06; - buffer[5] = 0x58; - buffer[4] = 0x94; - buffer[3] = 0x13; - buffer[2] = 0x27; - buffer[1] = 0x8a; - buffer[0] = 0xcd; - ASSERT.equal(8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x06; - buffer[2] = 0x58; - buffer[3] = 0x94; - buffer[4] = 0x13; - buffer[5] = 0x27; - buffer[6] = 0x8a; - buffer[7] = 0xcd; - ASSERT.equal(-8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x06; - buffer[5] = 0x58; - buffer[4] = 0x94; - buffer[3] = 0x13; - buffer[2] = 0x27; - buffer[1] = 0x8a; - buffer[0] = 0xcd; - ASSERT.equal(-8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Edge cases, maximum and minimum values */ - - /* Smallest denormalized value 5e-324 */ - buffer[0] = 0x00; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x01; - ASSERT.equal(5e-324, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x00; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(5e-324, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x01; - ASSERT.equal(-5e-324, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x00; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(-5e-324, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Largest denormalized value 2.225073858507201e-308 */ - buffer[0] = 0x00; - buffer[1] = 0x0f; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x0f; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x0f; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(-2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x0f; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Smallest normalized value 2.2250738585072014e-308 */ - buffer[0] = 0x00; - buffer[1] = 0x10; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x00; - ASSERT.equal(2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x10; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x10; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x00; - ASSERT.equal(-2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x10; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(-2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Largest normalized value 1.7976931348623157e+308 */ - buffer[0] = 0x7f; - buffer[1] = 0xef; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7f; - buffer[6] = 0xef; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0xef; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(-1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xff; - buffer[6] = 0xef; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Try offsets */ - buffer[0] = 0xde; - buffer[1] = 0xad; - buffer[2] = 0xbe; - buffer[3] = 0xef; - buffer[4] = 0xba; - buffer[5] = 0xdd; - buffer[6] = 0xca; - buffer[7] = 0xfe; - buffer[8] = 0x16; - buffer[9] = 0x79; - - ASSERT.equal(-1.1885958404126936e+148, - mod_ctype.rdouble(buffer, 'big', 0)); - ASSERT.equal(-2.4299184080448593e-88, - mod_ctype.rdouble(buffer, 'big', 1)); - ASSERT.equal(-0.000015130017658081283, - mod_ctype.rdouble(buffer, 'big', 2)); - - ASSERT.equal(-5.757458694845505e+302, - mod_ctype.rdouble(buffer, 'little', 0)); - ASSERT.equal(6.436459604192476e-198, - mod_ctype.rdouble(buffer, 'little', 1)); - ASSERT.equal(1.9903745632417286e+275, - mod_ctype.rdouble(buffer, 'little', 2)); -} - -testfloat(); -testdouble(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js deleted file mode 100644 index b5fd95cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js +++ /dev/null @@ -1,753 +0,0 @@ -/* - * Another place to find bugs that may yet plague us. This time with writing out - * floats to arrays. We are lazy and did basically just take the opposite of our - * test code to read in values. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - - -/* - * A useful thing to keep around for debugging - * console.log('buffer[0]: ' + buffer[0].toString(16)); - * console.log('buffer[1]: ' + buffer[1].toString(16)); - * console.log('buffer[2]: ' + buffer[2].toString(16)); - * console.log('buffer[3]: ' + buffer[3].toString(16)); - * console.log('buffer[4]: ' + buffer[4].toString(16)); - * console.log('buffer[5]: ' + buffer[5].toString(16)); - * console.log('buffer[6]: ' + buffer[6].toString(16)); - * console.log('buffer[7]: ' + buffer[7].toString(16)); - */ - -function testfloat() -{ - var buffer = new Buffer(4); - mod_ctype.wfloat(0, 'big', buffer, 0); - /* Start off with some of the easy ones: +zero */ - ASSERT.equal(0, buffer[0]); - ASSERT.equal(0, buffer[1]); - ASSERT.equal(0, buffer[2]); - ASSERT.equal(0, buffer[3]); - mod_ctype.wfloat(0, 'little', buffer, 0); - ASSERT.equal(0, buffer[0]); - ASSERT.equal(0, buffer[1]); - ASSERT.equal(0, buffer[2]); - ASSERT.equal(0, buffer[3]); - - /* Catch +infin */ - mod_ctype.wfloat(Number.POSITIVE_INFINITY, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(Number.POSITIVE_INFINITY, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Catch -infin */ - mod_ctype.wfloat(Number.NEGATIVE_INFINITY, 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(Number.NEGATIVE_INFINITY, 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Catch NaN */ - - /* - * NaN Is a litle weird in its requirements, so we're going to encode a - * bit of how we actually implement it into this test. Probably not the - * best, since technically the sign is a don't care and the mantissa - * needs to just be non-zero. - */ - mod_ctype.wfloat(NaN, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x17, buffer[3]); - mod_ctype.wfloat(NaN, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x17, buffer[0]); - - /* On to some basic tests */ - /* 1.125 */ - mod_ctype.wfloat(1.125, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x90, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(1.125, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x90, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wfloat(1.0000001192092896, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.0000001192092896, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(1.0000001192092896, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.0000001192092896, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(2.3283067140944524e-10, 'big', buffer, 0); - ASSERT.equal(0x2f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(2.3283067140944524e-10, 'little', buffer, 0); - ASSERT.equal(0x2f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - /* ff34a2b0 -2.4010576103645774e+38 */ - mod_ctype.wfloat(-2.4010576103645774e+38, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x34, buffer[1]); - ASSERT.equal(0xa2, buffer[2]); - ASSERT.equal(0xb0, buffer[3]); - mod_ctype.wfloat(-2.4010576103645774e+38, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x34, buffer[2]); - ASSERT.equal(0xa2, buffer[1]); - ASSERT.equal(0xb0, buffer[0]); - - /* Denormalized tests */ - - /* 0003f89a +/- 3.6468792534053364e-40 */ - mod_ctype.wfloat(3.6468792534053364e-40, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x03, buffer[1]); - ASSERT.equal(0xf8, buffer[2]); - ASSERT.equal(0x9a, buffer[3]); - mod_ctype.wfloat(3.6468792534053364e-40, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x03, buffer[2]); - ASSERT.equal(0xf8, buffer[1]); - ASSERT.equal(0x9a, buffer[0]); - - mod_ctype.wfloat(-3.6468792534053364e-40, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x03, buffer[1]); - ASSERT.equal(0xf8, buffer[2]); - ASSERT.equal(0x9a, buffer[3]); - mod_ctype.wfloat(-3.6468792534053364e-40, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x03, buffer[2]); - ASSERT.equal(0xf8, buffer[1]); - ASSERT.equal(0x9a, buffer[0]); - - /* Maximum and minimum normalized and denormalized values */ - - /* Largest normalized number +/- 3.4028234663852886e+38 */ - - mod_ctype.wfloat(3.4028234663852886e+38, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(3.4028234663852886e+38, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wfloat(-3.4028234663852886e+38, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(-3.4028234663852886e+38, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - /* Smallest normalied number +/- 1.1754943508222875e-38 */ - - mod_ctype.wfloat(1.1754943508222875e-38, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(1.1754943508222875e-38, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wfloat(-1.1754943508222875e-38, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(-1.1754943508222875e-38, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Smallest denormalized number 1.401298464324817e-45 */ - mod_ctype.wfloat(1.401298464324817e-45, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.401298464324817e-45, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(-1.401298464324817e-45, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(-1.401298464324817e-45, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - /* Largest denormalized value +/- 1.1754942106924411e-38 */ - - mod_ctype.wfloat(1.1754942106924411e-38, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(1.1754942106924411e-38, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wfloat(-1.1754942106924411e-38, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(-1.1754942106924411e-38, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - /* Do some quick offset testing */ - buffer = new Buffer(6); - mod_ctype.wfloat(-1.2027516403607578e-32, - 'big', buffer, 2); - ASSERT.equal(0x8a, buffer[2]); - ASSERT.equal(0x79, buffer[3]); - ASSERT.equal(0xcd, buffer[4]); - ASSERT.equal(0x3f, buffer[5]); - - mod_ctype.wfloat(-1.2027516403607578e-32, - 'little', buffer, 2); - ASSERT.equal(0x8a, buffer[5]); - ASSERT.equal(0x79, buffer[4]); - ASSERT.equal(0xcd, buffer[3]); - ASSERT.equal(0x3f, buffer[2]); - -} - -function testdouble() -{ - var buffer = new Buffer(10); - - /* Check 0 */ - mod_ctype.wdouble(0, 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(0, 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Check NaN */ - /* Similar to floats we are only generating a subset of values */ - mod_ctype.wdouble(NaN, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x17, buffer[7]); - mod_ctype.wdouble(NaN, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x17, buffer[0]); - - /* pos inf */ - mod_ctype.wdouble(Number.POSITIVE_INFINITY, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(Number.POSITIVE_INFINITY, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* neg inf */ - mod_ctype.wdouble(Number.NEGATIVE_INFINITY, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(Number.NEGATIVE_INFINITY, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Simple normalized values */ - - /* +/- 1.125 */ - mod_ctype.wdouble(1.125, - 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0xf2, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(1.125, - 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[7]); - ASSERT.equal(0xf2, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wdouble(-1.125, - 'big', buffer, 0); - ASSERT.equal(0xbf, buffer[0]); - ASSERT.equal(0xf2, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(-1.125, - 'little', buffer, 0); - ASSERT.equal(0xbf, buffer[7]); - ASSERT.equal(0xf2, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - - /* +/- 1.4397318913736026e+283 */ - mod_ctype.wdouble(1.4397318913736026e+283, - 'big', buffer, 0); - ASSERT.equal(0x7a, buffer[0]); - ASSERT.equal(0xb8, buffer[1]); - ASSERT.equal(0xc9, buffer[2]); - ASSERT.equal(0x34, buffer[3]); - ASSERT.equal(0x72, buffer[4]); - ASSERT.equal(0x16, buffer[5]); - ASSERT.equal(0xf9, buffer[6]); - ASSERT.equal(0x0e, buffer[7]); - - mod_ctype.wdouble(1.4397318913736026e+283, - 'little', buffer, 0); - ASSERT.equal(0x7a, buffer[7]); - ASSERT.equal(0xb8, buffer[6]); - ASSERT.equal(0xc9, buffer[5]); - ASSERT.equal(0x34, buffer[4]); - ASSERT.equal(0x72, buffer[3]); - ASSERT.equal(0x16, buffer[2]); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x0e, buffer[0]); - - mod_ctype.wdouble(-1.4397318913736026e+283, - 'big', buffer, 0); - ASSERT.equal(0xfa, buffer[0]); - ASSERT.equal(0xb8, buffer[1]); - ASSERT.equal(0xc9, buffer[2]); - ASSERT.equal(0x34, buffer[3]); - ASSERT.equal(0x72, buffer[4]); - ASSERT.equal(0x16, buffer[5]); - ASSERT.equal(0xf9, buffer[6]); - ASSERT.equal(0x0e, buffer[7]); - - mod_ctype.wdouble(-1.4397318913736026e+283, - 'little', buffer, 0); - ASSERT.equal(0xfa, buffer[7]); - ASSERT.equal(0xb8, buffer[6]); - ASSERT.equal(0xc9, buffer[5]); - ASSERT.equal(0x34, buffer[4]); - ASSERT.equal(0x72, buffer[3]); - ASSERT.equal(0x16, buffer[2]); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x0e, buffer[0]); - - /* Denormalized values */ - /* +/- 8.82521232268344e-309 */ - mod_ctype.wdouble(8.82521232268344e-309, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x06, buffer[1]); - ASSERT.equal(0x58, buffer[2]); - ASSERT.equal(0x94, buffer[3]); - ASSERT.equal(0x13, buffer[4]); - ASSERT.equal(0x27, buffer[5]); - ASSERT.equal(0x8a, buffer[6]); - ASSERT.equal(0xcd, buffer[7]); - - mod_ctype.wdouble(8.82521232268344e-309, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x06, buffer[6]); - ASSERT.equal(0x58, buffer[5]); - ASSERT.equal(0x94, buffer[4]); - ASSERT.equal(0x13, buffer[3]); - ASSERT.equal(0x27, buffer[2]); - ASSERT.equal(0x8a, buffer[1]); - ASSERT.equal(0xcd, buffer[0]); - - mod_ctype.wdouble(-8.82521232268344e-309, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x06, buffer[1]); - ASSERT.equal(0x58, buffer[2]); - ASSERT.equal(0x94, buffer[3]); - ASSERT.equal(0x13, buffer[4]); - ASSERT.equal(0x27, buffer[5]); - ASSERT.equal(0x8a, buffer[6]); - ASSERT.equal(0xcd, buffer[7]); - - mod_ctype.wdouble(-8.82521232268344e-309, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x06, buffer[6]); - ASSERT.equal(0x58, buffer[5]); - ASSERT.equal(0x94, buffer[4]); - ASSERT.equal(0x13, buffer[3]); - ASSERT.equal(0x27, buffer[2]); - ASSERT.equal(0x8a, buffer[1]); - ASSERT.equal(0xcd, buffer[0]); - - - /* Edge cases, maximum and minimum values */ - - /* Smallest denormalized value 5e-324 */ - mod_ctype.wdouble(5e-324, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x01, buffer[7]); - - mod_ctype.wdouble(5e-324, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wdouble(-5e-324, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x01, buffer[7]); - - mod_ctype.wdouble(-5e-324, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - - - /* Largest denormalized value 2.225073858507201e-308 */ - mod_ctype.wdouble(2.225073858507201e-308, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x0f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(2.225073858507201e-308, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x0f, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wdouble(-2.225073858507201e-308, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x0f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(-2.225073858507201e-308, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x0f, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - - /* Smallest normalized value 2.2250738585072014e-308 */ - mod_ctype.wdouble(2.2250738585072014e-308, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x10, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(2.2250738585072014e-308, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x10, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wdouble(-2.2250738585072014e-308, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x10, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(-2.2250738585072014e-308, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x10, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - - /* Largest normalized value 1.7976931348623157e+308 */ - mod_ctype.wdouble(1.7976931348623157e+308, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xef, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(1.7976931348623157e+308, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xef, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wdouble(-1.7976931348623157e+308, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xef, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(-1.7976931348623157e+308, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[7]); - ASSERT.equal(0xef, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - - /* Try offsets */ - buffer[0] = 0xde; - buffer[1] = 0xad; - buffer[2] = 0xbe; - buffer[3] = 0xef; - buffer[4] = 0xba; - buffer[5] = 0xdd; - buffer[6] = 0xca; - buffer[7] = 0xfe; - buffer[8] = 0x16; - buffer[9] = 0x79; - - mod_ctype.wdouble(-0.000015130017658081283, - 'big', buffer, 2); - ASSERT.equal(0xbe, buffer[2]); - ASSERT.equal(0xef, buffer[3]); - ASSERT.equal(0xba, buffer[4]); - ASSERT.equal(0xdd, buffer[5]); - ASSERT.equal(0xca, buffer[6]); - ASSERT.equal(0xfe, buffer[7]); - ASSERT.equal(0x16, buffer[8]); - ASSERT.equal(0x79, buffer[9]); - - mod_ctype.wdouble(-0.000015130017658081283, - 'little', buffer, 2); - ASSERT.equal(0xbe, buffer[9]); - ASSERT.equal(0xef, buffer[8]); - ASSERT.equal(0xba, buffer[7]); - ASSERT.equal(0xdd, buffer[6]); - ASSERT.equal(0xca, buffer[5]); - ASSERT.equal(0xfe, buffer[4]); - ASSERT.equal(0x16, buffer[3]); - ASSERT.equal(0x79, buffer[2]); -} - -testfloat(); -testdouble(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js deleted file mode 100644 index 1ffdac09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js +++ /dev/null @@ -1,638 +0,0 @@ -/* - * Test our ability to read and write signed 64-bit integers. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testRead() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - data[6] = 0xff; - data[7] = 0xff; - data[8] = 0x89; - data[9] = 0x11; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x32654256, res[0]); - ASSERT.equal(0x23ffffff, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x65425623, res[0]); - ASSERT.equal(0xffffff89, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x425623ff, res[0]); - ASSERT.equal(0xffff8911, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(-0x000000dc, res[0]); - ASSERT.equal(-0xa9bd9ace, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(-0x76000000, res[0]); - ASSERT.equal(-0xdca9bd9b, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x1189ffff, res[0]); - ASSERT.equal(0xff235642, res[1]); - - data.fill(0x00); - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - - data.fill(0xff); - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - - data[0] = 0x80; - data[1] = 0x00; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x00; - data[5] = 0x00; - data[6] = 0x00; - data[7] = 0x00; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(-0x80000000, res[0]); - ASSERT.equal(0, res[1]); - - - data[7] = 0x80; - data[6] = 0x00; - data[5] = 0x00; - data[4] = 0x00; - data[3] = 0x00; - data[2] = 0x00; - data[1] = 0x00; - data[0] = 0x00; - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(-0x80000000, res[0]); - ASSERT.equal(0, res[1]); - - data[0] = 0x80; - data[1] = 0x00; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x00; - data[5] = 0x00; - data[6] = 0x00; - data[7] = 0x01; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(-0x7fffffff, res[0]); - ASSERT.equal(-0xffffffff, res[1]); - - -} - -function testWriteZero() -{ - var data, buf; - buf = new Buffer(10); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); - - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); -} - -/* - * Also include tests that are going to force us to go into a negative value and - * insure that it's written correctly. - */ -function testWrite() -{ - var data, buf; - - buf = new Buffer(10); - data = [ 0x234456, 0x87 ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x23, buf[1]); - ASSERT.equal(0x44, buf[2]); - ASSERT.equal(0x56, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x87, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x23, buf[2]); - ASSERT.equal(0x44, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x87, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x23, buf[3]); - ASSERT.equal(0x44, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x87, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x87, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x44, buf[5]); - ASSERT.equal(0x23, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x87, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x44, buf[6]); - ASSERT.equal(0x23, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x87, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x56, buf[6]); - ASSERT.equal(0x44, buf[7]); - ASSERT.equal(0x23, buf[8]); - ASSERT.equal(0x00, buf[9]); - - data = [0x3421, 0x34abcdba]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x34, buf[2]); - ASSERT.equal(0x21, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0xab, buf[5]); - ASSERT.equal(0xcd, buf[6]); - ASSERT.equal(0xba, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xab, buf[6]); - ASSERT.equal(0xcd, buf[7]); - ASSERT.equal(0xba, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xab, buf[7]); - ASSERT.equal(0xcd, buf[8]); - ASSERT.equal(0xba, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0xba, buf[0]); - ASSERT.equal(0xcd, buf[1]); - ASSERT.equal(0xab, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xba, buf[1]); - ASSERT.equal(0xcd, buf[2]); - ASSERT.equal(0xab, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xba, buf[2]); - ASSERT.equal(0xcd, buf[3]); - ASSERT.equal(0xab, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x21, buf[6]); - ASSERT.equal(0x34, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x00, buf[9]); - - - data = [ -0x80000000, 0 ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x80, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x80, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - data = [ -0x7fffffff, -0xffffffff ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x80, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x01, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x01, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x80, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - data = [ 0x0, -0x1]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0xff, buf[4]); - ASSERT.equal(0xff, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0xff, buf[4]); - ASSERT.equal(0xff, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); -} - -/* - * Make sure we catch invalid writes. - */ -function testWriteInvalid() -{ - var data, buf; - - /* Buffer too small */ - buf = new Buffer(4); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 0); - }, Error, 'buffer too small'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 0); - }, Error, 'buffer too small'); - - /* Beyond the end of the buffer */ - buf = new Buffer(12); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 11); - }, Error, 'write beyond end of buffer'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 11); - }, Error, 'write beyond end of buffer'); - - /* Write fractional values */ - buf = new Buffer(12); - data = [ 3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, 3.3 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, -3.3 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, -2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, -2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - /* Signs don't match */ - buf = new Buffer(12); - data = [ 0x800000, -0x32 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x800000, 0x32 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - /* Write values that are too large */ - buf = new Buffer(12); - data = [ 0x80000000, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x7fffffff, 0x100000000 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x00, 0x800000000 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0xffffffffff, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x23, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x80000000, -0xfff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x80000004, -0xfff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); -} - - -testRead(); -testWrite(); -testWriteZero(); -testWriteInvalid(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js deleted file mode 100644 index 5236d268..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Tests to verify we're reading in signed integers correctly - */ -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * Test 8 bit signed integers - */ -function test8() -{ - var data = new Buffer(4); - - data[0] = 0x23; - ASSERT.equal(0x23, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(0x23, mod_ctype.rsint8(data, 'little', 0)); - - data[0] = 0xff; - ASSERT.equal(-1, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(-1, mod_ctype.rsint8(data, 'little', 0)); - - data[0] = 0x87; - data[1] = 0xab; - data[2] = 0x7c; - data[3] = 0xef; - ASSERT.equal(-121, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(-85, mod_ctype.rsint8(data, 'big', 1)); - ASSERT.equal(124, mod_ctype.rsint8(data, 'big', 2)); - ASSERT.equal(-17, mod_ctype.rsint8(data, 'big', 3)); - ASSERT.equal(-121, mod_ctype.rsint8(data, 'little', 0)); - ASSERT.equal(-85, mod_ctype.rsint8(data, 'little', 1)); - ASSERT.equal(124, mod_ctype.rsint8(data, 'little', 2)); - ASSERT.equal(-17, mod_ctype.rsint8(data, 'little', 3)); -} - -function test16() -{ - var buffer = new Buffer(6); - buffer[0] = 0x16; - buffer[1] = 0x79; - ASSERT.equal(0x1679, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(0x7916, mod_ctype.rsint16(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0x80; - ASSERT.equal(-128, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(-32513, mod_ctype.rsint16(buffer, 'little', 0)); - - /* test offset with weenix */ - buffer[0] = 0x77; - buffer[1] = 0x65; - buffer[2] = 0x65; - buffer[3] = 0x6e; - buffer[4] = 0x69; - buffer[5] = 0x78; - ASSERT.equal(0x7765, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'big', 1)); - ASSERT.equal(0x656e, mod_ctype.rsint16(buffer, 'big', 2)); - ASSERT.equal(0x6e69, mod_ctype.rsint16(buffer, 'big', 3)); - ASSERT.equal(0x6978, mod_ctype.rsint16(buffer, 'big', 4)); - ASSERT.equal(0x6577, mod_ctype.rsint16(buffer, 'little', 0)); - ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'little', 1)); - ASSERT.equal(0x6e65, mod_ctype.rsint16(buffer, 'little', 2)); - ASSERT.equal(0x696e, mod_ctype.rsint16(buffer, 'little', 3)); - ASSERT.equal(0x7869, mod_ctype.rsint16(buffer, 'little', 4)); -} - -function test32() -{ - var buffer = new Buffer(6); - buffer[0] = 0x43; - buffer[1] = 0x53; - buffer[2] = 0x16; - buffer[3] = 0x79; - ASSERT.equal(0x43531679, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(0x79165343, mod_ctype.rsint32(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0xfe; - buffer[2] = 0xef; - buffer[3] = 0xfa; - ASSERT.equal(-69638, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(-84934913, mod_ctype.rsint32(buffer, 'little', 0)); - - buffer[0] = 0x42; - buffer[1] = 0xc3; - buffer[2] = 0x95; - buffer[3] = 0xa9; - buffer[4] = 0x36; - buffer[5] = 0x17; - ASSERT.equal(0x42c395a9, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(-1013601994, mod_ctype.rsint32(buffer, 'big', 1)); - ASSERT.equal(-1784072681, mod_ctype.rsint32(buffer, 'big', 2)); - ASSERT.equal(-1449802942, mod_ctype.rsint32(buffer, 'little', 0)); - ASSERT.equal(917083587, mod_ctype.rsint32(buffer, 'little', 1)); - ASSERT.equal(389458325, mod_ctype.rsint32(buffer, 'little', 2)); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js deleted file mode 100644 index 5488177b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Test to make sure that we properly are erroring whenever we try to write - * beyond the size of the integer. - */ - -var mod_ctio = require('../../../ctio.js'); -var mod_assert = require('assert'); -var tb = new Buffer(16); /* Largest buffer we'll need */ - -var cases = [ - { func: - function () { - mod_ctio.wsint8(0x80, 'big', tb, 0); - }, test: '+int8_t' }, - { func: - function () { - mod_ctio.wsint8(-0x81, 'big', tb, 0); - }, test: '-int8_t' }, - - { func: - function () { - mod_ctio.wsint16(0x8000, 'big', tb, 0); - }, test: '+int16_t' }, - { func: - function () { - mod_ctio.wsint16(-0x8001, 'big', tb, 0); - }, test: '-int16_t' }, - { func: - function () { - mod_ctio.wsint32(0x80000000, 'big', tb, 0); - }, test: '+int32_t' }, - { func: - function () { - mod_ctio.wsint32(-0x80000001, 'big', tb, 0); - }, test: '-int32_t' }, - { func: - function () { - mod_ctio.wsint64([ 0x80000000, 0 ], 'big', tb, 0); - }, test: '+int64_t' }, - { func: - function () { - mod_ctio.wsint64([ -0x80000000, -1 ], 'big', tb, 0); - }, test: '-int64_t' } -]; - -function test() -{ - var ii; - for (ii = 0; ii < cases.length; ii++) - mod_assert.throws(cases[ii]['func'], Error, cases[ii]['test']); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js deleted file mode 100644 index 98b6a32a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Tests to verify we're writing signed integers correctly - */ -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function test8() -{ - var buffer = new Buffer(4); - mod_ctype.wsint8(0x23, 'big', buffer, 0); - mod_ctype.wsint8(0x23, 'little', buffer, 1); - mod_ctype.wsint8(-5, 'big', buffer, 2); - mod_ctype.wsint8(-5, 'little', buffer, 3); - - ASSERT.equal(0x23, buffer[0]); - ASSERT.equal(0x23, buffer[1]); - ASSERT.equal(0xfb, buffer[2]); - ASSERT.equal(0xfb, buffer[3]); - - /* Make sure we handle truncation correctly */ - ASSERT.throws(function () { - mod_ctype.wsint8(0xabc, 'big', buffer, 0); - }); - ASSERT.throws(function () { - mod_ctype.wsint8(0xabc, 'little', buffer, 0); - }); -} - -function test16() -{ - var buffer = new Buffer(6); - mod_ctype.wsint16(0x0023, 'big', buffer, 0); - mod_ctype.wsint16(0x0023, 'little', buffer, 2); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x23, buffer[1]); - ASSERT.equal(0x23, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wsint16(-5, 'big', buffer, 0); - mod_ctype.wsint16(-5, 'little', buffer, 2); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xfb, buffer[1]); - ASSERT.equal(0xfb, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - - mod_ctype.wsint16(-1679, 'big', buffer, 1); - mod_ctype.wsint16(-1679, 'little', buffer, 3); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x71, buffer[2]); - ASSERT.equal(0x71, buffer[3]); - ASSERT.equal(0xf9, buffer[4]); -} - -function test32() -{ - var buffer = new Buffer(8); - mod_ctype.wsint32(0x23, 'big', buffer, 0); - mod_ctype.wsint32(0x23, 'little', buffer, 4); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x23, buffer[3]); - ASSERT.equal(0x23, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wsint32(-5, 'big', buffer, 0); - mod_ctype.wsint32(-5, 'little', buffer, 4); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xfb, buffer[3]); - ASSERT.equal(0xfb, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wsint32(-805306713, 'big', buffer, 0); - mod_ctype.wsint32(-805306713, 'litle', buffer, 4); - ASSERT.equal(0xcf, buffer[0]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xfe, buffer[2]); - ASSERT.equal(0xa7, buffer[3]); - ASSERT.equal(0xa7, buffer[4]); - ASSERT.equal(0xfe, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xcf, buffer[7]); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js deleted file mode 100644 index cf66ac7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Test our ability to read and write unsigned 64-bit integers. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testRead() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - data[6] = 0xff; - data[7] = 0xff; - data[8] = 0x89; - data[9] = 0x11; - res = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(0x32654256, res[0]); - ASSERT.equal(0x23ffffff, res[1]); - res = mod_ctype.ruint64(data, 'big', 1); - ASSERT.equal(0x65425623, res[0]); - ASSERT.equal(0xffffff89, res[1]); - res = mod_ctype.ruint64(data, 'big', 2); - ASSERT.equal(0x425623ff, res[0]); - ASSERT.equal(0xffff8911, res[1]); - res = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(0xffffff23, res[0]); - ASSERT.equal(0x56426532, res[1]); - res = mod_ctype.ruint64(data, 'little', 1); - ASSERT.equal(0x89ffffff, res[0]); - ASSERT.equal(0x23564265, res[1]); - res = mod_ctype.ruint64(data, 'little', 2); - ASSERT.equal(0x1189ffff, res[0]); - ASSERT.equal(0xff235642, res[1]); - -} - -function testReadOver() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x80; - data[1] = 0xff; - data[2] = 0x80; - data[3] = 0xff; - data[4] = 0x80; - data[5] = 0xff; - data[6] = 0x80; - data[7] = 0xff; - data[8] = 0x80; - data[9] = 0xff; - res = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'big', 1); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); - res = mod_ctype.ruint64(data, 'big', 2); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); - res = mod_ctype.ruint64(data, 'little', 1); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'little', 2); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); -} - -function testWriteZero() -{ - var data, buf; - buf = new Buffer(10); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); - - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); -} - -/* - * Also include tests that are going to force us to go into a negative value and - * insure that it's written correctly. - */ -function testWrite() -{ - var data, buf; - - buf = new Buffer(10); - data = [ 0x234456, 0x87 ]; - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x23, buf[1]); - ASSERT.equal(0x44, buf[2]); - ASSERT.equal(0x56, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x87, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x23, buf[2]); - ASSERT.equal(0x44, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x87, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x23, buf[3]); - ASSERT.equal(0x44, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x87, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0x87, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x44, buf[5]); - ASSERT.equal(0x23, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x87, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x44, buf[6]); - ASSERT.equal(0x23, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x87, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x56, buf[6]); - ASSERT.equal(0x44, buf[7]); - ASSERT.equal(0x23, buf[8]); - ASSERT.equal(0x00, buf[9]); - - data = [0xffff3421, 0x34abcdba]; - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0x34, buf[2]); - ASSERT.equal(0x21, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0xab, buf[5]); - ASSERT.equal(0xcd, buf[6]); - ASSERT.equal(0xba, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xab, buf[6]); - ASSERT.equal(0xcd, buf[7]); - ASSERT.equal(0xba, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xab, buf[7]); - ASSERT.equal(0xcd, buf[8]); - ASSERT.equal(0xba, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0xba, buf[0]); - ASSERT.equal(0xcd, buf[1]); - ASSERT.equal(0xab, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xba, buf[1]); - ASSERT.equal(0xcd, buf[2]); - ASSERT.equal(0xab, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0xff, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xba, buf[2]); - ASSERT.equal(0xcd, buf[3]); - ASSERT.equal(0xab, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x21, buf[6]); - ASSERT.equal(0x34, buf[7]); - ASSERT.equal(0xff, buf[8]); - ASSERT.equal(0xff, buf[9]); -} - -/* - * Make sure we catch invalid writes. - */ -function testWriteInvalid() -{ - var data, buf; - - /* Buffer too small */ - buf = new Buffer(4); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 0); - }, Error, 'buffer too small'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 0); - }, Error, 'buffer too small'); - - /* Beyond the end of the buffer */ - buf = new Buffer(12); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 11); - }, Error, 'write beyond end of buffer'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 11); - }, Error, 'write beyond end of buffer'); - - /* Write negative values */ - buf = new Buffer(12); - data = [ -3, 0 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - data = [ 0, -3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - data = [ -3, -3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - - /* Write fractional values */ - buf = new Buffer(12); - data = [ 3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, 3.3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - /* Write values that are too large */ - buf = new Buffer(12); - data = [ 0xffffffffff, 23 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0xffffffffff, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x23, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); -} - - -testRead(); -testReadOver(); -testWriteZero(); -testWrite(); -testWriteInvalid(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js deleted file mode 100644 index 87ae59b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js +++ /dev/null @@ -1,81 +0,0 @@ -/* - * A battery of tests for sucessful round-trip between writes and reads - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - - -/* - * What the heck, let's just test every value for 8-bits. - */ - -function test8() { - var data = new Buffer(1); - var i; - for (i = 0; i < 256; i++) { - mod_ctype.wuint8(i, 'big', data, 0); - ASSERT.equal(i, mod_ctype.ruint8(data, 'big', 0)); - mod_ctype.wuint8(i, 'little', data, 0); - ASSERT.equal(i, mod_ctype.ruint8(data, 'little', 0)); - } - ASSERT.ok(true); -} - -/* - * Test a random sample of 256 values in the 16-bit unsigned range - */ - -function test16() { - var data = new Buffer(2); - var i = 0; - for (i = 0; i < 256; i++) { - var value = Math.round(Math.random() * Math.pow(2, 16)); - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(value, mod_ctype.ruint16(data, 'big', 0)); - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(value, mod_ctype.ruint16(data, 'little', 0)); - } -} - -/* - * Test a random sample of 256 values in the 32-bit unsigned range - */ - -function test32() { - var data = new Buffer(4); - var i = 0; - for (i = 0; i < 256; i++) { - var value = Math.round(Math.random() * Math.pow(2, 32)); - mod_ctype.wuint32(value, 'big', data, 0); - ASSERT.equal(value, mod_ctype.ruint32(data, 'big', 0)); - mod_ctype.wuint32(value, 'little', data, 0); - ASSERT.equal(value, mod_ctype.ruint32(data, 'little', 0)); - } -} - -/* - * Test a random sample of 256 values in the 64-bit unsigned range - */ - -function test64() { - var data = new Buffer(8); - var i = 0; - for (i = 0; i < 256; i++) { - var low = Math.round(Math.random() * Math.pow(2, 32)); - var high = Math.round(Math.random() * Math.pow(2, 32)); - mod_ctype.wuint64([high, low], 'big', data, 0); - var result = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(high, result[0]); - ASSERT.equal(low, result[1]); - mod_ctype.wuint64([high, low], 'little', data, 0); - result = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(high, result[0]); - ASSERT.equal(low, result[1]); - } -} - -exports.test8 = test8; -exports.test16 = test16; -exports.test32 = test32; -exports.test64 = test64; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js deleted file mode 100644 index b67c077f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js +++ /dev/null @@ -1,95 +0,0 @@ -/* - * A battery of tests to help us read a series of uints - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * We need to check the following things: - * - We are correctly resolving big endian (doesn't mean anything for 8 bit) - * - Correctly resolving little endian (doesn't mean anything for 8 bit) - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test8() -{ - var data = new Buffer(4); - data[0] = 23; - data[1] = 23; - data[2] = 23; - data[3] = 23; - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 0)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 0)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 1)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 1)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 2)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 2)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 3)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 3)); - data[0] = 255; /* If it became a signed int, would be -1 */ - ASSERT.equal(255, mod_ctype.ruint8(data, 'big', 0)); - ASSERT.equal(255, mod_ctype.ruint8(data, 'little', 0)); -} - -/* - * Test 16 bit unsigned integers. We need to verify the same set as 8 bit, only - * now some of the issues actually matter: - * - We are correctly resolving big endian - * - Correctly resolving little endian - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test16() -{ - var data = new Buffer(4); - /* Test signed values first */ - data[0] = 0; - data[1] = 0x23; - data[2] = 0x42; - data[3] = 0x3f; - - ASSERT.equal(0x23, mod_ctype.ruint16(data, 'big', 0)); - ASSERT.equal(0x2342, mod_ctype.ruint16(data, 'big', 1)); - ASSERT.equal(0x423f, mod_ctype.ruint16(data, 'big', 2)); - - ASSERT.equal(0x2300, mod_ctype.ruint16(data, 'little', 0)); - ASSERT.equal(0x4223, mod_ctype.ruint16(data, 'little', 1)); - ASSERT.equal(0x3f42, mod_ctype.ruint16(data, 'little', 2)); - - data[0] = 0xfe; - data[1] = 0xfe; - - ASSERT.equal(0xfefe, mod_ctype.ruint16(data, 'big', 0)); - ASSERT.equal(0xfefe, mod_ctype.ruint16(data, 'little', 0)); -} - -/* - * Test 32 bit unsigned integers. We need to verify the same set as 8 bit, only - * now some of the issues actually matter: - * - We are correctly resolving big endian - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test32() -{ - var data = new Buffer(8); - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - - ASSERT.equal(0x32654256, mod_ctype.ruint32(data, 'big', 0)); - ASSERT.equal(0x65425623, mod_ctype.ruint32(data, 'big', 1)); - ASSERT.equal(0x425623ff, mod_ctype.ruint32(data, 'big', 2)); - - ASSERT.equal(0x56426532, mod_ctype.ruint32(data, 'little', 0)); - ASSERT.equal(0x23564265, mod_ctype.ruint32(data, 'little', 1)); - ASSERT.equal(0xff235642, mod_ctype.ruint32(data, 'little', 2)); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js deleted file mode 100644 index d6c4230f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * A battery of tests to help us read a series of uints - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * We need to check the following things: - * - We are correctly resolving big endian (doesn't mean anything for 8 bit) - * - Correctly resolving little endian (doesn't mean anything for 8 bit) - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test8() -{ - var data = new Buffer(4); - mod_ctype.wuint8(23, 'big', data, 0); - mod_ctype.wuint8(23, 'big', data, 1); - mod_ctype.wuint8(23, 'big', data, 2); - mod_ctype.wuint8(23, 'big', data, 3); - ASSERT.equal(23, data[0]); - ASSERT.equal(23, data[1]); - ASSERT.equal(23, data[2]); - ASSERT.equal(23, data[3]); - mod_ctype.wuint8(23, 'little', data, 0); - mod_ctype.wuint8(23, 'little', data, 1); - mod_ctype.wuint8(23, 'little', data, 2); - mod_ctype.wuint8(23, 'little', data, 3); - ASSERT.equal(23, data[0]); - ASSERT.equal(23, data[1]); - ASSERT.equal(23, data[2]); - ASSERT.equal(23, data[3]); - mod_ctype.wuint8(255, 'big', data, 0); - ASSERT.equal(255, data[0]); - mod_ctype.wuint8(255, 'little', data, 0); - ASSERT.equal(255, data[0]); -} - -function test16() -{ - var value = 0x2343; - var data = new Buffer(4); - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(0x23, data[0]); - ASSERT.equal(0x43, data[1]); - mod_ctype.wuint16(value, 'big', data, 1); - ASSERT.equal(0x23, data[1]); - ASSERT.equal(0x43, data[2]); - mod_ctype.wuint16(value, 'big', data, 2); - ASSERT.equal(0x23, data[2]); - ASSERT.equal(0x43, data[3]); - - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(0x23, data[1]); - ASSERT.equal(0x43, data[0]); - - mod_ctype.wuint16(value, 'little', data, 1); - ASSERT.equal(0x23, data[2]); - ASSERT.equal(0x43, data[1]); - - mod_ctype.wuint16(value, 'little', data, 2); - ASSERT.equal(0x23, data[3]); - ASSERT.equal(0x43, data[2]); - - value = 0xff80; - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(0xff, data[1]); - ASSERT.equal(0x80, data[0]); - - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(0xff, data[0]); - ASSERT.equal(0x80, data[1]); -} - -function test32() -{ - var data = new Buffer(6); - var value = 0xe7f90a6d; - - mod_ctype.wuint32(value, 'big', data, 0); - ASSERT.equal(0xe7, data[0]); - ASSERT.equal(0xf9, data[1]); - ASSERT.equal(0x0a, data[2]); - ASSERT.equal(0x6d, data[3]); - - mod_ctype.wuint32(value, 'big', data, 1); - ASSERT.equal(0xe7, data[1]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0x0a, data[3]); - ASSERT.equal(0x6d, data[4]); - - mod_ctype.wuint32(value, 'big', data, 2); - ASSERT.equal(0xe7, data[2]); - ASSERT.equal(0xf9, data[3]); - ASSERT.equal(0x0a, data[4]); - ASSERT.equal(0x6d, data[5]); - - mod_ctype.wuint32(value, 'little', data, 0); - ASSERT.equal(0xe7, data[3]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0x0a, data[1]); - ASSERT.equal(0x6d, data[0]); - - mod_ctype.wuint32(value, 'little', data, 1); - ASSERT.equal(0xe7, data[4]); - ASSERT.equal(0xf9, data[3]); - ASSERT.equal(0x0a, data[2]); - ASSERT.equal(0x6d, data[1]); - - mod_ctype.wuint32(value, 'little', data, 2); - ASSERT.equal(0xe7, data[5]); - ASSERT.equal(0xf9, data[4]); - ASSERT.equal(0x0a, data[3]); - ASSERT.equal(0x6d, data[2]); -} - -function test64() -{ - var data = new Buffer(10); - var value = 0x0007cda8e7f90a6d; - var high = Math.floor(value / Math.pow(2, 32)); - var low = value - (high * Math.pow(2, 32)); - ASSERT.equal(0x0007cda8, high); - ASSERT.equal(0xe7f90a6d, low); - - mod_ctype.wuint64([high, low], 'big', data, 0); - ASSERT.equal(0x00, data[0]); - ASSERT.equal(0x07, data[1]); - ASSERT.equal(0xcd, data[2]); - ASSERT.equal(0xa8, data[3]); - ASSERT.equal(0xe7, data[4]); - ASSERT.equal(0xf9, data[5]); - ASSERT.equal(0x0a, data[6]); - ASSERT.equal(0x6d, data[7]); - - mod_ctype.wuint64([high, low], 'little', data, 0); - ASSERT.equal(0x6d, data[0]); - ASSERT.equal(0x0a, data[1]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0xe7, data[3]); - ASSERT.equal(0xa8, data[4]); - ASSERT.equal(0xcd, data[5]); - ASSERT.equal(0x07, data[6]); - ASSERT.equal(0x00, data[7]); -} - -test8(); -test16(); -test32(); -test64(); - -exports.test8 = test8; -exports.test16 = test16; -exports.test32 = test32; -exports.test64 = test64; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js deleted file mode 100644 index e9895152..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Simple does to see if it works at all - */ -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); -var mod_sys = require('sys'); - -function test() -{ - var ii, p, result, buffer; - - p = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer(4); - buffer[0] = 23; - buffer[3] = 42; - result = p.readData([ { x: { type: 'uint8_t' }}, - { y: { type: 'uint8_t', offset: 3 }} - ], buffer, 0); - ASSERT.equal(23, result['x']); - ASSERT.equal(42, result['y']); - - buffer = new Buffer(23); - for (ii = 0; ii < 23; ii++) - buffer[ii] = 0; - - buffer.write('Hello, world!'); - result = p.readData([ { x: { type: 'char[20]' }} ], buffer, 0); - - /* - * This is currently broken behvaior, need to redesign check - * ASSERT.equal('Hello, world!', result['x'].toString('utf-8', 0, - * result['x'].length)); - */ - - buffer = new Buffer(4); - buffer[0] = 0x03; - buffer[1] = 0x24; - buffer[2] = 0x25; - buffer[3] = 0x26; - result = p.readData([ { y: { type: 'uint8_t' }}, - { x: { type: 'uint8_t[y]' }}], buffer, 0); - console.log(mod_sys.inspect(result, true)); - - p.typedef('ssize_t', 'int32_t'); - ASSERT.deepEqual({ 'ssize_t': 'int32_t' }, p.lstypes()); - result = p.readData([ { x: { type: 'ssize_t' } } ], buffer, 0); - ASSERT.equal(0x26252403, result['x']); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js deleted file mode 100644 index 89d446f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Simple does it fucking work at all test - */ - -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); -var mod_sys = require('sys'); - -function test() -{ - var ii, p, buffer, buf2; - - p = new mod_ctype.Parser({ endian: 'big' }); - buffer = new Buffer(4); - p.writeData([ { x: { type: 'uint8_t', value: 23 }}, - { y: { type: 'uint8_t', offset: 3, value: 42 }} - ], buffer, 0); - ASSERT.equal(23, buffer[0]); - ASSERT.equal(42, buffer[3]); - - buffer = new Buffer(20); - for (ii = 0; ii < 20; ii++) - buffer[ii] = 0; - - buffer.write('Hello, world!'); - buf2 = new Buffer(22); - p.writeData([ { x: { type: 'char[20]', value: buffer }} ], buf2, 0); - for (ii = 0; ii < 20; ii++) - ASSERT.equal(buffer[ii], buf2[ii]); - /* - * This is currently broken behvaior, need to redesign check - * ASSERT.equal('Hello, world!', result['x'].toString('utf-8', 0, - * result['x'].length)); - */ - - buffer = new Buffer(4); - p.writeData([ { y: { type: 'uint8_t', value: 3 }}, - { x: { type: 'uint8_t[y]', value: [ 0x24, 0x25, 0x26] }}], - buffer, 0); - console.log(mod_sys.inspect(buffer)); - - p.typedef('ssize_t', 'int32_t'); - ASSERT.deepEqual({ 'ssize_t': 'int32_t' }, p.lstypes()); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js deleted file mode 100644 index 14d9529c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Test the different forms of reading characters: - * - * - the default, a single element buffer - * - uint8, values are uint8_ts - * - int8, values are int8_ts - */ -var mod_ctype = require('../../ctype'); -var mod_assert = require('assert'); - -function test() -{ - var p, buf, res; - - buf = new Buffer(1); - buf[0] = 255; - - p = new mod_ctype.Parser({ endian: 'little'}); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(res instanceof Buffer); - mod_assert.equal(255, res[0]); - - p = new mod_ctype.Parser({ endian: 'little', - 'char-type': 'int8' }); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(typeof (res) == 'number', 'got typeof (res): ' + - typeof (res)); - mod_assert.equal(-1, res); - - p = new mod_ctype.Parser({ endian: 'little', - 'char-type': 'uint8' }); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(typeof (res) == 'number', 'got typeof (res): ' + - typeof (res)); - mod_assert.equal(255, res); - -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js deleted file mode 100644 index 11fc2d2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Simple test to make sure that the endian setting works. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf; - - parser = new mod_ctype.Parser({ - endian: 'little' - }); - - buf = new Buffer(2); - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x34); - mod_assert.equal(buf[1], 0x12); - parser.setEndian('big'); - - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x12); - mod_assert.equal(buf[1], 0x34); - - parser.setEndian('little'); - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x34); - mod_assert.equal(buf[1], 0x12); -} - -function fail() -{ - var parser; - - parser = new mod_ctype.Parser({ - endian: 'little' - }); - mod_assert.throws(function () { - parser.setEndian('littlebigwrong'); - }); -} - -test(); -fail(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js deleted file mode 100644 index 9491cf6e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * A long overdue test to go through and verify that we can read and write - * structures as well as nested structures. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(2); - data = [ - { point: { type: 'point_t', value: [ 23, 42 ] } } - ]; - parser.writeData(data, buf, 0); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js deleted file mode 100644 index 6c490a2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Testing to ensure we're reading the expected number bytes - */ -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); - -function testUint8() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80', 'hex'); - result = parser.readStruct([ { item: { type: 'uint8_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 1); -} - -function testSint8() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80', 'hex'); - result = parser.readStruct([ { item: { type: 'int8_t' } } ], buffer, 0); - ASSERT.equal(result['size'], 1); -} - -function testUint16() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint16_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 2); -} - -function testSint16() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000', 'hex'); - result = parser.readStruct([ { item: { type: 'int16_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 2); -} - -function testUint32() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80000000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint32_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 4); -} - -function testSint32() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80000000', 'hex'); - result = parser.readStruct([ { item: { type: 'int32_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 4); -} - -function testUint64() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000000000000000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint64_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 8); -} - -function testSint64() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000000000000000', 'hex'); - result = parser.readStruct([ { item: { type: 'int64_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 8); -} - -function testFloat() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('ABAAAA3E', 'hex'); - result = parser.readStruct([ { item: { type: 'float' } } ], buffer, 0); - ASSERT.equal(result['size'], 4); -} - -function testDouble() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('000000000000F03F', 'hex'); - result = parser.readStruct([ { item: { type: 'double' } } ], buffer, 0); - ASSERT.equal(result['size'], 8); -} - -function testChar() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('t'); - result = parser.readStruct([ { item: { type: 'char' } } ], buffer, 0); - ASSERT.equal(result['size'], 1); -} - -function test() -{ - testSint8(); - testUint8(); - testSint16(); - testUint16(); - testSint32(); - testUint32(); - testSint64(); - testUint64(); - testFloat(); - testDouble(); - testChar(); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js deleted file mode 100644 index 09c1a5ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * A long overdue test to go through and verify that we can read and write - * structures as well as nested structures. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(2); - data = [ - { point: { type: 'point_t' } } - ]; - parser.writeData(data, buf, 0, [ [ 23, 42 ] ]); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js deleted file mode 100644 index 48556667..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Test to verify that the offset is incremented when structures are written to. - * Hopefully we will not regress issue #41 - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(4); - data = [ - { point1: { type: 'point_t' } }, - { point2: { type: 'point_t' } } - ]; - parser.writeData(data, buf, 0, [ [ 23, 42 ], [ 91, 18 ] ]); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); - mod_assert.ok(buf[2] == 91); - mod_assert.ok(buf[3] == 18); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json deleted file mode 100644 index 94bd8e79..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Joyent, Inc" - }, - "name": "http-signature", - "description": "Reference implementation of Joyent's HTTP Signature Scheme", - "version": "0.10.0", - "repository": { - "type": "git", - "url": "git://github.com/joyent/node-http-signature.git" - }, - "engines": { - "node": ">=0.8" - }, - "main": "lib/index.js", - "scripts": { - "test": "./node_modules/.bin/tap tst/*.js" - }, - "dependencies": { - "assert-plus": "0.1.2", - "asn1": "0.1.11", - "ctype": "0.5.2" - }, - "devDependencies": { - "node-uuid": "1.4.0", - "tap": "0.4.2" - }, - "readme": "# node-http-signature\n\nnode-http-signature is a node.js library that has client and server components\nfor Joyent's [HTTP Signature Scheme](http_signing.md).\n\n## Usage\n\nNote the example below signs a request with the same key/cert used to start an\nHTTP server. This is almost certainly not what you actaully want, but is just\nused to illustrate the API calls; you will need to provide your own key\nmanagement in addition to this library.\n\n### Client\n\n var fs = require('fs');\n var https = require('https');\n var httpSignature = require('http-signature');\n\n var key = fs.readFileSync('./key.pem', 'ascii');\n\n var options = {\n host: 'localhost',\n port: 8443,\n path: '/',\n method: 'GET',\n headers: {}\n };\n\n // Adds a 'Date' header in, signs it, and adds the\n // 'Authorization' header in.\n var req = https.request(options, function(res) {\n console.log(res.statusCode);\n });\n\n\n httpSignature.sign(req, {\n key: key,\n keyId: './cert.pem'\n });\n\n req.end();\n\n### Server\n\n var fs = require('fs');\n var https = require('https');\n var httpSignature = require('http-signature');\n\n var options = {\n key: fs.readFileSync('./key.pem'),\n cert: fs.readFileSync('./cert.pem')\n };\n\n https.createServer(options, function (req, res) {\n var rc = 200;\n var parsed = httpSignature.parseRequest(req);\n var pub = fs.readFileSync(parsed.keyId, 'ascii');\n if (!httpSignature.verifySignature(parsed, pub))\n rc = 401;\n\n res.writeHead(rc);\n res.end();\n }).listen(8443);\n\n## Installation\n\n npm install http-signature\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/joyent/node-http-signature/issues>.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/joyent/node-http-signature/issues" - }, - "homepage": "https://github.com/joyent/node-http-signature", - "_id": "http-signature@0.10.0", - "_from": "http-signature@~0.10.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md deleted file mode 100644 index 5d764f3a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# json-stringify-safe - -Like JSON.stringify, but doesn't throw on circular references. - -## Usage - -Takes the same arguments as `JSON.stringify`. - -```javascript -var stringify = require('json-stringify-safe'); -var circularObj = {}; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; -console.log(stringify(circularObj, null, 2)); -``` - -Output: - -```json -{ - "circularRef": "[Circular]", - "list": [ - "[Circular]", - "[Circular]" - ] -} -``` - -## Details - -``` -stringify(obj, serializer, indent, decycler) -``` - -The first three arguments are the same as to JSON.stringify. The last -is an argument that's only used when the object has been seen already. - -The default `decycler` function returns the string `'[Circular]'`. -If, for example, you pass in `function(k,v){}` (return nothing) then it -will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`, -then cyclical objects will always be represented as `{"foo":"bar"}` in -the result. - -``` -stringify.getSerialize(serializer, decycler) -``` - -Returns a serializer that can be used elsewhere. This is the actual -function that's passed to JSON.stringify. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json deleted file mode 100644 index 322c23a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "json-stringify-safe", - "version": "5.0.0", - "description": "Like JSON.stringify, but doesn't blow up on circular refs", - "main": "stringify.js", - "scripts": { - "test": "node test.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/json-stringify-safe" - }, - "keywords": [ - "json", - "stringify", - "circular", - "safe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "license": "BSD", - "readmeFilename": "README.md", - "readme": "# json-stringify-safe\n\nLike JSON.stringify, but doesn't throw on circular references.\n\n## Usage\n\nTakes the same arguments as `JSON.stringify`.\n\n```javascript\nvar stringify = require('json-stringify-safe');\nvar circularObj = {};\ncircularObj.circularRef = circularObj;\ncircularObj.list = [ circularObj, circularObj ];\nconsole.log(stringify(circularObj, null, 2));\n```\n\nOutput:\n\n```json\n{\n \"circularRef\": \"[Circular]\",\n \"list\": [\n \"[Circular]\",\n \"[Circular]\"\n ]\n}\n```\n\n## Details\n\n```\nstringify(obj, serializer, indent, decycler)\n```\n\nThe first three arguments are the same as to JSON.stringify. The last\nis an argument that's only used when the object has been seen already.\n\nThe default `decycler` function returns the string `'[Circular]'`.\nIf, for example, you pass in `function(k,v){}` (return nothing) then it\nwill prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`,\nthen cyclical objects will always be represented as `{\"foo\":\"bar\"}` in\nthe result.\n\n```\nstringify.getSerialize(serializer, decycler)\n```\n\nReturns a serializer that can be used elsewhere. This is the actual\nfunction that's passed to JSON.stringify.\n", - "bugs": { - "url": "https://github.com/isaacs/json-stringify-safe/issues" - }, - "homepage": "https://github.com/isaacs/json-stringify-safe", - "_id": "json-stringify-safe@5.0.0", - "_from": "json-stringify-safe@~5.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js deleted file mode 100644 index 853ef9b2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = stringify; - -function getSerialize (fn, decycle) { - var seen = [], keys = []; - decycle = decycle || function(key, value) { - return '[Circular ' + getPath(value, seen, keys) + ']' - }; - return function(key, value) { - var ret = value; - if (typeof value === 'object' && value) { - if (seen.indexOf(value) !== -1) - ret = decycle(key, value); - else { - seen.push(value); - keys.push(key); - } - } - if (fn) ret = fn(key, ret); - return ret; - } -} - -function getPath (value, seen, keys) { - var index = seen.indexOf(value); - var path = [ keys[index] ]; - for (index--; index >= 0; index--) { - if (seen[index][ path[0] ] === value) { - value = seen[index]; - path.unshift(keys[index]); - } - } - return '~' + path.join('.'); -} - -function stringify(obj, fn, spaces, decycle) { - return JSON.stringify(obj, getSerialize(fn, decycle), spaces); -} - -stringify.getSerialize = getSerialize; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js deleted file mode 100644 index 991e9197..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js +++ /dev/null @@ -1,128 +0,0 @@ -var stringify = require('./stringify.js'); - -var circularObj = { a: 'b' }; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; - -////////// -// default -var testObj = { - "a": "b", - "circularRef": "[Circular ~]", - "list": [ - "[Circular ~]", - "[Circular ~]" - ] -}; - -var assert = require('assert'); -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2)); - -assert.equal(JSON.stringify(testObj, null, 2), - JSON.stringify(circularObj, stringify.getSerialize(), 2)); - - -//////// -// prune -testObj = { - "a": "b", - "list": [ - null, - null - ] -}; - -function prune(k, v) {} - -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2, prune)); - -/////////// -// re-cycle -// (throws) -function recycle(k, v) { - return v; -} - -assert.throws(function() { - stringify(circularObj, null, 2, recycle); -}); - -//////// -// fancy -testObj = { - "a": "b", - "circularRef": "circularRef{a:string,circularRef:Object,list:Array}", - "list": [ - "0{a:string,circularRef:Object,list:Array}", - "1{a:string,circularRef:Object,list:Array}" - ] -}; - -function signer(key, value) { - var ret = key + '{'; - var f = false; - for (var i in value) { - if (f) - ret += ','; - f = true; - ret += i + ':'; - var v = value[i]; - switch (typeof v) { - case 'object': - if (!v) - ret += 'null'; - else if (Array.isArray(v)) - ret += 'Array' - else - ret += v.constructor && v.constructor.name || 'Object'; - break; - default: - ret += typeof v; - break; - } - } - ret += '}'; - return ret; -} - -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2, signer)); - - -/////// -//multi -var a = { x: 1 }; -a.a = a; -var b = { x: 2 }; -b.a = a; - -var c = { a: a, b: b }; -var d = { list: [ a, b, c ] }; -d.d = d; - -var multi = { - "list": [ - { - "x": 1, - "a": "[Circular ~.list.0]" - }, - { - "x": 2, - "a": "[Circular ~.list.0]" - }, - { - "a": "[Circular ~.list.0]", - "b": "[Circular ~.list.1]" - } - ], - "d": "[Circular ~]" -}; - -assert.equal(JSON.stringify(multi, null, 2), - stringify(d, null, 2)); - -//////// -// pass! -console.log('ok'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE deleted file mode 100644 index 451fc455..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md deleted file mode 100644 index 6ca19bd1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js deleted file mode 100644 index 48be0c5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js +++ /dev/null @@ -1,114 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json deleted file mode 100644 index 9d961d4d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.2.11", - "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "homepage": "https://github.com/broofa/node-mime", - "_id": "mime@1.2.11", - "_from": "mime@~1.2.9", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js deleted file mode 100644 index 2cda1c7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); -var path = require('path'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); // normal file -eq('text/plain', mime.lookup('TEXT.TXT')); // uppercase -eq('text/plain', mime.lookup('dir/text.txt')); // dir + file -eq('text/plain', mime.lookup('.text.txt')); // hidden file -eq('text/plain', mime.lookup('.txt')); // nameless -eq('text/plain', mime.lookup('txt')); // extension-only -eq('text/plain', mime.lookup('/txt')); // extension-less () -eq('text/plain', mime.lookup('\\txt')); // Windows, extension-less -eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized -eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq('bin', mime.extension('application/octet-stream ')); -eq('html', mime.extension(' text/html; charset=UTF-8')); -eq('html', mime.extension('text/html; charset=UTF-8 ')); -eq('html', mime.extension('text/html; charset=UTF-8')); -eq('html', mime.extension('text/html ; charset=UTF-8')); -eq('html', mime.extension('text/html;charset=UTF-8')); -eq('html', mime.extension('text/Html;charset=UTF-8')); -eq(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -eq('application/font-woff', mime.lookup('file.woff')); -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); -eq('font/opentype', mime.lookup('file.otf')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -// -// Test for overlaps between mime.types and node.types -// - -var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime(); -apacheTypes.load(path.join(__dirname, 'types/mime.types')); -nodeTypes.load(path.join(__dirname, 'types/node.types')); - -var keys = [].concat(Object.keys(apacheTypes.types)) - .concat(Object.keys(nodeTypes.types)); -keys.sort(); -for (var i = 1; i < keys.length; i++) { - if (keys[i] == keys[i-1]) { - console.warn('Warning: ' + - 'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] + - ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]); - } -} - -console.log('\nOK'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types deleted file mode 100644 index da8cd691..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1588 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at <http://www.iana.org/assignments/media-types/>. -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types deleted file mode 100644 index 55b2cf79..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types +++ /dev/null @@ -1,77 +0,0 @@ -# What: WebVTT -# Why: To allow formats intended for marking up external text track resources. -# http://dev.w3.org/html5/webvtt/ -# Added by: niftylettuce -text/vtt vtt - -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifes ('.manifest' extension) -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Lua file types -# Why: Googling around shows de-facto consensus on these -# Added by: creationix (Issue #45) -text/x-lua lua -application/x-lua-bytecode luac - -# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax -# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown -# Added by: avoidwork -text/x-markdown markdown md mkd - -# What: ini files -# Why: because they're just text files -# Added by: Matthew Kastor -text/plain ini - -# What: DASH Adaptive Streaming manifest -# Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video -# Added by: eelcocramer -application/dash+xml mdp - -# What: OpenType font files - http://www.microsoft.com/typography/otspec/ -# Why: Browsers usually ignore the font MIME types and sniff the content, -# but Chrome, shows a warning if OpenType fonts aren't served with -# the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png. -# Added by: alrra -font/opentype otf diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md deleted file mode 100644 index f039427f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md +++ /dev/null @@ -1,2 +0,0 @@ -Copyright (c) 2010-2012 Robert Kieffer -MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md deleted file mode 100644 index e436a89f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md +++ /dev/null @@ -1,207 +0,0 @@ -# node-uuid - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid'). -* Cryptographically strong random # generation on supporting platforms -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) - -## Getting Started - -Install it in your browser: - -```html -<script src="uuid.js"></script> -``` - -Or in node.js: - -``` -npm install node-uuid -``` - -```javascript -var uuid = require('node-uuid'); -``` - -Then create some ids ... - -```javascript -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the node-uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include <stdio.h> -#include <unistd.h> -#include <sys/time.h> -#include <uuid/uuid.h> - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json deleted file mode 100644 index ace21348..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "node-uuid", - "repo": "broofa/node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "version": "1.4.0", - "author": "Robert Kieffer <robert@broofa.com>", - "contributors": [ - {"name": "Christoph Tavan <dev@tavan.de>", "github": "https://github.com/ctavan"} - ], - "keywords": ["uuid", "guid", "rfc4122"], - "dependencies": {}, - "development": {}, - "main": "uuid.js", - "scripts": [ - "uuid.js" - ], - "license": "MIT" -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json deleted file mode 100644 index 5cc6f35e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "url": "http://github.com/broofa/node-uuid", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "lib": ".", - "main": "./uuid.js", - "repository": { - "type": "git", - "url": "https://github.com/broofa/node-uuid.git" - }, - "version": "1.4.1", - "readme": "# node-uuid\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src=\"uuid.js\"></script>\n```\n\nOr in node.js:\n\n```\nnpm install node-uuid\n```\n\n```javascript\nvar uuid = require('node-uuid');\n```\n\nThen create some ids ...\n\n```javascript\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the node-uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-uuid/issues" - }, - "homepage": "https://github.com/broofa/node-uuid", - "_id": "node-uuid@1.4.1", - "_from": "node-uuid@~1.4.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js deleted file mode 100644 index 05af8221..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js +++ /dev/null @@ -1,63 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../uuid'), - uuidjs = require('uuid-js'), - libuuid = require('uuid').generate, - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html deleted file mode 100644 index d80326ec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html +++ /dev/null @@ -1,17 +0,0 @@ -<html> - <head> - <style> - div { - font-family: monospace; - font-size: 8pt; - } - div.log {color: #444;} - div.warn {color: #550;} - div.error {color: #800; font-weight: bold;} - </style> - <script src="../uuid.js"></script> - </head> - <body> - <script src="./test.js"></script> - </body> -</html> diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js deleted file mode 100644 index 24692256..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js +++ /dev/null @@ -1,228 +0,0 @@ -if (!this.uuid) { - // node.js - uuid = require('../uuid'); -} - -// -// x-platform log/assert shims -// - -function _log(msg, type) { - type = type || 'log'; - - if (typeof(document) != 'undefined') { - document.write('<div class="' + type + '">' + msg.replace(/\n/g, '<br />') + '</div>'); - } - if (typeof(console) != 'undefined') { - var color = { - log: '\033[39m', - warn: '\033[33m', - error: '\033[31m' - }; - console[type](color[type] + msg + color.log); - } -} - -function log(msg) {_log(msg, 'log');} -function warn(msg) {_log(msg, 'warn');} -function error(msg) {_log(msg, 'error');} - -function assert(res, msg) { - if (!res) { - error('FAIL: ' + msg); - } else { - log('Pass: ' + msg); - } -} - -// -// Unit tests -// - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - ids = ids.map(function(id) { - return id.split('-').reverse().join('-'); - }).sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' -); - -// Verify throw if too many ids created -var thrown = false; -try { - uuid.v1({msecs: TIME, nsecs: 10000}); -} catch (e) { - thrown = true; -} -assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); - -// Verify clock regression bumps clockseq -var uidt = uuid.v1({msecs: TIME}); -var uidtb = uuid.v1({msecs: TIME - 1}); -assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' -); - -// Verify clock regression bumps clockseq -var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); -var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); -assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' -); - -// Verify explicit options produce expected id -var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] -}); -assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); - -// Verify adjacent ids across a msec boundary are 1 time unit apart -var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); -var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - -var before = u0.split('-')[0], after = u1.split('-')[0]; -var dt = parseInt(after, 16) - parseInt(before, 16); -assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); - -// -// Test parse/unparse -// - -id = '00112233445566778899aabbccddeeff'; -assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); -assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); - -// -// Perf tests -// - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js deleted file mode 100644 index 2fac6dc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js +++ /dev/null @@ -1,245 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -(function() { - var _global = this; - - // Unique ID creation requires a high quality random # generator. We feature - // detect to determine the best RNG source, normalizing to a function that - // returns 128-bits of randomness, since that's what's usually required - var _rng; - - // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html - // - // Moderately fast, high quality - if (typeof(require) == 'function') { - try { - var _rb = require('crypto').randomBytes; - _rng = _rb && function() {return _rb(16);}; - } catch(e) {} - } - - if (!_rng && _global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - _rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; - } - - if (!_rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - _rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; - } - - // Buffer class to use - var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - - // Maps for number <-> hex string conversion - var _byteToHex = []; - var _hexToByte = {}; - for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; - } - - // **`parse()` - Parse a UUID into it's component bytes** - function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; - } - - // **`unparse()` - Convert UUID byte array (ala parse()) into a string** - function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - - // random #'s we need to init node and clockseq - var _seedBytes = _rng(); - - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] - ]; - - // Per 4.2.2, randomize (14 bit) clockseq - var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - - // Previous uuid creation time - var _lastMSecs = 0, _lastNSecs = 0; - - // See https://github.com/broofa/node-uuid for API details - function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq != null ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs != null ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq == null) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); - } - - // **`v4()` - Generate random UUID** - - // See https://github.com/broofa/node-uuid for API details - function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); - } - - // Export public API - var uuid = v4; - uuid.v1 = v1; - uuid.v4 = v4; - uuid.parse = parse; - uuid.unparse = unparse; - uuid.BufferClass = BufferClass; - - if (typeof define === 'function' && define.amd) { - // Publish as AMD module - define(function() {return uuid;}); - } else if (typeof(module) != 'undefined' && module.exports) { - // Publish as node.js module - module.exports = uuid; - } else { - // Publish as global (in browsers) - var _previousRoot = _global.uuid; - - // **`noConflict()` - (browser only) to reset global 'uuid' var** - uuid.noConflict = function() { - _global.uuid = _previousRoot; - return uuid; - }; - - _global.uuid = uuid; - } -}).call(this); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md deleted file mode 100644 index 34c4a85d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md +++ /dev/null @@ -1,4 +0,0 @@ -oauth-sign -========== - -OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js deleted file mode 100644 index e35bfa67..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js +++ /dev/null @@ -1,43 +0,0 @@ -var crypto = require('crypto') - , qs = require('querystring') - ; - -function sha1 (key, body) { - return crypto.createHmac('sha1', key).update(body).digest('base64') -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') - ; -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - var querystring = Object.keys(params).sort().map(function(key){ - // big WTF here with the escape + encoding but it's what twitter wants - return escape(rfc3986(key)) + "%3D" + escape(rfc3986(params[key])) - }).join('%26') - - var base = [ - httpMethod ? httpMethod.toUpperCase() : 'GET', - rfc3986(base_uri), - querystring - ].join('&') - - var key = [ - consumer_secret, - token_secret || '' - ].map(rfc3986).join('&') - - return sha1(key, base) -} - -exports.hmacsign = hmacsign -exports.rfc3986 = rfc3986 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json deleted file mode 100644 index dc99a4ec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "oauth-sign", - "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.", - "version": "0.3.0", - "repository": { - "url": "https://github.com/mikeal/oauth-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "scripts": { - "test": "node test.js" - }, - "readme": "oauth-sign\n==========\n\nOAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. \n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/oauth-sign/issues" - }, - "homepage": "https://github.com/mikeal/oauth-sign", - "_id": "oauth-sign@0.3.0", - "_from": "oauth-sign@~0.3.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js deleted file mode 100644 index 46955ff6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js +++ /dev/null @@ -1,49 +0,0 @@ -var hmacsign = require('./index').hmacsign - , assert = require('assert') - , qs = require('querystring') - ; - -// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth - -var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', - { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' - , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_timestamp: '1272323042' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - -console.log(reqsign) -console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') -assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') - -var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', - { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' - , oauth_timestamp: '1272323047' - , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - -console.log(accsign) -console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') -assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') - -var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , status: 'setting up my twitter ç§ã®ã•ãˆãšã‚Šã‚’設定ã™ã‚‹' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') -assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules deleted file mode 100644 index 49e31dac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "support/expresso"] - path = support/expresso - url = git://github.com/visionmedia/expresso.git -[submodule "support/should"] - path = support/should - url = git://github.com/visionmedia/should.js.git diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore deleted file mode 100644 index e85ce2af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -test -.travis.yml -benchmark.js -component.json -examples.js -History.md -Makefile diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md deleted file mode 100644 index 27e54a4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md +++ /dev/null @@ -1,58 +0,0 @@ -# node-querystring - - query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. - -## Installation - - $ npm install qs - -## Examples - -```js -var qs = require('qs'); - -qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); -// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } - -qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) -// => user[name]=Tobi&user[email]=tobi%40learnboost.com -``` - -## Testing - -Install dev dependencies: - - $ npm install -d - -and execute: - - $ make test - -browser: - - $ open test/browser/index.html - -## License - -(The MIT License) - -Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js deleted file mode 100644 index b05938ac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js +++ /dev/null @@ -1,366 +0,0 @@ -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Object#hasOwnProperty ref - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Array#indexOf shim. - */ - -var indexOf = typeof Array.prototype.indexOf === 'function' - ? function(arr, el) { return arr.indexOf(el); } - : function(arr, el) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === el) return i; - } - return -1; - }; - -/** - * Array.isArray shim. - */ - -var isArray = Array.isArray || function(arr) { - return toString.call(arr) == '[object Array]'; -}; - -/** - * Object.keys shim. - */ - -var objectKeys = Object.keys || function(obj) { - var ret = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - ret.push(key); - } - } - return ret; -}; - -/** - * Array#forEach shim. - */ - -var forEach = typeof Array.prototype.forEach === 'function' - ? function(arr, fn) { return arr.forEach(fn); } - : function(arr, fn) { - for (var i = 0; i < arr.length; i++) fn(arr[i]); - }; - -/** - * Array#reduce shim. - */ - -var reduce = function(arr, fn, initial) { - if (typeof arr.reduce === 'function') return arr.reduce(fn, initial); - var res = initial; - for (var i = 0; i < arr.length; i++) res = fn(res, arr[i]); - return res; -}; - -/** - * Cache non-integer test regexp. - */ - -var isint = /^[0-9]+$/; - -function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = {} - var t = {}; - for (var i in parent[key]) { - if (hasOwnProperty.call(parent[key], i)) { - t[i] = parent[key][i]; - } - } - parent[key] = t; - return t; -} - -function parse(parts, parent, key, val) { - var part = parts.shift(); - - // illegal - if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return; - - // end - if (!part) { - if (isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - var obj = parent[key] = parent[key] || []; - if (']' == part) { - if (isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[objectKeys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~indexOf(part, ']')) { - part = part.substr(0, part.length - 1); - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - // key - } else { - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - } - } -} - -/** - * Merge parent key/val pair. - */ - -function merge(parent, key, val){ - if (~indexOf(key, ']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - parse(parts, parent, 'base', val); - // optimize - } else { - if (!isint.test(key) && isArray(parent.base)) { - var t = {}; - for (var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return parent; -} - -/** - * Compact sparse arrays. - */ - -function compact(obj) { - if ('object' != typeof obj) return obj; - - if (isArray(obj)) { - var ret = []; - - for (var i in obj) { - if (hasOwnProperty.call(obj, i)) { - ret.push(obj[i]); - } - } - - return ret; - } - - for (var key in obj) { - obj[key] = compact(obj[key]); - } - - return obj; -} - -/** - * Parse the given obj. - */ - -function parseObject(obj){ - var ret = { base: {} }; - - forEach(objectKeys(obj), function(name){ - merge(ret, name, obj[name]); - }); - - return compact(ret.base); -} - -/** - * Parse the given str. - */ - -function parseString(str){ - var ret = reduce(String(str).split('&'), function(ret, pair){ - var eql = indexOf(pair, '=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(indexOf(val, '=') + 1, val.length); - - // ?foo - if ('' == key) key = pair, val = ''; - if ('' == key) return ret; - - return merge(ret, decode(key), decode(val)); - }, { base: {} }).base; - - return compact(ret); -} - -/** - * Parse the given query `str` or `obj`, returning an object. - * - * @param {String} str | {Object} obj - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - return 'object' == typeof str - ? parseObject(str) - : parseString(str); -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix + '=' + encodeURIComponent(String(obj)); - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '[' + i + ']')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = objectKeys(obj) - , key; - - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - if ('' == key) continue; - if (null == obj[key]) { - ret.push(encodeURIComponent(key) + '='); - } else { - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - } - - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return; - if (undefined === v) { - obj[key] = val; - } else if (isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} - -/** - * Decode `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -function decode(str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (err) { - return str; - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json deleted file mode 100644 index 313485c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "qs", - "description": "querystring parser", - "version": "0.6.6", - "keywords": [ - "query string", - "parser", - "component" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-querystring.git" - }, - "devDependencies": { - "mocha": "*", - "expect.js": "*" - }, - "scripts": { - "test": "make test" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "index", - "engines": { - "node": "*" - }, - "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-querystring/issues" - }, - "homepage": "https://github.com/visionmedia/node-querystring", - "_id": "qs@0.6.6", - "_from": "qs@~0.6.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc deleted file mode 100644 index 8fcead4f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc +++ /dev/null @@ -1,72 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 100, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : false, // Standard browser globals e.g. `window`, `document`. - "node" : true, - "rhino" : false, - "couch" : false, - "wsh" : false, // Windows Scripting Host. - - "jquery" : false, - "prototypejs" : false, - "mootools" : false, - "dojo" : false, - - "predef" : [ // Custom globals. - "escape", "unescape" // aren't picked up by node flag above :/ - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : true, // Allow EcmaScript 5 syntax. - "esnext" : true, // Allow ES "next" syntax, specifically 'const' (V8 has this) - "strict" : false, // Require `use strict` pragma in every file. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : false, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : true, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexp" : true, // Prohibit `.` and `[^...]` in regular expressions. - "regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`. - "scripturl" : true, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : true, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "lastsemic" : true, // Prohibit missing semicolon for the last statement in a one-line block - "newcap" : false, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nonew" : true, // Prohibit use of constructors for side-effects. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "onevar" : false, // Allow only one `var` statement per function. - "onecase" : false, // Allow switches with one case statement - "plusplus" : false, // Prohibit use of `++` & `--`. - "proto" : false, // Allow use of __proto__ - "sub" : true, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore deleted file mode 100644 index 54efff98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -.*.sw[nmop] -npm-debug.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 3fac4c85..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,78 +0,0 @@ -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -The following exceptions apply: - -=== - -`pubSufTest()` of generate-pubsuffix.js is in the public domain. - - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - -=== - -`public-suffix.txt` was obtained from -<https://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1> -via <http://publicsuffix.org>. - -That file contains the usual Mozilla triple-license, for which this project uses it -under the terms of the MPL 1.1: - - // ***** BEGIN LICENSE BLOCK ***** - // Version: MPL 1.1/GPL 2.0/LGPL 2.1 - // - // The contents of this file are subject to the Mozilla Public License Version - // 1.1 (the "License"); you may not use this file except in compliance with - // the License. You may obtain a copy of the License at - // http://www.mozilla.org/MPL/ - // - // Software distributed under the License is distributed on an "AS IS" basis, - // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - // for the specific language governing rights and limitations under the - // License. - // - // The Original Code is the Public Suffix List. - // - // The Initial Developer of the Original Code is - // Jo Hermans <jo.hermans@gmail.com>. - // Portions created by the Initial Developer are Copyright (C) 2007 - // the Initial Developer. All Rights Reserved. - // - // Contributor(s): - // Ruben Arakelyan <ruben@rubenarakelyan.com> - // Gervase Markham <gerv@gerv.net> - // Pamela Greene <pamg.bugs@gmail.com> - // David Triendl <david@triendl.name> - // Jothan Frakes <jothan@gmail.com> - // The kind representatives of many TLD registries - // - // Alternatively, the contents of this file may be used under the terms of - // either the GNU General Public License Version 2 or later (the "GPL"), or - // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - // in which case the provisions of the GPL or the LGPL are applicable instead - // of those above. If you wish to allow use of your version of this file only - // under the terms of either the GPL or the LGPL, and not to allow others to - // use your version of this file under the terms of the MPL, indicate your - // decision by deleting the provisions above and replace them with the notice - // and other provisions required by the GPL or the LGPL. If you do not delete - // the provisions above, a recipient may use your version of this file under - // the terms of any one of the MPL, the GPL or the LGPL. - // - // ***** END LICENSE BLOCK ***** diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md deleted file mode 100644 index fd1dbb1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,380 +0,0 @@ -[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg) - -# Synopsis - -``` javascript -var cookies = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie' -var Cookie = cookies.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new cookies.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Requires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default. - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -# API - -cookies -======= - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -parseDate(string[,strict]) ------------------ - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. "Thu, 01 Jan 1970 00:00:010 GMT" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid). - -formatDate(date) ----------------- - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -canonicalDomain(str) --------------------- - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -domainMatch(str,domStr[,canonicalize=true]) -------------------------------------------- - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not. - -defaultPath(path) ------------------ - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -pathMatch(reqPath,cookiePath) ------------------------------ - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -parse(header[,strict=false]) ----------------------------- - -alias for `Cookie.parse(header[,strict])` - -fromJSON(string) ----------------- - -alias for `Cookie.fromJSON(string)` - -getPublicSuffix(hostname) -------------------------- - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. - -cookieCompare(a,b) ------------------- - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest. - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -permuteDomain(domain) ---------------------- - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - - -permutePath(path) ------------------ - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - -Cookie -====== - -Cookie.parse(header[,strict=false]) ------------------------------------ - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(Cookie.parse); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -Cookie.fromJSON(string) ------------------------ - -Convert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects. - -Properties -========== - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _created_ - `Date` - when this cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -Construction([{options}]) ------------- - -Receives an options object that can contain any Cookie properties, uses the default for unspecified properties. - -.toString() ------------ - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -.cookieString() ---------------- - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -.setExpires(String) -------------------- - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -.setMaxAge(number) -------------------- - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -.expiryTime([now=Date.now()]) ------------------------------ - -.expiryDate([now=Date.now()]) ------------------------------ - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -.TTL([now=Date.now()]) ---------- - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -.canonicalizedDoman() ---------------------- - -.cdomain() ----------- - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -.validate() ------------ - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - -CookieJar -========= - -Construction([store = new MemoryCookieStore()][, rejectPublicSuffixes]) ------------- - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - - -Attributes ----------- - - * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`) - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie)) -------------------------------------------------------------------- - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _strict_ - boolean - default `false` - perform extra checks - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -.storeCookie(cookie, [{options},] cb(err,cookie)) -------------------------------------------------- - -__REMOVED__ removed in lieu of the CookieStore API below - -.getCookies(currentUrl, [{options},] cb(err,cookies)) ------------------------------------------------------ - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -.getCookieString(...) ---------------------- - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -.getSetCookieStrings(...) -------------------------- - -Accepts the same options as `.getCookies()` but passes an array of strings suitable for Set-Cookie headers (rather than an array of `Cookie`s) to the callback. Simply maps the cookie array via `.toString()`. - -# CookieStore API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -store.findCookie(domain, path, key, cb(err,cookie)) ---------------------------------------------------- - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -store.findCookies(domain, path, cb(err,cookies)) ------------------------------------------------- - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -store.putCookie(cookie, cb(err)) --------------------------------- - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -store.updateCookie(oldCookie, newCookie, cb(err)) -------------------------------------------------- - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -store.removeCookie(domain, path, key, cb(err)) ----------------------------------------------- - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -store.removeCookies(domain, path, cb(err)) ------------------------------------------- - -Removes matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -# TODO - - * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()` - * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891 - * better tests for `validate()`? - -# Copyright and License - -(tl;dr: MIT with some MPL/1.1) - -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -Portions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js deleted file mode 100644 index a7fa5452..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -var fs = require('fs'); -var assert = require('assert'); -var punycode = require('punycode'); - -fs.readFile('./public-suffix.txt', 'utf8', function(err,string) { - if (err) throw err; - var lines = string.split("\n"); - process.nextTick(function() { - processList(lines); - }); -}); - -var index = {}; - -var COMMENT = new RegExp('//.+'); -function processList(lines) { - while (lines.length) { - var line = lines.shift(); - line = line.replace(COMMENT,'').trim(); - if (!line) continue; - addToIndex(index,line); - } - - pubSufTest(); - - var w = fs.createWriteStream('./lib/pubsuffix.js',{ - flags: 'w', - encoding: 'utf8', - mode: 0644, - }); - w.on('end', process.exit); - w.write("/****************************************************\n"); - w.write(" * AUTOMATICALLY GENERATED by generate-pubsuffix.js *\n"); - w.write(" * DO NOT EDIT! *\n"); - w.write(" ****************************************************/\n\n"); - - w.write("module.exports.getPublicSuffix = "); - w.write(getPublicSuffix.toString()); - w.write(";\n\n"); - - w.write("// The following generated structure is used under the MPL version 1.1\n"); - w.write("// See public-suffix.txt for more information\n\n"); - w.write("var index = module.exports.index = Object.freeze(\n"); - w.write(JSON.stringify(index)); - w.write(");\n\n"); - w.write("// END of automatically generated file\n"); - - w.end(); -} - -function addToIndex(index,line) { - var prefix = ''; - if (line.replace(/^(!|\*\.)/)) { - prefix = RegExp.$1; - line = line.slice(prefix.length); - } - line = prefix + punycode.toASCII(line); - - if (line.substr(0,1) == '!') - index[line.substr(1)] = false; - else - index[line] = true; -} - -// include the licence in the function since it gets written to pubsuffix.js -function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i<parts.length; i++) { - var part = parts[i]; - var starstr = '*'+suffix; - var partstr = part+suffix; - - if (index[starstr]) { // star rule matches - suffixLen = i+1; - if (index[partstr] === false) { // exception rule matches (NB: false, not undefined) - suffixLen--; - } - } else if (index[partstr]) { // exact match, not exception - suffixLen = i+1; - } - - suffix = '.'+part+suffix; - } - - if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp'); - return null; - } - - if (suffixLen && parts.length > suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -} - -function checkPublicSuffix(give,get) { - var got = getPublicSuffix(give); - assert.equal(got, get, give+' should be '+(get==null?'NULL':get)+' but got '+got); -} - -// pubSufTest() was converted to JavaScript from http://publicsuffix.org/list/test.txt -function pubSufTest() { - // For this function-scope and this function-scope ONLY: - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - - // NULL input. - checkPublicSuffix(null, null); - // Mixed case. - checkPublicSuffix('COM', null); - checkPublicSuffix('example.COM', 'example.com'); - checkPublicSuffix('WwW.example.COM', 'example.com'); - // Leading dot. - checkPublicSuffix('.com', null); - checkPublicSuffix('.example', null); - checkPublicSuffix('.example.com', null); - checkPublicSuffix('.example.example', null); - // Unlisted TLD. - checkPublicSuffix('example', null); - checkPublicSuffix('example.example', null); - checkPublicSuffix('b.example.example', null); - checkPublicSuffix('a.b.example.example', null); - // Listed, but non-Internet, TLD. - checkPublicSuffix('local', null); - checkPublicSuffix('example.local', null); - checkPublicSuffix('b.example.local', null); - checkPublicSuffix('a.b.example.local', null); - // TLD with only 1 rule. - checkPublicSuffix('biz', null); - checkPublicSuffix('domain.biz', 'domain.biz'); - checkPublicSuffix('b.domain.biz', 'domain.biz'); - checkPublicSuffix('a.b.domain.biz', 'domain.biz'); - // TLD with some 2-level rules. - checkPublicSuffix('com', null); - checkPublicSuffix('example.com', 'example.com'); - checkPublicSuffix('b.example.com', 'example.com'); - checkPublicSuffix('a.b.example.com', 'example.com'); - checkPublicSuffix('uk.com', null); - checkPublicSuffix('example.uk.com', 'example.uk.com'); - checkPublicSuffix('b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('a.b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('test.ac', 'test.ac'); - // TLD with only 1 (wildcard) rule. - checkPublicSuffix('cy', null); - checkPublicSuffix('c.cy', null); - checkPublicSuffix('b.c.cy', 'b.c.cy'); - checkPublicSuffix('a.b.c.cy', 'b.c.cy'); - // More complex TLD. - checkPublicSuffix('jp', null); - checkPublicSuffix('test.jp', 'test.jp'); - checkPublicSuffix('www.test.jp', 'test.jp'); - checkPublicSuffix('ac.jp', null); - checkPublicSuffix('test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('www.test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('kyoto.jp', null); - checkPublicSuffix('c.kyoto.jp', null); - checkPublicSuffix('b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('a.b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - // TLD with a wildcard rule and exceptions. - checkPublicSuffix('om', null); - checkPublicSuffix('test.om', null); - checkPublicSuffix('b.test.om', 'b.test.om'); - checkPublicSuffix('a.b.test.om', 'b.test.om'); - checkPublicSuffix('songfest.om', 'songfest.om'); - checkPublicSuffix('www.songfest.om', 'songfest.om'); - // US K12. - checkPublicSuffix('us', null); - checkPublicSuffix('test.us', 'test.us'); - checkPublicSuffix('www.test.us', 'test.us'); - checkPublicSuffix('ak.us', null); - checkPublicSuffix('test.ak.us', 'test.ak.us'); - checkPublicSuffix('www.test.ak.us', 'test.ak.us'); - checkPublicSuffix('k12.ak.us', null); - checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us'); - checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us'); - - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index 1d8615b5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,947 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/*jshint regexp:false */ -var net = require('net'); -var urlParse = require('url').parse; -var pubsuffix = require('./pubsuffix'); - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); -} - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -// From RFC2616 S2.2: -var TOKEN = /[\x21\x23-\x26\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]/; - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; - -// The name/key cannot be empty but the value can (S5.2): -var COOKIE_PAIR_STRICT = new RegExp('^('+TOKEN.source+'+)=("?)('+COOKIE_OCTET.source+'*)\\2'); -var COOKIE_PAIR = /^([^=\s]+)\s*=\s*("?)\s*(.*)\s*\2/; - -// RFC6265 S4.1.1 defines extension-av as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var NON_CTL_SEMICOLON = /[\x20-\x3A\x3C-\x7E]+/; -var EXTENSION_AV = NON_CTL_SEMICOLON; -var PATH_VALUE = NON_CTL_SEMICOLON; - -// Used for checking whether or not there is a trailing semi-colon -var TRAILING_SEMICOLON = /;+$/; - -/* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ -var DAY_OF_MONTH = /^(0?[1-9]|[12][0-9]|3[01])$/; - -/* RFC6265 S5.1.1.5: - * [fail if] - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - */ -var TIME = /(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])/; -var STRICT_TIME = /^(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/; - -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/i; -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var YEAR = /^([1-9][0-9]{1,3})$/; // 2 to 4 digits (will check range when parsing) - -var MAX_TIME = 2147483647000; // 31-bit max -var MAX_DATE = new Date(CookieJar.MAX_TIME); // 31-bit max -var MIN_TIME = 0; // 31-bit min -var MIN_DATE = new Date(CookieJar.MIN_TIME); // 31-bit min - - -// RFC6265 S5.1.1 date parser: -function parseDate(str,strict) { - if (!str) return; - var found_time, found_dom, found_month, found_year; - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) return; - - var date = new Date(); - date.setMilliseconds(0); - - for (var i=0; i<tokens.length; i++) { - var token = tokens[i].trim(); - if (!token.length) continue; - - var result; - - /* 2.1. If the found-time flag is not set and the token matches the time - * production, set the found-time flag and set the hour- value, - * minute-value, and second-value to the numbers denoted by the digits in - * the date-token, respectively. Skip the remaining sub-steps and continue - * to the next date-token. - */ - if (!found_time) { - result = (strict ? STRICT_TIME : TIME).exec(token); - if (result) { - found_time = true; - date.setUTCHours(result[1]); - date.setUTCMinutes(result[2]); - date.setUTCSeconds(result[3]); - continue; - } - } - - /* 2.2. If the found-day-of-month flag is not set and the date-token matches - * the day-of-month production, set the found-day-of- month flag and set - * the day-of-month-value to the number denoted by the date-token. Skip - * the remaining sub-steps and continue to the next date-token. - */ - if (!found_dom) { - result = DAY_OF_MONTH.exec(token); - if (result) { - found_dom = true; - date.setUTCDate(result[1]); - continue; - } - } - - /* 2.3. If the found-month flag is not set and the date-token matches the - * month production, set the found-month flag and set the month-value to - * the month denoted by the date-token. Skip the remaining sub-steps and - * continue to the next date-token. - */ - if (!found_month) { - result = MONTH.exec(token); - if (result) { - found_month = true; - date.setUTCMonth(MONTH_TO_NUM[result[1].toLowerCase()]); - continue; - } - } - - /* 2.4. If the found-year flag is not set and the date-token matches the year - * production, set the found-year flag and set the year-value to the number - * denoted by the date-token. Skip the remaining sub-steps and continue to - * the next date-token. - */ - if (!found_year) { - result = YEAR.exec(token); - if (result) { - var year = result[0]; - /* From S5.1.1: - * 3. If the year-value is greater than or equal to 70 and less - * than or equal to 99, increment the year-value by 1900. - * 4. If the year-value is greater than or equal to 0 and less - * than or equal to 69, increment the year-value by 2000. - */ - if (70 <= year && year <= 99) - year += 1900; - else if (0 <= year && year <= 69) - year += 2000; - - if (year < 1601) - return; // 5. ... the year-value is less than 1601 - - found_year = true; - date.setUTCFullYear(year); - continue; - } - } - } - - if (!(found_time && found_dom && found_month && found_year)) { - return; // 5. ... at least one of the found-day-of-month, found-month, found- - // year, or found-time flags is not set, - } - - return date; -} - -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) return null; - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) - str = punycode.toASCII(str); - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) return null; - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) return true; - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) return false; - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) return false; // it's a non-match (-1) or prefix (0) - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) // it's not a suffix - return false; - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') return false; - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") return "/"; - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") return path; - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) return "/"; - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - -/* - * "A request-path path-matches a given cookie-path if at least one of the - * following conditions holds:" - */ -function pathMatch(reqPath,cookiePath) { - // "o The cookie-path and the request-path are identical." - if (cookiePath === reqPath) - return true; - - var idx = reqPath.indexOf(cookiePath); - if (idx === 0) { - // "o The cookie-path is a prefix of the request-path, and the last - // character of the cookie-path is %x2F ("/")." - if (cookiePath.substr(-1) === "/") - return true; - - // " o The cookie-path is a prefix of the request-path, and the first - // character of the request-path that is not included in the cookie- path - // is a %x2F ("/") character." - if (reqPath.substr(cookiePath.length,1) === "/") - return true; - } - - return false; -} - -function parse(str, strict) { - str = str.trim(); - - // S4.1.1 Trailing semi-colons are not part of the specification. - // If we are not in strict mode we remove the trailing semi-colons. - var semiColonCheck = TRAILING_SEMICOLON.exec(str); - if (semiColonCheck) { - if (strict) return; - str = str.slice(0, semiColonCheck.index); - } - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRx = strict ? COOKIE_PAIR_STRICT : COOKIE_PAIR; - var result = pairRx.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) return; - - var c = new Cookie(); - c.key = result[1]; // the regexp should trim() already - c.value = result[3]; // [2] is quotes or empty-string - - if (firstSemi === -1) return c; - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) return c; - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(/\s*;\s*/); - while (cookie_avs.length) { - var av = cookie_avs.shift(); - - if (strict && !EXTENSION_AV.test(av)) return; - - var av_sep = av.indexOf('='); - var av_key, av_value; - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - if (av_value) av_value = av_value.trim(); - - switch(av_key) { - case 'expires': // S5.2.1 - if (!av_value) { if(strict){return}else{break;} } - var exp = parseDate(av_value,strict); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp == null) { if(strict){return}else{break;} } - c.expires = exp; - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - break; - - case 'max-age': // S5.2.2 - if (!av_value) { if(strict){return}else{break;} } - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (!/^-?[0-9]+$/.test(av_value)) { if(strict){return}else{break;} } - var delta = parseInt(av_value,10); - if (strict && delta <= 0) return; // S4.1.1 - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (!av_value) { if(strict){return}else{break;} } - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./,''); - if (!domain) { if(strict){return}else{break;} } // see "is empty" above - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - if (!av_value || av_value.substr(0,1) != "/") { if(strict){return}else{break;} } - c.path = av_value; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - if (av_value != null) { if(strict){return} } - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - if (av_value != null) { if(strict){return} } - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - // ensure a default date for sorting: - c.creation = new Date(); - return c; -} - -function fromJSON(str) { - if (!str) return null; - - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return null; - } - - var c = new Cookie(); - for (var i=0; i<numCookieProperties; i++) { - var prop = cookieProperties[i]; - if (obj[prop] == null) continue; - if (prop === 'expires' || - prop === 'creation' || - prop === 'lastAccessed') - { - c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(obj[prop]); - } else { - c[prop] = obj[prop]; - } - } - - - // ensure a default date for sorting: - c.creation = c.creation || new Date(); - - return c; -} - -/* Section 5.4 part 2: - * "* Cookies with longer paths are listed before cookies with - * shorter paths. - * - * * Among cookies that have equal-length path fields, cookies with - * earlier creation-times are listed before cookies with later - * creation-times." - */ - -function cookieCompare(a,b) { - // descending for length: b CMP a - var deltaLen = (b.path ? b.path.length : 0) - (a.path ? a.path.length : 0); - if (deltaLen !== 0) return deltaLen; - // ascending for time: a CMP b - return (a.creation ? a.creation.getTime() : MAX_TIME) - - (b.creation ? b.creation.getTime() : MAX_TIME); -} - -// Gives the permutation of all possible domainMatch()es of a given domain. The -// array is in shortest-to-longest order. Handy for indexing. -function permuteDomain(domain) { - var pubSuf = pubsuffix.getPublicSuffix(domain); - if (!pubSuf) return null; - if (pubSuf == domain) return [domain]; - - var prefix = domain.slice(0,-(pubSuf.length+1)); // ".example.com" - var parts = prefix.split('.').reverse(); - var cur = pubSuf; - var permutations = [cur]; - while (parts.length) { - cur = parts.shift()+'.'+cur; - permutations.push(cur); - } - return permutations; -} - -// Gives the permutation of all possible pathMatch()es of a given path. The -// array is in longest-to-shortest order. Handy for indexing. -function permutePath(path) { - var origPath = path; - if (path === '/') return ['/']; - if (path.lastIndexOf('/') === path.length-1) - path = path.substr(0,path.length-1); - var permutations = [path]; - while (path.length > 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) break; - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - - -function Cookie (opts) { - if (typeof opts !== "object") return; - Object.keys(opts).forEach(function (key) { - if (Cookie.prototype.hasOwnProperty(key)) { - this[key] = opts[key] || Cookie.prototype[key]; - } - }.bind(this)); -} - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set - -var cookieProperties = Object.freeze(Object.keys(Cookie.prototype).map(function(p) { - if (p instanceof Function) return; - return p; -})); -var numCookieProperties = cookieProperties.length; - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -Cookie.prototype.validate = function validate() { - if (!COOKIE_OCTETS.test(this.value)) - return false; - if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires,true)) - return false; - if (this.maxAge != null && this.maxAge <= 0) - return false; // "Max-Age=" non-zero-digit *DIGIT - if (this.path != null && !PATH_VALUE.test(this.path)) - return false; - - var cdomain = this.cdomain(); - if (cdomain) { - if (cdomain.match(/\.$/)) - return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this - var suffix = pubsuffix.getPublicSuffix(cdomain); - if (suffix == null) // it's a public suffix - return false; - } - return true; -}; - -Cookie.prototype.setExpires = function setExpires(exp) { - if (exp instanceof Date) this.expires = exp; - else this.expires = parseDate(exp) || "Infinity"; -}; - -Cookie.prototype.setMaxAge = function setMaxAge(age) { - if (age === Infinity || age === -Infinity) - this.maxAge = age.toString(); // so JSON.stringify() works - else - this.maxAge = age; -}; - -// gives Cookie header format -Cookie.prototype.cookieString = function cookieString() { - var val = this.value; - if (val == null) val = ''; - if (!val.length || COOKIE_OCTETS.test(val)) - return this.key+'='+val; - else - return this.key+'="'+val+'"'; -}; - -// gives Set-Cookie header format -Cookie.prototype.toString = function toString() { - var str = this.cookieString(); - - if (this.expires != Infinity) { - if (this.expires instanceof Date) - str += '; Expires='+formatDate(this.expires); - else - str += '; Expires='+this.expires; - } - - if (this.maxAge != null && this.maxAge != Infinity) - str += '; Max-Age='+this.maxAge; - - if (this.domain && !this.hostOnly) - str += '; Domain='+this.domain; - if (this.path) - str += '; Path='+this.path; - - if (this.secure) str += '; Secure'; - if (this.httpOnly) str += '; HttpOnly'; - if (this.extensions) { - this.extensions.forEach(function(ext) { - str += '; '+ext; - }); - } - - return str; -}; - -// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -// S5.3 says to give the "latest representable date" for which we use Infinity -// For "expired" we use 0 -Cookie.prototype.TTL = function TTL(now) { - /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires - * attribute, the Max-Age attribute has precedence and controls the - * expiration date of the cookie. - * (Concurs with S5.3 step 3) - */ - if (this.maxAge != null) { - return this.maxAge<=0 ? 0 : this.maxAge*1000; - } - - var expires = this.expires; - if (expires != Infinity) { - if (!(expires instanceof Date)) { - expires = parseDate(expires) || Infinity; - } - - if (expires == Infinity) - return Infinity; - - return expires.getTime() - (now || Date.now()); - } - - return Infinity; -}; - -// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -Cookie.prototype.expiryTime = function expiryTime(now) { - if (this.maxAge != null) { - var relativeTo = this.creation || now || new Date(); - var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000; - return relativeTo.getTime() + age; - } - - if (this.expires == Infinity) return Infinity; - return this.expires.getTime(); -}; - -// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere), except it returns a Date -Cookie.prototype.expiryDate = function expiryDate(now) { - var millisec = this.expiryTime(now); - if (millisec == Infinity) return new Date(MAX_TIME); - else if (millisec == -Infinity) return new Date(MIN_TIME); - else return new Date(millisec); -}; - -// This replaces the "persistent-flag" parts of S5.3 step 3 -Cookie.prototype.isPersistent = function isPersistent() { - return (this.maxAge != null || this.expires != Infinity); -}; - -// Mostly S5.1.2 and S5.2.3: -Cookie.prototype.cdomain = -Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() { - if (this.domain == null) return null; - return canonicalDomain(this.domain); -}; - - -var memstore; -function CookieJar(store, rejectPublicSuffixes) { - if (rejectPublicSuffixes != null) this.rejectPublicSuffixes = rejectPublicSuffixes; - if (!store) { - memstore = memstore || require('./memstore'); - store = new memstore.MemoryCookieStore(); - } - this.store = store; -} -CookieJar.prototype.store = null; -CookieJar.prototype.rejectPublicSuffixes = true; - -CookieJar.prototype.setCookie = function setCookie(cookie, url, options, cb) { - var err; - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - - // S5.3 step 1 - if (!(cookie instanceof Cookie)) - cookie = Cookie.parse(cookie, options.strict === true); - if (!cookie) { - err = new Error("Cookie failed to parse"); - return cb(options.ignoreError ? null : err); - } - - // S5.3 step 2 - var now = options.now || new Date(); // will assign later to save effort in the face of errors - - // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie() - - // S5.3 step 4: NOOP; domain is null by default - - // S5.3 step 5: public suffixes - if (this.rejectPublicSuffixes && cookie.domain) { - var suffix = pubsuffix.getPublicSuffix(cookie.cdomain()); - if (suffix == null) { // e.g. "com" - err = new Error("Cookie has domain set to a public suffix"); - return cb(options.ignoreError ? null : err); - } - } - - // S5.3 step 6: - if (cookie.domain) { - if (!domainMatch(host, cookie.cdomain(), false)) { - err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host); - return cb(options.ignoreError ? null : err); - } - - if (cookie.hostOnly == null) // don't reset if already set - cookie.hostOnly = false; - - } else { - cookie.hostOnly = true; - cookie.domain = host; - } - - // S5.3 step 7: "Otherwise, set the cookie's path to the default-path of the - // request-uri" - if (!cookie.path) { - cookie.path = defaultPath(context.pathname); - cookie.pathIsDefault = true; - } else { - if (cookie.path.length > 1 && cookie.path.substr(-1) == '/') - cookie.path = cookie.path.slice(0,-1); - } - - // S5.3 step 8: NOOP; secure attribute - // S5.3 step 9: NOOP; httpOnly attribute - - // S5.3 step 10 - if (options.http === false && cookie.httpOnly) { - err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - - var store = this.store; - - if (!store.updateCookie) { - store.updateCookie = function stubUpdateCookie(oldCookie, newCookie, cb) { - this.putCookie(newCookie, cb); - }; - } - - store.findCookie(cookie.domain, cookie.path, cookie.key, function(err,oldCookie) { - if (err) return cb(err); - - var next = function(err) { - if (err) return cb(err); - else cb(null, cookie); - }; - - if (oldCookie) { - // S5.3 step 11 - "If the cookie store contains a cookie with the same name, - // domain, and path as the newly created cookie:" - if (options.http === false && oldCookie.httpOnly) { // step 11.2 - err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - cookie.creation = oldCookie.creation; // step 11.3 - cookie.lastAccessed = now; - // Step 11.4 (delete cookie) is implied by just setting the new one: - store.updateCookie(oldCookie, cookie, next); // step 12 - - } else { - cookie.creation = cookie.lastAccessed = now; - store.putCookie(cookie, next); // step 12 - } - }); -}; - -// RFC6365 S5.4 -CookieJar.prototype.getCookies = function getCookies(url, options, cb) { - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - var path = context.pathname || '/'; - - var secure = options.secure; - if (secure == null && context.protocol && - (context.protocol == 'https:' || context.protocol == 'wss:')) - { - secure = true; - } - - var http = options.http; - if (http == null) http = true; - - var now = options.now || Date.now(); - var expireCheck = options.expire !== false; - var allPaths = !!options.allPaths; - var store = this.store; - - function matchingCookie(c) { - // "Either: - // The cookie's host-only-flag is true and the canonicalized - // request-host is identical to the cookie's domain. - // Or: - // The cookie's host-only-flag is false and the canonicalized - // request-host domain-matches the cookie's domain." - if (c.hostOnly) { - if (c.domain != host) return false; - } else { - if (!domainMatch(host, c.domain, false)) return false; - } - - // "The request-uri's path path-matches the cookie's path." - if (!allPaths && !pathMatch(path, c.path)) - return false; - - // "If the cookie's secure-only-flag is true, then the request-uri's - // scheme must denote a "secure" protocol" - if (c.secure && !secure) - return false; - - // "If the cookie's http-only-flag is true, then exclude the cookie if the - // cookie-string is being generated for a "non-HTTP" API" - if (c.httpOnly && !http) - return false; - - // deferred from S5.3 - // non-RFC: allow retention of expired cookies by choice - if (expireCheck && c.expiryTime() <= now) { - store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored - return false; - } - - return true; - } - - store.findCookies(host, allPaths ? null : path, function(err,cookies) { - if (err) return cb(err); - - cookies = cookies.filter(matchingCookie); - - // sorting of S5.4 part 2 - if (options.sort !== false) - cookies = cookies.sort(cookieCompare); - - // S5.4 part 3 - var now = new Date(); - cookies.forEach(function(c) { c.lastAccessed = now }); - // TODO persist lastAccessed - - cb(null,cookies); - }); -}; - -CookieJar.prototype.getCookieString = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) cb(err); - else cb(null, cookies.map(function(c){return c.cookieString()}).join('; ')); - }; - args.push(next); - this.getCookies.apply(this,args); -}; - -CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) cb(err); - else cb(null, cookies.map(function(c){return c.toString()})); - }; - args.push(next); - this.getCookies.apply(this,args); -}; - - - -module.exports = { - CookieJar: CookieJar, - Cookie: Cookie, - parseDate: parseDate, - formatDate: formatDate, - parse: parse, - fromJSON: fromJSON, - domainMatch: domainMatch, - defaultPath: defaultPath, - pathMatch: pathMatch, - getPublicSuffix: pubsuffix.getPublicSuffix, - cookieCompare: cookieCompare, - permuteDomain: permuteDomain, - permutePath: permutePath, - canonicalDomain: canonicalDomain, -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js deleted file mode 100644 index 66abb376..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js +++ /dev/null @@ -1,102 +0,0 @@ -var tough = require('./cookie'); -var permuteDomain = tough.permuteDomain; -var permutePath = tough.permutePath; -var util = require('util'); - -function MemoryCookieStore() { - this.idx = {}; -} -module.exports.MemoryCookieStore = MemoryCookieStore; -MemoryCookieStore.prototype.idx = null; - -// force a default depth: -MemoryCookieStore.prototype.inspect = function inspect() { - return "{ idx: "+util.inspect(this.idx, false, 2)+' }'; -}; - -MemoryCookieStore.prototype.findCookie = function findCookie(domain, path, key, cb) { - if (!this.idx[domain]) return cb(null,undefined); - if (!this.idx[domain][path]) return cb(null,undefined); - return cb(null,this.idx[domain][path][key]||null); -}; - -MemoryCookieStore.prototype.findCookies = function findCookies(domain, path, cb) { - var results = []; - if (!domain) return cb(null,[]); - - var pathMatcher; - if (!path) { - // null or '/' means "all paths" - pathMatcher = function matchAll(domainIndex) { - for (var curPath in domainIndex) { - var pathIndex = domainIndex[curPath]; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - } - }; - - } else if (path === '/') { - pathMatcher = function matchSlash(domainIndex) { - var pathIndex = domainIndex['/']; - if (!pathIndex) return; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }; - - } else { - var paths = permutePath(path) || [path]; - pathMatcher = function matchRFC(domainIndex) { - paths.forEach(function(curPath) { - var pathIndex = domainIndex[curPath]; - if (!pathIndex) return; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }); - }; - } - - var domains = permuteDomain(domain) || [domain]; - var idx = this.idx; - domains.forEach(function(curDomain) { - var domainIndex = idx[curDomain]; - if (!domainIndex) return; - pathMatcher(domainIndex); - }); - - cb(null,results); -}; - -MemoryCookieStore.prototype.putCookie = function putCookie(cookie, cb) { - if (!this.idx[cookie.domain]) this.idx[cookie.domain] = {}; - if (!this.idx[cookie.domain][cookie.path]) this.idx[cookie.domain][cookie.path] = {}; - this.idx[cookie.domain][cookie.path][cookie.key] = cookie; - cb(null); -}; - -MemoryCookieStore.prototype.updateCookie = function updateCookie(oldCookie, newCookie, cb) { - // updateCookie() may avoid updating cookies that are identical. For example, - // lastAccessed may not be important to some stores and an equality - // comparison could exclude that field. - this.putCookie(newCookie,cb); -}; - -MemoryCookieStore.prototype.removeCookie = function removeCookie(domain, path, key, cb) { - if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) { - delete this.idx[domain][path][key]; - } - cb(null); -}; - -MemoryCookieStore.prototype.removeCookies = function removeCookies(domain, path, cb) { - if (!this.idx[domain]) { - if (path) { - delete this.idx[domain][path]; - } else { - delete this.idx[domain]; - } - } - return cb(null); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js deleted file mode 100644 index a7031473..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************** - * AUTOMATICALLY GENERATED by generate-pubsuffix.js * - * DO NOT EDIT! * - ****************************************************/ - -module.exports.getPublicSuffix = function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i<parts.length; i++) { - var part = parts[i]; - var starstr = '*'+suffix; - var partstr = part+suffix; - - if (index[starstr]) { // star rule matches - suffixLen = i+1; - if (index[partstr] === false) { // exception rule matches (NB: false, not undefined) - suffixLen--; - } - } else if (index[partstr]) { // exact match, not exception - suffixLen = i+1; - } - - suffix = '.'+part+suffix; - } - - if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp'); - return null; - } - - if (suffixLen && parts.length > suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -}; - -// The following generated structure is used under the MPL version 1.1 -// See public-suffix.txt for more information - -var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"*.ar":true,"congresodelalengua3.ar":false,"educ.ar":false,"gobiernoelectronico.ar":false,"mecon.ar":false,"nacion.ar":false,"nic.ar":false,"promocion.ar":false,"retina.ar":false,"uba.ar":false,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"csiro.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"act.gov.au":true,"nt.gov.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"can.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mus.br":true,"net.br":true,"nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"gov.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cx":true,"gov.cx":true,"*.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"*.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"org.gg":true,"net.gg":true,"sch.gg":true,"gov.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"gm":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"*.gt":true,"www.gt":false,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"co.id":true,"go.id":true,"mil.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"*.il":true,"im":true,"co.im":true,"ltd.co.im":true,"plc.co.im":true,"net.im":true,"gov.im":true,"org.im":true,"nic.im":true,"ac.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"agrigento.it":true,"ag.it":true,"alessandria.it":true,"al.it":true,"ancona.it":true,"an.it":true,"aosta.it":true,"aoste.it":true,"ao.it":true,"arezzo.it":true,"ar.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"ap.it":true,"asti.it":true,"at.it":true,"avellino.it":true,"av.it":true,"bari.it":true,"ba.it":true,"andria-barletta-trani.it":true,"andriabarlettatrani.it":true,"trani-barletta-andria.it":true,"tranibarlettaandria.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"andria-trani-barletta.it":true,"andriatranibarletta.it":true,"trani-andria-barletta.it":true,"traniandriabarletta.it":true,"bt.it":true,"belluno.it":true,"bl.it":true,"benevento.it":true,"bn.it":true,"bergamo.it":true,"bg.it":true,"biella.it":true,"bi.it":true,"bologna.it":true,"bo.it":true,"bolzano.it":true,"bozen.it":true,"balsan.it":true,"alto-adige.it":true,"altoadige.it":true,"suedtirol.it":true,"bz.it":true,"brescia.it":true,"bs.it":true,"brindisi.it":true,"br.it":true,"cagliari.it":true,"ca.it":true,"caltanissetta.it":true,"cl.it":true,"campobasso.it":true,"cb.it":true,"carboniaiglesias.it":true,"carbonia-iglesias.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"ci.it":true,"caserta.it":true,"ce.it":true,"catania.it":true,"ct.it":true,"catanzaro.it":true,"cz.it":true,"chieti.it":true,"ch.it":true,"como.it":true,"co.it":true,"cosenza.it":true,"cs.it":true,"cremona.it":true,"cr.it":true,"crotone.it":true,"kr.it":true,"cuneo.it":true,"cn.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"ogliastra.it":true,"og.it":true,"enna.it":true,"en.it":true,"ferrara.it":true,"fe.it":true,"fermo.it":true,"fm.it":true,"firenze.it":true,"florence.it":true,"fi.it":true,"foggia.it":true,"fg.it":true,"forli-cesena.it":true,"forlicesena.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"fc.it":true,"frosinone.it":true,"fr.it":true,"genova.it":true,"genoa.it":true,"ge.it":true,"gorizia.it":true,"go.it":true,"grosseto.it":true,"gr.it":true,"imperia.it":true,"im.it":true,"isernia.it":true,"is.it":true,"laquila.it":true,"aquila.it":true,"aq.it":true,"la-spezia.it":true,"laspezia.it":true,"sp.it":true,"latina.it":true,"lt.it":true,"lecce.it":true,"le.it":true,"lecco.it":true,"lc.it":true,"livorno.it":true,"li.it":true,"lodi.it":true,"lo.it":true,"lucca.it":true,"lu.it":true,"macerata.it":true,"mc.it":true,"mantova.it":true,"mn.it":true,"massa-carrara.it":true,"massacarrara.it":true,"carrara-massa.it":true,"carraramassa.it":true,"ms.it":true,"matera.it":true,"mt.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"vs.it":true,"messina.it":true,"me.it":true,"milano.it":true,"milan.it":true,"mi.it":true,"modena.it":true,"mo.it":true,"monza.it":true,"monza-brianza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"monza-e-della-brianza.it":true,"mb.it":true,"napoli.it":true,"naples.it":true,"na.it":true,"novara.it":true,"no.it":true,"nuoro.it":true,"nu.it":true,"oristano.it":true,"or.it":true,"padova.it":true,"padua.it":true,"pd.it":true,"palermo.it":true,"pa.it":true,"parma.it":true,"pr.it":true,"pavia.it":true,"pv.it":true,"perugia.it":true,"pg.it":true,"pescara.it":true,"pe.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"pu.it":true,"piacenza.it":true,"pc.it":true,"pisa.it":true,"pi.it":true,"pistoia.it":true,"pt.it":true,"pordenone.it":true,"pn.it":true,"potenza.it":true,"pz.it":true,"prato.it":true,"po.it":true,"ragusa.it":true,"rg.it":true,"ravenna.it":true,"ra.it":true,"reggio-calabria.it":true,"reggiocalabria.it":true,"rc.it":true,"reggio-emilia.it":true,"reggioemilia.it":true,"re.it":true,"rieti.it":true,"ri.it":true,"rimini.it":true,"rn.it":true,"roma.it":true,"rome.it":true,"rm.it":true,"rovigo.it":true,"ro.it":true,"salerno.it":true,"sa.it":true,"sassari.it":true,"ss.it":true,"savona.it":true,"sv.it":true,"siena.it":true,"si.it":true,"siracusa.it":true,"sr.it":true,"sondrio.it":true,"so.it":true,"taranto.it":true,"ta.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"ot.it":true,"teramo.it":true,"te.it":true,"terni.it":true,"tr.it":true,"torino.it":true,"turin.it":true,"to.it":true,"trapani.it":true,"tp.it":true,"trento.it":true,"trentino.it":true,"tn.it":true,"treviso.it":true,"tv.it":true,"trieste.it":true,"ts.it":true,"udine.it":true,"ud.it":true,"varese.it":true,"va.it":true,"venezia.it":true,"venice.it":true,"ve.it":true,"verbania.it":true,"vb.it":true,"vercelli.it":true,"vc.it":true,"verona.it":true,"vr.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vv.it":true,"vicenza.it":true,"vi.it":true,"viterbo.it":true,"vt.it":true,"je":true,"co.je":true,"org.je":true,"net.je":true,"sch.je":true,"gov.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"*.aichi.jp":true,"*.akita.jp":true,"*.aomori.jp":true,"*.chiba.jp":true,"*.ehime.jp":true,"*.fukui.jp":true,"*.fukuoka.jp":true,"*.fukushima.jp":true,"*.gifu.jp":true,"*.gunma.jp":true,"*.hiroshima.jp":true,"*.hokkaido.jp":true,"*.hyogo.jp":true,"*.ibaraki.jp":true,"*.ishikawa.jp":true,"*.iwate.jp":true,"*.kagawa.jp":true,"*.kagoshima.jp":true,"*.kanagawa.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.kochi.jp":true,"*.kumamoto.jp":true,"*.kyoto.jp":true,"*.mie.jp":true,"*.miyagi.jp":true,"*.miyazaki.jp":true,"*.nagano.jp":true,"*.nagasaki.jp":true,"*.nagoya.jp":true,"*.nara.jp":true,"*.niigata.jp":true,"*.oita.jp":true,"*.okayama.jp":true,"*.okinawa.jp":true,"*.osaka.jp":true,"*.saga.jp":true,"*.saitama.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.shiga.jp":true,"*.shimane.jp":true,"*.shizuoka.jp":true,"*.tochigi.jp":true,"*.tokushima.jp":true,"*.tokyo.jp":true,"*.tottori.jp":true,"*.toyama.jp":true,"*.wakayama.jp":true,"*.yamagata.jp":true,"*.yamaguchi.jp":true,"*.yamanashi.jp":true,"*.yokohama.jp":true,"metro.tokyo.jp":false,"pref.aichi.jp":false,"pref.akita.jp":false,"pref.aomori.jp":false,"pref.chiba.jp":false,"pref.ehime.jp":false,"pref.fukui.jp":false,"pref.fukuoka.jp":false,"pref.fukushima.jp":false,"pref.gifu.jp":false,"pref.gunma.jp":false,"pref.hiroshima.jp":false,"pref.hokkaido.jp":false,"pref.hyogo.jp":false,"pref.ibaraki.jp":false,"pref.ishikawa.jp":false,"pref.iwate.jp":false,"pref.kagawa.jp":false,"pref.kagoshima.jp":false,"pref.kanagawa.jp":false,"pref.kochi.jp":false,"pref.kumamoto.jp":false,"pref.kyoto.jp":false,"pref.mie.jp":false,"pref.miyagi.jp":false,"pref.miyazaki.jp":false,"pref.nagano.jp":false,"pref.nagasaki.jp":false,"pref.nara.jp":false,"pref.niigata.jp":false,"pref.oita.jp":false,"pref.okayama.jp":false,"pref.okinawa.jp":false,"pref.osaka.jp":false,"pref.saga.jp":false,"pref.saitama.jp":false,"pref.shiga.jp":false,"pref.shimane.jp":false,"pref.shizuoka.jp":false,"pref.tochigi.jp":false,"pref.tokushima.jp":false,"pref.tottori.jp":false,"pref.toyama.jp":false,"pref.wakayama.jp":false,"pref.yamagata.jp":false,"pref.yamaguchi.jp":false,"pref.yamanashi.jp":false,"city.chiba.jp":false,"city.fukuoka.jp":false,"city.hiroshima.jp":false,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.kyoto.jp":false,"city.nagoya.jp":false,"city.niigata.jp":false,"city.okayama.jp":false,"city.osaka.jp":false,"city.saitama.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.shizuoka.jp":false,"city.yokohama.jp":false,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"*.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ac.ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"net.ng":true,"org.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"*.nz":true,"*.om":true,"mediaphone.om":false,"nawrastelecom.om":false,"nawras.om":false,"omanmobile.om":false,"omanpost.om":false,"omantel.om":false,"rakpetroleum.om":false,"siemens.om":false,"songfest.om":false,"statecouncil.om":false,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"com.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"net.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"org.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"6bone.pl":true,"art.pl":true,"mbone.pl":true,"gov.pl":true,"uw.gov.pl":true,"um.gov.pl":true,"ug.gov.pl":true,"upow.gov.pl":true,"starostwo.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"po.gov.pl":true,"pa.gov.pl":true,"ngo.pl":true,"irc.pl":true,"usenet.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"siedlce.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"*.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"mosreg.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"pskov.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"sshn.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"si":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"*.sv":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"*.tr":true,"nic.tr":false,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"ac.tz":true,"co.tz":true,"go.tz":true,"mil.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"chernigov.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"ks.ua":true,"kv.ua":true,"lg.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lviv.ua":true,"mk.ua":true,"nikolaev.ua":true,"od.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rovno.ua":true,"rv.ua":true,"sebastopol.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vn.ua":true,"zaporizhzhe.ua":true,"zp.ua":true,"zhitomir.ua":true,"zt.ua":true,"co.ua":true,"pp.ua":true,"ug":true,"co.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"or.ug":true,"*.uk":true,"*.sch.uk":true,"bl.uk":false,"british-library.uk":false,"icnet.uk":false,"jet.uk":false,"mod.uk":false,"nel.uk":false,"nhs.uk":false,"nic.uk":false,"nls.uk":false,"national-library-scotland.uk":false,"parliament.uk":false,"police.uk":false,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.nd.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.sd.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wv.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wv.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"*.uy":true,"uz":true,"com.uz":true,"co.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"*.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--54b7fta0cc":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--mgb9awbf":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"*.za":true,"*.zm":true,"*.zw":true,"biz.at":true,"info.at":true,"priv.at":true,"co.ca":true,"ar.com":true,"br.com":true,"cn.com":true,"de.com":true,"eu.com":true,"gb.com":true,"gr.com":true,"hu.com":true,"jpn.com":true,"kr.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"uk.com":true,"us.com":true,"uy.com":true,"za.com":true,"gb.net":true,"jp.net":true,"se.net":true,"uk.net":true,"ae.org":true,"us.org":true,"com.de":true,"operaunite.com":true,"appspot.com":true,"iki.fi":true,"c.la":true,"za.net":true,"za.org":true,"co.nl":true,"co.no":true,"co.pl":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true}); - -// END of automatically generated file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt deleted file mode 100644 index 11dddd00..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt +++ /dev/null @@ -1,278 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt deleted file mode 100644 index 97067e54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Mathias Bynens <http://mathiasbynens.be/> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md deleted file mode 100644 index 6dae5c4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js) - -A robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms. - -This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: - -* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C) -* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) -* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) -* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) -* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) - -This project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc). - -## Installation - -Via [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2): - -```bash -npm install punycode -``` - -Via [Bower](http://bower.io/): - -```bash -bower install punycode -``` - -Via [Component](https://github.com/component/component): - -```bash -component install bestiejs/punycode.js -``` - -In a browser: - -```html -<script src="punycode.js"></script> -``` - -In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): - -```js -var punycode = require('punycode'); -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('punycode.js'); -``` - -Using an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require( - { - 'paths': { - 'punycode': 'path/to/punycode' - } - }, - ['punycode'], - function(punycode) { - console.log(punycode); - } -); -``` - -## API - -### `punycode.decode(string)` - -Converts a Punycode string of ASCII symbols to a string of Unicode symbols. - -```js -// decode domain name parts -punycode.decode('maana-pta'); // 'mañana' -punycode.decode('--dqo34k'); // '☃-⌘' -``` - -### `punycode.encode(string)` - -Converts a string of Unicode symbols to a Punycode string of ASCII symbols. - -```js -// encode domain name parts -punycode.encode('mañana'); // 'maana-pta' -punycode.encode('☃-⌘'); // '--dqo34k' -``` - -### `punycode.toUnicode(domain)` - -Converts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. - -```js -// decode domain names -punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' -punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' -``` - -### `punycode.toASCII(domain)` - -Converts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. - -```js -// encode domain names -punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' -punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' -``` - -### `punycode.ucs2` - -#### `punycode.ucs2.decode(string)` - -Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. - -```js -punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63] -// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: -punycode.ucs2.decode('\uD834\uDF06'); // [0x1D306] -``` - -#### `punycode.ucs2.encode(codePoints)` - -Creates a string based on an array of numeric code point values. - -```js -punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc' -punycode.ucs2.encode([0x1D306]); // '\uD834\uDF06' -``` - -### `punycode.version` - -A string representing the current Punycode.js version number. - -[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme) - -## Unit tests & code coverage - -After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. - -Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. - -To generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`. - -Feel free to fork if you see possible improvements! - -## Author - -| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") | -|---| -| [Mathias Bynens](http://mathiasbynens.be/) | - -## Contributors - -| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## License - -Punycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json deleted file mode 100644 index 35237574..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "punycode", - "version": "1.2.4", - "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", - "homepage": "http://mths.be/punycode", - "main": "punycode.js", - "keywords": [ - "punycode", - "unicode", - "idn", - "idna", - "dns", - "url", - "domain" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://mths.be/mit" - }, - { - "type": "GPL", - "url": "http://mths.be/gpl" - } - ], - "author": { - "name": "Mathias Bynens", - "email": "mathias@qiwi.be", - "url": "http://mathiasbynens.be/" - }, - "contributors": [ - { - "name": "Mathias Bynens", - "email": "mathias@qiwi.be", - "url": "http://mathiasbynens.be/" - }, - { - "name": "John-David Dalton", - "email": "john.david.dalton@gmail.com", - "url": "http://allyoucanleet.com/" - } - ], - "bugs": { - "url": "https://github.com/bestiejs/punycode.js/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/bestiejs/punycode.js.git" - }, - "engines": [ - "node", - "rhino" - ], - "directories": { - "doc": "docs", - "test": "tests" - }, - "scripts": { - "test": "node tests/tests.js" - }, - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-uglify": "~0.2.2", - "grunt-shell": "~0.6.4", - "istanbul": "~0.2.4", - "qunit-clib": "~1.3.0", - "qunitjs": "~1.11.0", - "requirejs": "~2.1.6" - }, - "readme": "# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js)\n\nA robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms.\n\nThis JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:\n\n* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C)\n* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)\n* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)\n* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)\n* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))\n\nThis project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc).\n\n## Installation\n\nVia [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2):\n\n```bash\nnpm install punycode\n```\n\nVia [Bower](http://bower.io/):\n\n```bash\nbower install punycode\n```\n\nVia [Component](https://github.com/component/component):\n\n```bash\ncomponent install bestiejs/punycode.js\n```\n\nIn a browser:\n\n```html\n<script src=\"punycode.js\"></script>\n```\n\nIn [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):\n\n```js\nvar punycode = require('punycode');\n```\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload('punycode.js');\n```\n\nUsing an AMD loader like [RequireJS](http://requirejs.org/):\n\n```js\nrequire(\n {\n 'paths': {\n 'punycode': 'path/to/punycode'\n }\n },\n ['punycode'],\n function(punycode) {\n console.log(punycode);\n }\n);\n```\n\n## API\n\n### `punycode.decode(string)`\n\nConverts a Punycode string of ASCII symbols to a string of Unicode symbols.\n\n```js\n// decode domain name parts\npunycode.decode('maana-pta'); // 'mañana'\npunycode.decode('--dqo34k'); // '☃-⌘'\n```\n\n### `punycode.encode(string)`\n\nConverts a string of Unicode symbols to a Punycode string of ASCII symbols.\n\n```js\n// encode domain name parts\npunycode.encode('mañana'); // 'maana-pta'\npunycode.encode('☃-⌘'); // '--dqo34k'\n```\n\n### `punycode.toUnicode(domain)`\n\nConverts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.\n\n```js\n// decode domain names\npunycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'\npunycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com'\n```\n\n### `punycode.toASCII(domain)`\n\nConverts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII.\n\n```js\n// encode domain names\npunycode.toASCII('mañana.com'); // 'xn--maana-pta.com'\npunycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com'\n```\n\n### `punycode.ucs2`\n\n#### `punycode.ucs2.decode(string)`\n\nCreates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.\n\n```js\npunycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]\n// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:\npunycode.ucs2.decode('\\uD834\\uDF06'); // [0x1D306]\n```\n\n#### `punycode.ucs2.encode(codePoints)`\n\nCreates a string based on an array of numeric code point values.\n\n```js\npunycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc'\npunycode.ucs2.encode([0x1D306]); // '\\uD834\\uDF06'\n```\n\n### `punycode.version`\n\nA string representing the current Punycode.js version number.\n\n[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme)\n\n## Unit tests & code coverage\n\nAfter cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.\n\nOnce that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`.\n\nTo generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`.\n\nFeel free to fork if you see possible improvements!\n\n## Author\n\n| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias \"Follow @mathias on Twitter\") |\n|---|\n| [Mathias Bynens](http://mathiasbynens.be/) |\n\n## Contributors\n\n| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton \"Follow @jdalton on Twitter\") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## License\n\nPunycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses.\n", - "readmeFilename": "README.md", - "_id": "punycode@1.2.4", - "_from": "punycode@>=0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js deleted file mode 100644 index d5b9bc21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js +++ /dev/null @@ -1,507 +0,0 @@ -/*! http://mths.be/punycode v1.2.4 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports; - var freeModule = typeof module == 'object' && module && - module.exports == freeExports && module; - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /\x2E|\u3002|\uFF0E|\uFF61/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - while (length--) { - array[length] = fn(array[length]); - } - return array; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings. - * @private - * @param {String} domain The domain name. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - return map(string.split(regexSeparators), fn).join('.'); - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see <http://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols to a Punycode string of ASCII-only - * symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name to Unicode. Only the - * Punycoded parts of the domain name will be converted, i.e. it doesn't - * matter if you call it on a string that has already been converted to - * Unicode. - * @memberOf punycode - * @param {String} domain The Punycode domain name to convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(domain) { - return mapDomain(domain, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name to Punycode. Only the - * non-ASCII parts of the domain name will be converted, i.e. it doesn't - * matter if you call it with a domain that's already in ASCII. - * @memberOf punycode - * @param {String} domain The domain name to convert, as a Unicode string. - * @returns {String} The Punycode representation of the given domain name. - */ - function toASCII(domain) { - return mapDomain(domain, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.2.4', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see <http://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && !freeExports.nodeType) { - if (freeModule) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js deleted file mode 100644 index 24c8af24..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! http://mths.be/punycode v1.2.4 by @mathias */ -!function(a){function b(a){throw RangeError(E[a])}function c(a,b){for(var c=a.length;c--;)a[c]=b(a[c]);return a}function d(a,b){return c(a.split(D),b).join(".")}function e(a){for(var b,c,d=[],e=0,f=a.length;f>e;)b=a.charCodeAt(e++),b>=55296&&56319>=b&&f>e?(c=a.charCodeAt(e++),56320==(64512&c)?d.push(((1023&b)<<10)+(1023&c)+65536):(d.push(b),e--)):d.push(b);return d}function f(a){return c(a,function(a){var b="";return a>65535&&(a-=65536,b+=H(a>>>10&1023|55296),a=56320|1023&a),b+=H(a)}).join("")}function g(a){return 10>a-48?a-22:26>a-65?a-65:26>a-97?a-97:t}function h(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function i(a,b,c){var d=0;for(a=c?G(a/x):a>>1,a+=G(a/b);a>F*v>>1;d+=t)a=G(a/F);return G(d+(F+1)*a/(a+w))}function j(a){var c,d,e,h,j,k,l,m,n,o,p=[],q=a.length,r=0,w=z,x=y;for(d=a.lastIndexOf(A),0>d&&(d=0),e=0;d>e;++e)a.charCodeAt(e)>=128&&b("not-basic"),p.push(a.charCodeAt(e));for(h=d>0?d+1:0;q>h;){for(j=r,k=1,l=t;h>=q&&b("invalid-input"),m=g(a.charCodeAt(h++)),(m>=t||m>G((s-r)/k))&&b("overflow"),r+=m*k,n=x>=l?u:l>=x+v?v:l-x,!(n>m);l+=t)o=t-n,k>G(s/o)&&b("overflow"),k*=o;c=p.length+1,x=i(r-j,c,0==j),G(r/c)>s-w&&b("overflow"),w+=G(r/c),r%=c,p.splice(r++,0,w)}return f(p)}function k(a){var c,d,f,g,j,k,l,m,n,o,p,q,r,w,x,B=[];for(a=e(a),q=a.length,c=z,d=0,j=y,k=0;q>k;++k)p=a[k],128>p&&B.push(H(p));for(f=g=B.length,g&&B.push(A);q>f;){for(l=s,k=0;q>k;++k)p=a[k],p>=c&&l>p&&(l=p);for(r=f+1,l-c>G((s-d)/r)&&b("overflow"),d+=(l-c)*r,c=l,k=0;q>k;++k)if(p=a[k],c>p&&++d>s&&b("overflow"),p==c){for(m=d,n=t;o=j>=n?u:n>=j+v?v:n-j,!(o>m);n+=t)x=m-o,w=t-o,B.push(H(h(o+x%w,0))),m=G(x/w);B.push(H(h(m,0))),j=i(d,r,f==g),d=0,++f}++d,++c}return B.join("")}function l(a){return d(a,function(a){return B.test(a)?j(a.slice(4).toLowerCase()):a})}function m(a){return d(a,function(a){return C.test(a)?"xn--"+k(a):a})}var n="object"==typeof exports&&exports,o="object"==typeof module&&module&&module.exports==n&&module,p="object"==typeof global&&global;(p.global===p||p.window===p)&&(a=p);var q,r,s=2147483647,t=36,u=1,v=26,w=38,x=700,y=72,z=128,A="-",B=/^xn--/,C=/[^ -~]/,D=/\x2E|\u3002|\uFF0E|\uFF61/g,E={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=t-u,G=Math.floor,H=String.fromCharCode;if(q={version:"1.2.4",ucs2:{decode:e,encode:f},decode:j,encode:k,toASCII:m,toUnicode:l},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return q});else if(n&&!n.nodeType)if(o)o.exports=q;else for(r in q)q.hasOwnProperty(r)&&(n[r]=q[r]);else a.punycode=q}(this); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json deleted file mode 100644 index e91645aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Jeremy Stashewsky", - "email": "jeremy@goinstant.com", - "url": "https://github.com/stash" - }, - "name": "tough-cookie", - "description": "RFC6265 Cookies and Cookie Jar for node.js", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "version": "0.9.15", - "homepage": "https://github.com/goinstant/node-cookie", - "repository": { - "type": "git", - "url": "git://github.com/goinstant/node-cookie.git" - }, - "bugs": { - "url": "https://github.com/goinstant/node-cookie/issues" - }, - "main": "./lib/cookie", - "scripts": { - "test": "vows test.js" - }, - "engines": { - "node": ">=0.4.12" - }, - "dependencies": { - "punycode": ">=0.2.0" - }, - "devDependencies": { - "vows": ">=0.6.0", - "async": ">=0.1.12" - }, - "readme": "[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js\n\n![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg)\n\n# Synopsis\n\n``` javascript\nvar cookies = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie'\nvar Cookie = cookies.Cookie;\nvar cookie = Cookie.parse(header);\ncookie.value = 'somethingdifferent';\nheader = cookie.toString();\n\nvar cookiejar = new cookies.CookieJar();\ncookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb);\n// ...\ncookiejar.getCookies('http://example.com/otherpath',function(err,cookies) {\n res.headers['cookie'] = cookies.join('; ');\n});\n```\n\n# Installation\n\nIt's _so_ easy!\n\n`npm install tough-cookie`\n\nRequires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default.\n\nWhy the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.\n\n# API\n\ncookies\n=======\n\nFunctions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be \"bound\".\n\nparseDate(string[,strict])\n-----------------\n\nParse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. \"Thu, 01 Jan 1970 00:00:010 GMT\" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid).\n\nformatDate(date)\n----------------\n\nFormat a Date into a RFC1123 string (the RFC6265-recommended format).\n\ncanonicalDomain(str)\n--------------------\n\nTransforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).\n\ndomainMatch(str,domStr[,canonicalize=true])\n-------------------------------------------\n\nAnswers \"does this real domain match the domain in a cookie?\". The `str` is the \"current\" domain-name and the `domStr` is the \"cookie\" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a \"suffix match\".\n\nThe `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.\n\ndefaultPath(path)\n-----------------\n\nGiven a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the \"directory\" of a \"file\" in the path, but is specified by Section 5.1.4 of the RFC.\n\nThe `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output.\n\npathMatch(reqPath,cookiePath)\n-----------------------------\n\nAnswers \"does the request-path path-match a given cookie-path?\" as per RFC6265 Section 5.1.4. Returns a boolean.\n\nThis is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.\n\nparse(header[,strict=false])\n----------------------------\n\nalias for `Cookie.parse(header[,strict])`\n\nfromJSON(string)\n----------------\n\nalias for `Cookie.fromJSON(string)`\n\ngetPublicSuffix(hostname)\n-------------------------\n\nReturns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.\n\nFor example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.\n\nFor further information, see http://publicsuffix.org/. This module derives its list from that site.\n\ncookieCompare(a,b)\n------------------\n\nFor use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest.\n\n``` javascript\nvar cookies = [ /* unsorted array of Cookie objects */ ];\ncookies = cookies.sort(cookieCompare);\n```\n\npermuteDomain(domain)\n---------------------\n\nGenerates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.\n\n\npermutePath(path)\n-----------------\n\nGenerates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.\n\nCookie\n======\n\nCookie.parse(header[,strict=false])\n-----------------------------------\n\nParses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off.\n\nHere's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:\n\n``` javascript\nif (res.headers['set-cookie'] instanceof Array)\n cookies = res.headers['set-cookie'].map(Cookie.parse);\nelse\n cookies = [Cookie.parse(res.headers['set-cookie'])];\n```\n\nCookie.fromJSON(string)\n-----------------------\n\nConvert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects.\n\nProperties\n==========\n\n * _key_ - string - the name or key of the cookie (default \"\")\n * _value_ - string - the value of the cookie (default \"\")\n * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `\"Infinity\"`). See `setExpires()`\n * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `\"Infinity\"` and `\"-Infinity\"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`\n * _domain_ - string - the `Domain=` attribute of the cookie\n * _path_ - string - the `Path=` of the cookie\n * _secure_ - boolean - the `Secure` cookie flag\n * _httpOnly_ - boolean - the `HttpOnly` cookie flag\n * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)\n \nAfter a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:\n\n * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)\n * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.\n * _created_ - `Date` - when this cookie was added to the jar\n * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.\n\nConstruction([{options}])\n------------\n\nReceives an options object that can contain any Cookie properties, uses the default for unspecified properties.\n\n.toString()\n-----------\n\nencode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.\n\n.cookieString()\n---------------\n\nencode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '=').\n\n.setExpires(String)\n-------------------\n\nsets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `\"Infinity\"` (a string) is set.\n\n.setMaxAge(number)\n-------------------\n\nsets the maxAge in seconds. Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it JSON serializes correctly.\n\n.expiryTime([now=Date.now()])\n-----------------------------\n\n.expiryDate([now=Date.now()])\n-----------------------------\n\nexpiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.\n\nMax-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.\n\nIf Expires (`.expires`) is set, that's returned.\n\nOtherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for \"Tue, 19 Jan 2038 03:14:07 GMT\" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).\n\n.TTL([now=Date.now()])\n---------\n\ncompute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.\n\nThe \"number\" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.\n\n.canonicalizedDoman()\n---------------------\n\n.cdomain()\n----------\n\nreturn the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.\n\n.validate()\n-----------\n\nStatus: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.\n\nvalidates cookie attributes for semantic correctness. Useful for \"lint\" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:\n\n``` javascript\nif (cookie.validate() === true) {\n // it's tasty\n} else {\n // yuck!\n}\n```\n\nCookieJar\n=========\n\nConstruction([store = new MemoryCookieStore()][, rejectPublicSuffixes])\n------------\n\nSimply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.\n\n\nAttributes\n----------\n\n * _rejectPublicSuffixes_ - boolean - reject cookies with domains like \"com\" and \"co.uk\" (default: `true`)\n \nSince eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.\n\n.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))\n-------------------------------------------------------------------\n\nAttempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _strict_ - boolean - default `false` - perform extra checks\n * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option.\n\nAs per the RFC, the `.hostOnly` property is set if there was no \"Domain=\" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).\n\n.storeCookie(cookie, [{options},] cb(err,cookie))\n-------------------------------------------------\n\n__REMOVED__ removed in lieu of the CookieStore API below\n \n.getCookies(currentUrl, [{options},] cb(err,cookies))\n-----------------------------------------------------\n\nRetrieve the list of cookies that can be sent in a Cookie header for the current url.\n\nIf an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).\n * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it).\n\nThe `.lastAccessed` property of the returned cookies will have been updated.\n\n.getCookieString(...)\n---------------------\n\nAccepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.\n\n.getSetCookieStrings(...)\n-------------------------\n\nAccepts the same options as `.getCookies()` but passes an array of strings suitable for Set-Cookie headers (rather than an array of `Cookie`s) to the callback. Simply maps the cookie array via `.toString()`.\n\n# CookieStore API\n\nThe storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.\n\nAll `domain` parameters will have been normalized before calling.\n\nThe Cookie store must have all of the following methods.\n\nstore.findCookie(domain, path, key, cb(err,cookie))\n---------------------------------------------------\n\nRetrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.\n\nCallback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).\n\nstore.findCookies(domain, path, cb(err,cookies))\n------------------------------------------------\n\nLocates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.\n\nIf no cookies are found, the callback MUST be passed an empty array.\n\nThe resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.\n\nAs of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).\n\nstore.putCookie(cookie, cb(err))\n--------------------------------\n\nAdds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.\n\nThe `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.\n\nPass an error if the cookie cannot be stored.\n\nstore.updateCookie(oldCookie, newCookie, cb(err))\n-------------------------------------------------\n\nUpdate an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.\n\nThe `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion).\n\nStores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.\n\nThe `newCookie` and `oldCookie` objects MUST NOT be modified.\n\nPass an error if the newCookie cannot be stored.\n\nstore.removeCookie(domain, path, key, cb(err))\n----------------------------------------------\n\nRemove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).\n\nThe implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie.\n\nstore.removeCookies(domain, path, cb(err))\n------------------------------------------\n\nRemoves matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed.\n\nPass an error ONLY if removing any existing cookies failed.\n\n# TODO\n\n * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()`\n * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891\n * better tests for `validate()`?\n\n# Copyright and License\n\n(tl;dr: MIT with some MPL/1.1)\n\nCopyright GoInstant, Inc. and other contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n\nPortions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.\n", - "readmeFilename": "README.md", - "_id": "tough-cookie@0.9.15", - "_from": "tough-cookie@~0.9.15" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt deleted file mode 100644 index 2c201312..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt +++ /dev/null @@ -1,5229 +0,0 @@ -// ***** BEGIN LICENSE BLOCK ***** -// Version: MPL 1.1/GPL 2.0/LGPL 2.1 -// -// The contents of this file are subject to the Mozilla Public License Version -// 1.1 (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// http://www.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" basis, -// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -// for the specific language governing rights and limitations under the -// License. -// -// The Original Code is the Public Suffix List. -// -// The Initial Developer of the Original Code is -// Jo Hermans <jo.hermans@gmail.com>. -// Portions created by the Initial Developer are Copyright (C) 2007 -// the Initial Developer. All Rights Reserved. -// -// Contributor(s): -// Ruben Arakelyan <ruben@rubenarakelyan.com> -// Gervase Markham <gerv@gerv.net> -// Pamela Greene <pamg.bugs@gmail.com> -// David Triendl <david@triendl.name> -// Jothan Frakes <jothan@gmail.com> -// The kind representatives of many TLD registries -// -// Alternatively, the contents of this file may be used under the terms of -// either the GNU General Public License Version 2 or later (the "GPL"), or -// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -// in which case the provisions of the GPL or the LGPL are applicable instead -// of those above. If you wish to allow use of your version of this file only -// under the terms of either the GPL or the LGPL, and not to allow others to -// use your version of this file under the terms of the MPL, indicate your -// decision by deleting the provisions above and replace them with the notice -// and other provisions required by the GPL or the LGPL. If you do not delete -// the provisions above, a recipient may use your version of this file under -// the terms of any one of the MPL, the GPL or the LGPL. -// -// ***** END LICENSE BLOCK ***** - -// ===BEGIN ICANN DOMAINS=== - -// ac : http://en.wikipedia.org/wiki/.ac -ac -com.ac -edu.ac -gov.ac -net.ac -mil.ac -org.ac - -// ad : http://en.wikipedia.org/wiki/.ad -ad -nom.ad - -// ae : http://en.wikipedia.org/wiki/.ae -// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php -ae -co.ae -net.ae -org.ae -sch.ae -ac.ae -gov.ae -mil.ae - -// aero : see http://www.information.aero/index.php?id=66 -aero -accident-investigation.aero -accident-prevention.aero -aerobatic.aero -aeroclub.aero -aerodrome.aero -agents.aero -aircraft.aero -airline.aero -airport.aero -air-surveillance.aero -airtraffic.aero -air-traffic-control.aero -ambulance.aero -amusement.aero -association.aero -author.aero -ballooning.aero -broker.aero -caa.aero -cargo.aero -catering.aero -certification.aero -championship.aero -charter.aero -civilaviation.aero -club.aero -conference.aero -consultant.aero -consulting.aero -control.aero -council.aero -crew.aero -design.aero -dgca.aero -educator.aero -emergency.aero -engine.aero -engineer.aero -entertainment.aero -equipment.aero -exchange.aero -express.aero -federation.aero -flight.aero -freight.aero -fuel.aero -gliding.aero -government.aero -groundhandling.aero -group.aero -hanggliding.aero -homebuilt.aero -insurance.aero -journal.aero -journalist.aero -leasing.aero -logistics.aero -magazine.aero -maintenance.aero -marketplace.aero -media.aero -microlight.aero -modelling.aero -navigation.aero -parachuting.aero -paragliding.aero -passenger-association.aero -pilot.aero -press.aero -production.aero -recreation.aero -repbody.aero -res.aero -research.aero -rotorcraft.aero -safety.aero -scientist.aero -services.aero -show.aero -skydiving.aero -software.aero -student.aero -taxi.aero -trader.aero -trading.aero -trainer.aero -union.aero -workinggroup.aero -works.aero - -// af : http://www.nic.af/help.jsp -af -gov.af -com.af -org.af -net.af -edu.af - -// ag : http://www.nic.ag/prices.htm -ag -com.ag -org.ag -net.ag -co.ag -nom.ag - -// ai : http://nic.com.ai/ -ai -off.ai -com.ai -net.ai -org.ai - -// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 -al -com.al -edu.al -gov.al -mil.al -net.al -org.al - -// am : http://en.wikipedia.org/wiki/.am -am - -// an : http://www.una.an/an_domreg/default.asp -an -com.an -net.an -org.an -edu.an - -// ao : http://en.wikipedia.org/wiki/.ao -// http://www.dns.ao/REGISTR.DOC -ao -ed.ao -gv.ao -og.ao -co.ao -pb.ao -it.ao - -// aq : http://en.wikipedia.org/wiki/.aq -aq - -// ar : http://en.wikipedia.org/wiki/.ar -*.ar -!congresodelalengua3.ar -!educ.ar -!gobiernoelectronico.ar -!mecon.ar -!nacion.ar -!nic.ar -!promocion.ar -!retina.ar -!uba.ar - -// arpa : http://en.wikipedia.org/wiki/.arpa -// Confirmed by registry <iana-questions@icann.org> 2008-06-18 -e164.arpa -in-addr.arpa -ip6.arpa -iris.arpa -uri.arpa -urn.arpa - -// as : http://en.wikipedia.org/wiki/.as -as -gov.as - -// asia : http://en.wikipedia.org/wiki/.asia -asia - -// at : http://en.wikipedia.org/wiki/.at -// Confirmed by registry <it@nic.at> 2008-06-17 -at -ac.at -co.at -gv.at -or.at - -// au : http://en.wikipedia.org/wiki/.au -// http://www.auda.org.au/ -// 2LDs -com.au -net.au -org.au -edu.au -gov.au -csiro.au -asn.au -id.au -// Historic 2LDs (closed to new registration, but sites still exist) -info.au -conf.au -oz.au -// CGDNs - http://www.cgdn.org.au/ -act.au -nsw.au -nt.au -qld.au -sa.au -tas.au -vic.au -wa.au -// 3LDs -act.edu.au -nsw.edu.au -nt.edu.au -qld.edu.au -sa.edu.au -tas.edu.au -vic.edu.au -wa.edu.au -act.gov.au -// Removed at request of Shae.Donelan@services.nsw.gov.au, 2010-03-04 -// nsw.gov.au -nt.gov.au -qld.gov.au -sa.gov.au -tas.gov.au -vic.gov.au -wa.gov.au - -// aw : http://en.wikipedia.org/wiki/.aw -aw -com.aw - -// ax : http://en.wikipedia.org/wiki/.ax -ax - -// az : http://en.wikipedia.org/wiki/.az -az -com.az -net.az -int.az -gov.az -org.az -edu.az -info.az -pp.az -mil.az -name.az -pro.az -biz.az - -// ba : http://en.wikipedia.org/wiki/.ba -ba -org.ba -net.ba -edu.ba -gov.ba -mil.ba -unsa.ba -unbi.ba -co.ba -com.ba -rs.ba - -// bb : http://en.wikipedia.org/wiki/.bb -bb -biz.bb -com.bb -edu.bb -gov.bb -info.bb -net.bb -org.bb -store.bb - -// bd : http://en.wikipedia.org/wiki/.bd -*.bd - -// be : http://en.wikipedia.org/wiki/.be -// Confirmed by registry <tech@dns.be> 2008-06-08 -be -ac.be - -// bf : http://en.wikipedia.org/wiki/.bf -bf -gov.bf - -// bg : http://en.wikipedia.org/wiki/.bg -// https://www.register.bg/user/static/rules/en/index.html -bg -a.bg -b.bg -c.bg -d.bg -e.bg -f.bg -g.bg -h.bg -i.bg -j.bg -k.bg -l.bg -m.bg -n.bg -o.bg -p.bg -q.bg -r.bg -s.bg -t.bg -u.bg -v.bg -w.bg -x.bg -y.bg -z.bg -0.bg -1.bg -2.bg -3.bg -4.bg -5.bg -6.bg -7.bg -8.bg -9.bg - -// bh : http://en.wikipedia.org/wiki/.bh -bh -com.bh -edu.bh -net.bh -org.bh -gov.bh - -// bi : http://en.wikipedia.org/wiki/.bi -// http://whois.nic.bi/ -bi -co.bi -com.bi -edu.bi -or.bi -org.bi - -// biz : http://en.wikipedia.org/wiki/.biz -biz - -// bj : http://en.wikipedia.org/wiki/.bj -bj -asso.bj -barreau.bj -gouv.bj - -// bm : http://www.bermudanic.bm/dnr-text.txt -bm -com.bm -edu.bm -gov.bm -net.bm -org.bm - -// bn : http://en.wikipedia.org/wiki/.bn -*.bn - -// bo : http://www.nic.bo/ -bo -com.bo -edu.bo -gov.bo -gob.bo -int.bo -org.bo -net.bo -mil.bo -tv.bo - -// br : http://registro.br/dominio/dpn.html -// Updated by registry <fneves@registro.br> 2011-03-01 -br -adm.br -adv.br -agr.br -am.br -arq.br -art.br -ato.br -b.br -bio.br -blog.br -bmd.br -can.br -cim.br -cng.br -cnt.br -com.br -coop.br -ecn.br -edu.br -emp.br -eng.br -esp.br -etc.br -eti.br -far.br -flog.br -fm.br -fnd.br -fot.br -fst.br -g12.br -ggf.br -gov.br -imb.br -ind.br -inf.br -jor.br -jus.br -lel.br -mat.br -med.br -mil.br -mus.br -net.br -nom.br -not.br -ntr.br -odo.br -org.br -ppg.br -pro.br -psc.br -psi.br -qsl.br -radio.br -rec.br -slg.br -srv.br -taxi.br -teo.br -tmp.br -trd.br -tur.br -tv.br -vet.br -vlog.br -wiki.br -zlg.br - -// bs : http://www.nic.bs/rules.html -bs -com.bs -net.bs -org.bs -edu.bs -gov.bs - -// bt : http://en.wikipedia.org/wiki/.bt -bt -com.bt -edu.bt -gov.bt -net.bt -org.bt - -// bv : No registrations at this time. -// Submitted by registry <jarle@uninett.no> 2006-06-16 - -// bw : http://en.wikipedia.org/wiki/.bw -// http://www.gobin.info/domainname/bw.doc -// list of other 2nd level tlds ? -bw -co.bw -org.bw - -// by : http://en.wikipedia.org/wiki/.by -// http://tld.by/rules_2006_en.html -// list of other 2nd level tlds ? -by -gov.by -mil.by -// Official information does not indicate that com.by is a reserved -// second-level domain, but it's being used as one (see www.google.com.by and -// www.yahoo.com.by, for example), so we list it here for safety's sake. -com.by - -// http://hoster.by/ -of.by - -// bz : http://en.wikipedia.org/wiki/.bz -// http://www.belizenic.bz/ -bz -com.bz -net.bz -org.bz -edu.bz -gov.bz - -// ca : http://en.wikipedia.org/wiki/.ca -ca -// ca geographical names -ab.ca -bc.ca -mb.ca -nb.ca -nf.ca -nl.ca -ns.ca -nt.ca -nu.ca -on.ca -pe.ca -qc.ca -sk.ca -yk.ca -// gc.ca: http://en.wikipedia.org/wiki/.gc.ca -// see also: http://registry.gc.ca/en/SubdomainFAQ -gc.ca - -// cat : http://en.wikipedia.org/wiki/.cat -cat - -// cc : http://en.wikipedia.org/wiki/.cc -cc - -// cd : http://en.wikipedia.org/wiki/.cd -// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 -cd -gov.cd - -// cf : http://en.wikipedia.org/wiki/.cf -cf - -// cg : http://en.wikipedia.org/wiki/.cg -cg - -// ch : http://en.wikipedia.org/wiki/.ch -ch - -// ci : http://en.wikipedia.org/wiki/.ci -// http://www.nic.ci/index.php?page=charte -ci -org.ci -or.ci -com.ci -co.ci -edu.ci -ed.ci -ac.ci -net.ci -go.ci -asso.ci -aéroport.ci -int.ci -presse.ci -md.ci -gouv.ci - -// ck : http://en.wikipedia.org/wiki/.ck -*.ck -!www.ck - -// cl : http://en.wikipedia.org/wiki/.cl -cl -gov.cl -gob.cl -co.cl -mil.cl - -// cm : http://en.wikipedia.org/wiki/.cm -cm -gov.cm - -// cn : http://en.wikipedia.org/wiki/.cn -// Submitted by registry <tanyaling@cnnic.cn> 2008-06-11 -cn -ac.cn -com.cn -edu.cn -gov.cn -net.cn -org.cn -mil.cn -å…¬å¸.cn -网络.cn -網絡.cn -// cn geographic names -ah.cn -bj.cn -cq.cn -fj.cn -gd.cn -gs.cn -gz.cn -gx.cn -ha.cn -hb.cn -he.cn -hi.cn -hl.cn -hn.cn -jl.cn -js.cn -jx.cn -ln.cn -nm.cn -nx.cn -qh.cn -sc.cn -sd.cn -sh.cn -sn.cn -sx.cn -tj.cn -xj.cn -xz.cn -yn.cn -zj.cn -hk.cn -mo.cn -tw.cn - -// co : http://en.wikipedia.org/wiki/.co -// Submitted by registry <tecnico@uniandes.edu.co> 2008-06-11 -co -arts.co -com.co -edu.co -firm.co -gov.co -info.co -int.co -mil.co -net.co -nom.co -org.co -rec.co -web.co - -// com : http://en.wikipedia.org/wiki/.com -com - -// coop : http://en.wikipedia.org/wiki/.coop -coop - -// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do -cr -ac.cr -co.cr -ed.cr -fi.cr -go.cr -or.cr -sa.cr - -// cu : http://en.wikipedia.org/wiki/.cu -cu -com.cu -edu.cu -org.cu -net.cu -gov.cu -inf.cu - -// cv : http://en.wikipedia.org/wiki/.cv -cv - -// cx : http://en.wikipedia.org/wiki/.cx -// list of other 2nd level tlds ? -cx -gov.cx - -// cy : http://en.wikipedia.org/wiki/.cy -*.cy - -// cz : http://en.wikipedia.org/wiki/.cz -cz - -// de : http://en.wikipedia.org/wiki/.de -// Confirmed by registry <ops@denic.de> (with technical -// reservations) 2008-07-01 -de - -// dj : http://en.wikipedia.org/wiki/.dj -dj - -// dk : http://en.wikipedia.org/wiki/.dk -// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17 -dk - -// dm : http://en.wikipedia.org/wiki/.dm -dm -com.dm -net.dm -org.dm -edu.dm -gov.dm - -// do : http://en.wikipedia.org/wiki/.do -do -art.do -com.do -edu.do -gob.do -gov.do -mil.do -net.do -org.do -sld.do -web.do - -// dz : http://en.wikipedia.org/wiki/.dz -dz -com.dz -org.dz -net.dz -gov.dz -edu.dz -asso.dz -pol.dz -art.dz - -// ec : http://www.nic.ec/reg/paso1.asp -// Submitted by registry <vabboud@nic.ec> 2008-07-04 -ec -com.ec -info.ec -net.ec -fin.ec -k12.ec -med.ec -pro.ec -org.ec -edu.ec -gov.ec -gob.ec -mil.ec - -// edu : http://en.wikipedia.org/wiki/.edu -edu - -// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B -ee -edu.ee -gov.ee -riik.ee -lib.ee -med.ee -com.ee -pri.ee -aip.ee -org.ee -fie.ee - -// eg : http://en.wikipedia.org/wiki/.eg -eg -com.eg -edu.eg -eun.eg -gov.eg -mil.eg -name.eg -net.eg -org.eg -sci.eg - -// er : http://en.wikipedia.org/wiki/.er -*.er - -// es : https://www.nic.es/site_ingles/ingles/dominios/index.html -es -com.es -nom.es -org.es -gob.es -edu.es - -// et : http://en.wikipedia.org/wiki/.et -*.et - -// eu : http://en.wikipedia.org/wiki/.eu -eu - -// fi : http://en.wikipedia.org/wiki/.fi -fi -// aland.fi : http://en.wikipedia.org/wiki/.ax -// This domain is being phased out in favor of .ax. As there are still many -// domains under aland.fi, we still keep it on the list until aland.fi is -// completely removed. -// TODO: Check for updates (expected to be phased out around Q1/2009) -aland.fi - -// fj : http://en.wikipedia.org/wiki/.fj -*.fj - -// fk : http://en.wikipedia.org/wiki/.fk -*.fk - -// fm : http://en.wikipedia.org/wiki/.fm -fm - -// fo : http://en.wikipedia.org/wiki/.fo -fo - -// fr : http://www.afnic.fr/ -// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs -fr -com.fr -asso.fr -nom.fr -prd.fr -presse.fr -tm.fr -// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels -aeroport.fr -assedic.fr -avocat.fr -avoues.fr -cci.fr -chambagri.fr -chirurgiens-dentistes.fr -experts-comptables.fr -geometre-expert.fr -gouv.fr -greta.fr -huissier-justice.fr -medecin.fr -notaires.fr -pharmacien.fr -port.fr -veterinaire.fr - -// ga : http://en.wikipedia.org/wiki/.ga -ga - -// gb : This registry is effectively dormant -// Submitted by registry <Damien.Shaw@ja.net> 2008-06-12 - -// gd : http://en.wikipedia.org/wiki/.gd -gd - -// ge : http://www.nic.net.ge/policy_en.pdf -ge -com.ge -edu.ge -gov.ge -org.ge -mil.ge -net.ge -pvt.ge - -// gf : http://en.wikipedia.org/wiki/.gf -gf - -// gg : http://www.channelisles.net/applic/avextn.shtml -gg -co.gg -org.gg -net.gg -sch.gg -gov.gg - -// gh : http://en.wikipedia.org/wiki/.gh -// see also: http://www.nic.gh/reg_now.php -// Although domains directly at second level are not possible at the moment, -// they have been possible for some time and may come back. -gh -com.gh -edu.gh -gov.gh -org.gh -mil.gh - -// gi : http://www.nic.gi/rules.html -gi -com.gi -ltd.gi -gov.gi -mod.gi -edu.gi -org.gi - -// gl : http://en.wikipedia.org/wiki/.gl -// http://nic.gl -gl - -// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm -gm - -// gn : http://psg.com/dns/gn/gn.txt -// Submitted by registry <randy@psg.com> 2008-06-17 -ac.gn -com.gn -edu.gn -gov.gn -org.gn -net.gn - -// gov : http://en.wikipedia.org/wiki/.gov -gov - -// gp : http://www.nic.gp/index.php?lang=en -gp -com.gp -net.gp -mobi.gp -edu.gp -org.gp -asso.gp - -// gq : http://en.wikipedia.org/wiki/.gq -gq - -// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html -// Submitted by registry <segred@ics.forth.gr> 2008-06-09 -gr -com.gr -edu.gr -net.gr -org.gr -gov.gr - -// gs : http://en.wikipedia.org/wiki/.gs -gs - -// gt : http://www.gt/politicas.html -*.gt -!www.gt - -// gu : http://gadao.gov.gu/registration.txt -*.gu - -// gw : http://en.wikipedia.org/wiki/.gw -gw - -// gy : http://en.wikipedia.org/wiki/.gy -// http://registry.gy/ -gy -co.gy -com.gy -net.gy - -// hk : https://www.hkdnr.hk -// Submitted by registry <hk.tech@hkirc.hk> 2008-06-11 -hk -com.hk -edu.hk -gov.hk -idv.hk -net.hk -org.hk -å…¬å¸.hk -教育.hk -敎育.hk -政府.hk -個人.hk -个人.hk -箇人.hk -網络.hk -网络.hk -组織.hk -網絡.hk -网絡.hk -组织.hk -組織.hk -組织.hk - -// hm : http://en.wikipedia.org/wiki/.hm -hm - -// hn : http://www.nic.hn/politicas/ps02,,05.html -hn -com.hn -edu.hn -org.hn -net.hn -mil.hn -gob.hn - -// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf -hr -iz.hr -from.hr -name.hr -com.hr - -// ht : http://www.nic.ht/info/charte.cfm -ht -com.ht -shop.ht -firm.ht -info.ht -adult.ht -net.ht -pro.ht -org.ht -med.ht -art.ht -coop.ht -pol.ht -asso.ht -edu.ht -rel.ht -gouv.ht -perso.ht - -// hu : http://www.domain.hu/domain/English/sld.html -// Confirmed by registry <pasztor@iszt.hu> 2008-06-12 -hu -co.hu -info.hu -org.hu -priv.hu -sport.hu -tm.hu -2000.hu -agrar.hu -bolt.hu -casino.hu -city.hu -erotica.hu -erotika.hu -film.hu -forum.hu -games.hu -hotel.hu -ingatlan.hu -jogasz.hu -konyvelo.hu -lakas.hu -media.hu -news.hu -reklam.hu -sex.hu -shop.hu -suli.hu -szex.hu -tozsde.hu -utazas.hu -video.hu - -// id : http://en.wikipedia.org/wiki/.id -// see also: https://register.pandi.or.id/ -id -ac.id -co.id -go.id -mil.id -net.id -or.id -sch.id -web.id - -// ie : http://en.wikipedia.org/wiki/.ie -ie -gov.ie - -// il : http://en.wikipedia.org/wiki/.il -*.il - -// im : https://www.nic.im/pdfs/imfaqs.pdf -im -co.im -ltd.co.im -plc.co.im -net.im -gov.im -org.im -nic.im -ac.im - -// in : http://en.wikipedia.org/wiki/.in -// see also: http://www.inregistry.in/policies/ -// Please note, that nic.in is not an offical eTLD, but used by most -// government institutions. -in -co.in -firm.in -net.in -org.in -gen.in -ind.in -nic.in -ac.in -edu.in -res.in -gov.in -mil.in - -// info : http://en.wikipedia.org/wiki/.info -info - -// int : http://en.wikipedia.org/wiki/.int -// Confirmed by registry <iana-questions@icann.org> 2008-06-18 -int -eu.int - -// io : http://www.nic.io/rules.html -// list of other 2nd level tlds ? -io -com.io - -// iq : http://www.cmc.iq/english/iq/iqregister1.htm -iq -gov.iq -edu.iq -mil.iq -com.iq -org.iq -net.iq - -// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules -// Also see http://www.nic.ir/Internationalized_Domain_Names -// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16 -ir -ac.ir -co.ir -gov.ir -id.ir -net.ir -org.ir -sch.ir -// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH) -ایران.ir -// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH) -ايران.ir - -// is : http://www.isnic.is/domain/rules.php -// Confirmed by registry <marius@isgate.is> 2008-12-06 -is -net.is -com.is -edu.is -gov.is -org.is -int.is - -// it : http://en.wikipedia.org/wiki/.it -it -gov.it -edu.it -// list of reserved geo-names : -// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf -// (There is also a list of reserved geo-names corresponding to Italian -// municipalities : http://www.nic.it/documenti/appendice-c.pdf , but it is -// not included here.) -agrigento.it -ag.it -alessandria.it -al.it -ancona.it -an.it -aosta.it -aoste.it -ao.it -arezzo.it -ar.it -ascoli-piceno.it -ascolipiceno.it -ap.it -asti.it -at.it -avellino.it -av.it -bari.it -ba.it -andria-barletta-trani.it -andriabarlettatrani.it -trani-barletta-andria.it -tranibarlettaandria.it -barletta-trani-andria.it -barlettatraniandria.it -andria-trani-barletta.it -andriatranibarletta.it -trani-andria-barletta.it -traniandriabarletta.it -bt.it -belluno.it -bl.it -benevento.it -bn.it -bergamo.it -bg.it -biella.it -bi.it -bologna.it -bo.it -bolzano.it -bozen.it -balsan.it -alto-adige.it -altoadige.it -suedtirol.it -bz.it -brescia.it -bs.it -brindisi.it -br.it -cagliari.it -ca.it -caltanissetta.it -cl.it -campobasso.it -cb.it -carboniaiglesias.it -carbonia-iglesias.it -iglesias-carbonia.it -iglesiascarbonia.it -ci.it -caserta.it -ce.it -catania.it -ct.it -catanzaro.it -cz.it -chieti.it -ch.it -como.it -co.it -cosenza.it -cs.it -cremona.it -cr.it -crotone.it -kr.it -cuneo.it -cn.it -dell-ogliastra.it -dellogliastra.it -ogliastra.it -og.it -enna.it -en.it -ferrara.it -fe.it -fermo.it -fm.it -firenze.it -florence.it -fi.it -foggia.it -fg.it -forli-cesena.it -forlicesena.it -cesena-forli.it -cesenaforli.it -fc.it -frosinone.it -fr.it -genova.it -genoa.it -ge.it -gorizia.it -go.it -grosseto.it -gr.it -imperia.it -im.it -isernia.it -is.it -laquila.it -aquila.it -aq.it -la-spezia.it -laspezia.it -sp.it -latina.it -lt.it -lecce.it -le.it -lecco.it -lc.it -livorno.it -li.it -lodi.it -lo.it -lucca.it -lu.it -macerata.it -mc.it -mantova.it -mn.it -massa-carrara.it -massacarrara.it -carrara-massa.it -carraramassa.it -ms.it -matera.it -mt.it -medio-campidano.it -mediocampidano.it -campidano-medio.it -campidanomedio.it -vs.it -messina.it -me.it -milano.it -milan.it -mi.it -modena.it -mo.it -monza.it -monza-brianza.it -monzabrianza.it -monzaebrianza.it -monzaedellabrianza.it -monza-e-della-brianza.it -mb.it -napoli.it -naples.it -na.it -novara.it -no.it -nuoro.it -nu.it -oristano.it -or.it -padova.it -padua.it -pd.it -palermo.it -pa.it -parma.it -pr.it -pavia.it -pv.it -perugia.it -pg.it -pescara.it -pe.it -pesaro-urbino.it -pesarourbino.it -urbino-pesaro.it -urbinopesaro.it -pu.it -piacenza.it -pc.it -pisa.it -pi.it -pistoia.it -pt.it -pordenone.it -pn.it -potenza.it -pz.it -prato.it -po.it -ragusa.it -rg.it -ravenna.it -ra.it -reggio-calabria.it -reggiocalabria.it -rc.it -reggio-emilia.it -reggioemilia.it -re.it -rieti.it -ri.it -rimini.it -rn.it -roma.it -rome.it -rm.it -rovigo.it -ro.it -salerno.it -sa.it -sassari.it -ss.it -savona.it -sv.it -siena.it -si.it -siracusa.it -sr.it -sondrio.it -so.it -taranto.it -ta.it -tempio-olbia.it -tempioolbia.it -olbia-tempio.it -olbiatempio.it -ot.it -teramo.it -te.it -terni.it -tr.it -torino.it -turin.it -to.it -trapani.it -tp.it -trento.it -trentino.it -tn.it -treviso.it -tv.it -trieste.it -ts.it -udine.it -ud.it -varese.it -va.it -venezia.it -venice.it -ve.it -verbania.it -vb.it -vercelli.it -vc.it -verona.it -vr.it -vibo-valentia.it -vibovalentia.it -vv.it -vicenza.it -vi.it -viterbo.it -vt.it - -// je : http://www.channelisles.net/applic/avextn.shtml -je -co.je -org.je -net.je -sch.je -gov.je - -// jm : http://www.com.jm/register.html -*.jm - -// jo : http://www.dns.jo/Registration_policy.aspx -jo -com.jo -org.jo -net.jo -edu.jo -sch.jo -gov.jo -mil.jo -name.jo - -// jobs : http://en.wikipedia.org/wiki/.jobs -jobs - -// jp : http://en.wikipedia.org/wiki/.jp -// http://jprs.co.jp/en/jpdomain.html -// Submitted by registry <yone@jprs.co.jp> 2008-06-11 -// Updated by registry <yone@jprs.co.jp> 2008-12-04 -jp -// jp organizational type names -ac.jp -ad.jp -co.jp -ed.jp -go.jp -gr.jp -lg.jp -ne.jp -or.jp -// jp geographic type names -// http://jprs.jp/doc/rule/saisoku-1.html -*.aichi.jp -*.akita.jp -*.aomori.jp -*.chiba.jp -*.ehime.jp -*.fukui.jp -*.fukuoka.jp -*.fukushima.jp -*.gifu.jp -*.gunma.jp -*.hiroshima.jp -*.hokkaido.jp -*.hyogo.jp -*.ibaraki.jp -*.ishikawa.jp -*.iwate.jp -*.kagawa.jp -*.kagoshima.jp -*.kanagawa.jp -*.kawasaki.jp -*.kitakyushu.jp -*.kobe.jp -*.kochi.jp -*.kumamoto.jp -*.kyoto.jp -*.mie.jp -*.miyagi.jp -*.miyazaki.jp -*.nagano.jp -*.nagasaki.jp -*.nagoya.jp -*.nara.jp -*.niigata.jp -*.oita.jp -*.okayama.jp -*.okinawa.jp -*.osaka.jp -*.saga.jp -*.saitama.jp -*.sapporo.jp -*.sendai.jp -*.shiga.jp -*.shimane.jp -*.shizuoka.jp -*.tochigi.jp -*.tokushima.jp -*.tokyo.jp -*.tottori.jp -*.toyama.jp -*.wakayama.jp -*.yamagata.jp -*.yamaguchi.jp -*.yamanashi.jp -*.yokohama.jp -!metro.tokyo.jp -!pref.aichi.jp -!pref.akita.jp -!pref.aomori.jp -!pref.chiba.jp -!pref.ehime.jp -!pref.fukui.jp -!pref.fukuoka.jp -!pref.fukushima.jp -!pref.gifu.jp -!pref.gunma.jp -!pref.hiroshima.jp -!pref.hokkaido.jp -!pref.hyogo.jp -!pref.ibaraki.jp -!pref.ishikawa.jp -!pref.iwate.jp -!pref.kagawa.jp -!pref.kagoshima.jp -!pref.kanagawa.jp -!pref.kochi.jp -!pref.kumamoto.jp -!pref.kyoto.jp -!pref.mie.jp -!pref.miyagi.jp -!pref.miyazaki.jp -!pref.nagano.jp -!pref.nagasaki.jp -!pref.nara.jp -!pref.niigata.jp -!pref.oita.jp -!pref.okayama.jp -!pref.okinawa.jp -!pref.osaka.jp -!pref.saga.jp -!pref.saitama.jp -!pref.shiga.jp -!pref.shimane.jp -!pref.shizuoka.jp -!pref.tochigi.jp -!pref.tokushima.jp -!pref.tottori.jp -!pref.toyama.jp -!pref.wakayama.jp -!pref.yamagata.jp -!pref.yamaguchi.jp -!pref.yamanashi.jp -!city.chiba.jp -!city.fukuoka.jp -!city.hiroshima.jp -!city.kawasaki.jp -!city.kitakyushu.jp -!city.kobe.jp -!city.kyoto.jp -!city.nagoya.jp -!city.niigata.jp -!city.okayama.jp -!city.osaka.jp -!city.saitama.jp -!city.sapporo.jp -!city.sendai.jp -!city.shizuoka.jp -!city.yokohama.jp - -// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 -*.ke - -// kg : http://www.domain.kg/dmn_n.html -kg -org.kg -net.kg -com.kg -edu.kg -gov.kg -mil.kg - -// kh : http://www.mptc.gov.kh/dns_registration.htm -*.kh - -// ki : http://www.ki/dns/index.html -ki -edu.ki -biz.ki -net.ki -org.ki -gov.ki -info.ki -com.ki - -// km : http://en.wikipedia.org/wiki/.km -// http://www.domaine.km/documents/charte.doc -km -org.km -nom.km -gov.km -prd.km -tm.km -edu.km -mil.km -ass.km -com.km -// These are only mentioned as proposed suggestions at domaine.km, but -// http://en.wikipedia.org/wiki/.km says they're available for registration: -coop.km -asso.km -presse.km -medecin.km -notaires.km -pharmaciens.km -veterinaire.km -gouv.km - -// kn : http://en.wikipedia.org/wiki/.kn -// http://www.dot.kn/domainRules.html -kn -net.kn -org.kn -edu.kn -gov.kn - -// kp : http://www.kcce.kp/en_index.php -com.kp -edu.kp -gov.kp -org.kp -rep.kp -tra.kp - -// kr : http://en.wikipedia.org/wiki/.kr -// see also: http://domain.nida.or.kr/eng/registration.jsp -kr -ac.kr -co.kr -es.kr -go.kr -hs.kr -kg.kr -mil.kr -ms.kr -ne.kr -or.kr -pe.kr -re.kr -sc.kr -// kr geographical names -busan.kr -chungbuk.kr -chungnam.kr -daegu.kr -daejeon.kr -gangwon.kr -gwangju.kr -gyeongbuk.kr -gyeonggi.kr -gyeongnam.kr -incheon.kr -jeju.kr -jeonbuk.kr -jeonnam.kr -seoul.kr -ulsan.kr - -// kw : http://en.wikipedia.org/wiki/.kw -*.kw - -// ky : http://www.icta.ky/da_ky_reg_dom.php -// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17 -ky -edu.ky -gov.ky -com.ky -org.ky -net.ky - -// kz : http://en.wikipedia.org/wiki/.kz -// see also: http://www.nic.kz/rules/index.jsp -kz -org.kz -edu.kz -net.kz -gov.kz -mil.kz -com.kz - -// la : http://en.wikipedia.org/wiki/.la -// Submitted by registry <gavin.brown@nic.la> 2008-06-10 -la -int.la -net.la -info.la -edu.la -gov.la -per.la -com.la -org.la - -// lb : http://en.wikipedia.org/wiki/.lb -// Submitted by registry <randy@psg.com> 2008-06-17 -com.lb -edu.lb -gov.lb -net.lb -org.lb - -// lc : http://en.wikipedia.org/wiki/.lc -// see also: http://www.nic.lc/rules.htm -lc -com.lc -net.lc -co.lc -org.lc -edu.lc -gov.lc - -// li : http://en.wikipedia.org/wiki/.li -li - -// lk : http://www.nic.lk/seclevpr.html -lk -gov.lk -sch.lk -net.lk -int.lk -com.lk -org.lk -edu.lk -ngo.lk -soc.lk -web.lk -ltd.lk -assn.lk -grp.lk -hotel.lk - -// lr : http://psg.com/dns/lr/lr.txt -// Submitted by registry <randy@psg.com> 2008-06-17 -com.lr -edu.lr -gov.lr -org.lr -net.lr - -// ls : http://en.wikipedia.org/wiki/.ls -ls -co.ls -org.ls - -// lt : http://en.wikipedia.org/wiki/.lt -lt -// gov.lt : http://www.gov.lt/index_en.php -gov.lt - -// lu : http://www.dns.lu/en/ -lu - -// lv : http://www.nic.lv/DNS/En/generic.php -lv -com.lv -edu.lv -gov.lv -org.lv -mil.lv -id.lv -net.lv -asn.lv -conf.lv - -// ly : http://www.nic.ly/regulations.php -ly -com.ly -net.ly -gov.ly -plc.ly -edu.ly -sch.ly -med.ly -org.ly -id.ly - -// ma : http://en.wikipedia.org/wiki/.ma -// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf -ma -co.ma -net.ma -gov.ma -org.ma -ac.ma -press.ma - -// mc : http://www.nic.mc/ -mc -tm.mc -asso.mc - -// md : http://en.wikipedia.org/wiki/.md -md - -// me : http://en.wikipedia.org/wiki/.me -me -co.me -net.me -org.me -edu.me -ac.me -gov.me -its.me -priv.me - -// mg : http://www.nic.mg/tarif.htm -mg -org.mg -nom.mg -gov.mg -prd.mg -tm.mg -edu.mg -mil.mg -com.mg - -// mh : http://en.wikipedia.org/wiki/.mh -mh - -// mil : http://en.wikipedia.org/wiki/.mil -mil - -// mk : http://en.wikipedia.org/wiki/.mk -// see also: http://dns.marnet.net.mk/postapka.php -mk -com.mk -org.mk -net.mk -edu.mk -gov.mk -inf.mk -name.mk - -// ml : http://www.gobin.info/domainname/ml-template.doc -// see also: http://en.wikipedia.org/wiki/.ml -ml -com.ml -edu.ml -gouv.ml -gov.ml -net.ml -org.ml -presse.ml - -// mm : http://en.wikipedia.org/wiki/.mm -*.mm - -// mn : http://en.wikipedia.org/wiki/.mn -mn -gov.mn -edu.mn -org.mn - -// mo : http://www.monic.net.mo/ -mo -com.mo -net.mo -org.mo -edu.mo -gov.mo - -// mobi : http://en.wikipedia.org/wiki/.mobi -mobi - -// mp : http://www.dot.mp/ -// Confirmed by registry <dcamacho@saipan.com> 2008-06-17 -mp - -// mq : http://en.wikipedia.org/wiki/.mq -mq - -// mr : http://en.wikipedia.org/wiki/.mr -mr -gov.mr - -// ms : http://en.wikipedia.org/wiki/.ms -ms - -// mt : https://www.nic.org.mt/dotmt/ -*.mt - -// mu : http://en.wikipedia.org/wiki/.mu -mu -com.mu -net.mu -org.mu -gov.mu -ac.mu -co.mu -or.mu - -// museum : http://about.museum/naming/ -// http://index.museum/ -museum -academy.museum -agriculture.museum -air.museum -airguard.museum -alabama.museum -alaska.museum -amber.museum -ambulance.museum -american.museum -americana.museum -americanantiques.museum -americanart.museum -amsterdam.museum -and.museum -annefrank.museum -anthro.museum -anthropology.museum -antiques.museum -aquarium.museum -arboretum.museum -archaeological.museum -archaeology.museum -architecture.museum -art.museum -artanddesign.museum -artcenter.museum -artdeco.museum -arteducation.museum -artgallery.museum -arts.museum -artsandcrafts.museum -asmatart.museum -assassination.museum -assisi.museum -association.museum -astronomy.museum -atlanta.museum -austin.museum -australia.museum -automotive.museum -aviation.museum -axis.museum -badajoz.museum -baghdad.museum -bahn.museum -bale.museum -baltimore.museum -barcelona.museum -baseball.museum -basel.museum -baths.museum -bauern.museum -beauxarts.museum -beeldengeluid.museum -bellevue.museum -bergbau.museum -berkeley.museum -berlin.museum -bern.museum -bible.museum -bilbao.museum -bill.museum -birdart.museum -birthplace.museum -bonn.museum -boston.museum -botanical.museum -botanicalgarden.museum -botanicgarden.museum -botany.museum -brandywinevalley.museum -brasil.museum -bristol.museum -british.museum -britishcolumbia.museum -broadcast.museum -brunel.museum -brussel.museum -brussels.museum -bruxelles.museum -building.museum -burghof.museum -bus.museum -bushey.museum -cadaques.museum -california.museum -cambridge.museum -can.museum -canada.museum -capebreton.museum -carrier.museum -cartoonart.museum -casadelamoneda.museum -castle.museum -castres.museum -celtic.museum -center.museum -chattanooga.museum -cheltenham.museum -chesapeakebay.museum -chicago.museum -children.museum -childrens.museum -childrensgarden.museum -chiropractic.museum -chocolate.museum -christiansburg.museum -cincinnati.museum -cinema.museum -circus.museum -civilisation.museum -civilization.museum -civilwar.museum -clinton.museum -clock.museum -coal.museum -coastaldefence.museum -cody.museum -coldwar.museum -collection.museum -colonialwilliamsburg.museum -coloradoplateau.museum -columbia.museum -columbus.museum -communication.museum -communications.museum -community.museum -computer.museum -computerhistory.museum -comunicações.museum -contemporary.museum -contemporaryart.museum -convent.museum -copenhagen.museum -corporation.museum -correios-e-telecomunicações.museum -corvette.museum -costume.museum -countryestate.museum -county.museum -crafts.museum -cranbrook.museum -creation.museum -cultural.museum -culturalcenter.museum -culture.museum -cyber.museum -cymru.museum -dali.museum -dallas.museum -database.museum -ddr.museum -decorativearts.museum -delaware.museum -delmenhorst.museum -denmark.museum -depot.museum -design.museum -detroit.museum -dinosaur.museum -discovery.museum -dolls.museum -donostia.museum -durham.museum -eastafrica.museum -eastcoast.museum -education.museum -educational.museum -egyptian.museum -eisenbahn.museum -elburg.museum -elvendrell.museum -embroidery.museum -encyclopedic.museum -england.museum -entomology.museum -environment.museum -environmentalconservation.museum -epilepsy.museum -essex.museum -estate.museum -ethnology.museum -exeter.museum -exhibition.museum -family.museum -farm.museum -farmequipment.museum -farmers.museum -farmstead.museum -field.museum -figueres.museum -filatelia.museum -film.museum -fineart.museum -finearts.museum -finland.museum -flanders.museum -florida.museum -force.museum -fortmissoula.museum -fortworth.museum -foundation.museum -francaise.museum -frankfurt.museum -franziskaner.museum -freemasonry.museum -freiburg.museum -fribourg.museum -frog.museum -fundacio.museum -furniture.museum -gallery.museum -garden.museum -gateway.museum -geelvinck.museum -gemological.museum -geology.museum -georgia.museum -giessen.museum -glas.museum -glass.museum -gorge.museum -grandrapids.museum -graz.museum -guernsey.museum -halloffame.museum -hamburg.museum -handson.museum -harvestcelebration.museum -hawaii.museum -health.museum -heimatunduhren.museum -hellas.museum -helsinki.museum -hembygdsforbund.museum -heritage.museum -histoire.museum -historical.museum -historicalsociety.museum -historichouses.museum -historisch.museum -historisches.museum -history.museum -historyofscience.museum -horology.museum -house.museum -humanities.museum -illustration.museum -imageandsound.museum -indian.museum -indiana.museum -indianapolis.museum -indianmarket.museum -intelligence.museum -interactive.museum -iraq.museum -iron.museum -isleofman.museum -jamison.museum -jefferson.museum -jerusalem.museum -jewelry.museum -jewish.museum -jewishart.museum -jfk.museum -journalism.museum -judaica.museum -judygarland.museum -juedisches.museum -juif.museum -karate.museum -karikatur.museum -kids.museum -koebenhavn.museum -koeln.museum -kunst.museum -kunstsammlung.museum -kunstunddesign.museum -labor.museum -labour.museum -lajolla.museum -lancashire.museum -landes.museum -lans.museum -läns.museum -larsson.museum -lewismiller.museum -lincoln.museum -linz.museum -living.museum -livinghistory.museum -localhistory.museum -london.museum -losangeles.museum -louvre.museum -loyalist.museum -lucerne.museum -luxembourg.museum -luzern.museum -mad.museum -madrid.museum -mallorca.museum -manchester.museum -mansion.museum -mansions.museum -manx.museum -marburg.museum -maritime.museum -maritimo.museum -maryland.museum -marylhurst.museum -media.museum -medical.museum -medizinhistorisches.museum -meeres.museum -memorial.museum -mesaverde.museum -michigan.museum -midatlantic.museum -military.museum -mill.museum -miners.museum -mining.museum -minnesota.museum -missile.museum -missoula.museum -modern.museum -moma.museum -money.museum -monmouth.museum -monticello.museum -montreal.museum -moscow.museum -motorcycle.museum -muenchen.museum -muenster.museum -mulhouse.museum -muncie.museum -museet.museum -museumcenter.museum -museumvereniging.museum -music.museum -national.museum -nationalfirearms.museum -nationalheritage.museum -nativeamerican.museum -naturalhistory.museum -naturalhistorymuseum.museum -naturalsciences.museum -nature.museum -naturhistorisches.museum -natuurwetenschappen.museum -naumburg.museum -naval.museum -nebraska.museum -neues.museum -newhampshire.museum -newjersey.museum -newmexico.museum -newport.museum -newspaper.museum -newyork.museum -niepce.museum -norfolk.museum -north.museum -nrw.museum -nuernberg.museum -nuremberg.museum -nyc.museum -nyny.museum -oceanographic.museum -oceanographique.museum -omaha.museum -online.museum -ontario.museum -openair.museum -oregon.museum -oregontrail.museum -otago.museum -oxford.museum -pacific.museum -paderborn.museum -palace.museum -paleo.museum -palmsprings.museum -panama.museum -paris.museum -pasadena.museum -pharmacy.museum -philadelphia.museum -philadelphiaarea.museum -philately.museum -phoenix.museum -photography.museum -pilots.museum -pittsburgh.museum -planetarium.museum -plantation.museum -plants.museum -plaza.museum -portal.museum -portland.museum -portlligat.museum -posts-and-telecommunications.museum -preservation.museum -presidio.museum -press.museum -project.museum -public.museum -pubol.museum -quebec.museum -railroad.museum -railway.museum -research.museum -resistance.museum -riodejaneiro.museum -rochester.museum -rockart.museum -roma.museum -russia.museum -saintlouis.museum -salem.museum -salvadordali.museum -salzburg.museum -sandiego.museum -sanfrancisco.museum -santabarbara.museum -santacruz.museum -santafe.museum -saskatchewan.museum -satx.museum -savannahga.museum -schlesisches.museum -schoenbrunn.museum -schokoladen.museum -school.museum -schweiz.museum -science.museum -scienceandhistory.museum -scienceandindustry.museum -sciencecenter.museum -sciencecenters.museum -science-fiction.museum -sciencehistory.museum -sciences.museum -sciencesnaturelles.museum -scotland.museum -seaport.museum -settlement.museum -settlers.museum -shell.museum -sherbrooke.museum -sibenik.museum -silk.museum -ski.museum -skole.museum -society.museum -sologne.museum -soundandvision.museum -southcarolina.museum -southwest.museum -space.museum -spy.museum -square.museum -stadt.museum -stalbans.museum -starnberg.museum -state.museum -stateofdelaware.museum -station.museum -steam.museum -steiermark.museum -stjohn.museum -stockholm.museum -stpetersburg.museum -stuttgart.museum -suisse.museum -surgeonshall.museum -surrey.museum -svizzera.museum -sweden.museum -sydney.museum -tank.museum -tcm.museum -technology.museum -telekommunikation.museum -television.museum -texas.museum -textile.museum -theater.museum -time.museum -timekeeping.museum -topology.museum -torino.museum -touch.museum -town.museum -transport.museum -tree.museum -trolley.museum -trust.museum -trustee.museum -uhren.museum -ulm.museum -undersea.museum -university.museum -usa.museum -usantiques.museum -usarts.museum -uscountryestate.museum -usculture.museum -usdecorativearts.museum -usgarden.museum -ushistory.museum -ushuaia.museum -uslivinghistory.museum -utah.museum -uvic.museum -valley.museum -vantaa.museum -versailles.museum -viking.museum -village.museum -virginia.museum -virtual.museum -virtuel.museum -vlaanderen.museum -volkenkunde.museum -wales.museum -wallonie.museum -war.museum -washingtondc.museum -watchandclock.museum -watch-and-clock.museum -western.museum -westfalen.museum -whaling.museum -wildlife.museum -williamsburg.museum -windmill.museum -workshop.museum -york.museum -yorkshire.museum -yosemite.museum -youth.museum -zoological.museum -zoology.museum -ירושלי×.museum -иком.museum - -// mv : http://en.wikipedia.org/wiki/.mv -// "mv" included because, contra Wikipedia, google.mv exists. -mv -aero.mv -biz.mv -com.mv -coop.mv -edu.mv -gov.mv -info.mv -int.mv -mil.mv -museum.mv -name.mv -net.mv -org.mv -pro.mv - -// mw : http://www.registrar.mw/ -mw -ac.mw -biz.mw -co.mw -com.mw -coop.mw -edu.mw -gov.mw -int.mw -museum.mw -net.mw -org.mw - -// mx : http://www.nic.mx/ -// Submitted by registry <farias@nic.mx> 2008-06-19 -mx -com.mx -org.mx -gob.mx -edu.mx -net.mx - -// my : http://www.mynic.net.my/ -my -com.my -net.my -org.my -gov.my -edu.my -mil.my -name.my - -// mz : http://www.gobin.info/domainname/mz-template.doc -*.mz - -// na : http://www.na-nic.com.na/ -// http://www.info.na/domain/ -na -info.na -pro.na -name.na -school.na -or.na -dr.na -us.na -mx.na -ca.na -in.na -cc.na -tv.na -ws.na -mobi.na -co.na -com.na -org.na - -// name : has 2nd-level tlds, but there's no list of them -name - -// nc : http://www.cctld.nc/ -nc -asso.nc - -// ne : http://en.wikipedia.org/wiki/.ne -ne - -// net : http://en.wikipedia.org/wiki/.net -net - -// nf : http://en.wikipedia.org/wiki/.nf -nf -com.nf -net.nf -per.nf -rec.nf -web.nf -arts.nf -firm.nf -info.nf -other.nf -store.nf - -// ng : http://psg.com/dns/ng/ -// Submitted by registry <randy@psg.com> 2008-06-17 -ac.ng -com.ng -edu.ng -gov.ng -net.ng -org.ng - -// ni : http://www.nic.ni/dominios.htm -*.ni - -// nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html -// Confirmed by registry <Antoin.Verschuren@sidn.nl> (with technical -// reservations) 2008-06-08 -nl - -// BV.nl will be a registry for dutch BV's (besloten vennootschap) -bv.nl - -// no : http://www.norid.no/regelverk/index.en.html -// The Norwegian registry has declined to notify us of updates. The web pages -// referenced below are the official source of the data. There is also an -// announce mailing list: -// https://postlister.uninett.no/sympa/info/norid-diskusjon -no -// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html -fhs.no -vgs.no -fylkesbibl.no -folkebibl.no -museum.no -idrett.no -priv.no -// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html -mil.no -stat.no -dep.no -kommune.no -herad.no -// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html -// counties -aa.no -ah.no -bu.no -fm.no -hl.no -hm.no -jan-mayen.no -mr.no -nl.no -nt.no -of.no -ol.no -oslo.no -rl.no -sf.no -st.no -svalbard.no -tm.no -tr.no -va.no -vf.no -// primary and lower secondary schools per county -gs.aa.no -gs.ah.no -gs.bu.no -gs.fm.no -gs.hl.no -gs.hm.no -gs.jan-mayen.no -gs.mr.no -gs.nl.no -gs.nt.no -gs.of.no -gs.ol.no -gs.oslo.no -gs.rl.no -gs.sf.no -gs.st.no -gs.svalbard.no -gs.tm.no -gs.tr.no -gs.va.no -gs.vf.no -// cities -akrehamn.no -Ã¥krehamn.no -algard.no -Ã¥lgÃ¥rd.no -arna.no -brumunddal.no -bryne.no -bronnoysund.no -brønnøysund.no -drobak.no -drøbak.no -egersund.no -fetsund.no -floro.no -florø.no -fredrikstad.no -hokksund.no -honefoss.no -hønefoss.no -jessheim.no -jorpeland.no -jørpeland.no -kirkenes.no -kopervik.no -krokstadelva.no -langevag.no -langevÃ¥g.no -leirvik.no -mjondalen.no -mjøndalen.no -mo-i-rana.no -mosjoen.no -mosjøen.no -nesoddtangen.no -orkanger.no -osoyro.no -osøyro.no -raholt.no -rÃ¥holt.no -sandnessjoen.no -sandnessjøen.no -skedsmokorset.no -slattum.no -spjelkavik.no -stathelle.no -stavern.no -stjordalshalsen.no -stjørdalshalsen.no -tananger.no -tranby.no -vossevangen.no -// communities -afjord.no -Ã¥fjord.no -agdenes.no -al.no -Ã¥l.no -alesund.no -Ã¥lesund.no -alstahaug.no -alta.no -áltá.no -alaheadju.no -álaheadju.no -alvdal.no -amli.no -Ã¥mli.no -amot.no -Ã¥mot.no -andebu.no -andoy.no -andøy.no -andasuolo.no -ardal.no -Ã¥rdal.no -aremark.no -arendal.no -Ã¥s.no -aseral.no -Ã¥seral.no -asker.no -askim.no -askvoll.no -askoy.no -askøy.no -asnes.no -Ã¥snes.no -audnedaln.no -aukra.no -aure.no -aurland.no -aurskog-holand.no -aurskog-høland.no -austevoll.no -austrheim.no -averoy.no -averøy.no -balestrand.no -ballangen.no -balat.no -bálát.no -balsfjord.no -bahccavuotna.no -báhccavuotna.no -bamble.no -bardu.no -beardu.no -beiarn.no -bajddar.no -bájddar.no -baidar.no -báidár.no -berg.no -bergen.no -berlevag.no -berlevÃ¥g.no -bearalvahki.no -bearalváhki.no -bindal.no -birkenes.no -bjarkoy.no -bjarkøy.no -bjerkreim.no -bjugn.no -bodo.no -bodø.no -badaddja.no -bÃ¥dÃ¥ddjÃ¥.no -budejju.no -bokn.no -bremanger.no -bronnoy.no -brønnøy.no -bygland.no -bykle.no -barum.no -bærum.no -bo.telemark.no -bø.telemark.no -bo.nordland.no -bø.nordland.no -bievat.no -bievát.no -bomlo.no -bømlo.no -batsfjord.no -bÃ¥tsfjord.no -bahcavuotna.no -báhcavuotna.no -dovre.no -drammen.no -drangedal.no -dyroy.no -dyrøy.no -donna.no -dønna.no -eid.no -eidfjord.no -eidsberg.no -eidskog.no -eidsvoll.no -eigersund.no -elverum.no -enebakk.no -engerdal.no -etne.no -etnedal.no -evenes.no -evenassi.no -evenášši.no -evje-og-hornnes.no -farsund.no -fauske.no -fuossko.no -fuoisku.no -fedje.no -fet.no -finnoy.no -finnøy.no -fitjar.no -fjaler.no -fjell.no -flakstad.no -flatanger.no -flekkefjord.no -flesberg.no -flora.no -fla.no -flÃ¥.no -folldal.no -forsand.no -fosnes.no -frei.no -frogn.no -froland.no -frosta.no -frana.no -fræna.no -froya.no -frøya.no -fusa.no -fyresdal.no -forde.no -førde.no -gamvik.no -gangaviika.no -gáŋgaviika.no -gaular.no -gausdal.no -gildeskal.no -gildeskÃ¥l.no -giske.no -gjemnes.no -gjerdrum.no -gjerstad.no -gjesdal.no -gjovik.no -gjøvik.no -gloppen.no -gol.no -gran.no -grane.no -granvin.no -gratangen.no -grimstad.no -grong.no -kraanghke.no -krÃ¥anghke.no -grue.no -gulen.no -hadsel.no -halden.no -halsa.no -hamar.no -hamaroy.no -habmer.no -hábmer.no -hapmir.no -hápmir.no -hammerfest.no -hammarfeasta.no -hámmárfeasta.no -haram.no -hareid.no -harstad.no -hasvik.no -aknoluokta.no -ákÅ‹oluokta.no -hattfjelldal.no -aarborte.no -haugesund.no -hemne.no -hemnes.no -hemsedal.no -heroy.more-og-romsdal.no -herøy.møre-og-romsdal.no -heroy.nordland.no -herøy.nordland.no -hitra.no -hjartdal.no -hjelmeland.no -hobol.no -hobøl.no -hof.no -hol.no -hole.no -holmestrand.no -holtalen.no -holtÃ¥len.no -hornindal.no -horten.no -hurdal.no -hurum.no -hvaler.no -hyllestad.no -hagebostad.no -hægebostad.no -hoyanger.no -høyanger.no -hoylandet.no -høylandet.no -ha.no -hÃ¥.no -ibestad.no -inderoy.no -inderøy.no -iveland.no -jevnaker.no -jondal.no -jolster.no -jølster.no -karasjok.no -karasjohka.no -kárášjohka.no -karlsoy.no -galsa.no -gálsá.no -karmoy.no -karmøy.no -kautokeino.no -guovdageaidnu.no -klepp.no -klabu.no -klæbu.no -kongsberg.no -kongsvinger.no -kragero.no -kragerø.no -kristiansand.no -kristiansund.no -krodsherad.no -krødsherad.no -kvalsund.no -rahkkeravju.no -ráhkkerávju.no -kvam.no -kvinesdal.no -kvinnherad.no -kviteseid.no -kvitsoy.no -kvitsøy.no -kvafjord.no -kvæfjord.no -giehtavuoatna.no -kvanangen.no -kvænangen.no -navuotna.no -návuotna.no -kafjord.no -kÃ¥fjord.no -gaivuotna.no -gáivuotna.no -larvik.no -lavangen.no -lavagis.no -loabat.no -loabát.no -lebesby.no -davvesiida.no -leikanger.no -leirfjord.no -leka.no -leksvik.no -lenvik.no -leangaviika.no -leaÅ‹gaviika.no -lesja.no -levanger.no -lier.no -lierne.no -lillehammer.no -lillesand.no -lindesnes.no -lindas.no -lindÃ¥s.no -lom.no -loppa.no -lahppi.no -láhppi.no -lund.no -lunner.no -luroy.no -lurøy.no -luster.no -lyngdal.no -lyngen.no -ivgu.no -lardal.no -lerdal.no -lærdal.no -lodingen.no -lødingen.no -lorenskog.no -lørenskog.no -loten.no -løten.no -malvik.no -masoy.no -mÃ¥søy.no -muosat.no -muosát.no -mandal.no -marker.no -marnardal.no -masfjorden.no -meland.no -meldal.no -melhus.no -meloy.no -meløy.no -meraker.no -merÃ¥ker.no -moareke.no -moÃ¥reke.no -midsund.no -midtre-gauldal.no -modalen.no -modum.no -molde.no -moskenes.no -moss.no -mosvik.no -malselv.no -mÃ¥lselv.no -malatvuopmi.no -málatvuopmi.no -namdalseid.no -aejrie.no -namsos.no -namsskogan.no -naamesjevuemie.no -nååmesjevuemie.no -laakesvuemie.no -nannestad.no -narvik.no -narviika.no -naustdal.no -nedre-eiker.no -nes.akershus.no -nes.buskerud.no -nesna.no -nesodden.no -nesseby.no -unjarga.no -unjárga.no -nesset.no -nissedal.no -nittedal.no -nord-aurdal.no -nord-fron.no -nord-odal.no -norddal.no -nordkapp.no -davvenjarga.no -davvenjárga.no -nordre-land.no -nordreisa.no -raisa.no -ráisa.no -nore-og-uvdal.no -notodden.no -naroy.no -nærøy.no -notteroy.no -nøtterøy.no -odda.no -oksnes.no -øksnes.no -oppdal.no -oppegard.no -oppegÃ¥rd.no -orkdal.no -orland.no -ørland.no -orskog.no -ørskog.no -orsta.no -ørsta.no -os.hedmark.no -os.hordaland.no -osen.no -osteroy.no -osterøy.no -ostre-toten.no -østre-toten.no -overhalla.no -ovre-eiker.no -øvre-eiker.no -oyer.no -øyer.no -oygarden.no -øygarden.no -oystre-slidre.no -øystre-slidre.no -porsanger.no -porsangu.no -porsáŋgu.no -porsgrunn.no -radoy.no -radøy.no -rakkestad.no -rana.no -ruovat.no -randaberg.no -rauma.no -rendalen.no -rennebu.no -rennesoy.no -rennesøy.no -rindal.no -ringebu.no -ringerike.no -ringsaker.no -rissa.no -risor.no -risør.no -roan.no -rollag.no -rygge.no -ralingen.no -rælingen.no -rodoy.no -rødøy.no -romskog.no -rømskog.no -roros.no -røros.no -rost.no -røst.no -royken.no -røyken.no -royrvik.no -røyrvik.no -rade.no -rÃ¥de.no -salangen.no -siellak.no -saltdal.no -salat.no -sálát.no -sálat.no -samnanger.no -sande.more-og-romsdal.no -sande.møre-og-romsdal.no -sande.vestfold.no -sandefjord.no -sandnes.no -sandoy.no -sandøy.no -sarpsborg.no -sauda.no -sauherad.no -sel.no -selbu.no -selje.no -seljord.no -sigdal.no -siljan.no -sirdal.no -skaun.no -skedsmo.no -ski.no -skien.no -skiptvet.no -skjervoy.no -skjervøy.no -skierva.no -skiervá.no -skjak.no -skjÃ¥k.no -skodje.no -skanland.no -skÃ¥nland.no -skanit.no -skánit.no -smola.no -smøla.no -snillfjord.no -snasa.no -snÃ¥sa.no -snoasa.no -snaase.no -snÃ¥ase.no -sogndal.no -sokndal.no -sola.no -solund.no -songdalen.no -sortland.no -spydeberg.no -stange.no -stavanger.no -steigen.no -steinkjer.no -stjordal.no -stjørdal.no -stokke.no -stor-elvdal.no -stord.no -stordal.no -storfjord.no -omasvuotna.no -strand.no -stranda.no -stryn.no -sula.no -suldal.no -sund.no -sunndal.no -surnadal.no -sveio.no -svelvik.no -sykkylven.no -sogne.no -søgne.no -somna.no -sømna.no -sondre-land.no -søndre-land.no -sor-aurdal.no -sør-aurdal.no -sor-fron.no -sør-fron.no -sor-odal.no -sør-odal.no -sor-varanger.no -sør-varanger.no -matta-varjjat.no -mátta-várjjat.no -sorfold.no -sørfold.no -sorreisa.no -sørreisa.no -sorum.no -sørum.no -tana.no -deatnu.no -time.no -tingvoll.no -tinn.no -tjeldsund.no -dielddanuorri.no -tjome.no -tjøme.no -tokke.no -tolga.no -torsken.no -tranoy.no -tranøy.no -tromso.no -tromsø.no -tromsa.no -romsa.no -trondheim.no -troandin.no -trysil.no -trana.no -træna.no -trogstad.no -trøgstad.no -tvedestrand.no -tydal.no -tynset.no -tysfjord.no -divtasvuodna.no -divttasvuotna.no -tysnes.no -tysvar.no -tysvær.no -tonsberg.no -tønsberg.no -ullensaker.no -ullensvang.no -ulvik.no -utsira.no -vadso.no -vadsø.no -cahcesuolo.no -Äáhcesuolo.no -vaksdal.no -valle.no -vang.no -vanylven.no -vardo.no -vardø.no -varggat.no -várggát.no -vefsn.no -vaapste.no -vega.no -vegarshei.no -vegÃ¥rshei.no -vennesla.no -verdal.no -verran.no -vestby.no -vestnes.no -vestre-slidre.no -vestre-toten.no -vestvagoy.no -vestvÃ¥gøy.no -vevelstad.no -vik.no -vikna.no -vindafjord.no -volda.no -voss.no -varoy.no -værøy.no -vagan.no -vÃ¥gan.no -voagat.no -vagsoy.no -vÃ¥gsøy.no -vaga.no -vÃ¥gÃ¥.no -valer.ostfold.no -vÃ¥ler.østfold.no -valer.hedmark.no -vÃ¥ler.hedmark.no - -// np : http://www.mos.com.np/register.html -*.np - -// nr : http://cenpac.net.nr/dns/index.html -// Confirmed by registry <technician@cenpac.net.nr> 2008-06-17 -nr -biz.nr -info.nr -gov.nr -edu.nr -org.nr -net.nr -com.nr - -// nu : http://en.wikipedia.org/wiki/.nu -nu - -// nz : http://en.wikipedia.org/wiki/.nz -*.nz - -// om : http://en.wikipedia.org/wiki/.om -*.om -!mediaphone.om -!nawrastelecom.om -!nawras.om -!omanmobile.om -!omanpost.om -!omantel.om -!rakpetroleum.om -!siemens.om -!songfest.om -!statecouncil.om - -// org : http://en.wikipedia.org/wiki/.org -org - -// pa : http://www.nic.pa/ -// Some additional second level "domains" resolve directly as hostnames, such as -// pannet.pa, so we add a rule for "pa". -pa -ac.pa -gob.pa -com.pa -org.pa -sld.pa -edu.pa -net.pa -ing.pa -abo.pa -med.pa -nom.pa - -// pe : https://www.nic.pe/InformeFinalComision.pdf -pe -edu.pe -gob.pe -nom.pe -mil.pe -org.pe -com.pe -net.pe - -// pf : http://www.gobin.info/domainname/formulaire-pf.pdf -pf -com.pf -org.pf -edu.pf - -// pg : http://en.wikipedia.org/wiki/.pg -*.pg - -// ph : http://www.domains.ph/FAQ2.asp -// Submitted by registry <jed@email.com.ph> 2008-06-13 -ph -com.ph -net.ph -org.ph -gov.ph -edu.ph -ngo.ph -mil.ph -i.ph - -// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK -pk -com.pk -net.pk -edu.pk -org.pk -fam.pk -biz.pk -web.pk -gov.pk -gob.pk -gok.pk -gon.pk -gop.pk -gos.pk -info.pk - -// pl : http://www.dns.pl/english/ -pl -// NASK functional domains (nask.pl / dns.pl) : http://www.dns.pl/english/dns-funk.html -aid.pl -agro.pl -atm.pl -auto.pl -biz.pl -com.pl -edu.pl -gmina.pl -gsm.pl -info.pl -mail.pl -miasta.pl -media.pl -mil.pl -net.pl -nieruchomosci.pl -nom.pl -org.pl -pc.pl -powiat.pl -priv.pl -realestate.pl -rel.pl -sex.pl -shop.pl -sklep.pl -sos.pl -szkola.pl -targi.pl -tm.pl -tourism.pl -travel.pl -turystyka.pl -// ICM functional domains (icm.edu.pl) -6bone.pl -art.pl -mbone.pl -// Government domains (administred by ippt.gov.pl) -gov.pl -uw.gov.pl -um.gov.pl -ug.gov.pl -upow.gov.pl -starostwo.gov.pl -so.gov.pl -sr.gov.pl -po.gov.pl -pa.gov.pl -// other functional domains -ngo.pl -irc.pl -usenet.pl -// NASK geographical domains : http://www.dns.pl/english/dns-regiony.html -augustow.pl -babia-gora.pl -bedzin.pl -beskidy.pl -bialowieza.pl -bialystok.pl -bielawa.pl -bieszczady.pl -boleslawiec.pl -bydgoszcz.pl -bytom.pl -cieszyn.pl -czeladz.pl -czest.pl -dlugoleka.pl -elblag.pl -elk.pl -glogow.pl -gniezno.pl -gorlice.pl -grajewo.pl -ilawa.pl -jaworzno.pl -jelenia-gora.pl -jgora.pl -kalisz.pl -kazimierz-dolny.pl -karpacz.pl -kartuzy.pl -kaszuby.pl -katowice.pl -kepno.pl -ketrzyn.pl -klodzko.pl -kobierzyce.pl -kolobrzeg.pl -konin.pl -konskowola.pl -kutno.pl -lapy.pl -lebork.pl -legnica.pl -lezajsk.pl -limanowa.pl -lomza.pl -lowicz.pl -lubin.pl -lukow.pl -malbork.pl -malopolska.pl -mazowsze.pl -mazury.pl -mielec.pl -mielno.pl -mragowo.pl -naklo.pl -nowaruda.pl -nysa.pl -olawa.pl -olecko.pl -olkusz.pl -olsztyn.pl -opoczno.pl -opole.pl -ostroda.pl -ostroleka.pl -ostrowiec.pl -ostrowwlkp.pl -pila.pl -pisz.pl -podhale.pl -podlasie.pl -polkowice.pl -pomorze.pl -pomorskie.pl -prochowice.pl -pruszkow.pl -przeworsk.pl -pulawy.pl -radom.pl -rawa-maz.pl -rybnik.pl -rzeszow.pl -sanok.pl -sejny.pl -siedlce.pl -slask.pl -slupsk.pl -sosnowiec.pl -stalowa-wola.pl -skoczow.pl -starachowice.pl -stargard.pl -suwalki.pl -swidnica.pl -swiebodzin.pl -swinoujscie.pl -szczecin.pl -szczytno.pl -tarnobrzeg.pl -tgory.pl -turek.pl -tychy.pl -ustka.pl -walbrzych.pl -warmia.pl -warszawa.pl -waw.pl -wegrow.pl -wielun.pl -wlocl.pl -wloclawek.pl -wodzislaw.pl -wolomin.pl -wroclaw.pl -zachpomor.pl -zagan.pl -zarow.pl -zgora.pl -zgorzelec.pl -// TASK geographical domains (www.task.gda.pl/uslugi/dns) -gda.pl -gdansk.pl -gdynia.pl -med.pl -sopot.pl -// other geographical domains -gliwice.pl -krakow.pl -poznan.pl -wroc.pl -zakopane.pl - -// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -pm - -// pn : http://www.government.pn/PnRegistry/policies.htm -pn -gov.pn -co.pn -org.pn -edu.pn -net.pn - -// pr : http://www.nic.pr/index.asp?f=1 -pr -com.pr -net.pr -org.pr -gov.pr -edu.pr -isla.pr -pro.pr -biz.pr -info.pr -name.pr -// these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr -est.pr -prof.pr -ac.pr - -// pro : http://www.nic.pro/support_faq.htm -pro -aca.pro -bar.pro -cpa.pro -jur.pro -law.pro -med.pro -eng.pro - -// ps : http://en.wikipedia.org/wiki/.ps -// http://www.nic.ps/registration/policy.html#reg -ps -edu.ps -gov.ps -sec.ps -plo.ps -com.ps -org.ps -net.ps - -// pt : http://online.dns.pt/dns/start_dns -pt -net.pt -gov.pt -org.pt -edu.pt -int.pt -publ.pt -com.pt -nome.pt - -// pw : http://en.wikipedia.org/wiki/.pw -pw -co.pw -ne.pw -or.pw -ed.pw -go.pw -belau.pw - -// py : http://www.nic.py/faq_a.html#faq_b -*.py - -// qa : http://domains.qa/en/ -qa -com.qa -edu.qa -gov.qa -mil.qa -name.qa -net.qa -org.qa -sch.qa - -// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs -re -com.re -asso.re -nom.re - -// ro : http://www.rotld.ro/ -ro -com.ro -org.ro -tm.ro -nt.ro -nom.ro -info.ro -rec.ro -arts.ro -firm.ro -store.ro -www.ro - -// rs : http://en.wikipedia.org/wiki/.rs -rs -co.rs -org.rs -edu.rs -ac.rs -gov.rs -in.rs - -// ru : http://www.cctld.ru/ru/docs/aktiv_8.php -// Industry domains -ru -ac.ru -com.ru -edu.ru -int.ru -net.ru -org.ru -pp.ru -// Geographical domains -adygeya.ru -altai.ru -amur.ru -arkhangelsk.ru -astrakhan.ru -bashkiria.ru -belgorod.ru -bir.ru -bryansk.ru -buryatia.ru -cbg.ru -chel.ru -chelyabinsk.ru -chita.ru -chukotka.ru -chuvashia.ru -dagestan.ru -dudinka.ru -e-burg.ru -grozny.ru -irkutsk.ru -ivanovo.ru -izhevsk.ru -jar.ru -joshkar-ola.ru -kalmykia.ru -kaluga.ru -kamchatka.ru -karelia.ru -kazan.ru -kchr.ru -kemerovo.ru -khabarovsk.ru -khakassia.ru -khv.ru -kirov.ru -koenig.ru -komi.ru -kostroma.ru -krasnoyarsk.ru -kuban.ru -kurgan.ru -kursk.ru -lipetsk.ru -magadan.ru -mari.ru -mari-el.ru -marine.ru -mordovia.ru -mosreg.ru -msk.ru -murmansk.ru -nalchik.ru -nnov.ru -nov.ru -novosibirsk.ru -nsk.ru -omsk.ru -orenburg.ru -oryol.ru -palana.ru -penza.ru -perm.ru -pskov.ru -ptz.ru -rnd.ru -ryazan.ru -sakhalin.ru -samara.ru -saratov.ru -simbirsk.ru -smolensk.ru -spb.ru -stavropol.ru -stv.ru -surgut.ru -tambov.ru -tatarstan.ru -tom.ru -tomsk.ru -tsaritsyn.ru -tsk.ru -tula.ru -tuva.ru -tver.ru -tyumen.ru -udm.ru -udmurtia.ru -ulan-ude.ru -vladikavkaz.ru -vladimir.ru -vladivostok.ru -volgograd.ru -vologda.ru -voronezh.ru -vrn.ru -vyatka.ru -yakutia.ru -yamal.ru -yaroslavl.ru -yekaterinburg.ru -yuzhno-sakhalinsk.ru -// More geographical domains -amursk.ru -baikal.ru -cmw.ru -fareast.ru -jamal.ru -kms.ru -k-uralsk.ru -kustanai.ru -kuzbass.ru -magnitka.ru -mytis.ru -nakhodka.ru -nkz.ru -norilsk.ru -oskol.ru -pyatigorsk.ru -rubtsovsk.ru -snz.ru -syzran.ru -vdonsk.ru -zgrad.ru -// State domains -gov.ru -mil.ru -// Technical domains -test.ru - -// rw : http://www.nic.rw/cgi-bin/policy.pl -rw -gov.rw -net.rw -edu.rw -ac.rw -com.rw -co.rw -int.rw -mil.rw -gouv.rw - -// sa : http://www.nic.net.sa/ -sa -com.sa -net.sa -org.sa -gov.sa -med.sa -pub.sa -edu.sa -sch.sa - -// sb : http://www.sbnic.net.sb/ -// Submitted by registry <lee.humphries@telekom.com.sb> 2008-06-08 -sb -com.sb -edu.sb -gov.sb -net.sb -org.sb - -// sc : http://www.nic.sc/ -sc -com.sc -gov.sc -net.sc -org.sc -edu.sc - -// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm -// Submitted by registry <admin@isoc.sd> 2008-06-17 -sd -com.sd -net.sd -org.sd -edu.sd -med.sd -gov.sd -info.sd - -// se : http://en.wikipedia.org/wiki/.se -// Submitted by registry <Patrik.Wallstrom@iis.se> 2008-06-24 -se -a.se -ac.se -b.se -bd.se -brand.se -c.se -d.se -e.se -f.se -fh.se -fhsk.se -fhv.se -g.se -h.se -i.se -k.se -komforb.se -kommunalforbund.se -komvux.se -l.se -lanbib.se -m.se -n.se -naturbruksgymn.se -o.se -org.se -p.se -parti.se -pp.se -press.se -r.se -s.se -sshn.se -t.se -tm.se -u.se -w.se -x.se -y.se -z.se - -// sg : http://www.nic.net.sg/sub_policies_agreement/2ld.html -sg -com.sg -net.sg -org.sg -gov.sg -edu.sg -per.sg - -// sh : http://www.nic.sh/rules.html -// list of 2nd level domains ? -sh - -// si : http://en.wikipedia.org/wiki/.si -si - -// sj : No registrations at this time. -// Submitted by registry <jarle@uninett.no> 2008-06-16 - -// sk : http://en.wikipedia.org/wiki/.sk -// list of 2nd level domains ? -sk - -// sl : http://www.nic.sl -// Submitted by registry <adam@neoip.com> 2008-06-12 -sl -com.sl -net.sl -edu.sl -gov.sl -org.sl - -// sm : http://en.wikipedia.org/wiki/.sm -sm - -// sn : http://en.wikipedia.org/wiki/.sn -sn -art.sn -com.sn -edu.sn -gouv.sn -org.sn -perso.sn -univ.sn - -// so : http://www.soregistry.com/ -so -com.so -net.so -org.so - -// sr : http://en.wikipedia.org/wiki/.sr -sr - -// st : http://www.nic.st/html/policyrules/ -st -co.st -com.st -consulado.st -edu.st -embaixada.st -gov.st -mil.st -net.st -org.st -principe.st -saotome.st -store.st - -// su : http://en.wikipedia.org/wiki/.su -su - -// sv : http://www.svnet.org.sv/svpolicy.html -*.sv - -// sy : http://en.wikipedia.org/wiki/.sy -// see also: http://www.gobin.info/domainname/sy.doc -sy -edu.sy -gov.sy -net.sy -mil.sy -com.sy -org.sy - -// sz : http://en.wikipedia.org/wiki/.sz -// http://www.sispa.org.sz/ -sz -co.sz -ac.sz -org.sz - -// tc : http://en.wikipedia.org/wiki/.tc -tc - -// td : http://en.wikipedia.org/wiki/.td -td - -// tel: http://en.wikipedia.org/wiki/.tel -// http://www.telnic.org/ -tel - -// tf : http://en.wikipedia.org/wiki/.tf -tf - -// tg : http://en.wikipedia.org/wiki/.tg -// http://www.nic.tg/nictg/index.php implies no reserved 2nd-level domains, -// although this contradicts wikipedia. -tg - -// th : http://en.wikipedia.org/wiki/.th -// Submitted by registry <krit@thains.co.th> 2008-06-17 -th -ac.th -co.th -go.th -in.th -mi.th -net.th -or.th - -// tj : http://www.nic.tj/policy.htm -tj -ac.tj -biz.tj -co.tj -com.tj -edu.tj -go.tj -gov.tj -int.tj -mil.tj -name.tj -net.tj -nic.tj -org.tj -test.tj -web.tj - -// tk : http://en.wikipedia.org/wiki/.tk -tk - -// tl : http://en.wikipedia.org/wiki/.tl -tl -gov.tl - -// tm : http://www.nic.tm/rules.html -// list of 2nd level tlds ? -tm - -// tn : http://en.wikipedia.org/wiki/.tn -// http://whois.ati.tn/ -tn -com.tn -ens.tn -fin.tn -gov.tn -ind.tn -intl.tn -nat.tn -net.tn -org.tn -info.tn -perso.tn -tourism.tn -edunet.tn -rnrt.tn -rns.tn -rnu.tn -mincom.tn -agrinet.tn -defense.tn -turen.tn - -// to : http://en.wikipedia.org/wiki/.to -// Submitted by registry <egullich@colo.to> 2008-06-17 -to -com.to -gov.to -net.to -org.to -edu.to -mil.to - -// tr : http://en.wikipedia.org/wiki/.tr -*.tr -!nic.tr -// Used by government in the TRNC -// http://en.wikipedia.org/wiki/.nc.tr -gov.nc.tr - -// travel : http://en.wikipedia.org/wiki/.travel -travel - -// tt : http://www.nic.tt/ -tt -co.tt -com.tt -org.tt -net.tt -biz.tt -info.tt -pro.tt -int.tt -coop.tt -jobs.tt -mobi.tt -travel.tt -museum.tt -aero.tt -name.tt -gov.tt -edu.tt - -// tv : http://en.wikipedia.org/wiki/.tv -// Not listing any 2LDs as reserved since none seem to exist in practice, -// Wikipedia notwithstanding. -tv - -// tw : http://en.wikipedia.org/wiki/.tw -tw -edu.tw -gov.tw -mil.tw -com.tw -net.tw -org.tw -idv.tw -game.tw -ebiz.tw -club.tw -網路.tw -組織.tw -商業.tw - -// tz : http://en.wikipedia.org/wiki/.tz -// Submitted by registry <randy@psg.com> 2008-06-17 -// Updated from http://www.tznic.or.tz/index.php/domains.html 2010-10-25 -ac.tz -co.tz -go.tz -mil.tz -ne.tz -or.tz -sc.tz - -// ua : http://www.nic.net.ua/ -ua -com.ua -edu.ua -gov.ua -in.ua -net.ua -org.ua -// ua geo-names -cherkassy.ua -chernigov.ua -chernovtsy.ua -ck.ua -cn.ua -crimea.ua -cv.ua -dn.ua -dnepropetrovsk.ua -donetsk.ua -dp.ua -if.ua -ivano-frankivsk.ua -kh.ua -kharkov.ua -kherson.ua -khmelnitskiy.ua -kiev.ua -kirovograd.ua -km.ua -kr.ua -ks.ua -kv.ua -lg.ua -lugansk.ua -lutsk.ua -lviv.ua -mk.ua -nikolaev.ua -od.ua -odessa.ua -pl.ua -poltava.ua -rovno.ua -rv.ua -sebastopol.ua -sumy.ua -te.ua -ternopil.ua -uzhgorod.ua -vinnica.ua -vn.ua -zaporizhzhe.ua -zp.ua -zhitomir.ua -zt.ua - -// Private registries in .ua -co.ua -pp.ua - -// ug : http://www.registry.co.ug/ -ug -co.ug -ac.ug -sc.ug -go.ug -ne.ug -or.ug - -// uk : http://en.wikipedia.org/wiki/.uk -*.uk -*.sch.uk -!bl.uk -!british-library.uk -!icnet.uk -!jet.uk -!mod.uk -!nel.uk -!nhs.uk -!nic.uk -!nls.uk -!national-library-scotland.uk -!parliament.uk -!police.uk - -// us : http://en.wikipedia.org/wiki/.us -us -dni.us -fed.us -isa.us -kids.us -nsn.us -// us geographic names -ak.us -al.us -ar.us -as.us -az.us -ca.us -co.us -ct.us -dc.us -de.us -fl.us -ga.us -gu.us -hi.us -ia.us -id.us -il.us -in.us -ks.us -ky.us -la.us -ma.us -md.us -me.us -mi.us -mn.us -mo.us -ms.us -mt.us -nc.us -nd.us -ne.us -nh.us -nj.us -nm.us -nv.us -ny.us -oh.us -ok.us -or.us -pa.us -pr.us -ri.us -sc.us -sd.us -tn.us -tx.us -ut.us -vi.us -vt.us -va.us -wa.us -wi.us -wv.us -wy.us -// The registrar notes several more specific domains available in each state, -// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat -// haphazard; in some states these domains resolve as addresses, while in others -// only subdomains are available, or even nothing at all. We include the -// most common ones where it's clear that different sites are different -// entities. -k12.ak.us -k12.al.us -k12.ar.us -k12.as.us -k12.az.us -k12.ca.us -k12.co.us -k12.ct.us -k12.dc.us -k12.de.us -k12.fl.us -k12.ga.us -k12.gu.us -// k12.hi.us Hawaii has a state-wide DOE login: bug 614565 -k12.ia.us -k12.id.us -k12.il.us -k12.in.us -k12.ks.us -k12.ky.us -k12.la.us -k12.ma.us -k12.md.us -k12.me.us -k12.mi.us -k12.mn.us -k12.mo.us -k12.ms.us -k12.mt.us -k12.nc.us -k12.nd.us -k12.ne.us -k12.nh.us -k12.nj.us -k12.nm.us -k12.nv.us -k12.ny.us -k12.oh.us -k12.ok.us -k12.or.us -k12.pa.us -k12.pr.us -k12.ri.us -k12.sc.us -k12.sd.us -k12.tn.us -k12.tx.us -k12.ut.us -k12.vi.us -k12.vt.us -k12.va.us -k12.wa.us -k12.wi.us -k12.wv.us -k12.wy.us - -cc.ak.us -cc.al.us -cc.ar.us -cc.as.us -cc.az.us -cc.ca.us -cc.co.us -cc.ct.us -cc.dc.us -cc.de.us -cc.fl.us -cc.ga.us -cc.gu.us -cc.hi.us -cc.ia.us -cc.id.us -cc.il.us -cc.in.us -cc.ks.us -cc.ky.us -cc.la.us -cc.ma.us -cc.md.us -cc.me.us -cc.mi.us -cc.mn.us -cc.mo.us -cc.ms.us -cc.mt.us -cc.nc.us -cc.nd.us -cc.ne.us -cc.nh.us -cc.nj.us -cc.nm.us -cc.nv.us -cc.ny.us -cc.oh.us -cc.ok.us -cc.or.us -cc.pa.us -cc.pr.us -cc.ri.us -cc.sc.us -cc.sd.us -cc.tn.us -cc.tx.us -cc.ut.us -cc.vi.us -cc.vt.us -cc.va.us -cc.wa.us -cc.wi.us -cc.wv.us -cc.wy.us - -lib.ak.us -lib.al.us -lib.ar.us -lib.as.us -lib.az.us -lib.ca.us -lib.co.us -lib.ct.us -lib.dc.us -lib.de.us -lib.fl.us -lib.ga.us -lib.gu.us -lib.hi.us -lib.ia.us -lib.id.us -lib.il.us -lib.in.us -lib.ks.us -lib.ky.us -lib.la.us -lib.ma.us -lib.md.us -lib.me.us -lib.mi.us -lib.mn.us -lib.mo.us -lib.ms.us -lib.mt.us -lib.nc.us -lib.nd.us -lib.ne.us -lib.nh.us -lib.nj.us -lib.nm.us -lib.nv.us -lib.ny.us -lib.oh.us -lib.ok.us -lib.or.us -lib.pa.us -lib.pr.us -lib.ri.us -lib.sc.us -lib.sd.us -lib.tn.us -lib.tx.us -lib.ut.us -lib.vi.us -lib.vt.us -lib.va.us -lib.wa.us -lib.wi.us -lib.wv.us -lib.wy.us - -// k12.ma.us contains school districts in Massachusetts. The 4LDs are -// managed indepedently except for private (PVT), charter (CHTR) and -// parochial (PAROCH) schools. Those are delegated dorectly to the -// 5LD operators. <k12-ma-hostmaster _ at _ rsuc.gweep.net> -pvt.k12.ma.us -chtr.k12.ma.us -paroch.k12.ma.us - -// uy : http://www.antel.com.uy/ -*.uy - -// uz : http://www.reg.uz/registerr.html -// are there other 2nd level tlds ? -uz -com.uz -co.uz - -// va : http://en.wikipedia.org/wiki/.va -va - -// vc : http://en.wikipedia.org/wiki/.vc -// Submitted by registry <kshah@ca.afilias.info> 2008-06-13 -vc -com.vc -net.vc -org.vc -gov.vc -mil.vc -edu.vc - -// ve : http://registro.nic.ve/nicve/registro/index.html -*.ve - -// vg : http://en.wikipedia.org/wiki/.vg -vg - -// vi : http://www.nic.vi/newdomainform.htm -// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other -// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they -// are available for registration (which they do not seem to be). -vi -co.vi -com.vi -k12.vi -net.vi -org.vi - -// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp -vn -com.vn -net.vn -org.vn -edu.vn -gov.vn -int.vn -ac.vn -biz.vn -info.vn -name.vn -pro.vn -health.vn - -// vu : http://en.wikipedia.org/wiki/.vu -// list of 2nd level tlds ? -vu - -// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -wf - -// ws : http://en.wikipedia.org/wiki/.ws -// http://samoanic.ws/index.dhtml -ws -com.ws -net.ws -org.ws -gov.ws -edu.ws - -// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -yt - -// IDN ccTLDs -// Please sort by ISO 3166 ccTLD, then punicode string -// when submitting patches and follow this format: -// <Punicode> ("<english word>" <language>) : <ISO 3166 ccTLD> -// [optional sponsoring org] -// <URL> - -// xn--mgbaam7a8h ("Emerat" Arabic) : AE -//http://nic.ae/english/arabicdomain/rules.jsp -امارات - -// xn--54b7fta0cc ("Bangla" Bangla) : BD -বাংলা - -// xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中国 - -// xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中國 - -// xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ -الجزائر - -// xn--wgbh1c ("Egypt" Arabic .masr) : EG -// http://www.dotmasr.eg/ -مصر - -// xn--node ("ge" Georgian (Mkhedruli)) : GE -გე - -// xn--j6w193g ("Hong Kong" Chinese-Han) : HK -// https://www2.hkirc.hk/register/rules.jsp -香港 - -// xn--h2brj9c ("Bharat" Devanagari) : IN -// India -भारत - -// xn--mgbbh1a71e ("Bharat" Arabic) : IN -// India -بھارت - -// xn--fpcrj9c3d ("Bharat" Telugu) : IN -// India -భారతౠ- -// xn--gecrj9c ("Bharat" Gujarati) : IN -// India -ભારત - -// xn--s9brj9c ("Bharat" Gurmukhi) : IN -// India -ਭਾਰਤ - -// xn--45brj9c ("Bharat" Bengali) : IN -// India -ভারত - -// xn--xkc2dl3a5ee0h ("India" Tamil) : IN -// India -இநà¯à®¤à®¿à®¯à®¾ - -// xn--mgba3a4f16a ("Iran" Persian) : IR -ایران - -// xn--mgba3a4fra ("Iran" Arabic) : IR -ايران - -//xn--mgbayh7gpa ("al-Ordon" Arabic) JO -//National Information Technology Center (NITC) -//Royal Scientific Society, Al-Jubeiha -الاردن - -// xn--3e0b707e ("Republic of Korea" Hangul) : KR -한국 - -// xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK -// http://nic.lk -ලංක෠- -// xn--xkc2al3hye2a ("Ilangai" Tamil) : LK -// http://nic.lk -இலஙà¯à®•ை - -// xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA -المغرب - -// xn--mgb9awbf ("Oman" Arabic) : OM -عمان - -// xn--ygbi2ammx ("Falasteen" Arabic) : PS -// The Palestinian National Internet Naming Authority (PNINA) -// http://www.pnina.ps -Ùلسطين - -// xn--90a3ac ("srb" Cyrillic) : RS -Ñрб - -// xn--p1ai ("rf" Russian-Cyrillic) : RU -// http://www.cctld.ru/en/docs/rulesrf.php -рф - -// xn--wgbl6a ("Qatar" Arabic) : QA -// http://www.ict.gov.qa/ -قطر - -// xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA -// http://www.nic.net.sa/ -السعودية - -// xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA -السعودیة - -// xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA -السعودیۃ - -// xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA -السعوديه - -// xn--ogbpf8fl ("Syria" Arabic) : SY -سورية - -// xn--mgbtf8fl ("Syria" Arabic) variant : SY -سوريا - -// xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG -æ–°åŠ å¡ - -// xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG -சிஙà¯à®•பà¯à®ªà¯‚ர௠- -// xn--o3cw4h ("Thai" Thai) : TH -// http://www.thnic.co.th -ไทย - -// xn--pgbs0dh ("Tunis") : TN -// http://nic.tn -تونس - -// xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -å°ç£ - -// xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -å°æ¹¾ - -// xn--nnx388a ("Taiwan") variant : TW -è‡ºç£ - -// xn--j1amh ("ukr" Cyrillic) : UA -укр - -// xn--mgb2ddes ("AlYemen" Arabic) : YE -اليمن - -// xxx : http://icmregistry.com -xxx - -// ye : http://www.y.net.ye/services/domain_name.htm -*.ye - -// za : http://www.zadna.org.za/slds.html -*.za - -// zm : http://en.wikipedia.org/wiki/.zm -*.zm - -// zw : http://en.wikipedia.org/wiki/.zw -*.zw - -// ===END ICANN DOMAINS=== -// ===BEGIN PRIVATE DOMAINS=== - -// info.at : http://www.info.at/ -biz.at -info.at - -// priv.at : http://www.nic.priv.at/ -// Submitted by registry <lendl@nic.at> 2008-06-09 -priv.at - -// co.ca : http://registry.co.ca -co.ca - -// CentralNic : http://www.centralnic.com/names/domains -// Confirmed by registry <gavin.brown@centralnic.com> 2008-06-09 -ar.com -br.com -cn.com -de.com -eu.com -gb.com -gr.com -hu.com -jpn.com -kr.com -no.com -qc.com -ru.com -sa.com -se.com -uk.com -us.com -uy.com -za.com -gb.net -jp.net -se.net -uk.net -ae.org -us.org -com.de - -// Opera Software, A.S.A. -// Requested by Yngve Pettersen <yngve@opera.com> 2009-11-26 -operaunite.com - -// Google, Inc. -// Requested by Eduardo Vela <evn@google.com> 2010-09-06 -appspot.com - -// iki.fi : Submitted by Hannu Aronsson <haa@iki.fi> 2009-11-05 -iki.fi - -// c.la : http://www.c.la/ -c.la - -// ZaNiC : http://www.za.net/ -// Confirmed by registry <hostmaster@nic.za.net> 2009-10-03 -za.net -za.org - -// CoDNS B.V. -// Added 2010-05-23. -co.nl -co.no - -// Mainseek Sp. z o.o. : http://www.co.pl/ -co.pl - -// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ -dyndns-at-home.com -dyndns-at-work.com -dyndns-blog.com -dyndns-free.com -dyndns-home.com -dyndns-ip.com -dyndns-mail.com -dyndns-office.com -dyndns-pics.com -dyndns-remote.com -dyndns-server.com -dyndns-web.com -dyndns-wiki.com -dyndns-work.com -dyndns.biz -dyndns.info -dyndns.org -dyndns.tv -at-band-camp.net -ath.cx -barrel-of-knowledge.info -barrell-of-knowledge.info -better-than.tv -blogdns.com -blogdns.net -blogdns.org -blogsite.org -boldlygoingnowhere.org -broke-it.net -buyshouses.net -cechire.com -dnsalias.com -dnsalias.net -dnsalias.org -dnsdojo.com -dnsdojo.net -dnsdojo.org -does-it.net -doesntexist.com -doesntexist.org -dontexist.com -dontexist.net -dontexist.org -doomdns.com -doomdns.org -dvrdns.org -dyn-o-saur.com -dynalias.com -dynalias.net -dynalias.org -dynathome.net -dyndns.ws -endofinternet.net -endofinternet.org -endoftheinternet.org -est-a-la-maison.com -est-a-la-masion.com -est-le-patron.com -est-mon-blogueur.com -for-better.biz -for-more.biz -for-our.info -for-some.biz -for-the.biz -forgot.her.name -forgot.his.name -from-ak.com -from-al.com -from-ar.com -from-az.net -from-ca.com -from-co.net -from-ct.com -from-dc.com -from-de.com -from-fl.com -from-ga.com -from-hi.com -from-ia.com -from-id.com -from-il.com -from-in.com -from-ks.com -from-ky.com -from-la.net -from-ma.com -from-md.com -from-me.org -from-mi.com -from-mn.com -from-mo.com -from-ms.com -from-mt.com -from-nc.com -from-nd.com -from-ne.com -from-nh.com -from-nj.com -from-nm.com -from-nv.com -from-ny.net -from-oh.com -from-ok.com -from-or.com -from-pa.com -from-pr.com -from-ri.com -from-sc.com -from-sd.com -from-tn.com -from-tx.com -from-ut.com -from-va.com -from-vt.com -from-wa.com -from-wi.com -from-wv.com -from-wy.com -ftpaccess.cc -fuettertdasnetz.de -game-host.org -game-server.cc -getmyip.com -gets-it.net -go.dyndns.org -gotdns.com -gotdns.org -groks-the.info -groks-this.info -ham-radio-op.net -here-for-more.info -hobby-site.com -hobby-site.org -home.dyndns.org -homedns.org -homeftp.net -homeftp.org -homeip.net -homelinux.com -homelinux.net -homelinux.org -homeunix.com -homeunix.net -homeunix.org -iamallama.com -in-the-band.net -is-a-anarchist.com -is-a-blogger.com -is-a-bookkeeper.com -is-a-bruinsfan.org -is-a-bulls-fan.com -is-a-candidate.org -is-a-caterer.com -is-a-celticsfan.org -is-a-chef.com -is-a-chef.net -is-a-chef.org -is-a-conservative.com -is-a-cpa.com -is-a-cubicle-slave.com -is-a-democrat.com -is-a-designer.com -is-a-doctor.com -is-a-financialadvisor.com -is-a-geek.com -is-a-geek.net -is-a-geek.org -is-a-green.com -is-a-guru.com -is-a-hard-worker.com -is-a-hunter.com -is-a-knight.org -is-a-landscaper.com -is-a-lawyer.com -is-a-liberal.com -is-a-libertarian.com -is-a-linux-user.org -is-a-llama.com -is-a-musician.com -is-a-nascarfan.com -is-a-nurse.com -is-a-painter.com -is-a-patsfan.org -is-a-personaltrainer.com -is-a-photographer.com -is-a-player.com -is-a-republican.com -is-a-rockstar.com -is-a-socialist.com -is-a-soxfan.org -is-a-student.com -is-a-teacher.com -is-a-techie.com -is-a-therapist.com -is-an-accountant.com -is-an-actor.com -is-an-actress.com -is-an-anarchist.com -is-an-artist.com -is-an-engineer.com -is-an-entertainer.com -is-by.us -is-certified.com -is-found.org -is-gone.com -is-into-anime.com -is-into-cars.com -is-into-cartoons.com -is-into-games.com -is-leet.com -is-lost.org -is-not-certified.com -is-saved.org -is-slick.com -is-uberleet.com -is-very-bad.org -is-very-evil.org -is-very-good.org -is-very-nice.org -is-very-sweet.org -is-with-theband.com -isa-geek.com -isa-geek.net -isa-geek.org -isa-hockeynut.com -issmarterthanyou.com -isteingeek.de -istmein.de -kicks-ass.net -kicks-ass.org -knowsitall.info -land-4-sale.us -lebtimnetz.de -leitungsen.de -likes-pie.com -likescandy.com -merseine.nu -mine.nu -misconfused.org -mypets.ws -myphotos.cc -neat-url.com -office-on-the.net -on-the-web.tv -podzone.net -podzone.org -readmyblog.org -saves-the-whales.com -scrapper-site.net -scrapping.cc -selfip.biz -selfip.com -selfip.info -selfip.net -selfip.org -sells-for-less.com -sells-for-u.com -sells-it.net -sellsyourhome.org -servebbs.com -servebbs.net -servebbs.org -serveftp.net -serveftp.org -servegame.org -shacknet.nu -simple-url.com -space-to-rent.com -stuff-4-sale.org -stuff-4-sale.us -teaches-yoga.com -thruhere.net -traeumtgerade.de -webhop.biz -webhop.info -webhop.net -webhop.org -worse-than.tv -writesthisblog.com - -// ===END PRIVATE DOMAINS=== diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js deleted file mode 100644 index 3cce815e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js +++ /dev/null @@ -1,1340 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -var vows = require('vows'); -var assert = require('assert'); -var async = require('async'); - -// NOTE use require("tough-cookie") in your own code: -var tough = require('./lib/cookie'); -var Cookie = tough.Cookie; -var CookieJar = tough.CookieJar; - - -function dateVows(table) { - var theVows = { }; - var keys = Object.keys(table).forEach(function(date) { - var expect = table[date]; - theVows[date] = function() { - var got = tough.parseDate(date) ? 'valid' : 'invalid'; - assert.equal(got, expect ? 'valid' : 'invalid'); - }; - }); - return { "date parsing": theVows }; -} - -function matchVows(func,table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var dom = item[1]; - var expect = item[2]; - var label = str+(expect?" matches ":" doesn't match ")+dom; - theVows[label] = function() { - assert.equal(func(str,dom),expect); - }; - }); - return theVows; -} - -function defaultPathVows(table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var expect = item[1]; - var label = str+" gives "+expect; - theVows[label] = function() { - assert.equal(tough.defaultPath(str),expect); - }; - }); - return theVows; -} - -var atNow = Date.now(); -function at(offset) { return {now: new Date(atNow+offset)} } - -vows.describe('Cookie Jar') -.addBatch({ - "all defined": function() { - assert.ok(Cookie); - assert.ok(CookieJar); - }, -}) -.addBatch( - dateVows({ - "Wed, 09 Jun 2021 10:18:14 GMT": true, - "Wed, 09 Jun 2021 22:18:14 GMT": true, - "Tue, 18 Oct 2011 07:42:42.123 GMT": true, - "18 Oct 2011 07:42:42 GMT": true, - "8 Oct 2011 7:42:42 GMT": true, - "8 Oct 2011 7:2:42 GMT": false, - "Oct 18 2011 07:42:42 GMT": true, - "Tue Oct 18 2011 07:05:03 GMT+0000 (GMT)": true, - "09 Jun 2021 10:18:14 GMT": true, - "99 Jix 3038 48:86:72 ZMT": false, - '01 Jan 1970 00:00:00 GMT': true, - '01 Jan 1600 00:00:00 GMT': false, // before 1601 - '01 Jan 1601 00:00:00 GMT': true, - '10 Feb 81 13:00:00 GMT': true, // implicit year - 'Thu, 01 Jan 1970 00:00:010 GMT': true, // strange time, non-strict OK - 'Thu, 17-Apr-2014 02:12:29 GMT': true, // dashes - 'Thu, 17-Apr-2014 02:12:29 UTC': true, // dashes and UTC - }) -) -.addBatch({ - "strict date parse of Thu, 01 Jan 1970 00:00:010 GMT": { - topic: function() { - return tough.parseDate('Thu, 01 Jan 1970 00:00:010 GMT', true) ? true : false; - }, - "invalid": function(date) { - assert.equal(date,false); - }, - } -}) -.addBatch({ - "formatting": { - "a simple cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b'); - }, - }, - "a cookie with spaces in the value": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'beta gamma'; - return c; - }, - "doesn't validate": function(c) { - assert.ok(!c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a="beta gamma"'); - }, - }, - "with an empty value and HttpOnly": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.httpOnly = true; - return c; - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=; HttpOnly'); - } - }, - "with an expiry": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT'); - }, - "to short string": function(c) { - assert.equal(c.cookieString(), 'a=b'); - }, - }, - "with a max-age": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); // mabe this one *shouldn't*? - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345'); - }, - }, - "with a bunch of things": function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - c.domain = 'example.com'; - c.path = '/foo'; - c.secure = true; - c.httpOnly = true; - c.extensions = ['MyExtension']; - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345; Domain=example.com; Path=/foo; Secure; HttpOnly; MyExtension'); - }, - "a host-only cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.hostOnly = true; - c.domain = 'shouldnt-stringify.example.com'; - c.path = '/should-stringify'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Path=/should-stringify'); - }, - }, - "minutes are '10'": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.expires = new Date(1284113410000); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - var str = c.toString(); - assert.notEqual(str, 'a=b; Expires=Fri, 010 Sep 2010 010:010:010 GMT'); - assert.equal(str, 'a=b; Expires=Fri, 10 Sep 2010 10:10:10 GMT'); - }, - } - } -}) -.addBatch({ - "TTL with max-age": function() { - var c = new Cookie(); - c.maxAge = 123; - assert.equal(c.TTL(), 123000); - assert.equal(c.expiryTime(new Date(9000000)), 9123000); - }, - "TTL with zero max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = 0; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with negative max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = -1; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with max-age and expires": function() { - var c = new Cookie(); - c.maxAge = 123; - c.expires = new Date(Date.now()+9000); - assert.equal(c.TTL(), 123000); - assert.ok(c.isPersistent()); - }, - "TTL with expires": function() { - var c = new Cookie(); - var now = Date.now(); - c.expires = new Date(now+9000); - assert.equal(c.TTL(now), 9000); - assert.equal(c.expiryTime(), c.expires.getTime()); - }, - "TTL with old expires": function() { - var c = new Cookie(); - c.setExpires('17 Oct 2010 00:00:00 GMT'); - assert.ok(c.TTL() < 0); - assert.ok(c.isPersistent()); - }, - "default TTL": { - topic: function() { return new Cookie() }, - "is Infinite-future": function(c) { assert.equal(c.TTL(), Infinity) }, - "is a 'session' cookie": function(c) { assert.ok(!c.isPersistent()) }, - }, -}).addBatch({ - "Parsing": { - "simple": { - topic: function() { - return Cookie.parse('a=bcd',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - }, - "with expiry": { - topic: function() { - return Cookie.parse('a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - }, - "with expiry and path": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "no httponly or secure": function(c) { - assert.ok(!c.httpOnly); - assert.ok(!c.secure); - }, - }, - "with everything": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc; Domain=example.com; Secure; HTTPOnly; Max-Age=1234; Foo=Bar; Baz', true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "has domain": function(c) { assert.equal(c.domain, 'example.com'); }, - "has httponly": function(c) { assert.equal(c.httpOnly, true); }, - "has secure": function(c) { assert.equal(c.secure, true); }, - "has max-age": function(c) { assert.equal(c.maxAge, 1234); }, - "has extensions": function(c) { - assert.ok(c.extensions); - assert.equal(c.extensions[0], 'Foo=Bar'); - assert.equal(c.extensions[1], 'Baz'); - }, - }, - "invalid expires": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Expires=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Expires=xyzzy"); - assert.ok(c); - assert.equal(c.expires, Infinity); - }, - }, - "zero max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=0", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=0"); - assert.ok(c); - assert.equal(c.maxAge, 0); - }, - }, - "negative max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=-1", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=-1"); - assert.ok(c); - assert.equal(c.maxAge, -1); - }, - }, - "empty domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain="); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "dot domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=.", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain=."); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "uppercase domain": { - "strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - "non-strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - }, - "trailing dot in domain": { - topic: function() { - return Cookie.parse("a=b; Domain=example.com.", true) || null; - }, - "has the domain": function(c) { assert.equal(c.domain,"example.com.") }, - "but doesn't validate": function(c) { assert.equal(c.validate(),false) }, - }, - "empty path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path="); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "no-slash path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path=xyzzy"); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "trailing semi-colons after path": { - topic: function () { - return [ - "a=b; path=/;", - "c=d;;;;" - ]; - }, - "strict": function (t) { - assert.ok(!Cookie.parse(t[0], true)); - assert.ok(!Cookie.parse(t[1], true)); - }, - "non-strict": function (t) { - var c1 = Cookie.parse(t[0]); - var c2 = Cookie.parse(t[1]); - assert.ok(c1); - assert.ok(c2); - assert.equal(c1.path, '/'); - } - }, - "secure-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Secure=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Secure=xyzzy"); - assert.ok(c); - assert.equal(c.secure, true); - }, - }, - "httponly-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; HttpOnly=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; HttpOnly=xyzzy"); - assert.ok(c); - assert.equal(c.httpOnly, true); - }, - }, - "garbage": { - topic: function() { - return Cookie.parse("\x08", true) || null; - }, - "doesn't parse": function(c) { assert.equal(c,null) }, - }, - "public suffix domain": { - topic: function() { - return Cookie.parse("a=b; domain=kyoto.jp", true) || null; - }, - "parses fine": function(c) { - assert.ok(c); - assert.equal(c.domain, 'kyoto.jp'); - }, - "but fails validation": function(c) { - assert.ok(c); - assert.ok(!c.validate()); - }, - }, - "Ironically, Google 'GAPS' cookie has very little whitespace": { - topic: function() { - return Cookie.parse("GAPS=1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-;Path=/;Expires=Thu, 17-Apr-2014 02:12:29 GMT;Secure;HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'GAPS') }, - "value": function(c) { assert.equal(c.value, '1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-') }, - "path": function(c) { - assert.notEqual(c.path, '/;Expires'); // BUG - assert.equal(c.path, '/'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "secure": function(c) { assert.ok(c.secure) }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - }, - "lots of equal signs": { - topic: function() { - return Cookie.parse("queryPref=b=c&d=e; Path=/f=g; Expires=Thu, 17 Apr 2014 02:12:29 GMT; HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'queryPref') }, - "value": function(c) { assert.equal(c.value, 'b=c&d=e') }, - "path": function(c) { - assert.equal(c.path, '/f=g'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - } - } -}) -.addBatch({ - "domain normalization": { - "simple": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.com"; - assert.equal(c.canonicalizedDomain(), "example.com"); - }, - "extra dots": function() { - var c = new Cookie(); - c.domain = ".EXAMPLE.com"; - assert.equal(c.cdomain(), "example.com"); - }, - "weird trailing dot": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.ca."; - assert.equal(c.canonicalizedDomain(), "example.ca."); - }, - "weird internal dots": function() { - var c = new Cookie(); - c.domain = "EXAMPLE...ca."; - assert.equal(c.canonicalizedDomain(), "example...ca."); - }, - "IDN": function() { - var c = new Cookie(); - c.domain = "δοκιμή.δοκιμή"; // "test.test" in greek - assert.equal(c.canonicalizedDomain(), "xn--jxalpdlp.xn--jxalpdlp"); - } - } -}) -.addBatch({ - "Domain Match":matchVows(tough.domainMatch, [ - // str, dom, expect - ["example.com", "example.com", true], - ["eXaMpLe.cOm", "ExAmPlE.CoM", true], - ["no.ca", "yes.ca", false], - ["wwwexample.com", "example.com", false], - ["www.example.com", "example.com", true], - ["example.com", "www.example.com", false], - ["www.subdom.example.com", "example.com", true], - ["www.subdom.example.com", "subdom.example.com", true], - ["example.com", "example.com.", false], // RFC6265 S4.1.2.3 - ["192.168.0.1", "168.0.1", false], // S5.1.3 "The string is a host name" - [null, "example.com", null], - ["example.com", null, null], - [null, null, null], - [undefined, undefined, null], - ]) -}) -.addBatch({ - "default-path": defaultPathVows([ - [null,"/"], - ["/","/"], - ["/file","/"], - ["/dir/file","/dir"], - ["noslash","/"], - ]) -}) -.addBatch({ - "Path-Match": matchVows(tough.pathMatch, [ - // request, cookie, match - ["/","/",true], - ["/dir","/",true], - ["/","/dir",false], - ["/dir/","/dir/", true], - ["/dir/file","/dir/",true], - ["/dir/file","/dir",true], - ["/directory","/dir",false], - ]) -}) -.addBatch({ - "Cookie Sorting": { - topic: function() { - var cookies = []; - var now = Date.now(); - cookies.push(Cookie.parse("a=0; Domain=example.com")); - cookies.push(Cookie.parse("b=1; Domain=www.example.com")); - cookies.push(Cookie.parse("c=2; Domain=example.com; Path=/pathA")); - cookies.push(Cookie.parse("d=3; Domain=www.example.com; Path=/pathA")); - cookies.push(Cookie.parse("e=4; Domain=example.com; Path=/pathA/pathB")); - cookies.push(Cookie.parse("f=5; Domain=www.example.com; Path=/pathA/pathB")); - - // force a stable creation time consistent with the order above since - // some may have been created at now + 1ms. - var i = cookies.length; - cookies.forEach(function(cookie) { - cookie.creation = new Date(now - 100*(i--)); - }); - - // weak shuffle: - cookies = cookies.sort(function(){return Math.random()-0.5}); - - cookies = cookies.sort(tough.cookieCompare); - return cookies; - }, - "got": function(cookies) { - assert.lengthOf(cookies, 6); - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['e','f','c','d','a','b']); - }, - } -}) -.addBatch({ - "CookieJar": { - "Setting a basic cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, // C is for Cookie, good enough for me - "gets timestamped": function(c) { - assert.ok(c.creation); - assert.ok(Date.now() - c.creation.getTime() < 5000); // recently stamped - assert.ok(c.lastAccessed); - assert.equal(c.creation, c.lastAccessed); - assert.equal(c.TTL(), Infinity); - assert.ok(!c.isPersistent()); - }, - }, - "Setting a no-path cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "path is /": function(c) { assert.equal(c.path, '/') }, - "path was derived": function(c) { assert.strictEqual(c.pathIsDefault, true) }, - }, - "Setting a cookie already marked as host-only": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - c.hostOnly = true; - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "still hostOnly": function(c) { assert.strictEqual(c.hostOnly, true) }, - }, - "Setting a session cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b"); - assert.strictEqual(c.path, null); - cj.setCookie(c, 'http://www.example.com/dir/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, - "gets the domain": function(c) { assert.equal(c.domain, 'www.example.com') }, - "gets the default path": function(c) { assert.equal(c.path, '/dir') }, - "is 'hostOnly'": function(c) { assert.ok(c.hostOnly) }, - }, - "Setting wrong domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=fooxample.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting sub-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=www.example.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting super-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - cj.setCookie(c, 'http://www.app.example.com/index.html', this.callback); - }, - "success": function(err,c) { - assert.ok(!err); - assert.equal(c.domain, 'example.com'); - }, - }, - "Setting HttpOnly cookie over non-HTTP API": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/; HttpOnly"); - cj.setCookie(c, 'http://example.com/index.html', {http:false}, this.callback); - }, - "fails": function(err,c) { - assert.match(err.message, /HttpOnly/i); - assert.ok(!c); - }, - }, - }, - "Cookie Jar store eight cookies": { - topic: function() { - var cj = new CookieJar(); - var ex = 'http://example.com/index.html'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('a=1; Domain=example.com; Path=/',ex,at(0),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Domain=example.com; Path=/; HttpOnly',ex,at(1000),next); - }); - tasks.push(function(next) { - cj.setCookie('c=3; Domain=example.com; Path=/; Secure',ex,at(2000),next); - }); - tasks.push(function(next) { // path - cj.setCookie('d=4; Domain=example.com; Path=/foo',ex,at(3000),next); - }); - tasks.push(function(next) { // host only - cj.setCookie('e=5',ex,at(4000),next); - }); - tasks.push(function(next) { // other domain - cj.setCookie('f=6; Domain=nodejs.org; Path=/','http://nodejs.org',at(5000),next); - }); - tasks.push(function(next) { // expired - cj.setCookie('g=7; Domain=example.com; Path=/; Expires=Tue, 18 Oct 2011 00:00:00 GMT',ex,at(6000),next); - }); - tasks.push(function(next) { // expired via Max-Age - cj.setCookie('h=8; Domain=example.com; Path=/; Max-Age=1',ex,next); - }); - var cb = this.callback; - async.parallel(tasks, function(err,results){ - setTimeout(function() { - cb(err,cj,results); - }, 2000); // so that 'h=8' expires - }); - }, - "setup ok": function(err,cj,results) { - assert.ok(1); - }, - "then retrieving for http://nodejs.org": { - topic: function(cj,results) { - cj.getCookies('http://nodejs.org',this.callback); - }, - "get a nodejs cookie": function(cookies) { - assert.lengthOf(cookies, 1); - var cookie = cookies[0]; - assert.equal(cookie.domain, 'nodejs.org'); - }, - }, - "then retrieving for https://example.com": { - topic: function(cj,results) { - cj.getCookies('https://example.com',{secure:true},this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for https://example.com (missing options)": { - topic: function(cj,results) { - cj.getCookies('https://example.com',this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for http://example.com": { - topic: function(cj,results) { - cj.getCookies('http://example.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://EXAMPlE.com": { - topic: function(cj,results) { - cj.getCookies('http://EXAMPlE.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://example.com, non-HTTP": { - topic: function(cj,results) { - cj.getCookies('http://example.com',{http:false},this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','e']); - }, - }, - "then retrieving for http://example.com/foo/bar": { - topic: function(cj,results) { - cj.getCookies('http://example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b','e']); - }, - }, - "then retrieving for http://example.com as a string": { - topic: function(cj,results) { - cj.getCookieString('http://example.com',this.callback); - }, - "get a single string": function(cookieHeader) { - assert.equal(cookieHeader, "a=1; b=2; e=5"); - }, - }, - "then retrieving for http://example.com as a set-cookie header": { - topic: function(cj,results) { - cj.getSetCookieStrings('http://example.com',this.callback); - }, - "get a single string": function(cookieHeaders) { - assert.lengthOf(cookieHeaders, 3); - assert.equal(cookieHeaders[0], "a=1; Domain=example.com; Path=/"); - assert.equal(cookieHeaders[1], "b=2; Domain=example.com; Path=/; HttpOnly"); - assert.equal(cookieHeaders[2], "e=5; Path=/"); - }, - }, - "then retrieving for http://www.example.com/": { - topic: function(cj,results) { - cj.getCookies('http://www.example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b']); // note lack of 'e' - }, - }, - }, - "Repeated names": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com/'; - var sc = cj.setCookie; - var tasks = []; - var now = Date.now(); - tasks.push(sc.bind(cj,'aaaa=xxxx',ex,at(0))); - tasks.push(sc.bind(cj,'aaaa=1111; Domain=www.example.com',ex,at(1000))); - tasks.push(sc.bind(cj,'aaaa=2222; Domain=example.com',ex,at(2000))); - tasks.push(sc.bind(cj,'aaaa=3333; Domain=www.example.com; Path=/pathA',ex,at(3000))); - async.series(tasks,function(err,results) { - results = results.filter(function(e) {return e !== undefined}); - cb(err,{cj:cj, cookies:results, now:now}); - }); - }, - "all got set": function(err,t) { - assert.lengthOf(t.cookies,4); - }, - "then getting 'em back": { - topic: function(t) { - var cj = t.cj; - cj.getCookies('http://www.example.com/pathA',this.callback); - }, - "there's just three": function (err,cookies) { - var vals = cookies.map(function(c) {return c.value}); - // may break with sorting; sorting should put 3333 first due to longest path: - assert.deepEqual(vals, ['3333','1111','2222']); - } - }, - }, - "CookieJar setCookie errors": { - "public-suffix domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('i=9; Domain=kyoto.jp; Path=/','kyoto.jp',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /public suffix/i); - }, - }, - "wrong domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('j=10; Domain=google.com; Path=/','google.ca',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /not in this host's domain/i); - }, - }, - "old cookie is HttpOnly": { - topic: function() { - var cb = this.callback; - var next = function (err,c) { - return cb(err,cj); - }; - var cj = new CookieJar(); - cj.setCookie('k=11; Domain=example.ca; Path=/; HttpOnly','http://example.ca',{http:true},next); - }, - "initial cookie is set": function(err,cj) { - assert.ok(!err); - }, - "but when trying to overwrite": { - topic: function(cj) { - var cb = this.callback; - cj.setCookie('k=12; Domain=example.ca; Path=/','http://example.ca',{http:false},function(err,c) {cb(null,err)}); - }, - "it's an error": function(err) { - assert.ok(err); - }, - "then, checking the original": { - topic: function(ignored,cj) { - assert.ok(cj instanceof CookieJar); - cj.getCookies('http://example.ca',{http:true},this.callback); - }, - "cookie has original value": function(err,cookies) { - assert.equal(err,null); - assert.lengthOf(cookies, 1); - assert.equal(cookies[0].value,11); - }, - }, - }, - }, - }, -}) -.addBatch({ - "JSON": { - "serialization": { - topic: function() { - var c = Cookie.parse('alpha=beta; Domain=example.com; Path=/foo; Expires=Tue, 19 Jan 2038 03:14:07 GMT; HttpOnly'); - return JSON.stringify(c); - }, - "gives a string": function(str) { - assert.equal(typeof str, "string"); - }, - "date is in ISO format": function(str) { - assert.match(str, /"expires":"2038-01-19T03:14:07\.000Z"/, 'expires is in ISO format'); - }, - }, - "deserialization": { - topic: function() { - var json = '{"key":"alpha","value":"beta","domain":"example.com","path":"/foo","expires":"2038-01-19T03:14:07.000Z","httpOnly":true,"lastAccessed":2000000000123}'; - return Cookie.fromJSON(json); - }, - "works": function(c) { - assert.ok(c); - }, - "key": function(c) { assert.equal(c.key, "alpha") }, - "value": function(c) { assert.equal(c.value, "beta") }, - "domain": function(c) { assert.equal(c.domain, "example.com") }, - "path": function(c) { assert.equal(c.path, "/foo") }, - "httpOnly": function(c) { assert.strictEqual(c.httpOnly, true) }, - "secure": function(c) { assert.strictEqual(c.secure, false) }, - "hostOnly": function(c) { assert.strictEqual(c.hostOnly, null) }, - "expires is a date object": function(c) { - assert.equal(c.expires.getTime(), 2147483647000); - }, - "lastAccessed is a date object": function(c) { - assert.equal(c.lastAccessed.getTime(), 2000000000123); - }, - "creation defaulted": function(c) { - assert.ok(c.creation.getTime()); - } - }, - "null deserialization": { - topic: function() { - return Cookie.fromJSON(null); - }, - "is null": function(cookie) { - assert.equal(cookie,null); - }, - }, - }, - "expiry deserialization": { - "Infinity": { - topic: Cookie.fromJSON.bind(null, '{"expires":"Infinity"}'), - "is infinite": function(c) { - assert.strictEqual(c.expires, "Infinity"); - assert.equal(c.expires, Infinity); - }, - }, - }, - "maxAge serialization": { - topic: function() { - return function(toSet) { - var c = new Cookie(); - c.key = 'foo'; c.value = 'bar'; - c.setMaxAge(toSet); - return JSON.stringify(c); - }; - }, - "zero": { - topic: function(f) { return f(0) }, - "looks good": function(str) { - assert.match(str, /"maxAge":0/); - }, - }, - "Infinity": { - topic: function(f) { return f(Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"Infinity"/); - }, - }, - "-Infinity": { - topic: function(f) { return f(-Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"-Infinity"/); - }, - }, - "null": { - topic: function(f) { return f(null) }, - "looks good": function(str) { - assert.match(str, /"maxAge":null/); - }, - }, - }, - "maxAge deserialization": { - "number": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":123}'), - "is the number": function(c) { - assert.strictEqual(c.maxAge, 123); - }, - }, - "null": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":null}'), - "is null": function(c) { - assert.strictEqual(c.maxAge, null); - }, - }, - "less than zero": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":-123}'), - "is -123": function(c) { - assert.strictEqual(c.maxAge, -123); - }, - }, - "Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "Infinity"); - }, - }, - "-Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"-Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "-Infinity"); - }, - }, - } -}) -.addBatch({ - "permuteDomain": { - "base case": { - topic: tough.permuteDomain.bind(null,'example.com'), - "got the domain": function(list) { - assert.deepEqual(list, ['example.com']); - }, - }, - "two levels": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.com'), - "got three things": function(list) { - assert.deepEqual(list, ['example.com','bar.example.com','foo.bar.example.com']); - }, - }, - "invalid domain": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.localduhmain'), - "got three things": function(list) { - assert.equal(list, null); - }, - }, - }, - "permutePath": { - "base case": { - topic: tough.permutePath.bind(null,'/'), - "just slash": function(list) { - assert.deepEqual(list,['/']); - }, - }, - "single case": { - topic: tough.permutePath.bind(null,'/foo'), - "two things": function(list) { - assert.deepEqual(list,['/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo',e)); - }); - }, - }, - "double case": { - topic: tough.permutePath.bind(null,'/foo/bar'), - "four things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar',e)); - }); - }, - }, - "trailing slash": { - topic: tough.permutePath.bind(null,'/foo/bar/'), - "three things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar/',e)); - }); - }, - }, - } -}) -.addBatch({ - "Issue 1": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('hello=world; path=/some/path/', 'http://domain/some/path/file', function(err,cookie) { - this.callback(err,{cj:cj, cookie:cookie}); - }.bind(this)); - }, - "stored a cookie": function(t) { - assert.ok(t.cookie); - }, - "cookie's path was modified to remove unnecessary slash": function(t) { - assert.equal(t.cookie.path, '/some/path'); - }, - "getting it back": { - topic: function(t) { - t.cj.getCookies('http://domain/some/path/file', function(err,cookies) { - this.callback(err, {cj:t.cj, cookies:cookies||[]}); - }.bind(this)); - }, - "got one cookie": function(t) { - assert.lengthOf(t.cookies, 1); - }, - "it's the right one": function(t) { - var c = t.cookies[0]; - assert.equal(c.key, 'hello'); - assert.equal(c.value, 'world'); - }, - } - } -}) -.addBatch({ - "expiry option": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - cj.setCookie('near=expiry; Domain=example.com; Path=/; Max-Age=1','http://www.example.com',at(-1), function(err,cookie) { - - cb(err, {cj:cj, cookie:cookie}); - }); - }, - "set the cookie": function(t) { - assert.ok(t.cookie, "didn't set?!"); - assert.equal(t.cookie.key, 'near'); - }, - "then, retrieving": { - topic: function(t) { - var cb = this.callback; - setTimeout(function() { - t.cj.getCookies('http://www.example.com', {http:true, expire:false}, function(err,cookies) { - t.cookies = cookies; - cb(err,t); - }); - },2000); - }, - "got the cookie": function(t) { - assert.lengthOf(t.cookies, 1); - assert.equal(t.cookies[0].key, 'near'); - }, - } - } -}) -.addBatch({ - "trailing semi-colon set into cj": { - topic: function () { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('broken_path=testme; path=/;',ex,at(-1),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Path=/;;;;',ex,at(-1),next); - }); - async.parallel(tasks, function (err, cookies) { - cb(null, { - cj: cj, - cookies: cookies - }); - }); - }, - "check number of cookies": function (t) { - assert.lengthOf(t.cookies, 2, "didn't set"); - }, - "check *broken_path* was set properly": function (t) { - assert.equal(t.cookies[0].key, "broken_path"); - assert.equal(t.cookies[0].value, "testme"); - assert.equal(t.cookies[0].path, "/"); - }, - "check *b* was set properly": function (t) { - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - "retrieve the cookie": { - topic: function (t) { - var cb = this.callback; - t.cj.getCookies('http://www.example.com', {}, function (err, cookies) { - t.cookies = cookies; - cb(err, t); - }); - }, - "get the cookie": function(t) { - assert.lengthOf(t.cookies, 2); - assert.equal(t.cookies[0].key, 'broken_path'); - assert.equal(t.cookies[0].value, 'testme'); - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - }, - } -}) -.addBatch({ - "Constructor":{ - topic: function () { - return new Cookie({ - key: 'test', - value: 'b', - maxAge: 60 - }); - }, - 'check for key property': function (c) { - assert.ok(c); - assert.equal(c.key, 'test'); - }, - 'check for value property': function (c) { - assert.equal(c.value, 'b'); - }, - 'check for maxAge': function (c) { - assert.equal(c.maxAge, 60); - }, - 'check for default values for unspecified properties': function (c) { - assert.equal(c.expires, "Infinity"); - assert.equal(c.secure, false); - assert.equal(c.httpOnly, false); - } - } -}) -.addBatch({ - "allPaths option": { - topic: function() { - var cj = new CookieJar(); - var tasks = []; - tasks.push(cj.setCookie.bind(cj, 'nopath_dom=qq; Path=/; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_dom=qq; Path=/foo; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'nopath_host=qq; Path=/', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_host=qq; Path=/foo', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'other=qq; Path=/', 'http://other.example.com/', {})); - tasks.push(cj.setCookie.bind(cj, 'other2=qq; Path=/foo', 'http://other.example.com/foo', {})); - var cb = this.callback; - async.parallel(tasks, function(err,results) { - cb(err, {cj:cj, cookies: results}); - }); - }, - "all set": function(t) { - assert.equal(t.cookies.length, 6); - assert.ok(t.cookies.every(function(c) { return !!c })); - }, - "getting without allPaths": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found just two cookies": function(t) { - assert.equal(t.cookies.length, 2); - }, - "all are path=/": function(t) { - assert.ok(t.cookies.every(function(c) { return c.path === '/' })); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting without allPaths for /foo": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/foo', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting with allPaths:true": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {allPaths:true}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - } -}) -.export(module); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js deleted file mode 100644 index 3f7bbb90..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,227 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port) { - var self = this - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: host, port: port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createSocket({host: host, port: port, request: req}, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - req.onSocket(socket) - - function onFree() { - self.emit('free', socket, host, port) - } - - function onCloseOrRemove(err) { - self.removeSocket() - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket) - }) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json deleted file mode 100644 index 6a6358be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "tunnel-agent", - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "version": "0.3.0", - "repository": { - "url": "https://github.com/mikeal/tunnel-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "tunnel-agent\n============\n\nHTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "homepage": "https://github.com/mikeal/tunnel-agent", - "_id": "tunnel-agent@0.3.0", - "_from": "tunnel-agent@~0.3.0", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json deleted file mode 100755 index 2fee74c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "request", - "description": "Simplified HTTP request client.", - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.31.0", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - "repository": { - "type": "git", - "url": "http://github.com/mikeal/request.git" - }, - "bugs": { - "url": "http://github.com/mikeal/request/issues" - }, - "engines": [ - "node >= 0.8.0" - ], - "main": "index.js", - "dependencies": { - "qs": "~0.6.0", - "json-stringify-safe": "~5.0.0", - "forever-agent": "~0.5.0", - "node-uuid": "~1.4.0", - "mime": "~1.2.9", - "tough-cookie": "~0.9.15", - "form-data": "~0.1.0", - "tunnel-agent": "~0.3.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.3.0", - "hawk": "~1.0.0", - "aws-sign2": "~0.5.0" - }, - "optionalDependencies": { - "tough-cookie": "~0.9.15", - "form-data": "~0.1.0", - "tunnel-agent": "~0.3.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.3.0", - "hawk": "~1.0.0", - "aws-sign2": "~0.5.0" - }, - "scripts": { - "test": "node tests/run.js" - }, - "readme": "# Request -- Simplified HTTP client\n\n[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/)\n\n## Super simple to use\n\nRequest is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.\n\n```javascript\nvar request = require('request');\nrequest('http://www.google.com', function (error, response, body) {\n if (!error && response.statusCode == 200) {\n console.log(body) // Print the google web page.\n }\n})\n```\n\n## Streaming\n\nYou can stream any response to a file stream.\n\n```javascript\nrequest('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))\n```\n\nYou can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one).\n\n```javascript\nfs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))\n```\n\nRequest can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers.\n\n```javascript\nrequest.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))\n```\n\nNow let’s get fancy.\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n if (req.method === 'PUT') {\n req.pipe(request.put('http://mysite.com/doodle.png'))\n } else if (req.method === 'GET' || req.method === 'HEAD') {\n request.get('http://mysite.com/doodle.png').pipe(resp)\n }\n }\n})\n```\n\nYou can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do:\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n var x = request('http://mysite.com/doodle.png')\n req.pipe(x)\n x.pipe(resp)\n }\n})\n```\n\nAnd since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :)\n\n```javascript\nreq.pipe(request('http://mysite.com/doodle.png')).pipe(resp)\n```\n\nAlso, none of this new functionality conflicts with requests previous features, it just expands them.\n\n```javascript\nvar r = request.defaults({'proxy':'http://localproxy.com'})\n\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n r.get('http://google.com/doodle.png').pipe(resp)\n }\n})\n```\n\nYou can still use intermediate proxies, the requests will still follow HTTP forwards, etc.\n\n## Forms\n\n`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API.\n\nURL-encoded forms are simple.\n\n```javascript\nrequest.post('http://service.com/upload', {form:{key:'value'}})\n// or\nrequest.post('http://service.com/upload').form({key:'value'})\n```\n\nFor `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you.\n\n```javascript\nvar r = request.post('http://service.com/upload')\nvar form = r.form()\nform.append('my_field', 'my_value')\nform.append('my_buffer', new Buffer([1, 2, 3]))\nform.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png'))\nform.append('remote_file', request('http://google.com/doodle.png'))\n```\n\n## HTTP Authentication\n\n```javascript\nrequest.get('http://some.server.com/').auth('username', 'password', false);\n// or\nrequest.get('http://some.server.com/', {\n 'auth': {\n 'user': 'username',\n 'pass': 'password',\n 'sendImmediately': false\n }\n});\n```\n\nIf passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`.\n\n`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method).\n\nDigest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail.\n\n## OAuth Signing\n\n```javascript\n// Twitter OAuth\nvar qs = require('querystring')\n , oauth =\n { callback: 'http://mysite.com/callback/'\n , consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n }\n , url = 'https://api.twitter.com/oauth/request_token'\n ;\nrequest.post({url:url, oauth:oauth}, function (e, r, body) {\n // Ideally, you would take the body in the response\n // and construct a URL that a user clicks on (like a sign in button).\n // The verifier is only available in the response after a user has\n // verified with twitter that they are authorizing your app.\n var access_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: access_token.oauth_token\n , verifier: access_token.oauth_verifier\n }\n , url = 'https://api.twitter.com/oauth/access_token'\n ;\n request.post({url:url, oauth:oauth}, function (e, r, body) {\n var perm_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: perm_token.oauth_token\n , token_secret: perm_token.oauth_token_secret\n }\n , url = 'https://api.twitter.com/1.1/users/show.json?'\n , params =\n { screen_name: perm_token.screen_name\n , user_id: perm_token.user_id\n }\n ;\n url += qs.stringify(params)\n request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {\n console.log(user)\n })\n })\n})\n```\n\n### Custom HTTP Headers\n\nHTTP Headers, such as `User-Agent`, can be set in the `options` object.\nIn the example below, we call the github API to find out the number\nof stars and forks for the request repository. This requires a\ncustom `User-Agent` header as well as https.\n\n```javascript\nvar request = require('request');\n\nvar options = {\n\turl: 'https://api.github.com/repos/mikeal/request',\n\theaders: {\n\t\t'User-Agent': 'request'\n\t}\n};\n\nfunction callback(error, response, body) {\n\tif (!error && response.statusCode == 200) {\n\t\tvar info = JSON.parse(body);\n\t\tconsole.log(info.stargazers_count + \" Stars\");\n\t\tconsole.log(info.forks_count + \" Forks\");\n\t}\n}\n\nrequest(options, callback);\n```\n\n### request(options, callback)\n\nThe first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional.\n\n* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()`\n* `qs` - object containing querystring values to be appended to the `uri`\n* `method` - http method (default: `\"GET\"`)\n* `headers` - http headers (default: `{}`)\n* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`.\n* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request).\n* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above.\n* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON.\n* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below.\n* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`)\n* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`)\n* `maxRedirects` - the maximum number of redirects to follow (default: `10`)\n* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`.\n* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node's default `maxSockets`)\n* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.\n* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request\n* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`)\n* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above.\n* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).\n* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option.\n* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section)\n* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services)\n* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options.\n* `localAddress` - Local interface to bind for network connections.\n\n\nThe callback argument gets 3 arguments: \n\n1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object)\n2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object\n3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied)\n\n## Convenience methods\n\nThere are also shorthand methods for different HTTP METHODs and some other conveniences.\n\n### request.defaults(options)\n\nThis method returns a wrapper around the normal request API that defaults to whatever options you pass in to it.\n\n### request.put\n\nSame as `request()`, but defaults to `method: \"PUT\"`.\n\n```javascript\nrequest.put(url)\n```\n\n### request.patch\n\nSame as `request()`, but defaults to `method: \"PATCH\"`.\n\n```javascript\nrequest.patch(url)\n```\n\n### request.post\n\nSame as `request()`, but defaults to `method: \"POST\"`.\n\n```javascript\nrequest.post(url)\n```\n\n### request.head\n\nSame as request() but defaults to `method: \"HEAD\"`.\n\n```javascript\nrequest.head(url)\n```\n\n### request.del\n\nSame as `request()`, but defaults to `method: \"DELETE\"`.\n\n```javascript\nrequest.del(url)\n```\n\n### request.get\n\nSame as `request()` (for uniformity).\n\n```javascript\nrequest.get(url)\n```\n### request.cookie\n\nFunction that creates a new cookie.\n\n```javascript\nrequest.cookie('cookie_string_here')\n```\n### request.jar\n\nFunction that creates a new cookie jar.\n\n```javascript\nrequest.jar()\n```\n\n\n## Examples:\n\n```javascript\n var request = require('request')\n , rand = Math.floor(Math.random()*100000000).toString()\n ;\n request(\n { method: 'PUT'\n , uri: 'http://mikeal.iriscouch.com/testjs/' + rand\n , multipart:\n [ { 'content-type': 'application/json'\n , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})\n }\n , { body: 'I am an attachment' }\n ]\n }\n , function (error, response, body) {\n if(response.statusCode == 201){\n console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)\n } else {\n console.log('error: '+ response.statusCode)\n console.log(body)\n }\n }\n )\n```\n\nCookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`).\n\n```javascript\nvar request = request.defaults({jar: true})\nrequest('http://www.google.com', function () {\n request('http://images.google.com')\n})\n```\n\nTo use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`)\n\n```javascript\nvar j = request.jar()\nvar request = request.defaults({jar:j})\nrequest('http://www.google.com', function () {\n request('http://images.google.com')\n})\n```\nOR\n\nNote that `setCookie` requires at least three parameters, and the last is required to be a callback.\n\n```javascript\nvar j = request.jar()\nvar cookie = request.cookie('your_cookie_here')\nj.setCookie(cookie, uri, function (err, cookie){})\nrequest({url: 'http://www.google.com', jar: j}, function () {\n request('http://images.google.com')\n})\n```\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/mikeal/request", - "_id": "request@2.31.0", - "_from": "request@~2.31.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js deleted file mode 100644 index 3c03c47d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js +++ /dev/null @@ -1,1260 +0,0 @@ -var optional = require('./lib/optional') - , http = require('http') - , https = optional('https') - , tls = optional('tls') - , url = require('url') - , util = require('util') - , stream = require('stream') - , qs = require('qs') - , querystring = require('querystring') - , crypto = require('crypto') - - , oauth = optional('oauth-sign') - , hawk = optional('hawk') - , aws = optional('aws-sign') - , httpSignature = optional('http-signature') - , uuid = require('node-uuid') - , mime = require('mime') - , tunnel = optional('tunnel-agent') - , _safeStringify = require('json-stringify-safe') - - , ForeverAgent = require('forever-agent') - , FormData = optional('form-data') - - , Cookie = optional('tough-cookie') - , CookieJar = Cookie && Cookie.CookieJar - , cookieJar = CookieJar && new CookieJar - - , copy = require('./lib/copy') - , debug = require('./lib/debug') - , getSafe = require('./lib/getSafe') - ; - -function safeStringify (obj) { - var ret - try { ret = JSON.stringify(obj) } - catch (e) { ret = _safeStringify(obj) } - return ret -} - -var globalPool = {} -var isUrl = /^https?:/i - - -// Hacky fix for pre-0.4.4 https -if (https && !https.Agent) { - https.Agent = function (options) { - http.Agent.call(this, options) - } - util.inherits(https.Agent, http.Agent) - https.Agent.prototype._getConnection = function (host, port, cb) { - var s = tls.connect(port, host, this.options, function () { - // do other checks here? - if (cb) cb() - }) - return s - } -} - -function isReadStream (rs) { - if (rs.readable && rs.path && rs.mode) { - return true - } -} - -function toBase64 (str) { - return (new Buffer(str || "", "ascii")).toString("base64") -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function Request (options) { - stream.Stream.call(this) - this.readable = true - this.writable = true - - if (typeof options === 'string') { - options = {uri:options} - } - - var reserved = Object.keys(Request.prototype) - for (var i in options) { - if (reserved.indexOf(i) === -1) { - this[i] = options[i] - } else { - if (typeof options[i] === 'function') { - delete options[i] - } - } - } - - if (options.method) { - this.explicitMethod = true - } - - this.canTunnel = options.tunnel !== false && tunnel; - - this.init(options) -} -util.inherits(Request, stream.Stream) -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) options = {} - - if (!self.method) self.method = options.method || 'GET' - self.localAddress = options.localAddress - - debug(options) - if (!self.pool && self.pool !== false) self.pool = globalPool - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) return // Print a warning maybe? - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - if (self.url && !self.uri) { - // People use this property instead all the time so why not just support it. - self.uri = self.url - delete self.url - } - - if (!self.uri) { - // this will throw if unhandled but is handleable when in a redirect - return self.emit('error', new Error("options.uri is a required argument")) - } else { - if (typeof self.uri == "string") self.uri = url.parse(self.uri) - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (self.proxy) { - if (typeof self.proxy == 'string') self.proxy = url.parse(self.proxy) - - // do the HTTP CONNECT dance using koichik/node-tunnel - if (http.globalAgent && self.uri.protocol === "https:" && self.canTunnel) { - var tunnelFn = self.proxy.protocol === "http:" - ? tunnel.httpsOverHttp : tunnel.httpsOverHttps - - var tunnelOptions = { proxy: { host: self.proxy.hostname - , port: +self.proxy.port - , proxyAuth: self.proxy.auth - , headers: { Host: self.uri.hostname + ':' + - (self.uri.port || self.uri.protocol === 'https:' ? 443 : 80) }} - , rejectUnauthorized: self.rejectUnauthorized - , ca: this.ca } - - self.agent = tunnelFn(tunnelOptions) - self.tunnel = true - } - } - - if (!self.uri.pathname) {self.uri.pathname = '/'} - - if (!self.uri.host) { - // Invalid URI: it may generate lot of bad errors, like "TypeError: Cannot call method 'indexOf' of undefined" in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - self.emit('error', new Error(message)) - return // This error was fatal - } - - self._redirectsFollowed = self._redirectsFollowed || 0 - self.maxRedirects = (self.maxRedirects !== undefined) ? self.maxRedirects : 10 - self.followRedirect = (self.followRedirect !== undefined) ? self.followRedirect : true - self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false - if (self.followRedirect || self.followAllRedirects) - self.redirects = self.redirects || [] - - self.headers = self.headers ? copy(self.headers) : {} - - self.setHost = false - if (!self.hasHeader('host')) { - self.setHeader('host', self.uri.hostname) - if (self.uri.port) { - if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') && - !(self.uri.port === 443 && self.uri.protocol === 'https:') ) - self.setHeader('host', self.getHeader('host') + (':'+self.uri.port) ) - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol == 'http:') {self.uri.port = 80} - else if (self.uri.protocol == 'https:') {self.uri.port = 443} - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - self.clientErrorHandler = function (error) { - if (self._aborted) return - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' - && self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) - } - - self._parserErrorHandler = function (error) { - if (this.res) { - if (this.res.request) { - this.res.request.emit('error', error) - } else { - this.res.emit('error', error) - } - } else { - this._httpMessage.emit('error', error) - } - } - - if (options.form) { - self.form(options.form) - } - - if (options.qs) self.qs(options.qs) - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || "") - } - - if (self.path.length === 0) self.path = '/' - - - // Auth must happen last in case signing is dependent on other headers - if (options.oauth) { - self.oauth(options.oauth) - } - - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) options.auth.user = options.auth.username - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) options.auth.pass = options.auth.password - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately - ) - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var authPieces = self.uri.auth.split(':').map(function(item){ return querystring.unescape(item) }) - self.auth(authPieces[0], authPieces.slice(1).join(':'), true) - } - if (self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization') && !self.tunnel) { - self.setHeader('proxy-authorization', "Basic " + toBase64(self.proxy.auth.split(':').map(function(item){ return querystring.unescape(item)}).join(':'))) - } - - - if (self.proxy && !self.tunnel) self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - - if (options.json) { - self.json(options.json) - } else if (options.multipart) { - self.boundary = uuid() - self.multipart(options.multipart) - } - - if (self.body) { - var length = 0 - if (!Buffer.isBuffer(self.body)) { - if (Array.isArray(self.body)) { - for (var i = 0; i < self.body.length; i++) { - length += self.body[i].length - } - } else { - self.body = new Buffer(self.body) - length = self.body.length - } - } else { - length = self.body.length - } - if (length) { - if (!self.hasHeader('content-length')) self.setHeader('content-length', length) - } else { - throw new Error('Argument error, options.body.') - } - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - , defaultModules = {'http:':http, 'https:':https} - , httpModules = self.httpModules || {} - ; - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) return this.emit('error', new Error("Invalid protocol")) - - if (options.ca) self.ca = options.ca - - if (!self.agent) { - if (options.agentOptions) self.agentOptions = options.agentOptions - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getAgent() - if (self.maxSockets) { - // Don't use our pooling if node has the refactored client - self.agent.maxSockets = self.maxSockets - } - if (self.pool.maxSockets) { - // Don't use our pooling if node has the refactored client - self.agent.maxSockets = self.pool.maxSockets - } - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) throw new Error("You cannot pipe to this stream after the outbound request has started.") - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) self.setHeader('content-type', mime.lookup(src.path)) - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) - self.setHeader('content-type', 'application/json') - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error("You have already piped to this stream. Pipeing twice is likely to break the request.") - // }) - }) - - process.nextTick(function () { - if (self._aborted) return - - if (self._form) { - self.setHeaders(self._form.getHeaders()) - self._form.pipe(self) - } - if (self.body) { - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } else if (self.requestBodyStream) { - console.warn("options.requestBodyStream is deprecated, please pass the request object to stream.pipe.") - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - self.ntick = true - }) -} - -// Must call this when following a redirect from https to http or vice versa -// Attempts to keep everything as identical as possible, but update the -// httpModule, Tunneling agent, and/or Forever Agent in use. -Request.prototype._updateProtocol = function () { - var self = this - var protocol = self.uri.protocol - - if (protocol === 'https:') { - // previously was doing http, now doing https - // if it's https, then we might need to tunnel now. - if (self.proxy && self.canTunnel) { - self.tunnel = true - var tunnelFn = self.proxy.protocol === 'http:' - ? tunnel.httpsOverHttp : tunnel.httpsOverHttps - var tunnelOptions = { proxy: { host: self.proxy.hostname - , port: +self.proxy.port - , proxyAuth: self.proxy.auth } - , rejectUnauthorized: self.rejectUnauthorized - , ca: self.ca } - self.agent = tunnelFn(tunnelOptions) - return - } - - self.httpModule = https - switch (self.agentClass) { - case ForeverAgent: - self.agentClass = ForeverAgent.SSL - break - case http.Agent: - self.agentClass = https.Agent - break - default: - // nothing we can do. Just hope for the best. - return - } - - // if there's an agent, we need to get a new one. - if (self.agent) self.agent = self.getAgent() - - } else { - // previously was doing https, now doing http - // stop any tunneling. - if (self.tunnel) self.tunnel = false - self.httpModule = http - switch (self.agentClass) { - case ForeverAgent.SSL: - self.agentClass = ForeverAgent - break - case https.Agent: - self.agentClass = http.Agent - break - default: - // nothing we can do. just hope for the best - return - } - - // if there's an agent, then get a new one. - if (self.agent) { - self.agent = null - self.agent = self.getAgent() - } - } -} - -Request.prototype.getAgent = function () { - var Agent = this.agentClass - var options = {} - if (this.agentOptions) { - for (var i in this.agentOptions) { - options[i] = this.agentOptions[i] - } - } - if (this.ca) options.ca = this.ca - if (this.ciphers) options.ciphers = this.ciphers - if (this.secureProtocol) options.secureProtocol = this.secureProtocol - if (typeof this.rejectUnauthorized !== 'undefined') options.rejectUnauthorized = this.rejectUnauthorized - - if (this.cert && this.key) { - options.key = this.key - options.cert = this.cert - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== this.httpModule.Agent) { - poolKey += Agent.name - } - - if (!this.httpModule.globalAgent) { - // node 0.4.x - options.host = this.host - options.port = this.port - if (poolKey) poolKey += ':' - poolKey += this.host + ':' + this.port - } - - // ca option is only relevant if proxy or destination are https - var proxy = this.proxy - if (typeof proxy === 'string') proxy = url.parse(proxy) - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - if (isHttps) { - if (options.ca) { - if (poolKey) poolKey += ':' - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) poolKey += ':' - poolKey += options.rejectUnauthorized - } - - if (options.cert) - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - - if (options.ciphers) { - if (poolKey) poolKey += ':' - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) poolKey += ':' - poolKey += options.secureProtocol - } - } - - if (this.pool === globalPool && !poolKey && Object.keys(options).length === 0 && this.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return this.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = this.uri.protocol + poolKey - - // already generated an agent for this setting - if (this.pool[poolKey]) return this.pool[poolKey] - - return this.pool[poolKey] = new Agent(options) -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self._aborted) return - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - self.req = self.httpModule.request(reqOptions, self.onResponse.bind(self)) - - if (self.timeout && !self.timeoutTimer) { - self.timeoutTimer = setTimeout(function () { - self.req.abort() - var e = new Error("ETIMEDOUT") - e.code = "ETIMEDOUT" - self.emit("error", e) - }, self.timeout) - - // Set additional timeout on socket - in case if remote - // server freeze after sending headers - if (self.req.setTimeout) { // only works on node 0.6+ - self.req.setTimeout(self.timeout, function () { - if (self.req) { - self.req.abort() - var e = new Error("ESOCKETTIMEDOUT") - e.code = "ESOCKETTIMEDOUT" - self.emit("error", e) - } - }) - } - } - - self.req.on('error', self.clientErrorHandler) - self.req.on('drain', function() { - self.emit('drain') - }) - self.on('end', function() { - if ( self.req.connection ) self.req.connection.removeListener('error', self._parserErrorHandler) - }) - self.emit('request', self.req) -} -Request.prototype.onResponse = function (response) { - var self = this - debug('onResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function() { - debug('response end', self.uri.href, response.statusCode, response.headers) - }); - - if (response.connection.listeners('error').indexOf(self._parserErrorHandler) === -1) { - response.connection.once('error', self._parserErrorHandler) - } - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - if (self._paused) response.pause() - else response.resume() - - self.response = response - response.request = self - response.toJSON = toJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && - !response.client.authorized) { - debug('strict ssl error', self.uri.href) - var sslErr = response.client.authorizationError - self.emit('error', new Error('SSL Error: '+ sslErr)) - return - } - - if (self.setHost && self.hasHeader('host')) delete self.headers[self.hasHeader('host')] - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var addCookie = function (cookie) { - if (self._jar){ - var targetCookieJar = self._jar.setCookie?self._jar:cookieJar; - - //set the cookie if it's domain in the href's domain. - targetCookieJar.setCookie(cookie, self.uri.href, function(err){ - if (err){ - console.warn('set cookie failed,'+ err) - } - }) - } - - } - - if (hasHeader('set-cookie', response.headers) && (!self._disableCookies)) { - var headerName = hasHeader('set-cookie', response.headers) - if (Array.isArray(response.headers[headerName])) response.headers[headerName].forEach(addCookie) - else addCookie(response.headers[headerName]) - } - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && hasHeader('location', response.headers)) { - var location = response.headers[hasHeader('location', response.headers)] - debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirect) { - switch (self.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode == 401 && self._hasAuth && !self._sentAuth) { - var authHeader = response.headers[hasHeader('www-authenticate', response.headers)] - var authVerb = authHeader && authHeader.split(' ')[0] - debug('reauth', authVerb) - - switch (authVerb) { - case 'Basic': - self.auth(self._user, self._pass, true) - redirectTo = self.uri - break - - case 'Digest': - // TODO: More complete implementation of RFC 2617. - // - check challenge.algorithm - // - support algorithm="MD5-sess" - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) break - challenge[match[1]] = match[2] || match[3]; - } - - var ha1 = md5(self._user + ':' + challenge.realm + ':' + self._pass) - var ha2 = md5(self.method + ':' + self.uri.path) - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var digestResponse = qop ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self._user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: self.uri.path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (!authValues[k]) { - //ignore - } else if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.setHeader('authorization', authHeader) - self._sentAuth = true - - redirectTo = self.uri - break - } - } - - if (redirectTo) { - debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - if (self._paused) response.resume() - - if (self._redirectsFollowed >= self.maxRedirects) { - self.emit('error', new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+self.uri.href)) - return - } - self._redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(self.uri.href, redirectTo) - } - - var uriPrev = self.uri - self.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (self.uri.protocol !== uriPrev.protocol) { - self._updateProtocol() - } - - self.redirects.push( - { statusCode : response.statusCode - , redirectUri: redirectTo - } - ) - if (self.followAllRedirects && response.statusCode != 401) self.method = 'GET' - // self.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete self.src - delete self.req - delete self.agent - delete self._started - if (response.statusCode != 401) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete self.body - delete self._form - if (self.headers) { - if (self.hasHeader('host')) delete self.headers[self.hasHeader('host')] - if (self.hasHeader('content-type')) delete self.headers[self.hasHeader('content-type')] - if (self.hasHeader('content-length')) delete self.headers[self.hasHeader('content-length')] - } - } - - self.emit('redirect'); - - self.init() - return // Ignore the rest of the response - } else { - self._redirectsFollowed = self._redirectsFollowed || 0 - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) self.response.emit('end') - }) - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.") - } else { - response.setEncoding(self.encoding) - } - } - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - response.on("data", function (chunk) { - self._destdata = true - self.emit("data", chunk) - }) - response.on("end", function (chunk) { - self._ended = true - self.emit("end", chunk) - }) - response.on("close", function () {self.emit("close")}) - - if (self.callback) { - var buffer = [] - var bodyLen = 0 - self.on("data", function (chunk) { - buffer.push(chunk) - bodyLen += chunk.length - }) - self.on("end", function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - - if (buffer.length && Buffer.isBuffer(buffer[0])) { - debug('has body', self.uri.href, bodyLen) - var body = new Buffer(bodyLen) - var i = 0 - buffer.forEach(function (chunk) { - chunk.copy(body, i, 0, chunk.length) - i += chunk.length - }) - if (self.encoding === null) { - response.body = body - } else { - response.body = body.toString(self.encoding) - } - } else if (buffer.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && buffer[0].length > 0 && buffer[0][0] === "\uFEFF") { - buffer[0] = buffer[0].substring(1) - } - response.body = buffer.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body) - } catch (e) {} - } - debug('emitting complete', self.uri.href) - if(response.body == undefined && !self._json) { - response.body = ""; - } - self.emit('complete', response, response.body) - }) - } - //if no callback - else{ - self.on("end", function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response); - }); - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.abort = function () { - this._aborted = true - - if (this.req) { - this.req.abort() - } - else if (this.response) { - this.response.abort() - } - - this.emit("abort") -} - -Request.prototype.pipeDest = function (dest) { - var response = this.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (hasHeader('content-type', response.headers)) { - var ctname = hasHeader('content-type', response.headers) - if (dest.setHeader) dest.setHeader(ctname, response.headers[ctname]) - else dest.headers[ctname] = response.headers[ctname] - } - - if (hasHeader('content-length', response.headers)) { - var clname = hasHeader('content-length', response.headers) - if (dest.setHeader) dest.setHeader(clname, response.headers[clname]) - else dest.headers[clname] = response.headers[clname] - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - dest.setHeader(i, response.headers[i]) - } - dest.statusCode = response.statusCode - } - if (this.pipefilter) this.pipefilter(response, dest) -} - -// Composable API -Request.prototype.setHeader = function (name, value, clobber) { - if (clobber === undefined) clobber = true - if (clobber || !this.hasHeader(name)) this.headers[name] = value - else this.headers[this.hasHeader(name)] += ',' + value - return this -} -Request.prototype.setHeaders = function (headers) { - for (var i in headers) {this.setHeader(i, headers[i])} - return this -} -Request.prototype.hasHeader = function (header, headers) { - var headers = Object.keys(headers || this.headers) - , lheaders = headers.map(function (h) {return h.toLowerCase()}) - ; - header = header.toLowerCase() - for (var i=0;i<lheaders.length;i++) { - if (lheaders[i] === header) return headers[i] - } - return false -} - -var hasHeader = Request.prototype.hasHeader - -Request.prototype.qs = function (q, clobber) { - var base - if (!clobber && this.uri.query) base = qs.parse(this.uri.query) - else base = {} - - for (var i in q) { - base[i] = q[i] - } - - if (qs.stringify(base) === ''){ - return this - } - - this.uri = url.parse(this.uri.href.split('?')[0] + '?' + qs.stringify(base)) - this.url = this.uri - this.path = this.uri.path - - return this -} -Request.prototype.form = function (form) { - if (form) { - this.setHeader('content-type', 'application/x-www-form-urlencoded; charset=utf-8') - this.body = qs.stringify(form).toString('utf8') - return this - } - // create form-data object - this._form = new FormData() - return this._form -} -Request.prototype.multipart = function (multipart) { - var self = this - self.body = [] - - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - var headerName = self.hasHeader('content-type'); - self.setHeader(headerName, self.headers[headerName].split(';')[0] + '; boundary=' + self.boundary) - } - - if (!multipart.forEach) throw new Error('Argument error, options.multipart.') - - if (self.preambleCRLF) { - self.body.push(new Buffer('\r\n')) - } - - multipart.forEach(function (part) { - var body = part.body - if(body == null) throw Error('Body attribute missing in multipart.') - delete part.body - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - self.body.push(new Buffer(preamble)) - self.body.push(new Buffer(body)) - self.body.push(new Buffer('\r\n')) - }) - self.body.push(new Buffer('--' + self.boundary + '--')) - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) self.setHeader('accept', 'application/json') - - this._json = true - if (typeof val === 'boolean') { - if (typeof this.body === 'object') { - this.body = safeStringify(this.body) - self.setHeader('content-type', 'application/json') - } - } else { - this.body = safeStringify(val) - self.setHeader('content-type', 'application/json') - } - return this -} -Request.prototype.getHeader = function (name, headers) { - var result, re, match - if (!headers) headers = this.headers - Object.keys(headers).forEach(function (key) { - re = new RegExp(name, 'i') - match = key.match(re) - if (match) result = headers[key] - }) - return result -} -var getHeader = Request.prototype.getHeader - -Request.prototype.auth = function (user, pass, sendImmediately) { - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - throw new Error('auth() received invalid user or password') - } - this._user = user - this._pass = pass - this._hasAuth = true - var header = typeof pass !== 'undefined' ? user + ':' + pass : user - if (sendImmediately || typeof sendImmediately == 'undefined') { - this.setHeader('authorization', 'Basic ' + toBase64(header)) - this._sentAuth = true - } - return this -} -Request.prototype.aws = function (opts, now) { - if (!now) { - this._aws = opts - return this - } - var date = new Date() - this.setHeader('date', date.toUTCString()) - var auth = - { key: opts.key - , secret: opts.secret - , verb: this.method.toUpperCase() - , date: date - , contentType: this.getHeader('content-type') || '' - , md5: this.getHeader('content-md5') || '' - , amazonHeaders: aws.canonicalizeHeaders(this.headers) - } - if (opts.bucket && this.path) { - auth.resource = '/' + opts.bucket + this.path - } else if (opts.bucket && !this.path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && this.path) { - auth.resource = this.path - } else if (!opts.bucket && !this.path) { - auth.resource = '/' - } - auth.resource = aws.canonicalizeResource(auth.resource) - this.setHeader('authorization', aws.authorization(auth)) - - return this -} -Request.prototype.httpSignature = function (opts) { - var req = this - httpSignature.signRequest({ - getHeader: function(header) { - return getHeader(header, req.headers) - }, - setHeader: function(header, value) { - req.setHeader(header, value) - }, - method: this.method, - path: this.path - }, opts) - debug('httpSignature authorization', this.getHeader('authorization')) - - return this -} - -Request.prototype.hawk = function (opts) { - this.setHeader('Authorization', hawk.client.header(this.uri, this.method, opts).field) -} - -Request.prototype.oauth = function (_oauth) { - var form - if (this.hasHeader('content-type') && - this.getHeader('content-type').slice(0, 'application/x-www-form-urlencoded'.length) === - 'application/x-www-form-urlencoded' - ) { - form = qs.parse(this.body) - } - if (this.uri.query) { - form = qs.parse(this.uri.query) - } - if (!form) form = {} - var oa = {} - for (var i in form) oa[i] = form[i] - for (var i in _oauth) oa['oauth_'+i] = _oauth[i] - if (!oa.oauth_version) oa.oauth_version = '1.0' - if (!oa.oauth_timestamp) oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() - if (!oa.oauth_nonce) oa.oauth_nonce = uuid().replace(/-/g, '') - - oa.oauth_signature_method = 'HMAC-SHA1' - - var consumer_secret = oa.oauth_consumer_secret - delete oa.oauth_consumer_secret - var token_secret = oa.oauth_token_secret - delete oa.oauth_token_secret - var timestamp = oa.oauth_timestamp - - var baseurl = this.uri.protocol + '//' + this.uri.host + this.uri.pathname - var signature = oauth.hmacsign(this.method, baseurl, oa, consumer_secret, token_secret) - - // oa.oauth_signature = signature - for (var i in form) { - if ( i.slice(0, 'oauth_') in _oauth) { - // skip - } else { - delete oa['oauth_'+i] - if (i !== 'x_auth_mode') delete oa[i] - } - } - oa.oauth_timestamp = timestamp - var authHeader = 'OAuth '+Object.keys(oa).sort().map(function (i) {return i+'="'+oauth.rfc3986(oa[i])+'"'}).join(',') - authHeader += ',oauth_signature="' + oauth.rfc3986(signature) + '"' - this.setHeader('Authorization', authHeader) - return this -} -Request.prototype.jar = function (jar) { - var cookies - - if (this._redirectsFollowed === 0) { - this.originalCookieHeader = this.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - this._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString)?jar:cookieJar; - var urihref = this.uri.href - - //fetch cookie in the Specified host - targetCookieJar.getCookieString(urihref, function(err, hrefCookie){ - if (err){ - console.warn('get cookieString failed,' +err) - } else { - cookies = hrefCookie - } - }) - - } - - //if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (this.originalCookieHeader) { - // Don't overwrite existing Cookie header - this.setHeader('cookie', this.originalCookieHeader + '; ' + cookies) - } else { - this.setHeader('cookie', cookies) - } - } - this._jar = jar - return this -} - - -// Stream API -Request.prototype.pipe = function (dest, opts) { - if (this.response) { - if (this._destdata) { - throw new Error("You cannot pipe after data has been emitted from the response.") - } else if (this._ended) { - throw new Error("You cannot pipe after the response has been ended.") - } else { - stream.Stream.prototype.pipe.call(this, dest, opts) - this.pipeDest(dest) - return dest - } - } else { - this.dests.push(dest) - stream.Stream.prototype.pipe.call(this, dest, opts) - return dest - } -} -Request.prototype.write = function () { - if (!this._started) this.start() - return this.req.write.apply(this.req, arguments) -} -Request.prototype.end = function (chunk) { - if (chunk) this.write(chunk) - if (!this._started) this.start() - this.req.end() -} -Request.prototype.pause = function () { - if (!this.response) this._paused = true - else this.response.pause.apply(this.response, arguments) -} -Request.prototype.resume = function () { - if (!this.response) this._paused = false - else this.response.resume.apply(this.response, arguments) -} -Request.prototype.destroy = function () { - if (!this._ended) this.end() - else if (this.response) this.response.destroy() -} - -function toJSON () { - return getSafe(this, '__' + (((1+Math.random())*0x10000)|0).toString(16)) -} - -Request.prototype.toJSON = toJSON - - -module.exports = Request diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc deleted file mode 100644 index c8ef3ca4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ ] - , "bitwise": false - , "camelcase": false - , "curly": false - , "eqeqeq": false - , "forin": false - , "immed": false - , "latedef": false - , "noarg": true - , "noempty": true - , "nonew": true - , "plusplus": false - , "quotmark": true - , "regexp": false - , "undef": true - , "unused": true - , "strict": false - , "trailing": true - , "maxlen": 120 - , "asi": true - , "boss": true - , "debug": true - , "eqnull": true - , "esnext": true - , "evil": true - , "expr": true - , "funcscope": false - , "globalstrict": false - , "iterator": false - , "lastsemic": true - , "laxbreak": true - , "laxcomma": true - , "loopfunc": true - , "multistr": false - , "onecase": false - , "proto": false - , "regexdash": false - , "scripturl": true - , "smarttabs": false - , "shadow": false - , "sub": true - , "supernew": false - , "validthis": true - , "browser": true - , "couch": false - , "devel": false - , "dojo": false - , "mootools": false - , "node": true - , "nonstandard": true - , "prototypejs": false - , "rhino": false - , "worker": true - , "wsh": false - , "nomen": false - , "onevar": false - , "passfail": false -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml deleted file mode 100644 index 12b1a310..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: node_js -node_js: -- '0.8' -- '0.10' -- '0.11' -branches: - only: - - master -notifications: - email: - - rod@vagg.org -script: npm test -env: - global: - - SAUCE_USER=through2-sauce - - secure: A8KyygIlklZOcTwTGhZHpkOu7Cn4tI1QQasg75CTSjudczGzkuh1pG2RDIkWqGcrWv9o5CjI6fFYYx0JvQu8o5PO+ZAtV1Z0AlnM965vE8kAx0XEC7giAV323bibfnHwyQu74vIhbOfdes7E4/cYerV2kAjK0T375D4DYEpDuvw= - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs License - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md deleted file mode 100644 index c9388b38..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# through2 - -<!-- - -soon ... - -[![Build Status](https://secure.travis-ci.org/rvagg/through2.png)](http://travis-ci.org/rvagg/through2) - -[![Build Status](https://saucelabs.com/browser-matrix/through2-sauce.svg)](https://travis-ci.org/rvagg/through2) - ---> - -[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) - -<!-- -not happy with these, we need to peg to readable-stream@1.0.x so it'll always report out-of-date - -[![david-dm](https://david-dm.org/rvagg/through2.png)](https://david-dm.org/rvagg/through2/) -[![david-dm](https://david-dm.org/rvagg/through2/dev-status.png)](https://david-dm.org/rvagg/through2#info=devDependencies/) ---> - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - - this.push(data) - - callback() - - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b> - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) { - - this.push(new Buffer('wut?')) - cb() - - }) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -If you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b> - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md deleted file mode 100644 index 34c11897..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index a2e0d8e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; -var util = require('util'); -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -Object.keys(Writable.prototype).forEach(function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 330c247d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); -var util = require('util'); -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 9a57f147..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,928 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -module.exports = Readable; -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -var Stream = require('stream'); -var util = require('util'); -var Buffer = require('buffer').Buffer; -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || n === null) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode && - !er) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (Array.isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - state.pipes.forEach(write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = state.pipes.indexOf(dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - if (!chunk || !state.objectMode && !chunk.length) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - events.forEach(function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 707e4b3b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); -var util = require('util'); -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 32fbab77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,378 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; -Writable.WritableState = WritableState; - -var util = require('util'); -var Buffer = require('buffer').Buffer; -var assert = require('assert'); -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320cc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa001..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index 2e44a03e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; -}; - - -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; - - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; - - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; - } - - var lenIncomplete = this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - - return i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} - -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 7f5d0011..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.25-1", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.25-1", - "_from": "string_decoder@~0.10.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json deleted file mode 100644 index 6e20ea26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.26-2", - "description": "An exploration of a new kind of readable streams for Node.js", - "main": "readable.js", - "dependencies": { - "string_decoder": "~0.10.x" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# readable-stream\n\n***Node-core streams for userland***\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/)\n\nThis package is a mirror of the Streams2 and Streams3 implementations in Node-core.\n\nIf you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core.\n\n**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.\n\n**readable-stream** uses proper patch-level versioning so if you pin to `\"~1.0.0\"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `\"~1.1.0\"`\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.26-2", - "_from": "readable-stream@~1.0.17" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js deleted file mode 100644 index 4d1ddfc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,6 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile deleted file mode 100644 index d583fcf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -browser: - node ./support/compile - -.PHONY: browser \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md deleted file mode 100644 index 389adae3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# xtend - -[![browser support][3]][4] - -Extend like a boss - -xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence. - -## Examples - -```js -var extend = require("xtend") - -var combination = extend({ - a: "a" -}, { - b: "b" -}) -// { a: "a", b: "b" } -``` - - -## MIT Licenced - - - [3]: http://ci.testling.com/Raynos/xtend.png - [4]: http://ci.testling.com/Raynos/xtend diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js deleted file mode 100644 index 62391e78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = hasKeys - -function hasKeys(source) { - return source !== null && - (typeof source === "object" || - typeof source === "function") -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js deleted file mode 100644 index 20937d19..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js deleted file mode 100644 index 17454ae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend(target) { - var sources = [].slice.call(arguments, 1) - - for (var i = 0; i < sources.length; i++) { - var source = sources[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml deleted file mode 100644 index 60d00ce1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md deleted file mode 100644 index ab32d0ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md +++ /dev/null @@ -1,39 +0,0 @@ -#object-keys <sup>[![Version Badge][2]][1]</sup> - -[![Build Status][3]][4] [![dependency status][5]][6] - -[![browser support][7]][8] - -An Object.keys shim. Uses Object.keys if available. - -## Example - -```js -var keys = require('object-keys'); -var assert = require('assert'); -var obj = { - a: true, - b: true, - c: true -}; - -assert.equal(keys(obj), ['a', 'b', 'c']); -``` - -## Source -Implementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]). - -## Tests -Simply clone the repo, `npm install`, and run `npm test` - -[1]: https://npmjs.org/package/object-keys -[2]: http://vb.teelaun.ch/ljharb/object-keys.svg -[3]: https://travis-ci.org/ljharb/object-keys.png -[4]: https://travis-ci.org/ljharb/object-keys -[5]: https://david-dm.org/ljharb/object-keys.png -[6]: https://david-dm.org/ljharb/object-keys -[7]: https://ci.testling.com/ljharb/object-keys.png -[8]: https://ci.testling.com/ljharb/object-keys -[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589 -[10]: https://github.com/bestiejs/lodash - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js deleted file mode 100644 index db32d458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = Object.prototype.hasOwnProperty; -var toString = Object.prototype.toString; - -var isFunction = function (fn) { - var isFunc = (typeof fn === 'function' && !(fn instanceof RegExp)) || toString.call(fn) === '[object Function]'; - if (!isFunc && typeof window !== 'undefined') { - isFunc = fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt; - } - return isFunc; -}; - -module.exports = function forEach(obj, fn) { - if (!isFunction(fn)) { - throw new TypeError('iterator must be a function'); - } - var i, k, - isString = typeof obj === 'string', - l = obj.length, - context = arguments.length > 2 ? arguments[2] : null; - if (l === +l) { - for (i = 0; i < l; i++) { - if (context === null) { - fn(isString ? obj.charAt(i) : obj[i], i, obj); - } else { - fn.call(context, isString ? obj.charAt(i) : obj[i], i, obj); - } - } - } else { - for (k in obj) { - if (hasOwn.call(obj, k)) { - if (context === null) { - fn(obj[k], k, obj); - } else { - fn.call(context, obj[k], k, obj); - } - } - } - } -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js deleted file mode 100644 index f5b24b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = Object.keys || require('./shim'); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js deleted file mode 100644 index 74a09897..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = Object.prototype.toString; - -module.exports = function isArguments(value) { - var str = toString.call(value); - var isArguments = str === '[object Arguments]'; - if (!isArguments) { - isArguments = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toString.call(value.callee) === '[object Function]'; - } - return isArguments; -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json deleted file mode 100644 index 1de9cbb3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "object-keys", - "version": "0.4.0", - "author": { - "name": "Jordan Harband" - }, - "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/kriskowal/es5-shim", - "license": "MIT", - "main": "index.js", - "scripts": { - "test": "node test/index.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/ljharb/object-keys.git" - }, - "keywords": [ - "Object.keys", - "keys", - "ES5", - "shim" - ], - "dependencies": {}, - "devDependencies": { - "foreach": "~2.0.3", - "is": "~0.2.6", - "tape": "~1.0.4", - "indexof": "~0.0.1" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "iexplore/6.0..latest", - "firefox/3.0..6.0", - "firefox/15.0..latest", - "firefox/nightly", - "chrome/4.0..10.0", - "chrome/20.0..latest", - "chrome/canary", - "opera/10.0..latest", - "opera/next", - "safari/4.0..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2" - ] - }, - "readme": "#object-keys <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4] [![dependency status][5]][6]\n\n[![browser support][7]][8]\n\nAn Object.keys shim. Uses Object.keys if available.\n\n## Example\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\nvar obj = {\n\ta: true,\n\tb: true,\n\tc: true\n};\n\nassert.equal(keys(obj), ['a', 'b', 'c']);\n```\n\n## Source\nImplementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]).\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/object-keys\n[2]: http://vb.teelaun.ch/ljharb/object-keys.svg\n[3]: https://travis-ci.org/ljharb/object-keys.png\n[4]: https://travis-ci.org/ljharb/object-keys\n[5]: https://david-dm.org/ljharb/object-keys.png\n[6]: https://david-dm.org/ljharb/object-keys\n[7]: https://ci.testling.com/ljharb/object-keys.png\n[8]: https://ci.testling.com/ljharb/object-keys\n[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589\n[10]: https://github.com/bestiejs/lodash\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ljharb/object-keys/issues" - }, - "homepage": "https://github.com/ljharb/object-keys", - "_id": "object-keys@0.4.0", - "_from": "object-keys@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js deleted file mode 100644 index b88421be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js +++ /dev/null @@ -1,62 +0,0 @@ -(function () { - "use strict"; - - // modified from https://github.com/kriskowal/es5-shim - var has = Object.prototype.hasOwnProperty, - toString = Object.prototype.toString, - forEach = require('./foreach'), - isArgs = require('./isArguments'), - hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'), - hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - keysShim; - - keysShim = function keys(object) { - var isObject = object !== null && typeof object === 'object', - isFunction = toString.call(object) === '[object Function]', - isArguments = isArgs(object), - theKeys = []; - - if (!isObject && !isFunction && !isArguments) { - throw new TypeError("Object.keys called on a non-object"); - } - - if (isArguments) { - forEach(object, function (value) { - theKeys.push(value); - }); - } else { - var name, - skipProto = hasProtoEnumBug && isFunction; - - for (name in object) { - if (!(skipProto && name === 'prototype') && has.call(object, name)) { - theKeys.push(name); - } - } - } - - if (hasDontEnumBug) { - var ctor = object.constructor, - skipConstructor = ctor && ctor.prototype === object; - - forEach(dontEnums, function (dontEnum) { - if (!(skipConstructor && dontEnum === 'constructor') && has.call(object, dontEnum)) { - theKeys.push(dontEnum); - } - }); - } - return theKeys; - }; - - module.exports = keysShim; -}()); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js deleted file mode 100644 index f29f065a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js +++ /dev/null @@ -1,156 +0,0 @@ -var test = require('tape'); -var forEach = require('../foreach.js'); - -test('second argument: iterator', function (t) { - var arr = []; - t.throws(function () { forEach(arr); }, TypeError, 'undefined is not a function'); - t.throws(function () { forEach(arr, null); }, TypeError, 'null is not a function'); - t.throws(function () { forEach(arr, ''); }, TypeError, 'string is not a function'); - t.throws(function () { forEach(arr, /a/); }, TypeError, 'regex is not a function'); - t.throws(function () { forEach(arr, true); }, TypeError, 'true is not a function'); - t.throws(function () { forEach(arr, false); }, TypeError, 'false is not a function'); - t.throws(function () { forEach(arr, NaN); }, TypeError, 'NaN is not a function'); - t.throws(function () { forEach(arr, 42); }, TypeError, '42 is not a function'); - t.doesNotThrow(function () { forEach(arr, function () {}); }, 'function is a function'); - t.doesNotThrow(function () { forEach(arr, setTimeout); }, 'setTimeout is a function'); - if (typeof window !== 'undefined') { - t.doesNotThrow(function () { forEach(arr, window.alert); }, 'alert is a function'); - } - t.end(); -}); - -test('array', function (t) { - var arr = [1, 2, 3]; - - t.test('iterates over every item', function (st) { - var index = 0; - forEach(arr, function () { index += 1; }); - st.equal(index, arr.length, 'iterates ' + arr.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(arr.length); - forEach(arr, function (item) { - st.equal(arr[index], item, 'item ' + index + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(arr.length); - forEach(arr, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(arr.length); - forEach(arr, function (item, index, array) { - st.deepEqual(arr, array, 'array is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(arr.length); - forEach(arr, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - -test('object', function (t) { - var obj = { - a: 1, - b: 2, - c: 3 - }; - var keys = ['a', 'b', 'c']; - - var F = function () { - this.a = 1; - this.b = 2; - }; - F.prototype.c = 3; - var fKeys = ['a', 'b']; - - t.test('iterates over every object literal key', function (st) { - var counter = 0; - forEach(obj, function () { counter += 1; }); - st.equal(counter, keys.length, 'iterated ' + counter + ' times'); - st.end(); - }); - - t.test('iterates only over own keys', function (st) { - var counter = 0; - forEach(new F(), function () { counter += 1; }); - st.equal(counter, fKeys.length, 'iterated ' + fKeys.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(keys.length); - forEach(obj, function (item) { - st.equal(obj[keys[index]], item, 'item at key ' + keys[index] + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(keys.length); - forEach(obj, function (item, key) { - st.equal(keys[counter], key, 'key ' + key + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(keys.length); - forEach(obj, function (item, key, object) { - st.deepEqual(obj, object, 'object is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(1); - forEach({foo: 'bar'}, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - - -test('string', function (t) { - var str = 'str'; - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(str.length * 2 + 1); - forEach(str, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - st.equal(str.charAt(index), item); - counter += 1; - }); - st.equal(counter, str.length, 'iterates ' + str.length + ' times'); - }); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js deleted file mode 100644 index 8b77b1fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -require('./foreach'); -require('./isArguments'); - -require('./shim'); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js deleted file mode 100644 index 62a07c2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js +++ /dev/null @@ -1,10 +0,0 @@ -var test = require('tape'); -var isArguments = require('../isArguments'); - -test('is.arguments', function (t) { - t.notOk(isArguments([]), 'array is not arguments'); - (function () { t.ok(isArguments(arguments), 'arguments is arguments'); }()); - (function () { t.notOk(isArguments(Array.prototype.slice.call(arguments)), 'sliced arguments is not arguments'); }()); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js deleted file mode 100644 index 9d932712..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js +++ /dev/null @@ -1,134 +0,0 @@ -var test = require('tape'); -var shimmedKeys = require('../index.js'); -var is = require('is'); -var keys = require('../shim.js'); -var forEach = require('foreach'); -var indexOf = require('indexof'); - -var obj = { - "str": "boz", - "obj": {}, - "arr": [], - "bool": true, - "num": 42, - "aNull": null, - "undef": undefined -}; -var objKeys = ['str', 'obj', 'arr', 'bool', 'num', 'aNull', 'undef']; - -test('exports a function', function (t) { - if (Object.keys) { - t.equal(Object.keys, shimmedKeys, 'Object.keys is supported and exported'); - } else { - t.equal(keys, shimmedKeys, 'Object.keys is not supported; shim is exported'); - } - t.end(); -}); - -test('working with actual shim', function (t) { - t.notEqual(Object.keys, keys, 'keys shim is not native Object.keys'); - t.end(); -}); - -test('works with an object literal', function (t) { - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, objKeys, 'Object has expected keys'); - t.end(); -}); - -test('works with an array', function (t) { - var arr = [1, 2, 3]; - var theKeys = keys(arr); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['0', '1', '2'], 'Array has expected keys'); - t.end(); -}); - -test('works with a function', function (t) { - var foo = function () {}; - foo.a = true; - - t.doesNotThrow(function () { return keys(foo); }, 'does not throw an error'); - t.deepEqual(keys(foo), ['a'], 'returns expected keys'); - t.end(); -}); - -test('returns names which are own properties', function (t) { - forEach(keys(obj), function (name) { - t.equal(obj.hasOwnProperty(name), true, name + ' should be returned'); - }); - t.end(); -}); - -test('returns names which are enumerable', function (t) { - var k, loopedValues = []; - for (k in obj) { - loopedValues.push(k); - } - forEach(keys(obj), function (name) { - t.notEqual(indexOf(loopedValues, name), -1, name + ' is not enumerable'); - }); - t.end(); -}); - -test('throws an error for a non-object', function (t) { - t.throws( - function () { return keys(42); }, - new TypeError('Object.keys called on a non-object'), - 'throws on a non-object' - ); - t.end(); -}); - -test('works with an object instance', function (t) { - var Prototype = function () {}; - Prototype.prototype.foo = true; - var obj = new Prototype(); - obj.bar = true; - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['bar'], 'Instance has expected keys'); - t.end(); -}); - -test('works in iOS 5 mobile Safari', function (t) { - var Foo = function () {}; - Foo.a = function () {}; - - // the bug is keys(Foo) => ['a', 'prototype'] instead of ['a'] - t.deepEqual(keys(Foo), ['a'], 'has expected keys'); - t.end(); -}); - -test('works in environments with the dontEnum bug (IE < 9)', function (t) { - var Foo = function () {}; - Foo.prototype.a = function () {}; - - // the bug is keys(Foo.prototype) => ['a', 'constructor'] instead of ['a'] - t.deepEqual(keys(Foo.prototype), ['a'], 'has expected keys'); - t.end(); -}); - -test('shadowed properties', function (t) { - var shadowedProps = [ - 'dummyControlProp', /* just to be sure */ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - shadowedProps.sort(); - var shadowedObject = {}; - forEach(shadowedProps, function (value, index) { - shadowedObject[value] = index; - }); - var shadowedObjectKeys = keys(shadowedObject); - shadowedObjectKeys.sort(); - t.deepEqual(shadowedObjectKeys, shadowedProps, 'troublesome shadowed properties are keys of object literals'); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json deleted file mode 100644 index c52e4efc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "xtend", - "version": "2.1.2", - "description": "extend like a boss", - "keywords": [ - "extend", - "merge", - "options", - "opts", - "object", - "array" - ], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/xtend.git" - }, - "main": "index", - "scripts": { - "test": "node test" - }, - "dependencies": { - "object-keys": "~0.4.0" - }, - "devDependencies": { - "tape": "~1.1.0" - }, - "homepage": "https://github.com/Raynos/xtend", - "contributors": [ - { - "name": "Jake Verbaten" - }, - { - "name": "Matt Esch" - } - ], - "bugs": { - "url": "https://github.com/Raynos/xtend/issues", - "email": "raynos2@gmail.com" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/raynos/xtend/raw/master/LICENSE" - } - ], - "testling": { - "files": "test.js", - "browsers": [ - "ie/7..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ] - }, - "engines": { - "node": ">=0.4" - }, - "readme": "# xtend\n\n[![browser support][3]][4]\n\nExtend like a boss\n\nxtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence.\n\n## Examples\n\n```js\nvar extend = require(\"xtend\")\n\nvar combination = extend({\n a: \"a\"\n}, {\n b: \"b\"\n})\n// { a: \"a\", b: \"b\" }\n```\n\n\n## MIT Licenced\n\n\n [3]: http://ci.testling.com/Raynos/xtend.png\n [4]: http://ci.testling.com/Raynos/xtend\n", - "readmeFilename": "README.md", - "_id": "xtend@2.1.2", - "_from": "xtend@~2.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js deleted file mode 100644 index 3369d796..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js +++ /dev/null @@ -1,63 +0,0 @@ -var test = require("tape") -var extend = require("./") -var mutableExtend = require("./mutable") - -test("merge", function(assert) { - var a = { a: "foo" } - var b = { b: "bar" } - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("replace", function(assert) { - var a = { a: "foo" } - var b = { a: "bar" } - - assert.deepEqual(extend(a, b), { a: "bar" }) - assert.end() -}) - -test("undefined", function(assert) { - var a = { a: undefined } - var b = { b: "foo" } - - assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) - assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) - assert.end() -}) - -test("handle 0", function(assert) { - var a = { a: "default" } - var b = { a: 0 } - - assert.deepEqual(extend(a, b), { a: 0 }) - assert.deepEqual(extend(b, a), { a: "default" }) - assert.end() -}) - -test("is immutable", function (assert) { - var record = {} - - extend(record, { foo: "bar" }) - assert.equal(record.foo, undefined) - assert.end() -}) - -test("null as argument", function (assert) { - var a = { foo: "bar" } - var b = null - var c = void 0 - - assert.deepEqual(extend(b, a, c), { foo: "bar" }) - assert.end() -}) - -test("mutable", function (assert) { - var a = { foo: "bar" } - - mutableExtend(a, { bar: "baz" }) - - assert.equal(a.bar, "baz") - assert.end() -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json deleted file mode 100644 index 3d0e0c8b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "through2", - "version": "0.4.1", - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "main": "through2.js", - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/rvagg/through2.git" - }, - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "author": { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - "license": "MIT", - "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "bl": "~0.6.0", - "stream-spigot": "~3.0.1", - "brtapsauce": "~0.2.2" - }, - "readme": "# through2\n\n<!--\n\nsoon ...\n\n[![Build Status](https://secure.travis-ci.org/rvagg/through2.png)](http://travis-ci.org/rvagg/through2)\n\n[![Build Status](https://saucelabs.com/browser-matrix/through2-sauce.svg)](https://travis-ci.org/rvagg/through2)\n\n-->\n\n[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) \n\n<!--\nnot happy with these, we need to peg to readable-stream@1.0.x so it'll always report out-of-date\n\n[![david-dm](https://david-dm.org/rvagg/through2.png)](https://david-dm.org/rvagg/through2/)\n[![david-dm](https://david-dm.org/rvagg/through2/dev-status.png)](https://david-dm.org/rvagg/through2#info=devDependencies/)\n-->\n\n**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise**\n\nInspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`.\n\n```js\nfs.createReadStream('ex.txt')\n .pipe(through2(function (chunk, enc, callback) {\n\n for (var i = 0; i < chunk.length; i++)\n if (chunk[i] == 97)\n chunk[i] = 122 // swap 'a' for 'z'\n\n this.push(chunk)\n \n callback()\n\n }))\n .pipe(fs.createWriteStream('out.txt'))\n```\n\nOr object streams:\n\n```js\nvar all = []\n\nfs.createReadStream('data.csv')\n .pipe(csv2())\n .pipe(through2.obj(function (chunk, enc, callback) {\n\n var data = {\n name : chunk[0]\n , address : chunk[3]\n , phone : chunk[10]\n }\n \n this.push(data)\n \n callback()\n\n }))\n .on('data', function (data) {\n all.push(data)\n })\n .on('end', function () {\n doSomethingSpecial(all)\n })\n```\n\nNote that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`.\n\n## API\n\n<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b>\n\nConsult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`).\n\n### options\n\nThe options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`).\n\nThe `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call:\n\n```js\nfs.createReadStream('/tmp/important.dat')\n .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) {\n\n this.push(new Buffer('wut?'))\n cb()\n\n })\n .pipe(fs.createWriteStream('/tmp/wut.txt'))\n```\n\n### transformFunction\n\nThe `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk.\n\nTo queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on.\n\nIf you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream.\n\n### flushFunction\n\nThe optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress.\n\n<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b>\n\nInstead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances.\n\n```js\nvar FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) {\n if (record.temp != null && record.unit = \"F\") {\n record.temp = ( ( record.temp - 32 ) * 5 ) / 9\n record.unit = \"C\"\n }\n this.push(record)\n callback()\n})\n\n// Create instances of FToC like so:\nvar converter = new FToC()\n// Or:\nvar converter = FToC()\n// Or specify/override options when you instantiate, if you prefer:\nvar converter = FToC({objectMode: true})\n```\n\n## License\n\n**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "homepage": "https://github.com/rvagg/through2", - "_id": "through2@0.4.1", - "_from": "through2@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js deleted file mode 100644 index 9d137c7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js +++ /dev/null @@ -1,334 +0,0 @@ -const test = require('tape') - , through2 = require('../') - , crypto = require('crypto') - , bl = require('bl') - , spigot = require('stream-spigot') - -test('plain through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('pipeable through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - // bl() acts like a proper streams2 stream and passes as much as it's - // asked for, so we really only get one write with such a small amount - // of data - t.equal(s, 'aaaaaaaaaaaaaaaaaaaaaaaaa', 'got transformed string') - t.end() - })) - - var bufs = bl() - bufs.append(crypto.randomBytes(10)) - bufs.append(crypto.randomBytes(5)) - bufs.append(crypto.randomBytes(10)) - bufs.pipe(th2) -}) - -test('object through', function (t) { - t.plan(3) - - var th2 = through2({ objectMode: true}, function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object through with through2.obj', function (t) { - t.plan(3) - - var th2 = through2.obj(function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('flushing through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }, function (callback) { - this.push(new Buffer([ 101, 110, 100 ])) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal(s, 'aaaaaaaaaabbbbbccccccccccend', 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('plain through ctor', function (t) { - var Th2 = through2.ctor(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - var th2 = new Th2() - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('reuse through ctor', function (t) { - t.plan(4) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - if (!this._i) { - t.ok(1, 'did not contain previous instance data (this._i)') - this._i = 97 // 'a' - } else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - var th2 = Th2() - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - - var newInstance = Th2() - newInstance.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaabbbbccccccc', s, 'got transformed string') - })) - - newInstance.write(crypto.randomBytes(7)) - newInstance.write(crypto.randomBytes(4)) - newInstance.write(crypto.randomBytes(7)) - newInstance.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('object through ctor', function (t) { - t.plan(3) - - var Th2 = through2.ctor({ objectMode: true}, function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = new Th2() - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('pipeable object through ctor', function (t) { - t.plan(4) - - var Th2 = through2.ctor({ objectMode: true}, function (record, enc, callback) { - if (record.temp != null && record.unit == 'F') { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = 'C' - } - this.push(record) - callback() - }) - - var th2 = Th2() - - var expect = [-19, -40, 100, 22] - th2.on('data', function (o) { - t.deepEqual(o, { temp: expect.shift(), unit: 'C' }, 'got transformed object') - }) - - spigot({objectMode: true}, [ - {temp: -2.2, unit: 'F'}, - {temp: -40, unit: 'F'}, - {temp: 212, unit: 'F'}, - {temp: 22, unit: 'C'} - ]).pipe(th2) -}) - -test('object through ctor override', function (t) { - t.plan(3) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({objectMode: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object settings available in transform', function (t) { - t.plan(6) - - var Th2 = through2.ctor({objectMode: true, peek: true}, function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2() - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object settings available in transform override', function (t) { - t.plan(6) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({objectMode: true, peek: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object override extends options', function (t) { - t.plan(6) - - var Th2 = through2.ctor({objectMode: true}, function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({peek: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js deleted file mode 100644 index cc10868b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -on rvagg@fletcher: - @0.2.3: Ran 36719 iterations in 10000 ms -*/ - -const through2 = require('../') - , bl = require('bl') - , crypto = require('crypto') - , assert = require('assert') - -function run (callback) { - var bufs = Array.apply(null, Array(10)).map(function () { return crypto.randomBytes(32) }) - , stream = through2(function (chunk, env, callback) { - callback(null, chunk.toString('hex')) - }) - - stream.pipe(bl(function (err, data) { - assert(!err) - assert.equal(data.toString(), Buffer.concat(bufs).toString('hex')) - callback() - })) - - bufs.forEach(function (b) { - stream.write(b) - }) - stream.end() -} - -var count = 0 - , start = Date.now() - -;(function exec () { - count++ - run(function () { - if (Date.now() - start < 1000 * 10) { - return setImmediate(exec) - } - console.log('Ran', count, 'iterations in', Date.now() - start, 'ms') - }) -}()) - -console.log('Running for ~10s') \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js deleted file mode 100644 index a6d28625..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node - -const user = process.env.SAUCE_USER - , key = process.env.SAUCE_KEY - , path = require('path') - , brtapsauce = require('brtapsauce') - , testFile = path.join(__dirname, 'basic-test.js') - - , capabilities = [ - { browserName: 'chrome' , platform: 'Windows XP', version: '' } - , { browserName: 'firefox' , platform: 'Windows 8' , version: '' } - , { browserName: 'firefox' , platform: 'Windows XP', version: '4' } - , { browserName: 'internet explorer' , platform: 'Windows 8' , version: '10' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '9' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '8' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '7' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '6' } - , { browserName: 'safari' , platform: 'Windows 7' , version: '5' } - , { browserName: 'safari' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '11' } - , { browserName: 'ipad' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'android' , platform: 'Linux' , version: '4.0', 'device-type': 'tablet' } - ] - -if (!user) - throw new Error('Must set a SAUCE_USER env var') -if (!key) - throw new Error('Must set a SAUCE_KEY env var') - -brtapsauce({ - name : 'Traversty' - , user : user - , key : key - , brsrc : testFile - , capabilities : capabilities - , options : { timeout: 60 * 6 } -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js deleted file mode 100644 index aa9b4877..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js +++ /dev/null @@ -1,9 +0,0 @@ -require('./basic-test') - -if (!process.env.SAUCE_KEY || !process.env.SAUCE_USER) - return console.log('SAUCE_KEY and/or SAUCE_USER not set, not running sauce tests') - -if (!/v0\.10/.test(process.version)) - return console.log('Not Node v0.10.x, not running sauce tests') - -require('./sauce.js') \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js deleted file mode 100644 index c1104848..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js +++ /dev/null @@ -1,78 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new Transform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - Transform.call(this, this.options) - } - - inherits(Through2, Transform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new Transform(xtend({ objectMode: true }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/package.json deleted file mode 100644 index 35533273..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/download/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "download", - "version": "0.1.10", - "description": "Download and extract files effortlessly", - "keywords": [ - "url", - "http", - "download", - "extract" - ], - "homepage": "https://github.com/kevva/download", - "bugs": { - "url": "https://github.com/kevva/download/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/download.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "download.js", - "files": [ - "download.js" - ], - "dependencies": { - "decompress": "~0.1.5", - "each-async": "~0.1.1", - "mkdirp": "~0.3.5", - "request": "~2.31.0", - "through2": "~0.4.0" - }, - "devDependencies": { - "mocha": "~1.17.0", - "nock": "~0.27.1", - "rimraf": "~2.2.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# download [![Build Status](https://secure.travis-ci.org/kevva/download.png?branch=master)](http://travis-ci.org/kevva/download)\n\nDownload and extract files effortlessly in Node.js.\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/download): `npm install download`\n\n## Examples\n\nIf you're fetching an archive you can set `extract: true` in options and\nit'll extract it for you.\n\n```js\nvar download = require('download');\n\n// download and extract `foo.tar.gz` into `bar/`\ndownload('foo.tar.gz', 'bar', { extract: true });\n\n// download and save `foo.exe` into `bar/foo.exe` with mode `0755`\ndownload('foo.exe', 'bar', { mode: '0755' });\n\n// download and save `foo.zip` into `bar/foobar.zip`\ndownload({ url: 'foo.zip', name: 'foobar.zip' }, 'bar');\n\n// download and save an array of files in `bar/`\nvar files = ['foo.jpg', 'bar.jpg', 'cat.jpg'];\ndownload(files, 'bar');\n\n// download, save and rename an array of files in `bar/`\nvar files = [{\n url: 'foo.jpg',\n name: 'foobar.jpg'\n}, {\n url: 'cat.jpg',\n name: 'dog.jpg'\n}];\ndownload(files, 'bar');\n```\n\n## API\n\n### download(url, dest, opts)\n\nDownload a file or an array of files to a given destination. Returns an EventEmitter \nthat emits the following possible events:\n\n* `response` — Relayed when the underlying `http.ClientRequest` emits the same \nevent. Listeners called with a `http.IncomingMessage` instance.\n* `data` — Relayed when the underlying `http.IncomingMessage` emits the same \nevent. Listeners called with a `Buffer` instance.\n* `error` — Relayed when the underlying `http.ClientRequest` emits the same event \nor when the response status code is not in the 200s. Listeners called with an \n`Error` instance (in the first case) or the response status code.\n* `close` — Relayed when the underlying `stream.Duplex` emits the same event.\n\n## Options\n\nYou can define options accepted by the [request](https://github.com/mikeal/request/) module besides from the options below.\n\n### extract\n\nType: `Boolean` \nDefault: `false`\n\nIf set to `true`, try extracting the file using [decompress](https://github.com/kevva/decompress/).\n\n### mode\n\nType: `String` \nDefault: `undefined`\n\nSet mode on the downloaded files.\n\n### strip\n\nType: `Number` \nDefault: `0`\n\nEquivalent to `--strip-components` for tar.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "download@0.1.10", - "_from": "download@~0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore deleted file mode 100644 index 2ccbe465..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml deleted file mode 100644 index c1ffcb31..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/History.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/History.md deleted file mode 100644 index d1fa5334..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/History.md +++ /dev/null @@ -1,20 +0,0 @@ - -0.0.2 / 2013-05-29 -================== - - * Updated github url - * Fix bug calling isbin with list of paths - * Add tests for sync version - * Added travis CI passing image to readme - * Added node engines and keywords - * Added travis CI config - * Added basic readme - * Added basic test suite and Makefile - * Add async version - * Some refactorings using 'some' function - * Fixed issue with wrong paths if called multiple times - -0.0.1 / 2012-12-06 -================== - - * Initial release diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile deleted file mode 100644 index 1a2444a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -REPORTER ?= dot - -test: - @NODE_ENV=test ./node_modules/mocha/bin/mocha -R $(REPORTER) - -.PHONY: test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/README.md deleted file mode 100644 index 5224d614..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/README.md +++ /dev/null @@ -1,59 +0,0 @@ -[![Build Status](https://secure.travis-ci.org/mbehrendt/isbin.png?branch=master)](https://travis-ci.org/mbehrendt/isbin) - -# Isbin - -Tiny little helper library to determine if a certain binary is available within $PATH or any additional folder. - -# Installation - -```bash -$ npm install isbin -``` - -# Usage - -```js -var isbin = require('isbin'); - -// Test against $PATH -isbin('mysql', function(exists) { - console.log(exists); // ==> Boolean -}); - -// With additional path to test -isbin('mysql', '/usr/local/bin', function(exists) { - console.log(exists); // ==> Boolean -}); - -// Or multiple ones -isbin('mysql', ['/usr/local/bin', '/home/me/bins'], function(exists) { - console.log(exists); // ==> Boolean -}); -``` - -There are also synchronous versions available - -```js -var exists = isbin('mysql'); -var exists = isbin('mysql', '/usr/local/bin'); -var exists = isbin('mysql', ['/usr/local/bin', '/home/me/bins']); -``` - -# Running the tests - -```bash -$ npm install -$ make test -``` - -# License - -(The MIT License) - -Copyright (c) 2012 Mario Behrendt info@mario-behrendt.de, Stephan Hoyer <ste.hoyer@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/index.js deleted file mode 100644 index bb0a047c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js deleted file mode 100644 index 1b8a5cac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Require dependencies - */ - -var fs = require('fs') - , async = require('async'); - -/** - * Check if given binary exists - * - * @param {String} bin Binary to test - * @param {String|Array} additional Additional paths to check - * @param {Function(result)} isbinChecked Callback when check is done async, optional - * @return {Boolean} True if binary was found - */ - -function isbin(bin, additional, isbinChecked) { - // isbin(bin, cb) - if (!isbinChecked) isbinChecked = additional; - - // Read $PATH to get set up bin folders - var paths = process.env.PATH.split(':') || []; - - // isbin(bin, 'path', cb) - if ('string' === typeof additional) { - paths.push(additional); - } - - // isbin(bin, ['path1', 'path2'], cb) - if ('object' === typeof additional && additional.length !== null) { - paths.concat(additional); - } - - // async check - if ('function' === typeof isbinChecked) { - return async.some(paths, function(path, pathChecked) { - fs.exists(path + '/' + bin, pathChecked); - }, isbinChecked); - } - - // sync check - return paths.reverse().some(function(path) { - return fs.existsSync(path + '/' + bin); - }); -}; - -/** - * Expose module - */ - -module.exports = isbin; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules deleted file mode 100644 index a9aae984..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "deps/nodeunit"] - path = deps/nodeunit - url = git://github.com/caolan/nodeunit.git -[submodule "deps/UglifyJS"] - path = deps/UglifyJS - url = https://github.com/mishoo/UglifyJS.git -[submodule "deps/nodelint"] - path = deps/nodelint - url = https://github.com/tav/nodelint.git diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore deleted file mode 100644 index 9bdfc97c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -deps -dist -test -nodelint.cfg \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE deleted file mode 100644 index b7f9d500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile deleted file mode 100644 index bad647c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -PACKAGE = asyncjs -NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node) -CWD := $(shell pwd) -NODEUNIT = $(CWD)/node_modules/nodeunit/bin/nodeunit -UGLIFY = $(CWD)/node_modules/uglify-js/bin/uglifyjs -NODELINT = $(CWD)/node_modules/nodelint/nodelint - -BUILDDIR = dist - -all: clean test build - -build: $(wildcard lib/*.js) - mkdir -p $(BUILDDIR) - $(UGLIFY) lib/async.js > $(BUILDDIR)/async.min.js - -test: - $(NODEUNIT) test - -clean: - rm -rf $(BUILDDIR) - -lint: - $(NODELINT) --config nodelint.cfg lib/async.js - -.PHONY: test build all diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md deleted file mode 100644 index 1bbbc477..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md +++ /dev/null @@ -1,1021 +0,0 @@ -# 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. - -Async provides around 20 functions that include the usual 'functional' -suspects (map, reduce, filter, forEach…) 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 - - 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'], path.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. - - -## Download - -Releases are available for download from -[GitHub](http://github.com/caolan/async/downloads). -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) - 17.5kb Uncompressed - -__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped - - -## In the Browser - -So far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage: - - <script type="text/javascript" src="async.js"></script> - <script type="text/javascript"> - - async.map(data, asyncProcess, function(err, results){ - alert(results); - }); - - </script> - - -## Documentation - -### Collections - -* [forEach](#forEach) -* [map](#map) -* [filter](#filter) -* [reject](#reject) -* [reduce](#reduce) -* [detect](#detect) -* [sortBy](#sortBy) -* [some](#some) -* [every](#every) -* [concat](#concat) - -### Control Flow - -* [series](#series) -* [parallel](#parallel) -* [whilst](#whilst) -* [until](#until) -* [waterfall](#waterfall) -* [queue](#queue) -* [auto](#auto) -* [iterator](#iterator) -* [apply](#apply) -* [nextTick](#nextTick) - -### Utils - -* [memoize](#memoize) -* [unmemoize](#unmemoize) -* [log](#log) -* [dir](#dir) -* [noConflict](#noConflict) - - -## Collections - -<a name="forEach" /> -### forEach(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 forEach 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 which must be called once it has completed. -* callback(err) - A callback which is called after all the iterator functions - have finished, or an error has occurred. - -__Example__ - - // assuming openFiles is an array of file names and saveFile is a function - // to save the modified contents of that file: - - async.forEach(openFiles, saveFile, function(err){ - // if any of the saves produced an error, err would equal that error - }); - ---------------------------------------- - -<a name="forEachSeries" /> -### forEachSeries(arr, iterator, callback) - -The same as forEach 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" /> -### forEachLimit(arr, limit, iterator, callback) - -The same as forEach only the iterator is applied to batches of items in the -array, in series. The next batch of iterators is only called once the current -one has completed processing. - -__Arguments__ - -* arr - An array to iterate over. -* limit - How many items should be in each batch. -* iterator(item, callback) - A function to apply to each item in the array. - The iterator is passed a callback which must be called once it has completed. -* callback(err) - A callback which is called after all the iterator functions - have finished, or an error has occurred. - -__Example__ - - // Assume documents is an array of JSON objects and requestApi is a - // function that interacts with a rate-limited REST api. - - async.forEachLimit(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 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__ - - 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="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 path.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 which must be called once it has completed. -* callback(results) - A callback which is called after all the iterator - functions have finished. - -__Example__ - - async.filter(['file1','file2','file3'], path.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 filter, 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 its 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 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__ - - 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 which must be called 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__ - - async.detect(['file1','file2','file3'], path.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 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__ - - 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 path.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 which must be called 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__ - - async.some(['file1','file2','file3'], path.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 path.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 which must be called 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__ - - async.every(['file1','file2','file3'], path.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 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__ - - 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 it must call on completion. -* callback(err, results) - An optional callback to run once all the functions - have completed. This function gets an array of all the arguments passed to - the callbacks used in the array. - -__Example__ - - 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 it must call on completion. -* callback(err, results) - An optional callback to run once all the functions - have completed. This function gets an array of all the arguments passed to - the callbacks used in the array. - -__Example__ - - 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="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 which must be called once it has completed with an optional - error as the first argument. -* callback(err) - A callback which is called after the test fails and repeated - execution of fn has stopped. - -__Example__ - - var count = 0; - - async.whilst( - function () { return count < 5; }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } - ); - - ---------------------------------------- - -<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="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 it - must call on completion. -* 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__ - - 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="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. -* 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. -* 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__ - - // 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'); - }); - - ---------------------------------------- - -<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. - -__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 - syntax is easier to understand by looking at the example. -* 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. If all tasks complete - successfully, it will receive an object containing their results. - -__Example__ - - 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: - - 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(results){ - async.series([ - function(callback){ - // once there is some data and the directory exists, - // write the data to a file in the directory - }, - email_link: 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. Its 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, each function is passed a callback it - must call on completion. - -__Example__ - - 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__ - - // 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: - - 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 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__ - - var call_order = []; - async.nextTick(function(){ - call_order.push('two'); - // call_order now equals ['one','two] - }); - call_order.push('one') - - -## 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. - -__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__ - - 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__ - - var hello = function(name, callback){ - setTimeout(function(){ - callback(null, 'hello ' + name); - }, 1000); - }; - - 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__ - - var hello = function(name, callback){ - setTimeout(function(){ - callback(null, {hello: name}); - }, 1000); - }; - - 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js deleted file mode 100644 index 8e238453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js +++ /dev/null @@ -1,3 +0,0 @@ -// This file is just added for convenience so this repository can be -// directly checked out into a project's deps folder -module.exports = require('./lib/async'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js deleted file mode 100644 index 7cc4f5ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js +++ /dev/null @@ -1,692 +0,0 @@ -/*global setTimeout: false, console: false */ -(function () { - - var async = {}; - - // global on the server, window in the browser - var root = this, - previous_async = root.async; - - if (typeof module !== 'undefined' && module.exports) { - module.exports = async; - } - else { - root.async = async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - //// cross-browser compatiblity functions //// - - var _forEach = 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 = []; - _forEach(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); - } - _forEach(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)) { - async.nextTick = function (fn) { - setTimeout(fn, 0); - }; - } - else { - async.nextTick = process.nextTick; - } - - async.forEach = function (arr, iterator, callback) { - callback = callback || function () {}; - if (!arr.length) { - return callback(); - } - var completed = 0; - _forEach(arr, function (x) { - iterator(x, function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(null); - } - } - }); - }); - }; - - async.forEachSeries = 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.forEachLimit = function (arr, limit, 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.forEach].concat(args)); - }; - }; - var doSeries = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEachSeries].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); - - - // 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.forEachSeries(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.forEach(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.forEach(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 () { - _forEach(listeners.slice(0), function (fn) { - fn(); - }); - }; - - addListener(function () { - if (_keys(results).length === keys.length) { - callback(null, results); - callback = function () {}; - } - }); - - _forEach(keys, function (k) { - var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; - var taskCallback = function (err) { - if (err) { - callback(err); - // stop subsequent errors hitting callback multiple times - callback = function () {}; - } - else { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - 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.length) { - return callback(); - } - var wrapIterator = function (iterator) { - return function (err) { - if (err) { - callback(err); - 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.nextTick(function () { - iterator.apply(null, args); - }); - } - }; - }; - wrapIterator(async.iterator(tasks))(); - }; - - async.parallel = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.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 = {}; - async.forEach(_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.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.forEachSeries(_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.until = function (test, iterator, callback) { - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.queue = function (worker, concurrency) { - var workers = 0; - var q = { - tasks: [], - concurrency: concurrency, - saturated: null, - empty: null, - drain: null, - push: function (data, callback) { - if(data.constructor !== Array) { - data = [data]; - } - _forEach(data, function(task) { - q.tasks.push({ - data: task, - callback: typeof callback === 'function' ? callback : null - }); - if (q.saturated && q.tasks.length == concurrency) { - q.saturated(); - } - async.nextTick(q.process); - }); - }, - 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; - worker(task.data, function () { - workers -= 1; - if (task.callback) { - task.callback.apply(task, arguments); - } - if(q.drain && q.tasks.length + workers == 0) q.drain(); - q.process(); - }); - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - } - }; - return q; - }; - - 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]) { - _forEach(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.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - -}()); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json deleted file mode 100644 index 66cbf73a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "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": "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" - }, - "readme": "# Async.js\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), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, forEach…) 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 async.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n async.parallel([\n function(){ ... },\n function(){ ... }\n ], callback);\n\n async.series([\n function(){ ... },\n function(){ ... }\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\n## Download\n\nReleases are available for download from\n[GitHub](http://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\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* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, 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 this callback, the main\ncallback for the forEach 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.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled 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, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.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<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The 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. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its 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 which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.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<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator 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 array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at 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 the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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.\n\n__Example__\n\n async.detect(['file1','file2','file3'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (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 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 the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.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---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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__Example__\n\n async.some(['file1','file2','file3'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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__Example__\n\n async.every(['file1','file2','file3'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators 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 the arguments 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 the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.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<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions 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 the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\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\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.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\n function(err, results){\n // results is now equal to ['one', 'two']\n });\n\n\n // an example using an object instead of an array\n async.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 },\n function(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 an 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\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.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\n function(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\n async.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 },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the 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 to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first 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 var count = 0;\n\n async.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=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the 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 callback it\n must call on completion.\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 async.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\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\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\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* 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, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks 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\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log('all items have been processed');\n }\n\n // add some items to the queue\n\n q.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n });\n q.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n });\n\n // add some items to the queue (batch-wise)\n\n q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n });\n\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\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 },\n write_file: ['get_data', 'make_folder', function(callback){\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 // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\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 async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\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 }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n'peek' the next iterator by doing 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, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n ]);\n\n node> var iterator2 = iterator();\n 'one'\n node> var iterator3 = iterator2();\n 'two'\n node> iterator3();\n 'three'\n node> var nextfn = iterator2.next();\n node> 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, a useful\nshorthand 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 // using apply\n\n async.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\n async.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n },\n ]);\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, 'one');\n node> fn('two', 'three');\n one\n two\n three\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the 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 var call_order = [];\n async.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two]\n });\n call_order.push('one')\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\n__Arguments__\n\n* fn - the function you 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 var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn('some name', function () {\n // callback\n });\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\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 var hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n };\n\n node> 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 var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> 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\nasync object.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/caolan/async", - "_id": "async@0.1.22", - "_from": "async@0.1.22", - "scripts": {} -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/package.json deleted file mode 100644 index f24b8f9a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "isbin", - "version": "0.0.2", - "description": "Checks for available binaries on unix machines", - "main": "index.js", - "engines": { - "node": ">= 0.8.0" - }, - "keywords": [ - "fs", - "bin", - "binary", - "exists", - "check", - "path" - ], - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/behrendtio/isbin.git" - }, - "author": "", - "license": "MIT", - "dependencies": { - "async": "0.1.22" - }, - "devDependencies": { - "mocha": "1.7.3", - "should": "1.2.1" - }, - "readme": "[![Build Status](https://secure.travis-ci.org/mbehrendt/isbin.png?branch=master)](https://travis-ci.org/mbehrendt/isbin)\n\n# Isbin\n\nTiny little helper library to determine if a certain binary is available within $PATH or any additional folder.\n\n# Installation\n\n```bash\n$ npm install isbin\n```\n\n# Usage\n\n```js\nvar isbin = require('isbin');\n\n// Test against $PATH\nisbin('mysql', function(exists) {\n console.log(exists); // ==> Boolean\n});\n\n// With additional path to test\nisbin('mysql', '/usr/local/bin', function(exists) {\n console.log(exists); // ==> Boolean\n});\n\n// Or multiple ones\nisbin('mysql', ['/usr/local/bin', '/home/me/bins'], function(exists) {\n console.log(exists); // ==> Boolean\n});\n```\n\nThere are also synchronous versions available\n\n```js\nvar exists = isbin('mysql');\nvar exists = isbin('mysql', '/usr/local/bin');\nvar exists = isbin('mysql', ['/usr/local/bin', '/home/me/bins']);\n```\n\n# Running the tests\n\n```bash\n$ npm install\n$ make test\n```\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2012 Mario Behrendt info@mario-behrendt.de, Stephan Hoyer <ste.hoyer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/behrendtio/isbin/issues" - }, - "homepage": "https://github.com/behrendtio/isbin", - "_id": "isbin@0.0.2", - "_from": "isbin@0.0.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js deleted file mode 100644 index 068a38a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js +++ /dev/null @@ -1,39 +0,0 @@ -var isbin = require('../'); - -describe('isbin', function() { - it('accepts binary, additional path and callback', function(done) { - isbin('ls', '/etc', function(exists) { - exists.should.be.a('boolean'); - done(); - }) - }); - - it('accepts array of paths', function(done) { - isbin('ls', ['/etc', '/home'], function(exists) { - exists.should.be.a('boolean'); - done(); - }); - }); - - it('accepts just binary and callback', function(done) { - isbin('ls', function(exists) { - exists.should.be.a('boolean'); - done(); - }); - }); - - it('accepts binary, additional path and callback', function() { - var exists = isbin('ls', '/etc'); - exists.should.be.a('boolean'); - }); - - it('accepts array of paths', function() { - var exists = isbin('ls', ['/etc', '/home']); - exists.should.be.a('boolean'); - }); - - it('accepts just binary', function() { - var exists = isbin('ls'); - exists.should.be.a('boolean'); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts deleted file mode 100644 index e5eb9f87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts +++ /dev/null @@ -1,4 +0,0 @@ ---require should ---bail ---ui bdd ---slow 100 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig deleted file mode 100644 index e036e247..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -; EditorConfig is awesome: http://EditorConfig.org - -; top-most EditorConfig file -root = true - -; base rules -[*] -end_of_line = lf -insert_final_newline = false -indent_style = space -indent_size = 4 -charset = utf-8 -trim_trailing_whitespace = true - -; The default indent on package.json is 2 spaces, better to keep it so we can -; use `npm install --save` and other features that rewrites the package.json -; file automatically -[package.json] -indent_style = space -indent_size = 2 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc deleted file mode 100644 index bbdb29cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc +++ /dev/null @@ -1,69 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 50, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : true, // Standard browser globals e.g. `window`, `document`. - "couch" : false, - "dojo" : false, - "jquery" : true, - "mootools" : false, - "node" : false, - "prototypejs" : false, - "rhino" : false, - "wsh" : false, - - // Custom globals. - "predef" : [ - "define", - "require" - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : false, // Allow EcmaScript 5 syntax. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - "strict" : false, // Require `use strict` pragma in every file. - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "bitwise" : false, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : true, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : true, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : false, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexdash" : true, // Tolerate unescaped last dash i.e. `[-...]`. - "regexp" : false, // Prohibit `.` and `[^...]` in regular expressions. - "scripturl" : false, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : false, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "nonew" : true, // Prohibit use of constructors for side-effects. - "onevar" : false, // Allow only one `var` statement per function. - "plusplus" : false, // Prohibit use of `++` & `--`. - "sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore deleted file mode 100644 index 1341acd9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore +++ /dev/null @@ -1,30 +0,0 @@ -# dumb files -# ========== - -.tmp* -.project -.settings/ -.livereload -.DS_Store? -ehthumbs.db -Icon? -Thumbs.db - - -# stuff not needed by node -# ======================== - -node_modules/ -tests/ -_build/ -doc_html/ -coverage/ - -# we keep the doc/ folder in case npm decides to display it in the future -# also good in case user is using an old version or working offline - -# we also keep the src/ folder in case the user still needs the AMD modules -# after build (see issue #102) - -bower.json -build.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml deleted file mode 100644 index 36de1532..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ - language: node_js - node_js: - - "0.8" - script: "npm test --coverage" - notifications: - irc: - channels: - - "irc.freenode.org#moutjs" - on_success: always - on_failure: always - use_notice: true - skip_join: true - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md deleted file mode 100644 index 0f5eac12..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md +++ /dev/null @@ -1,93 +0,0 @@ -mout changelog -============== - -v0.6.0 (2013/05/22) -------------------- - - - add optional delimeter to `string/unCamelCase` - - allow custom char on `number/pad` - - allow underscore characters in `string/removeNonWord` - - accept `level` on `array/flatten` instead of a flag - - convert underscores to camelCase in `string/camelCase` - - remove `create()` from number/currencyFormat - - add `date/dayOfTheYear` - - add `date/diff` - - add `date/isSame` - - add `date/startOf` - - add `date/strftime` - - add `date/timezoneAbbr` - - add `date/timezoneOffset` - - add `date/totalDaysInYear` - - add `date/weekOfTheYear` - - add `function/timeout` - - add `object/bindAll` - - add `object/functions` - - add `time/convert` - - -v0.5.0 (2013/04/04) -------------------- - - - add `array/collect` - - add `callback` parameter to `object/equals` and `object/deepEquals` to allow - custom compare operations. - - normalize behavior in `array/*` methods to treat `null` values as empty - arrays when reading from array - - add `date/parseIso` - - add `date/isLeapYear` - - add `date/totalDaysInMonth` - - add `object/deepMatches` - - change `function/makeIterator_` to use `deepMatches` (affects nearly all - iteration methods) - - add `thisObj` parameter to `array/min` and `array/max` - - -v0.4.0 (2013/02/26) -------------------- - - - add `object/equals` - - add `object/deepEquals` - - add `object/matches`. - - add `lang/is` and `lang/isnt`. - - add `lang/isInteger`. - - add `array/findIndex`. - - add shorthand syntax to `array/*`, `object/*` and `collection/*` methods. - - improve `number/sign` behavior when value is NaN or +0 or -0. - - improve `lang/isNaN` to actually check if value *is not a number* without - coercing value; so `[]`, `""`, `null` and `"12"` are considered NaN (#39). - - improve `string/contains` to match ES6 behavior (add fromIndex argument). - - -v0.3.0 (2013/02/01) -------------------- - - - add `lang/clone`. - - add `lang/toString`. - - add `string/replace`. - - add `string/WHITE_SPACES` - - rename `function/curry` to `function/partial`. - - allow custom chars in `string/trim`, `ltrim`, and `rtrim`. - - convert values to strings in the `string/*` functions. - - -v0.2.0 (2013/01/13) -------------------- - - - fix bug in `math/ceil` for negative radixes. - - change `object/deepFillIn` and `object/deepMixIn` to recurse only if both - existing and new values are plain objects. Will not recurse into arrays - or objects not created by the Object constructor. - - add `lang/isPlainObject` to check if a file is a valid object and is created - by the Object constructor - - change `lang/clone` behavior when dealing with custom types (avoid cloning - it by default) and add second argument to allow custom behavior if needed. - - rename `lang/clone` to `lang/deepClone`. - - add VERSION property to index.js - - simplify `math/floor`, `math/round`, `math/ceil` and `math/countSteps`. - - -v0.1.0 (2013/01/09) -------------------- - -- Rename project from "amd-utils" to "mout" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md deleted file mode 100644 index 65d9add1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md +++ /dev/null @@ -1,61 +0,0 @@ -# Contributing - -Fork the repo at https://github.com/mout/mout - - > "Write clearly, don't be too clever" - The Elements of Programming Style - -Avoid unnamed functions and follow the other modules structure. By only using named functions it will be easier to extract the code from the AMD module if needed and it will also give better error messages, JavaScript minifiers like [Google Closure Compiler](http://code.google.com/closure/compiler/) and [UglifyJS](https://github.com/mishoo/UglifyJS) will make sure code is as small/optimized as possible. - - > "Make it clear before you make it faster." - The Elements of Programming Style - -Be sure to always create tests for each proposed module. Features will only be merged if they contain proper tests and documentation. - - > "Good code is its own best documentation." - Steve McConnell - -We should do a code review before merging to make sure names makes sense and implementation is as good as possible. - -Try to split your pull requests into logical groups, the smaller the easier to be reviewed/merged. - - - -## Tests & Code Coverage ## - -Tests can be found inside the `tests` folder, to execute them in the browser open the `tests/runner.html`. The same tests also work on node.js by running `npm test`. - -We should have tests for all methods and ensure we have a high code coverage through our continuous integration server ([travis](https://travis-ci.org/mout/mout)). When you ask for a pull request Travis will automatically run the tests on node.js and check the code coverage as well. - -We run `node build pkg` automatically before any `npm test`, so specs and packages should always be in sync. (will avoid human mistakes) - -To check code coverage run `npm test --coverage`, it will generate the reports inside the `coverage` folder and also log the results. Please note that node.js doesn't execute all code branches since we have some conditionals that are only met on old JavaScript engines (eg. IE 7-8), so we will never have 100% code coverage (but should be close to it). - - - -## Build Script ## - -The [build script](https://github.com/mout/mout/wiki/Build-Script) can be extremely helpful and can avoid human mistakes, use it. - - - -## Admins / Pull Requests ## - -Even if you are an admin (have commit rights) please do pull requests when adding new features or changing current behavior, that way we can review the work and discuss. Feel free to push changes that doesn't affect behavior without asking for a pull request (readme, changelog, build script, typos, refactoring, ...). - - - -## Large changes ## - -If you are proposing some major change, please create an issue to discuss it first. (maybe it's outside the scope of the project) - - - -## Questions / IRC / Wiki / Issue Tracker ## - -When in doubt ask someone on IRC to help you ([#moutjs on irc.freenode.net](http://webchat.freenode.net/?channels=moutjs)) or create a [new issue](http://github.com/mout/mout/issues). - -The [project wiki](https://github.com/mout/mout/wiki) can also be a good resource of information. - - ---- - -Check the [contributors list at github](https://github.com/mout/mout/contributors). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md deleted file mode 100644 index e9ccc2be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) -## Copyright (c) 2012, 2013 moutjs team and contributors (http://moutjs.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/README.md deleted file mode 100644 index 872943bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/README.md +++ /dev/null @@ -1,63 +0,0 @@ -![mout](http://moutjs.com/logo.png "Modular JavaScript Utilties") - -http://moutjs.com/ - -[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout) - -All code is library agnostic and consist mostly of helper methods that aren't -directly related with the DOM, the purpose of this library isn't to replace -Dojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common -problems that aren't solved by most of them. Consider it as a crossbrowser -JavaScript standard library. - - - -## Main goals ## - - - increase code reuse; - - be clear (code should be clean/readable); - - be easy to debug; - - be easy to maintain; - - follow best practices; - - follow standards when possible; - - **don't convert JavaScript into another language!** - - be compatible with other frameworks; - - be modular; - - have unit tests for all modules; - - work on multiple environments (IE7+, modern browsers, node.js); - - - -## What shouldn't be here ## - - - UI components; - - CSS selector engine; - - Event system - pub/sub; - - Template engine; - - Anything that isn't generic enough to be on a standard library; - - Anything that could be a separate library and/or isn't a modular utility... - - - -## API Documentation ## - -Online documentation can be found at http://moutjs.com/ or inside the -`doc` folder. - - - -## FAQ / Wiki / IRC ## - -For more info about project structure, design decisions, tips, how to -contribute, build system, etc, please check the [project -wiki](https://github.com/mout/mout/wiki). - -We also have an IRC channel [#moutjs on -irc.freenode.net](http://webchat.freenode.net/?channels=moutjs) - - - -## License ## - -Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array.js deleted file mode 100644 index 89d388ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array.js +++ /dev/null @@ -1,46 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js deleted file mode 100644 index bf74037e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ - - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - module.exports = append; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js deleted file mode 100644 index 58637493..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js +++ /dev/null @@ -1,27 +0,0 @@ -var append = require('./append'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - module.exports = collect; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js deleted file mode 100644 index d66e6212..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - module.exports = combine; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js deleted file mode 100644 index 74c176ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -var filter = require('./filter'); - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - module.exports = compact; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js deleted file mode 100644 index 92bb6ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js deleted file mode 100644 index d0570510..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js +++ /dev/null @@ -1,22 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var some = require('./some'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = difference; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js deleted file mode 100644 index ac598832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - module.exports = every; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js deleted file mode 100644 index ebeb58dc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js +++ /dev/null @@ -1,27 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js deleted file mode 100644 index b4a73131..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -var findIndex = require('./findIndex'); - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js deleted file mode 100644 index 53f22a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - module.exports = findIndex; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js deleted file mode 100644 index aa9757ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js +++ /dev/null @@ -1,43 +0,0 @@ -var isArray = require('../lang/isArray'); -var append = require('./append'); - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - module.exports = flatten; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js deleted file mode 100644 index 268e506f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - module.exports = forEach; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js deleted file mode 100644 index 6a9ac832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - module.exports = indexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js deleted file mode 100644 index f1f95b75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js +++ /dev/null @@ -1,15 +0,0 @@ -var difference = require('./difference'); -var toArray = require('../lang/toArray'); - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - module.exports = insert; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js deleted file mode 100644 index e6170062..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js +++ /dev/null @@ -1,23 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var every = require('./every'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = intersection; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js deleted file mode 100644 index c01aab1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - module.exports = invoke; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js deleted file mode 100644 index 71d8bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -var filter = require('./filter'); - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - module.exports = join; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js deleted file mode 100644 index ee44a25b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - module.exports = lastIndexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js deleted file mode 100644 index 54064f6b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js deleted file mode 100644 index 183b10ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js +++ /dev/null @@ -1,35 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = max; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js deleted file mode 100644 index dd00b6cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js +++ /dev/null @@ -1,35 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = min; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js deleted file mode 100644 index 6a54846c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js +++ /dev/null @@ -1,14 +0,0 @@ -var randInt = require('../random/randInt'); - - /** - * Remove a random item from the Array and return it - */ - function pick(arr){ - if (arr == null || !arr.length) return; - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js deleted file mode 100644 index fef4043b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js deleted file mode 100644 index 31d3c770..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - module.exports = range; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js deleted file mode 100644 index 1a350c6e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -var forEach = require('./forEach'); - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - module.exports = reduce; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js deleted file mode 100644 index e36fd4aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ - - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - module.exports = reduceRight; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js deleted file mode 100644 index 685f2918..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js +++ /dev/null @@ -1,26 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = reject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js deleted file mode 100644 index aa6517db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - module.exports = remove; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js deleted file mode 100644 index d5f7f3b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - module.exports = removeAll; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js deleted file mode 100644 index 97805ec8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js +++ /dev/null @@ -1,29 +0,0 @@ -var randInt = require('../random/randInt'); -var forEach = require('./forEach'); - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - module.exports = shuffle; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js deleted file mode 100644 index 8d17772b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - module.exports = some; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js deleted file mode 100644 index 7807339b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ - - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - module.exports = mergeSort; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js deleted file mode 100644 index 4f3ba50c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ - - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - module.exports = split; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js deleted file mode 100644 index ce4c55dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -var isFunction = require('../lang/isFunction'); - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - module.exports = toLookup; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js deleted file mode 100644 index f1334a91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js +++ /dev/null @@ -1,19 +0,0 @@ -var unique = require('./unique'); -var append = require('./append'); - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - module.exports = union; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js deleted file mode 100644 index 0192b2df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js +++ /dev/null @@ -1,17 +0,0 @@ -var indexOf = require('./indexOf'); -var filter = require('./filter'); - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - module.exports = unique; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js deleted file mode 100644 index c125a996..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js +++ /dev/null @@ -1,26 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var contains = require('./contains'); - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - module.exports = xor; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js deleted file mode 100644 index 931eb818..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js +++ /dev/null @@ -1,29 +0,0 @@ -var max = require('./max'); -var pluck = require('./pluck'); -var map = require('./map'); - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1, - item; - while (++i < len) { - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - module.exports = zip; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection.js deleted file mode 100644 index d5cf6cad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection.js +++ /dev/null @@ -1,22 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js deleted file mode 100644 index a73f994b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrContains = require('../array/contains'); -var objContains = require('../object/contains'); - - /** - */ - module.exports = make(arrContains, objContains); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js deleted file mode 100644 index 300e03c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrEvery = require('../array/every'); -var objEvery = require('../object/every'); - - /** - */ - module.exports = make(arrEvery, objEvery); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js deleted file mode 100644 index 38757005..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js deleted file mode 100644 index 14317e64..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrFind = require('../array/find'); -var objFind = require('../object/find'); - - /** - * Find value that returns true on iterator check. - */ - module.exports = make(arrFind, objFind); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js deleted file mode 100644 index 6e28dcb1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrForEach = require('../array/forEach'); -var objForEach = require('../object/forOwn'); - - /** - */ - module.exports = make(arrForEach, objForEach); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js deleted file mode 100644 index 029d27bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ - - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - module.exports = makeCollectionMethod; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js deleted file mode 100644 index fc157f53..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var isObject = require('../lang/isObject'); -var values = require('../object/values'); -var arrMap = require('../array/map'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - module.exports = map; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js deleted file mode 100644 index a8490e7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMax = require('../array/max'); -var objMax = require('../object/max'); - - /** - * Get maximum value inside collection - */ - module.exports = make(arrMax, objMax); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js deleted file mode 100644 index 51d9f148..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMin = require('../array/min'); -var objMin = require('../object/min'); - - /** - * Get minimum value inside collection. - */ - module.exports = make(arrMin, objMin); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js deleted file mode 100644 index 9b283776..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js deleted file mode 100644 index 4c075735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrReduce = require('../array/reduce'); -var objReduce = require('../object/reduce'); - - /** - */ - module.exports = make(arrReduce, objReduce); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js deleted file mode 100644 index 2a92e3b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js deleted file mode 100644 index 244e33e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js +++ /dev/null @@ -1,19 +0,0 @@ -var isArray = require('../lang/isArray'); -var objSize = require('../object/size'); - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js deleted file mode 100644 index 48fd252e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrSome = require('../array/some'); -var objSome = require('../object/some'); - - /** - */ - module.exports = make(arrSome, objSome); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date.js deleted file mode 100644 index 1cde1a95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js deleted file mode 100644 index 85905c5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - module.exports = dayOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js deleted file mode 100644 index 1131cdcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js +++ /dev/null @@ -1,130 +0,0 @@ -var totalDaysInMonth = require('./totalDaysInMonth'); -var totalDaysInYear = require('./totalDaysInYear'); -var convert = require('../time/convert'); - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - module.exports = diff; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js deleted file mode 100644 index f9526ce4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ - - // en-US (English, United States) - module.exports = { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js deleted file mode 100644 index 71ebadb5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ - - // pt-BR (Brazillian Portuguese) - module.exports = { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js deleted file mode 100644 index 723fc103..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js +++ /dev/null @@ -1,14 +0,0 @@ -var mixIn = require('../object/mixIn'); -var enUS = require('./i18n/en-US'); - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - module.exports = activeLocale; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js deleted file mode 100644 index 4212870b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - module.exports = isLeapYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js deleted file mode 100644 index 4097d29b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -var startOf = require('./startOf'); - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - module.exports = isSame; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js deleted file mode 100644 index 8ea2b171..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -var some = require('../array/some'); - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - var match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else if ((match = TIME_ZONE.exec(str))) { - var match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - module.exports = parseISO8601; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js deleted file mode 100644 index 072bc0ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -var clone = require('../lang/clone'); - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - module.exports = startOf; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js deleted file mode 100644 index f033d10f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js +++ /dev/null @@ -1,118 +0,0 @@ -var pad = require('../number/pad'); -var i18n = require('./i18n_'); -var dayOfTheYear = require('./dayOfTheYear'); -var timezoneOffset = require('./timezoneOffset'); -var timezoneAbbr = require('./timezoneAbbr'); -var weekOfTheYear = require('./weekOfTheYear'); - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - module.exports = strftime; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js deleted file mode 100644 index b1006875..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -var timezoneOffset = require('./timezoneOffset'); - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - module.exports = timezoneAbbr; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js deleted file mode 100644 index 9492dceb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -var pad = require('../number/pad'); - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - module.exports = timezoneOffset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js deleted file mode 100644 index 8aafeb84..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js +++ /dev/null @@ -1,25 +0,0 @@ -var isDate = require('../lang/isDate'); -var isLeapYear = require('./isLeapYear'); - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - module.exports = totalDaysInMonth; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js deleted file mode 100644 index b4b7e9b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isLeapYear = require('./isLeapYear'); - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - module.exports = totalDaysInYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js deleted file mode 100644 index dd51b7f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -var dayOfTheYear = require('./dayOfTheYear'); - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - module.exports = weekOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md deleted file mode 100644 index 1f390fbc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md +++ /dev/null @@ -1,773 +0,0 @@ -# array # - -Array utilities. - - - - -## append(arr1, arr2):Array - -Appends an array to the end of the other. -The first array will be modified and will contain the appended items. - -See: [`union()`](#union), [`combine()`](#combine) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -append(foo, bar); // ['a', 'b', 'b', 'd'] -``` - - - -## collect(arr, callback, [thisObj]):Array - -Maps the items in `arr` and concatenates the resulting arrays. - -See: [`map()`](#map) - -```js -collect([1, 2, 3], function(val) { - return [val, val % 2]; -}); // [1, 1, 2, 0, 3, 1]; - -collect(['a', 'bb', ''], function(val) { - return val.split(''); -}); // ['a', 'b', 'b'] -``` - -It also supports a shorthand syntax: - -```js -var items = [{ a: [1] }, { b: 'foo' }, { a: [2, 3] }]; -collect(items, 'a'); // [1, 2, 3]; -``` - - - -## combine(arr1, arr2):Array - -Combines an array with all the items of another. -The first array will be modified and will contain the combined items. -Does not allow duplicates and is case and type sensitive. - -See: [`union()`](#union), [`append()`](#append) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -combine(foo, bar); // ['a', 'b', 'd'] -``` - - - -## compact(arr):Array - -Returns a new Array without any `null` or `undefined` values. Note that it will -keep empty strings and other falsy values (simillar to Ruby Array#compact). - -```js -var arr = [0, 1, null, false, '', 'foo', undefined, 'bar']; -compact(arr); // [0, 1, false, '', 'foo', 'bar']; -``` - - - -## contains(arr, value):Boolean - -Checks if Array contains value. Alias to `indexOf(arr, val) !== -1`. - -```js -var arr = [1, 2, 3]; -contains(arr, 2); // true -contains(arr, 'foo'); // false -``` - - - -## difference(...arrs):Array - -Return a new Array with elements that aren't present in the other Arrays -besides the first one. - -Works like [Python set#difference](http://docs.python.org/library/stdtypes.html#set.difference). - -It will remove duplicates. - -See: [`xor()`](#xor), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -difference(a, b); // ['a', 'b'] -``` - - - -## every(arr, callback, [thisObj]):Array - -Crossbrowser `Array.every()`. - -Tests whether all elements in the array pass the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -every(items, isString); // false -every(items, isFunction); // false -every(items, function(val, key, arr){ - return val != null; -}); // true -``` - -more info at [MDN Array#every](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:true}, {id:8, active:true}]; -// all items with `id === 8` -every(items, {id:8}); // false -// `active` is truthy on all items -every(items, 'active'); // true -``` - - - -## filter(arr, callback, [thisObj]):Array - -Crossbrowser `Array.filter()`. - -Creates a new array with all elements that pass the callback test. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var nums = [1, 2, 3, 4, 5, 6]; -var oddNumbers = filter(nums, function(val, key, arr){ - return (val % 2) !== 0; -}); -// > [1, 3, 5] -``` - -more info at [MDN Array#filter](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter) - -Filter also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// filter item that matches all properties/values pairs -filter(arr, {name:'john', beard:false}); -// > [{name:'john', surnname:'connor', beard:false}] -// items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'doe', beard:true}] -``` - -See [`reject()`](#reject) - - - -## find(arr, callback, [thisObj]):void - -Loops through all the items in the Array and returns the first one that passes -a truth test (callback). - -```js -var arr = [123, {a:'b'}, 'foo', 'bar']; -find(arr, isString); // "foo" -find(arr, isNumber); // 123 -find(arr, isObject); // {a:'b'} -``` - -Find also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true} -]; -// first item that matches all properties/values pairs -find(arr, {name:'john'}); // {name:'john', surnname:'connor', beard:false} -// first item where 'beard' is a truthy value -find(arr, 'beard'); // {name:'john', surnname:'doe', beard:true} -``` - -See: [findIndex()](#findIndex) - - - -## findIndex(arr, iterator, [thisObj]):Number - -Loops through the items in the Array and returns the index of the first one -that passes a truth test (callback). - -Returns `-1` if no item was found that passes the truth test. - -```js -var arr = [1, { a: 1 }, 'foo', 'bar']; -findIndex(arr, isString); // 2 -findIndex(arr, isNumber); // 0 -findIndex(arr, isObject); // 1 -findIndex(arr, isRegExp); // -1 -``` - -`findIndex` also supports shorthand notation: - -```js -var pets = [ - { pet: 'dog', name: 'Sam' }, - { pet: 'dog', name: 'Maggie' } -]; - -findIndex(pets, { pet: 'dog' }); // 0 -findIndex(pets, { name: 'Maggie' }); // 1 -``` - -See: [find()](#find) - - - -## flatten(arr, [level]):Array - -Recursively flattens an array. A new array containing all the elements is -returned. If `level` is specified, it will only flatten up to that level. - -### Example - -```js -flatten([1, [2], [3, [4, 5]]]); -// > [1, 2, 3, 4, 5] -flatten([1, [2], [3, [4, 5]]], 1); -// > [1, 2, 3, [4, 5]] -``` - - - -## forEach(arr, callback, [thisObj]):void - -Crossbrowser `Array.forEach()`. - -It allows exiting the iteration early by returning `false` on the callback. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = ['foo', 'bar', 'lorem', 'ipsum']; -forEach(items, function(val, key, arr){ - console.log(key +' : '+ val); - if (val === 'lorem') { - // stop iteration (break) - return false; - } -}); -``` - -more info at [MDN Array#forEach](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach) - - - -## indexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.indexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#indexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf) - - - - -## insert(arr, ...items):Number - -Push items into array only if they aren't contained by it. Returns the new -`length` of the array. - -See: [`remove()`](#remove), [`removeAll()`](#removeAll), -[`contains()`](#contains) - -```js -var arr = ['a', 'b']; -insert(arr, 'a'); // 2 : ['a', 'b'] -insert(arr, 'c'); // 3 : ['a', 'b', 'c'] -insert(arr, 1, 2, 'b'); // 5 : ['a', 'b', 'c', 1, 2] -``` - - - -## intersection(...arrs):Array - -Return a new Array with elements common to all Arrays. - -Similar to Python set#intersection and underscore.js intersection. - -It will remove duplicates. - -See: [`difference()`](#difference), [`xor()`](#xor) - -```js -var a = ['a', 'b', 1], - b = ['c', 1], - c = [1, 2, 3]; -intersection(a, b, c); // [1] -``` - - - -## invoke(arr, methodName[, ...args]):Array - -Call `methodName` on each item of the array passing custom arguments if needed. - -```js -invoke([[3,2,1], [9,5,2]], 'sort'); // [[1,2,3], [2,5,9]] -``` - - - -## join(arr, [separator]):String - -Joins the strings in `arr`, inserting `separator` between each value. - -This ignores null values and empty strings that are in the array. `separator` -defaults to an empty string. This will convert all non-string objects in the -array to a string. - -### Example - -```js -join(['a', 'b', 'c']); // 'abc' -join(['foo', 'bar'], ', '); // 'foo, bar' -join([null, 'foo', '', 'bar', undefined], ':'); // 'foo:bar' -``` - - - -## lastIndexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.lastIndexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#lastIndexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf) - - - -## map(arr, callback, [thisObj]]):Array - -Crossbrowser `Array.map()`. - -Creates a new array with the results of calling a provided function on every -element in this array. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -See: [`collect()`](#collect) - -```js -var nums = [1,2,3,4]; -var double = map(nums, function(val, key, arr){ - return val * 2; -}); -// > [2, 4, 6, 8] -``` - -more info at [MDN Array#map](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map) - -It also supports a shorthand notation which can be used to achieve same result -as [`array/pluck`](#pluck): - -```js -var src = ['lorem', 'ipsum', 'foo', 'amet']; -// grab the "length" property of all items -var lengths = map(src, 'length'); // [5, 5, 3, 4] -``` - - - -## max(arr, [iterator], [thisObj]):* - -Returns maximum value inside array or use a custom iterator to define how items -should be compared. - -See: [`min()`](#min) - -```js -max([10, 2, 7]); // 10 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - -It also supports a shorthand notation: - -```js -max(['foo', 'lorem', 'amet'], 'length'); // "lorem" -``` - - - -## min(arr, [iterator], [thisObj]):* - -Returns minimum value inside array or use a custom iterator to define how items -should be compared. - -See: [`max()`](#max) - -```js -min([10, 2, 7]); // 2 -min(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'foo' -``` - -It also supports a shorthand notation: - -```js -min(['foo', 'lorem', 'amet'], 'length'); // "foo" -``` - - - -## pick(arr):* - -Gets a random item and remove it from the array. - -### Example: - - var arr = [1, 2, 3, 4, 5, 6]; - var item_1 = pick(arr); // 4 - var item_2 = pick(arr); // 1 - console.log(arr); // [2, 3, 5, 6] - - - -## pluck(arr, propName):Array - -Extract a list of property values. - -See: [`function/prop()`](function.html#prop) - -```js -var users = [{name : 'John', age: 21}, {name: 'Jane', age : 27}]; -var names = pluck(users, 'name'); // ["John", "Jane"] -var ages = pluck(users, 'age'); // [21, 27] -``` - - - -## range([start], stop[, step]):Array - -Creates a new Array with all the values inside the range. Works similarly to -Python#range or PHP#range. - -### Arguments - - 1. `[start]` (Number) : Range start. Default is `0`. - 2. `stop` (Number) : Range limit. - 3. `[step]` (Number) : Step size. Default is `1`. - -### Example - -```js -range(5); // [0, 1, 2, 3, 4, 5] -range(0, 5); // [0, 1, 2, 3, 4, 5] -range(0, 5, 2); // [0, 2, 4] -range(20, 40, 5); // [20, 25, 30, 35, 40] -``` - - - -## reduce(arr, fn):* - -Crossbrowser `Array.reduce()`. - -Apply a function against an accumulator and each value of the array (from -left-to-right) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduce](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce) - - - -## reduceRight(arr, fn):* - -Crossbrowser `Array.reduceRight()`. - -Apply a function simultaneously against two values of the array (from -right-to-left) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) - - - -## reject(arr, fn, thisObj):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var numbers = [1, 2, 3, 4, 5, 6]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4, 6] -``` - -It also supports a shorthand syntax: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// reject items that matches all properties/values pairs -reject(arr, {name:'john'}); -// > [{name:'jane', surnname:'doe', beard:false}] -// reject items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'connor', beard:false}, -// {name:'jane', surname:'doe', beard:false}] -``` - - - -## remove(arr, item):void - -Remove a single item from the array. - -IMPORTANT: it won't remove duplicates, just a single item. - -### Example - -```js -var foo = [1, 2, 3, 4]; -remove(foo, 2); -console.log(foo); // [1, 3, 4] -``` - - - -## removeAll(arr, item):void - -Remove all instances of an item from the array. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2]; -removeAll(foo, 2); -console.log(foo); // [1, 3, 4]; -``` - - - -## shuffle(arr):Array - -Returns a new Array with items randomly sorted (shuffled). Similar to Ruby Array#shuffle. - -### Example - -```js -var arr = ['a', 'b', 'c', 'd', 'e']; -shuffle(arr); // ['b', 'd', 'e', 'c', 'a'] -``` - - - -## some(arr, callback, [thisObj]):Array - -Crossbrowser `Array.some()`. - -Tests whether some element in the array passes the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -some(items, isString); // true -some(items, isFunction); // false -``` - -more info at [MDN Array#some](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:false}, {id:8, active:false}]; -// at least one item with `id === 8` -some(items, {id:8}); // true -// `active` is truthy on at least one item -some(items, 'active'); // true -``` - -see also: [`object/matches`](object.html#matches) - - - -## sort(arr, [compareFn]):Array - -Returns a sorted Array using the [Merge Sort](http://en.wikipedia.org/wiki/Merge_sort) algorithm (stable sort). - -The `Array.prototype.sort` browser implementations differ since the sorting algorithm isn't described in the ES spec - [in V8 it isn't stable](http://code.google.com/p/v8/issues/detail?id=90) and [on Firefox it is stable](https://bugzilla.mozilla.org/show_bug.cgi?id=224128) - so this function doesn't use the browser native implementation and is recommended in cases where a stable sort is required (items should preserve same order if already sorted). - -**Important:** It does logical comparisson by default (greater/less than) and -not a string comparisson like the native `Array#sort`. - -### compareFn - -If `compareFn` is supplied elements are sorted based on the value returned by -the `compareFn`. - - - If `compareFn(a, b)` is less than `0`, sort `a` to a lower index than `b`. - - If `compareFn(a, b)` returns `0`, leave `a` and `b` unchanged with respect - to each other, but sorted with respect to all different elements. - - If `compareFn(a, b)` is greater than `0`, sort `b` to a lower index than - `a`. - -### Example - -```js -sort([187, 23, 47, 987, 12, 59, 0]); // [0, 12, 23, 47, 59, 187, 987] -sort(['a', 'z', 'c', 'beta', 'b']); // ['a', 'b', 'beta', 'c', 'z'] - -// ['sit', 'amet', 'lorem', 'ipsum'] -sort(['lorem', 'ipsum', 'sit', 'amet'], function(a, b){ - // sort by length, items with same length - // will keep the relative order (stable) - return a.length - b.length; -}); - -// [4, 3, 2, 1] -sort([2, 3, 1, 4], function(a, b){ - // reverse sort - return b - a; -}); -``` - - - -## split(arr, [segments]):Array - -Splits an array into a fixed number of segments. - -The number of segments is specified by `segments` and defaults to 2. If the -array cannot be evenly split, the first segments will contain the extra items. -If `arr` is empty, an empty array is returned. If `arr.length` is less than -`segments`, then the resulting array will have `arr.length` number of -single-element arrays. - -### Example -```js -split([1, 2, 3, 4, 5], 3) // [ [1, 2], [3, 4], [5] ] -split([1, 2, 3, 4, 5]) // [ [1, 2, 3], [4, 5] ] -split([]) // [] -split([1, 2], 3) // [ [1], [2] ] -``` - - - -## toLookup(arr, key):Object - -Create an object that indexes the items in the array by a key. If `key` is a function, the key for each value in the resulting object will be the result of calling the function with the value as an argument. Otherwise `key` specifies the property on each value to use as the key. - -### Example - -```js -var foo = [{ name: 'a', thing: 1 }, { name: 'b', thing: 2 }]; -// { a: { name: 'a', thing: 1 }, b: { name: 'b', thing: 2 } } -toLookup(foo, 'name'); -// same as above -toLookup(foo, function (value) { return value.name; }); -``` - - - -## union(...arrs):Array - -Concat multiple arrays removing duplicates. - -```js -var a = ['a', 'b'], - b = ['c', 'a'], - c = [1, 'b', 2, 3, 'a']; - -//note that unique remove from begin to end -union(a, b, c); // ['c', 1, 'b', 2, 3, 'a'] -``` - - - -## unique(arr):Array - -Return a new Array of unique items. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2, 3, 4]; -var bar = unique(foo); -console.log(foo); // [1, 2, 3, 4]; -``` - - - -## xor(arr1, arr2):Array - -Exclusive OR. Returns items that are present in a single array. - -Works like [Python set#symmetric_difference](http://docs.python.org/library/stdtypes.html#set.symmetric_difference) renamed for brevity. - -It will remove duplicates. - -See: [`difference()`](#difference), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -xor(a, b); // ['a', 'b', 'c'] -``` - - - -## zip(...arrs):Array - -Groups the elements of each array at their corresponding indexes. - -Useful for separate data sources that are coordinated through matching array -indexes. For a matrix of nested arrays, `zip.apply(...)` can transpose the -matrix in a similar fashion. - -```js -// [['moe', 30, true], ['larry', 40, false], ['curly', 50, false]] -zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); -``` - - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md deleted file mode 100644 index 2ffcab10..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md +++ /dev/null @@ -1,233 +0,0 @@ -# collection # - -Methods for dealing with collections (Array or Objects). - - - -## contains(list, value):Boolean - -Checks if collection contains value. - -```js -contains({a: 1, b: 2, c: 'bar'}, 2); // true -contains([1, 2, 3], 'foo'); // false -``` - -See: [array/contains](array.html#contains), [object/contains](object.html#contains) - - - -## every(list, callback, [thisObj]):Boolean - -Tests whether all values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - -See: [array/every](array.html#every), [object/every](object.html#every) - - - -## filter(list, callback, [thisObj]):Array - -Filter collection properties. - -See: [array/filter](array.html#filter), [object/filter](object.html#filter) - - - -## find(list, callback, [thisObj]):* - -Loops through all the values in the collection and returns the first one that -passes a truth test (callback). - -**Important:** loop order over objects properties isn't guaranteed to be the -same on all environments. - -```js -find({a: 'foo', b: 12}, isString); // 'foo' -find(['foo', 12], isNumber); // 12 -``` - -See: [array/find](array.html#find), [object/find](object.html#find) - - - -## forEach(list, callback, [thisObj]) - -Loop through all values of the collection. - -See: [array/forEach](array.html#forEach), [object/forOwn](object.html#forOwn) - - - -## map(list, callback, [thisObj]):Array - -Returns a new collection where the properties values are the result of calling -the callback for each property in the original collection. - -See: [array/map](array.html#map), [object/map](object.html#map) - - - -## max(list, [iterator]):* - -Returns maximum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`min()`](#min), [array/max](array.html#max), [object/max](object.html#max) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(list, [iterator]):* - -Returns minimum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`max()`](#max), [array/min](array.html#min), [object/min](object.html#min) - -```js -min([10, 2, 7]); // 2 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## pluck(list, propName):Array - -Extract a list of property values. - -```js -var users = [ - { - name : 'John', - age : 21 - }, - { - name : 'Jane', - age : 27 - } -]; - -pluck(users, 'name'); // ["John", "Jane"] -pluck(users, 'age'); // [21, 27] - -users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // ['John', 'Mary'] -``` - -See: [array/pluck](array.html#pluck), [object/pluck](object.html#pluck) - - - -## reduce(list, callback, initial, [thisObj]):* - -Apply a function against an accumulator and each value in the collection as to -reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - -See: [array/reduce](array.html#reduce), [object/reduce](object.html#reduce) - - - -## reject(list, fn, [thisObj]):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -### Example - -```js -var numbers = [1, 2, 3, 4, 5]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4] - -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // [2, 4] -``` - -See: [array/reject](array.html#reject), [object/reject](object.html#reject) - - - -## size(list):Number - -Returns the number of values in the collection. - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -size([1,2,3]); // 3 -size(null); // 0 -``` - -See: [object/size](object.html#size) - - - -## some(list, callback, [thisObj]):Boolean - -Tests whether any values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -some(obj, isString); // true -some([1, 2, 3], isNumber) // true -some([1, 2, 3], isString) // false -``` - -See: [array/some](array.html#some), [object/some](object.html#some) - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md deleted file mode 100644 index b3f7f40e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md +++ /dev/null @@ -1,295 +0,0 @@ -# date # - -Date utilities. - - -## dayOfTheYear(date):Number - -How many days elapsed since begining of the year (following gregorian -calendar). - -```js -// Jan 1st -dayOfTheYear(new Date(2013, 0, 1)); // 1 -// Dec 31th -dayOfTheYear(new Date(2013, 11, 31)); // 364 -``` - - - -## diff(date1, date2, [unitName]):Number - -Calculate the difference between dates (range). - -The returned value is always positive. The default `unitName` is `"ms"`. - -Available units: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`, -`millisecond`. - -See: [`time/convert()`](time.html#convert) - -```js -var d1 = new Date(2012, 4, 5); -var d2 = new Date(2013, 4, 8); -diff(d1, d2); // 31795200000 -diff(d1, d2, 'hour'); // 8832 -diff(d1, d2, 'week'); // 52.57142857142857 -diff(d1, d2, 'month'); // 12.096774193548388 -diff(d1, d2, 'year'); // 1.0082191780821919 -``` - - - -## isLeapYear(fullYear|date):Boolean - -Checks if it's a [leap year](http://en.wikipedia.org/wiki/Leap_year) according -to the Gregorian calendar. - -see: [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -isLeapYear(2012); // true -isLeapYear(2013); // false -isLeapYear(new Date(2012, 2, 28)); // true -``` - - -## isSame(date1, date2[, period]):Boolean - -Check if both dates are the "same". - -You can pass an optional *period* used to set the comparisson precision. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -var date1 = new Date(2013, 1, 3); -var date2 = new Date(2013, 2, 9); -isSame(date1, date2); // false -isSame(date1, date2, 'day'); // false -isSame(date1, date2, 'month'); // false -isSame(date1, date2, 'year'); // true -``` - - - -## parseIso(str):Number - -Parses an [ISO8601](http://en.wikipedia.org/wiki/Iso8601) date and returns the -number of milliseconds since January 1, 1970, 00:00:00 UTC, or `NaN` if it is -not a valid ISO8601 date. - -This parses *all* ISO8601 dates, including dates without times, [ordinal -dates](https://en.wikipedia.org/wiki/ISO_8601#Ordinal_dates), and the compact -representation (omitting delimeters). The only exception is [ISO week -dates](https://en.wikipedia.org/wiki/ISO_week_date), which are not parsed. - -If no time zone offset is specified, it assumes UTC time. - -```js -// Jan 01, 1970 00:00 GMT -parseIso('1970-01-01T00:00:00') // 0 -parseIso('1970-001') // 0 -parseIso('1970-01-01') // 0 -parseIso('19700101T000000.00') // 0 -parseIso('1970-01-01T02:00+02:00') // 0 - -// Jan 02, 2000 20:10 GMT+04:00 -parseIso('2000-01-02T20:10+04:00') // 946829400000 -``` - - - -## startOf(date, period):Date - -Get a new Date at the start of the period. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -// Apr 05 2013 11:27:43 -var date = new Date(2013, 3, 5, 11, 27, 43, 123); -startOf(date, 'year'); // Jan 01 2013 00:00:00 -startOf(date, 'month'); // Apr 01 2013 00:00:00 -startOf(date, 'day'); // Apr 05 2013 00:00:00 -startOf(date, 'hour'); // Apr 05 2013 11:00:00 -``` - - - -## strftime(date, format, [l10n]):String - -Format date based on strftime format. - -Replaced tokens: - -<dl> -<dt>%a</dt><dd> locale's abbreviated weekday name.</dd> -<dt>%A</dt><dd> locale's full weekday name.</dd> -<dt>%b</dt><dd> locale's abbreviated month name.</dd> -<dt>%B</dt><dd> locale's full month name.</dd> -<dt>%c</dt><dd> locale's appropriate date and time representation.</dd> -<dt>%C</dt><dd> century number (the year divided by 100 and truncated -to an integer) as a decimal number [00..99].</dd> -<dt>%d</dt><dd> day of the month as a decimal number [01..31].</dd> -<dt>%D</dt><dd>same as %m/%d/%y.</dd> -<dt>%e</dt><dd> day of the month as a decimal number [1..31]; -a single digit is preceded by a space.</dd> -<dt>%F</dt><dd>The ISO 8601 date format (%Y-%m-%d)</dd> -<dt>%h</dt><dd>same as %b.</dd> -<dt>%H</dt><dd> hour (24-hour clock) as a decimal number [00..23].</dd> -<dt>%I</dt><dd> hour (12-hour clock) as a decimal number [01..12].</dd> -<dt>%j</dt><dd> day of the year as a decimal number [001..366].</dd> -<dt>%L</dt><dd> zero-padded milliseconds [000..999]</dd> -<dt>%m</dt><dd> month as a decimal number [01..12].</dd> -<dt>%M</dt><dd> minute as a decimal number [00..59].</dd> -<dt>%n</dt><dd> newline character.</dd> -<dt>%p</dt><dd> locale's equivalent of either "am" or "pm"</dd> -<dt>%P</dt><dd> locale's equivalent of either "AM" or "PM"</dd> -<dt>%r</dt><dd> time in a.m. and -p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p.</dd> -<dt>%R</dt><dd> time in 24 hour notation (%H:%M).</dd> -<dt>%s</dt><dd> seconds since Epoch (1970-01-01 00:00:00 UTC)</dd> -<dt>%S</dt><dd> second as a decimal number [00..60].</dd> -<dt>%t</dt><dd> tab character.</dd> -<dt>%T</dt><dd> time (%H:%M:%S).</dd> -<dt>%u</dt><dd> weekday as a decimal number [1..7], with 1 representing -Monday.</dd> -<dt>%U</dt><dd> week number of the year (Sunday as the first day of -the week) as a decimal number [00..53].</dd> -<del><dt>%V</dt><dd> week number of the year (Monday as the first day of the -week) as a decimal number [01..53]. If the week containing 1 January has -four or more days in the new year, then it is considered week 1. Otherwise, -it is the last week of the previous year, and the next week is week 1.</dd></del> -<dt>%w</dt><dd> weekday as a decimal number [0..6], with 0 representing -Sunday.</dd> -<dt>%W</dt><dd> week number of the year (Monday as the first day of -the week) as a decimal number [00..53]. All days in a new year preceding -the first Monday are considered to be in week 0.</dd> -<dt>%x</dt><dd> locale's appropriate date representation.</dd> -<dt>%X</dt><dd> locale's appropriate time representation.</dd> -<dt>%y</dt><dd> year without century as a decimal number [00..99].</dd> -<dt>%Y</dt><dd> year with century as a decimal number.</dd> -<dt>%Z</dt><dd> timezone name or abbreviation, or by no bytes -if no timezone information exists.</dd> -<dt>%%</dt><dd>is replaced by %.</dd> -</dl> - -```js -var date = new Date(2013, 3, 8, 9, 2, 4); -strftime(date, '%Y-%m-%d'); // "2013-04-08" -strftime(date, '%R'); // "09:02" -strftime(date, '%Y-%m-%dT%H:%M:%S%z'); // "2013-04-08T09:02:04+0000" -``` - -You can also set a custom locale: - -```js -var ptBr = require('mout/date/i18n/pt-BR'); -strftime(date, '%a, %d %b', ptBr); // 'Seg, 08 Abr' -strftime(date, '%A, %d %B', ptBr); // 'Segunda, 08 Abril' -``` - -To set it globally: - -```js -require('mout/date/i18n_').set( customLocaleData ); -``` - -See [date/i18n](https://github.com/mout/mout/tree/master/src/date/i18n) -for localization examples. - - - -## timezoneAbbr(date):String - -Return timezone abbreviation or similar data. - -The result will vary based on the OS/browser since some environments doesn't -provide enough info about the current locale. - -```js -// IE 7-8 -timezoneAbbr(new Date()); // "-0500" -// Chrome, FF, V8 -timezoneAbbr(new Date()); // "EST" -``` - - - -## timezoneOffset(date):String - -Return time zone as hour and minute offset from UTC (e.g. +0900). - -It's important to note that JavaScript Date object will use the system locale -info to determinate the [timezone -offset](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) -and that daylight saving time affects the result. - -```js -// if system locale is EST -timezoneOffset(new Date()); // -0500 -``` - - - -## totalDaysInMonth(fullYear, monthIndex):Number - -Returns the amount of days in the month taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear) - -```js -totalDaysInMonth(2008, 1); // 29 (leap year) -totalDaysInMonth(2009, 1); // 28 - -// you can also pass a Date object as single argument -totalDaysInMonth( new Date(2013, 0, 1) ); // 31 -``` - - -## totalDaysInYear(fullYear):Number - -Returns the amount of days in the year taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear), [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -totalDaysInYear(2008); // 366 (leap year) -totalDaysInYear(2009); // 365 - -// you can also pass a Date object as single argument -totalDaysInYear( new Date(2013, 0, 1) ); // 365 -``` - - - -## weekOfTheYear(date, [firstDayOfWeek]):Number - -Returns how many weeks elapsed since start of the year (`0..53`). - -`firstDayOfWeek` can be `0` (Sunday) or `1` (Monday). By default weeks start at -Sunday. - -It will return `0` if `date` is before the first `firstDayOfWeek` of the year. - -```js -// Tue Jan 01 2013 -weekOfTheYear( new Date(2013,0,1) ); // 0 -// Wed Jan 09 2013 -weekOfTheYear( new Date(2013,0,9) ); // 1 -// Sun Jan 01 2012 -weekOfTheYear( new Date(2012,0,1) ); // 1 -// Mon Jan 09 2012 -weekOfTheYear( new Date(2012,0,9) ); // 2 -``` - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md deleted file mode 100644 index 2695a025..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md +++ /dev/null @@ -1,174 +0,0 @@ -# function # - -Function*(al)* utilities. - - - -## bind(fn, context, [...args]):Function - -Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - -### Arguments - - 1. `fn` (Function) : Target Function - 2. `context` (Object) : Execution context (object used as `this`) - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`partial()`](#partial), [object/bindAll](./object.html#bindAll) - - - -## compose(...fn):Function - -Returns the composition of a list of functions, where each function consumes -the return value of the function that follows. In math terms, composing the -functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - -```js -function add2(x) { return x + 2 } -function multi2(x) { return x * 2 } -map([1, 2, 3], compose(add2, multi2)); // [4, 6, 8] - -//same as -map([1, 2, 3], function(x){ - return add2( multi2(x) ); -}); -``` - - - -## debounce(fn, delay[, isAsap]):Function - -Creates a function that will delay the execution of `fn` until after `delay` -milliseconds have elapsed since the last time it was invoked. - -Subsequent calls to the debounced function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = debounce(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a debounced-function call and `X` is the actual -callback execution: - - Default - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - - Debounced with `isAsap == true`: - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - -See: [`throttle()`](#throttle) - - -## func(name):Function - -Returns a function that calls a method with given `name` on supplied object. -Useful for iteration methods like `array/map` and `array/forEach`. - -See: [`prop()`](#prop) - -```js -// will call the method `getName()` for each `user` -var names = map(users, func('getName')); -``` - - - -## partial(fn, [...args]):Function - -Return a partially applied function supplying default arguments. - -This method is similar to [`bind`](#bind), except it does not alter the this -binding. - -### Arguments - - 1. `fn` (Function) : Target Function - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`bind()`](#bind) - -```js -function add(a, b){ return a + b } -var add10 = partial(add, 10); -console.log( add10(2) ); // 12 -``` - - - -## prop(name):Function - -Returns a function that gets a property with given `name` from supplied object. -Useful for using in conjunction with `array/map` and/or for creating getters. - -See: [`array/pluck()`](array.html#pluck) - -```js -var users = [{name:"John", age:21}, {name:"Jane", age:25}]; -// ["John", "Jane"] -var names = map(users, prop('name')); -``` - - - -## series(...fn):Function - -Returns a function that will execute all the supplied functions in order and -passing the same parameters to all of them. Useful for combining multiple -`array/forEach` into a single one and/or for debugging. - - -```js -// call `console.log()` and `doStuff()` for each item item in the array -forEach(arr, series(console.log, doStuff)); -``` - - - -## throttle(fn, interval):Function - -Creates a function that, when executed, will only call the `fn` function at -most once per every `interval` milliseconds. - -If the throttled function is invoked more than once during the wait timeout, -`fn` will also be called on the trailing edge of the timeout. - -Subsequent calls to the throttled function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = throttle(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a throttled-function call and `X` is the actual -`fn` execution: - - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X X X X X X X X X X X - -See: [`debounce()`](#debounce) - - -## timeout(fn, millis, context, [...args]):Number - -Functions as a wrapper for `setTimeout`. Calls a the function `fn` after a given delay `millis` in milliseconds. -The function is called within the specified context. The return value can be used to clear the timeout using `clearTimeout`. - -```js -var id = timeout(doStuff, 300, this); - -clearTimeout(id); -``` - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md deleted file mode 100644 index 56d7879b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md +++ /dev/null @@ -1,385 +0,0 @@ -# lang # - -Language Utilities. Easier inheritance, scope handling, type checks. - - - -## clone(val):* - -Clone native types like Object, Array, RegExp, Date and primitives. - -This method will not clone values that are referenced within `val`. It will -only copy the value reference to the new value. If the value is not a plain -object but is an object, it will return the value unchanged. - -### Example - -```js -var a = { foo: 'bar' }; -var b = clone(a); -console.log(a === b); // false -console.log(a.foo === b.foo); // true - -var c = [1, 2, 3]; -var d = clone(b); -console.log(c === d); // false -console.log(c); // [1, 2, 3] -``` - -See: [`deepClone()`](#deepClone) - - - -## createObject(parent, [props]):Object - -Create Object using prototypal inheritance and setting custom properties. - -Mix between [Douglas Crockford Prototypal Inheritance](http://javascript.crockford.com/prototypal.html) and the EcmaScript 5 `Object.create()` method. - -### Arguments - - 1. `parent` (Object) : Parent Object - 2. `[props]` (Object) : Object properties - -### Example - -```js -var base = { - trace : function(){ - console.log(this.name); - } -}; - -var myObj = createObject(base, { - name : 'Lorem Ipsum' -}); - -myObject.trace(); // "Lorem Ipsum" -``` - - - -## ctorApply(constructor, args):Object - -Do `Function.prototype.apply()` on a constructor while maintaining prototype -chain. - -```js -function Person(name, surname) { - this.name = name; - this.surname = surname; -} - -Person.prototype.walk = function(){ - console.log(this.name +' is walking'); -}; - -var args = ['John', 'Doe']; - -// "similar" effect as calling `new Person("John", "Doe")` -var john = ctorApply(Person, args); -john.walk(); // "John is walking" -``` - - - -## deepClone(val, [instanceClone]):* - -Deep clone native types like Object, Array, RegExp, Date and primitives. - -The `instanceClone` function will be invoked to clone objects that are not -"plain" objects (as defined by [`isPlainObject`](#isPlainObject)) if it is -provided. If `instanceClone` is not specified, it will not attempt to clone -non-plain objects, and will copy the object reference. - -### Example - -```js -var a = {foo:'bar', obj: {a:1, b:2}}; -var b = deepClone(a); // {foo:'bar', obj: {a:1, b:2}} -console.log( a === b ); // false -console.log( a.obj === b.obj ); // false - -var c = [1, 2, [3, 4]]; -var d = deepClone(c); // [1, 2, [3, 4]] -var e = c.concat(); // [1, 2, [3, 4]] - -console.log( c[2] === d[2] ); // false -// concat doesn't do a deep clone, arrays are passed by reference -console.log( e[2] === d[2] ); // true - -function Custom() { } -function cloneCustom(x) { return new Custom(); } -var f = { test: new Custom() }; -var g = deepClone(f, cloneCustom); -g.test === f.test // false, since new Custom instance will be created -``` - -See: [`clone()`](#clone) - - - -## defaults(val, ...defaults):void - -Return first value that isn't `null` or `undefined`. - - function doSomethingAwesome(foo, bar) { - // default arguments - foo = defaults(foo, 'lorem'); - bar = defaults(bar, 123); - // ... - } - - - -## inheritPrototype(child, parent):void - -Inherit prototype from another Object. - -```js -function Foo(name){ - this.name = name; -} -Foo.prototype = { - getName : function(){ - return this.name; - } -}; - -function Bar(name){ - this.name = name; -} -//should be called before calling constructor -inheritPrototype(Bar, Foo); - -var myObj = new Bar('lorem ipsum'); -myObj.getName(); // "lorem ipsum" -``` - - -## is(x, y):Boolean - -Check if both values are identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -is(NaN, NaN); // true -is(-0, +0); // false -is('a', 'b'); // false -``` - -See: [`isnt()`](#isnt) - - - -## isnt(x, y):Boolean - -Check if both values are not identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -isnt(NaN, NaN); // false -isnt(-0, +0); // true -isnt('a', 'b'); // true -``` - -See: [`is()`](#is) - - - - -## isArguments(val):Boolean - -If value is an "Arguments" object. - - - -## isArray(val):Boolean - -If value is an Array. Uses native ES5 `Array.isArray()` if available. - - - -## isBoolean(val):Boolean - -If value is a Boolean. - - - -## isDate(val):Boolean - -If value is a Date. - - - -## isEmpty(val):Boolean - -Checks if Array/Object/String is empty. - - -```js -isEmpty(''); // true -isEmpty('bar'); // false -isEmpty([]); // true -isEmpty([1, 2]); // false -isEmpty({}); // true -isEmpty({a:1, b:2}); // false -``` - - -## isFinite(val):Boolean - -Checks if value is Finite. - -Note: This is not the same as native `isFinite`, which will return `true` for -booleans and empty strings. See http://es5.github.com/#x15.1.2.5. - - - -## isFunction(val):Boolean - -If value is a Function. - - - -## isKind(val, kind):Boolean - -If value is of "kind". (used internally by some of the *isSomething* checks). - -Favor the other methods since strings are commonly mistyped and also because -some "kinds" can only be accurately checked by using other methods (e.g. -`Arguments`), some of the other checks are also faster. - -```js -isKind([1,2], 'Array'); // true -isKind(3, 'Array'); // false -isKind(3, 'Number'); // true -``` - -See: [`kindOf()`](#kindOf) - - - -## isInteger(val):Boolean - -Check if value is an integer. - -```js -isInteger(123); // true -isInteger(123.45); // false -isInteger({}); // false -isInteger('foo'); // false -isInteger('123'); // false -``` - - - -## isNaN(val):Boolean - -Check if value is `NaN`. - -Note: This is not the same as native `isNaN`, which will return `true` for -`undefined` and other values. See [ES5 isNaN](http://es5.github.com/#x15.1.2.4) - - - -## isNull(val):Boolean - -If value is `null`. - - - -## isNumber(val):Boolean - -If value is a Number. - - - -## isObject(val):Boolean - -If value is an Object. - - - -## isPlainObject(val):Boolean - -If the value is an Object created by the Object constructor. - - - -## isRegExp(val):Boolean - -If value is a RegExp. - - - -## isString(val):Boolean - -If value is a String. - - - -## isUndefined(val):Boolean - -If value is `undefined`. - - - -## kindOf(val):String - -Gets kind of value (e.g. "String", "Number", "RegExp", "Null", "Date"). -Used internally by `isKind()` and most of the other *isSomething* checks. - -```js -kindOf([1,2]); // "Array" -kindOf('foo'); // "String" -kindOf(3); // "Number" -``` - -See: [`isKind()`](#isKind) - - -## toArray(val):Array - -Convert array-like object into Array or wrap value into Array. - -```js -toArray({ - "0" : "foo", - "1" : "bar", - "length" : 2 -}); // ["foo", "bar"] - -function foo(){ - return toArray(arguments); -} -foo("lorem", 123); // ["lorem", 123] - -toArray("lorem ipsum"); // ["lorem ipsum"] -toArray(window); // [window] -toArray({foo:"bar", lorem:123}); // [{foo:"bar", lorem:123}] -``` - -See: object/values() - - - -## toString(val):String - -Convert any value to its string representation. - -Will return an empty string for `undefined` or `null`, otherwise will convert -the value to its string representation. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md deleted file mode 100644 index f45be3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md +++ /dev/null @@ -1,298 +0,0 @@ -# math # - -Math utilities. - - -## ceil(val[, step]):Number - -Round value up to full steps. Similar to `Math.ceil()` but can round value -to an arbitrary *radix*. - - ceil(7.2); // 8 - ceil(7.8); // 8 - ceil(7, 5); // 10 - ceil(11, 5); // 15 - ceil(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`floor()`](#floor), [`countSteps()`](#countSteps) - - - -## clamp(val, min, max):Number - -Clamps value inside range. - -`clamp()` is extremely useful in cases where you need to limit a value inside -a certain range. So instead of doing a complex `if/else` to filter/process the -value you can restrict it to always be inside the desired range: - - clamp(-5, 0, 10); // 0 - clamp(7, 1, 10); // 7 - clamp(8, 1, 10); // 8 - clamp(10, 1, 10); // 10 - clamp(11, 1, 10); // 10 - -If the value is smaller than `min` it returns the `min`, if `val` is higher -than `max` it returns `max`. - -### Common use cases - -Any situation where you need to limit a number inside a range like: slider -position, image galleries <small>(so user can't skip to an image that doesn't -exist)</small>, drag and drop, scroll boundaries, etc. - -See: [`loop()`](#loop) - - - - -## countSteps(val, step[, overflow]):Number - -Count number of full steps. - -### Arguments: - - 1. `val` (Number) : Value. - 2. `step` (Number) : Step size. - 3. `[overflow]` (Number) : Maximum number of steps, nSteps will loop if -`>=` than overflow. - - -Count steps is very useful for cases where you need to know how many "full -steps" the number *completed*. Think of it as a division that only returns -integers and ignore remainders. - - countSteps(3, 5); // 0 - countSteps(6, 5); // 1 - countSteps(12, 5); // 2 - countSteps(18, 5); // 3 - countSteps(21, 5); // 4 - -You can also set an `overflow` which will reset the *counter* before reaching -this number. - - countSteps(3, 5, 3); // 0 - countSteps(6, 5, 3); // 1 - countSteps(12, 5, 3); // 2 - countSteps(18, 5, 3); // 0 - countSteps(21, 5, 3); // 1 - -### Common use cases - -#### How many items fit inside an area: - - var containerWidth = 100; - var itemWidth = 8; - var howManyFit = countSteps(containerWidth, itemWidth); // 12 - -#### Split value into different scales or convert value from one scale to another - -From [mout/time/parseMs](time.html#parseMs): - - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - // {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} - parseMs(2348765454); - - - -## floor(val[, step]):Number - -Round value down to full steps. Similar to `Math.floor()` but can round value -to an arbitrary *radix*. (formerly `snap`) - - floor(7.2); // 7 - floor(7.8); // 7 - floor(7, 5); // 5 - floor(11, 5); // 10 - floor(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -## inRange(val, min, max[, threshold]):Boolean - -Checks if value is inside the range. - - inRange(-6, 1, 10); // false - inRange( 5, 1, 10); // true - inRange(12, 1, 10); // false - -The threshold can be useful when you want granular control of what should match -and/or the precision could change at runtime or by some configuration option, -avoids the clutter of adding/subtracting the `threshold` from `mix` and `max`. - - inRange(12, 1, 10, 2); // true - inRange(13, 1, 10, 2); // false - -### Common use cases - -Anything that needs to check if value is inside a range, be it collision -detection, limiting interaction by mouse position, ignoring parts of the logic -that shouldn't happen if value isn't valid, simplify `if/else` conditions, -making code more readable, etc... - - - - -## isNear(val, target, threshold):Boolean - -Check if value is close to target. - -Similar to `inRange()` but used to check if value is close to a certain value -or match the desired value. Basically to simplify `if/else` conditions and to -make code clearer. - - isNear( 10.2, 10, 0.5); // true - isNear( 10.5, 10, 0.5); // true - isNear(10.51, 10, 0.5); // false - -### Common use cases - -Games where a certain action should happen if an *actor* is close to a target, -gravity fields, any numeric check that has some tolerance. - - - - -## lerp(ratio, start, end):Number - -Linear interpolation. - - lerp(0.5, 0, 10); // 5 - lerp(0.75, 0, 10); // 7.5 - -### Common use cases - -Linear interpolation is commonly used to create animations of elements moving -from one point to another, where you simply update the current ratio (which in -this case represents time) and get back the position of the element at that -"frame". - -The core idea of `lerp` is that you are using a number that goes from `0` to -`1` to specify a ratio inside that scale. This concept can be applied to -convert numbers from different scales easily. - -See: [`map()`](#map), [`norm()`](#norm) - - - - -## loop(val, min, max):Number - -Loops value inside range. Will return `min` if `val > max` and `max` if `val -< min`, otherwise it returns `val`. - - loop(-1, 0, 10); // 10 - loop( 1, 0, 10); // 1 - loop( 5, 0, 10); // 5 - loop( 9, 0, 10); // 9 - loop(10, 0, 10); // 10 - loop(11, 0, 10); // 0 - -Similar to [`clamp()`](#clamp) but *loops* the value inside the range when an -overflow occurs. - -### Common use cases - -Image galleries, infinite scroll, any kind of logic that requires that the -first item should be displayed after the last one or the last one should be -displayed after first if going on the opposite direction. - -See: [`clamp()`](#clamp) - - - - -## map(val, min1, max1, min2, max2):Number - -Maps a number from one scale to another. - - map(3, 0, 4, -1, 1) // 0.5 - map(3, 0, 10, 0, 100) // 30 - -### Common use cases - -Very useful to convert values from/to multiple scales. - -Let's suppose we have a slider that needs to go from `2000` to `5000` and that slider -has `300px` of width, here is how we would translate the knob position into the -current value: - - var knobX = 123; - var sliderWid = 300; - var minVal = 2000; - var maxVal = 5000; - - var curVal = map(knobX, 0, sliderWid, minVal, maxVal); // 3230 - -See: [`lerp()`](#lerp), [`norm()`](#norm) - - - - -## norm(val, min, max):Number - -Gets normalized ratio of value inside range. - - norm(50, 0, 100); // 0.5 - norm(75, 0, 100); // 0.75 - -### Common use cases - -Convert values between scales, used by [`map()`](#map) internally. Direct -opposite of [`lerp()`](#lerp). - -See: [`lerp()`](#lerp), [`map()`](#map) - - - -## round(val[, step]):Number - -Round value to full steps. Similar to `Math.round()` but allow setting an -arbitrary *radix*. - - // default - round(0.22); // 0 - round(0.49); // 0 - round(0.51); // 1 - - // custom radix - round(0.22, 0.5); // 0 - round(0.49, 0.5); // 0.5 - round(0.51, 0.5); // 0.5 - round(0.74, 0.5); // 0.5 - round(0.75, 0.5); // 1 - round(1.24, 0.5); // 1 - round(1.25, 0.5); // 1.5 - round(1.74, 0.5); // 1.5 - -### Common use cases - -Round values by increments of 0.5/5/10/1000/etc. - -See: [`floor()`](#floor), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -------------------------------------------------------------------------------- - -For more usage more info check the specs and source code. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md deleted file mode 100644 index 8d93865b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md +++ /dev/null @@ -1,225 +0,0 @@ -# number # - -Number utilities. - - -## abbreviate(val[, nDecimalDigits, dictionary]):String - -Abbreviate number to thousands (K), millions (M) or billions (B). - -The default value for `nDecimalDigits` is `1`. - -### Example - - abbreviate(123456); // "123.5K" - abbreviate(12345678); // "12.3M" - abbreviate(1234567890); // "1.2B" - -You can set the amount of decimal digits (default is `1`): - - abbreviate(543); // "0.5K" - abbreviate(543, 1); // "0.5K" - abbreviate(543, 2); // "0.54K" - abbreviate(543, 3); // "0.543K" - -You can customize the abbreviation by passing a custom "dictionary": - - var _ptbrDict = { - thousands : ' mil', - millions : ' Mi', - billions : ' Bi' - }; - function customAbbr(val) { - return abbreviate(val, 1, _ptbrDict); - } - - customAbbr(123456); // "123.5 mil" - customAbbr(12345678); // "12.3 Mi" - customAbbr(1234567890); // "1.2 Bi" - - - -## currencyFormat(val[, nDecimalDigits, decimalSeparator, thousandsSeparator]):String - -Format a number as currency. - -### Example: - - currencyFormat(1000); // "1,000.00" - currencyFormat(1000, 1); // "1,000.0" - currencyFormat(1000, 2, ',', '.'); // "1.000,00" - - - -## enforcePrecision(val, nDecimalDigits):Number - -Enforce a specific amount of decimal digits and also fix floating point -rounding issues. - -### Example: - -```js -enforcePrecision(0.615, 2); // 0.62 -enforcePrecision(0.625, 2); // 0.63 -//floating point rounding "error" (rounds to odd number) -+(0.615).toFixed(2); // 0.61 -+(0.625).toFixed(2); // 0.63 -``` - - - -## MAX_INT:Number - -Maximum 32-bit signed integer value. `Math.pow(2, 31) - 1` - -### Example: - -```js -console.log( MAX_INT ); // 2147483647 -``` - - -## MAX_UINT:Number - -Maximum 32-bit unsigned integer value. `Math.pow(2, 32) - 1` - -### Example: - -```js -console.log( MAX_UINT ); // 4294967295 -``` - - -## MIN_INT:Number - -Minimum 32-bit signed integer value. `Math.pow(2, 31) * -1`. - -### Example: - -```js -console.log( MIN_INT ); // -2147483648 -``` - - -## pad(n, minLength[, char]):String - -Add padding zeros if `n.length` < `minLength`. - -### Example: - -```js -pad(1, 5); // "00001" -pad(12, 5); // "00012" -pad(123, 5); // "00123" -pad(1234, 5); // "01234" -pad(12345, 5); // "12345" -pad(123456, 5); // "123456" - -// you can also specify the "char" used for padding -pad(12, 5, '_'); // "___12" -``` - -see: [string/lpad](./string.html#lpad) - - - -## rol(val, shift):Number - -Bitwise circular shift left. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## ror(val, shift):Number - -Bitwise circular shift right. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## sign(val):Number - -Returns `-1` if value is negative, `0` if the value is `0` and `1` if value is positive. Useful for -multiplications. - -```js -sign(-123); // -1 -sign(123); // 1 -sign(0); // 0 -``` - - - -## toInt(val):Number - -"Convert" value into an 32-bit integer. Works like `Math.floor` if `val > 0` and -`Math.ceil` if `val < 0`. - -**IMPORTANT:** val will wrap at [number/MIN_INT](#MIN_INT) and -[number/MAX_INT](#MAX_INT). - -Created because most people don't know bitwise operations and also because this -feature is commonly needed. - -[Perf tests](http://jsperf.com/vs-vs-parseint-bitwise-operators/7) - -### Example: - -```js -toInt(1.25); // 1 -toInt(0.75); // 0 -toInt(-0.55); // 0 -toInt(-5.0001) // -5 -``` - - - -## toUInt(val):Number - -"Convert" value into an 32-bit unsigned integer. - -Works like AS3#uint(). - -**IMPORTANT:** val will wrap at 2^32. - -### Example: - -```js -toUInt(1.25); // 1 -toUInt(0.75); // 0 -toUInt(-0.55); // 0 -toUInt(-5.0001); // 4294967291 -toUInt(Math.pow(2,32) - 0.5); // 4294967295 -toUInt(Math.pow(2,32) + 0.5); // 0 -``` - - -## toUInt31(val):Number - -"Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - -Useful since all bitwise operators besides `>>>` treat numbers as signed -integers. - -**IMPORTANT:** val will wrap at 2^31 and negative numbers will be treated as -`zero`. - -### Example: - -```js -toUInt31(1.25); // 1 -toUInt31(0.75); // 0 -toUInt31(-0.55); // 0 -toUInt31(-5.0001); // 0 -toUInt31(Math.pow(2,31) - 0.5); // 21474836470 -toUInt31(Math.pow(2,31) + 0.5); // 0 -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md deleted file mode 100644 index b4d5e483..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md +++ /dev/null @@ -1,780 +0,0 @@ -# object # - -Object utilities. - - - -## bindAll(obj, [...methodNames]):void - -Bind methods of the target object to always execute on its own context -(ovewritting the original function). - -See: [function/bind](./function.html#bind) - -```js -var view = { - name: 'Lorem Ipsum', - logNameOnClick: function() { - console.log(this.name); - } -}; - -// binds all methods by default -bindAll(view); -jQuery('#docs').on('click', view.logNameOnClick); -``` - -You can also specify the list of methods that you want to bind (in case you -just want to bind a few of them). - -```js -// only the listed methods will be bound to `obj` context -bindAll(obj, 'logNameOnClick', 'doAwesomeStuffOnDrag'); -``` - - - -## contains(obj, value):Boolean - -Similar to [Array/contains](array.html#contains). Checks if Object contains -value. - -```js -var obj = { - a: 1, - b: 2, - c: 'bar' -}; -contains(obj, 2); // true -contains(obj, 'foo'); // false -``` - - - -## deepEquals(a, b, [callback]):Boolean - -Recursively tests whether two objects contain the same keys and equal values. - -`callback` specifies the equality comparison function used to compare -non-object values. It defaults to using the strict equals (`===`) operator. - -If the values are both an object, it will recurse into the objects, checking if -their keys/values are equal. It will only check the keys and values contained -by the objects; it will not check the objects' prototypes. If the either of -the values are not objects, they will be checked using the `callback` function. - -Example: - -```js -deepEquals({ a: 1 }, { a: 1 }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 1 } }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 2 } }); // false -deepEquals({ value: { a: 1 } }, { value: { a: 1, b: 2 } }); // false -deepEquals({}, null); // false -deepEquals(null, null); // true -deepEquals( - { a: { b: 1 } }, - { a: { b: '1' } }, - function(a, b) { return a == b; }); // true -``` - -See: [`equals()`](#equals) - - - -## deepFillIn(target, ...objects):Object - -Fill missing properties recursively. - -It's different from `deepMixIn` since it won't override any existing property. -It's also different from `merge` since it won't clone child objects during the -process. - -It returns the target object and mutates it in place. - -See: [`fillIn()`](#fillIn), [`deepMixIn()`](#deepMixIn), [`merge()`](#merge) - -```js -var base = { - foo : { - bar : 123 - }, - lorem : 'ipsum' -}; -var options = deepFillIn({foo : { baz : 45 }, lorem : 'amet'}, base); -// > {foo: {bar:123, baz : 45}, lorem : 'amet'} -``` - - - -## deepMatches(target, pattern):Boolean - -Recursively checks if object contains all properties/value pairs. When both -the target and pattern values are arrays, it checks that the target value -contain matches for all the items in the pattern array (independent of order). - -```js -var john = { - name: 'John', - age: 22, - pets: [ - { type: 'cat', name: 'Grumpy Cat' }, - { type: 'dog', name: 'Hawk' } - ] -}; - -deepMatches(john, { name: 'John' }); // true -deepMatches(john, { age: 21 }); // false -deepMatches(john, { pets: [ { type: 'cat' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hawk' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hairball' } ] }); // false -``` - -See [`matches()`](#matches) - - - -## deepMixIn(target, ...objects):Object - -Mixes objects into the target object, recursively mixing existing child objects -as well. - -It will only recursively mix objects if both (existing and new) values are -plain objects. - -Returns the target object. Like [`merge()`](#merge), but mutates the target -object, and does not clone child objects. - -```js -var target = { - foo: { - name: "foo", - id: 1 - } -}; - -deepMixIn(target, { foo: { id: 2 } }); -console.log(target); // { foo: { name: "foo", id: 2 } } -``` - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## equals(a, b, [callback]):Boolean - -Tests whether two objects contain the same keys and values. - -`callback` specifies the equality comparison function used to compare the -values. It defaults to using the strict equals (`===`) operator. - -It will only check the keys and values contained by the objects; it will not -check the objects' prototypes. If either of the values are not objects, they -will be compared using the `callback` function. - -```js -equals({}, {}); // true -equals({ a: 1 }, { a: 1 }); // true -equals({ a: 1 }, { a: 2 }); // false -equals({ a: 1, b: 2 }, { a: 1 }); // false -equals({ a: 1 }, { a: 1, b: 2 }); // false -equals(null, null); // true -equals(null, {}); // false -equals({ a: 1 }, { a: '1' }, function(a, b) { return a == b; }); // true -``` - - - -## every(obj, callback, [thisObj]):Boolean - -Similar to [Array/every](array.html#every). Tests whether all properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - - - -## fillIn(obj, ...default):Object - -Fill in missing properties in object with values from the *defaults* objects. - - var base = { - foo : 'bar', - num : 123 - }; - - fillIn({foo:'ipsum'}, base); // {foo:'ipsum', num:123} - -PS: it allows merging multiple objects at once, the first ones will take -precedence. - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## filter(obj, callback, [thisObj]) - -Returns a new object containing all properties where `callback` returns true, -similar to Array/filter. It does not use properties from the object's -prototype. - -Callback receives the same arguments as `forOwn()`. - -See: [`forOwn()`](#forOwn), [`forIn()`](#forIn), [`pick()`](#pick) - -```js -var obj = { - foo: 'value', - bar: 'bar value' -}; - -// returns { bar: 'bar value' } -filter(obj, function(v) { return value.length > 5; }); - -// returns { foo: 'value' } -filter(obj, function(v, k) { return k === 'foo'; }); -``` - - - -## find(obj, callback, [thisObj]) - -Loops through all the properties in the Object and returns the first one that -passes a truth test (callback), similar to [Array/find](array.html#find). -Unlike Array/find, order of iteration is not guaranteed. - -```js -var obj = { - a: 'foo', - b: 12 -}; - -find(obj, isString); // 'foo' -find(obj, isNumber); // 12 -``` - - - -## forIn(obj, callback[, thisObj]) - -Iterate over all properties of an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -It **will** iterate over inherited (enumerable) properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forIn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 7 -console.log(keys); // ['foo', 'bar', 'lorem'] -``` - - - -## forOwn(obj, callback[, thisObj]) - -Iterate over all own properties from an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -Notice that it **won't** iterate over properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forIn()`](#forIn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -// will be ignored -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forOwn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 3 -console.log(keys); // ['foo', 'bar'] -``` - - - -## functions(obj):Array - -Returns a sorted list of all enumerable properties that have function values -(including inherited properties). - -```js -var obj = { - foo : function(){}, - bar : 'baz' -}; -functions(obj); // ['foo'] -``` - - - -## get(obj, propName):* - -Returns nested property value. Will return `undefined` if property doesn't -exist. - -See: [`set()`](#set), [`namespace()`](#namespace), [`has()`](#has) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -get(lorem, 'ipsum.dolor.sit'); // "amet" -get(lorem, 'foo.bar'); // undefined -``` - - - -## has(obj, propName):Boolean - -Checks if object contains a child property. Useful for cases where you need to -check if an object contain a *nested* property. It will get properties -inherited by the prototype. - -see: [`hasOwn()`](#hasOwn), [`get()`](#get) - -```js -var a = { - b : { - c : 123 - } - }; - -has(a, 'b.c'); // true -has(a, 'foo.c'); // false -``` - -### Common use case - -```js -if( has(a, 'foo.c') ){ // false - // ... -} - -if( a.foo.c ){ // ReferenceError: `foo` is not defined - // ... -} -``` - - - -## hasOwn(obj, propName):Boolean - -Safer `Object.hasOwnProperty`. Returns a boolean indicating whether the object -has the specified property. - -see: [`has()`](#has) - -```js -var obj = { - foo: 1, - hasOwnProperty : 'bar' -}; - -obj.hasOwnProperty('foo'); // ERROR! hasOwnProperty is not a function - -hasOwn(obj, 'foo'); // true -hasOwn(obj, 'hasOwnProperty'); // true -hasOwn(obj, 'toString'); // false -``` - - - -## keys(obj):Array - -Returns an array of all own enumerable properties found upon a given object. -It will use the native `Object.keys` if present. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`values()`](#values) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -keys(obj); // ['foo', 'bar', 'lorem'] -``` - - - -## map(obj, callback, [thisObj]):Object - -Returns a new object where the property values are the result of calling the -callback for each property in the original object, similar to Array/map. - -The callback function receives the same arguments as in `forOwn()`. - -See: [`forOwn()`](#forOwn) - -```js -var obj = { foo: 1, bar: 2 }, - data = { foo: 0, bar: 1 }; - -map(obj, function(v) { return v + 1; }); // { foo: 2, bar: 3 } -map(obj, function(v, k) { return k; }); // { foo: "foo", bar: "bar" } -map(obj, function(v, k) { return this[k]; }, data); // { foo: 0, bar: 1 } -``` - - - -## matches(obj, props):Boolean - -Checks if object contains all properties/values pairs. Useful for validation -and filtering. - -```js -var john = {age:25, hair:'long', beard:true}; -var mark = {age:27, hair:'short', beard:false}; -var hippie = {hair:'long', beard:true}; -matches(john, hippie); // true -matches(mark, hippie); // false -``` - -See [`deepMatches()`](#deepMatches) - - - -## merge(...objects):Object - -Deep merges objects. Note that objects and properties will be cloned during the -process to avoid undesired side effects. It return a new object and won't -affect source objects. - -```js -var obj1 = {a: {b: 1, c: 1, d: {e: 1, f: 1}}}; -var obj2 = {a: {b: 2, d : {f : 'yeah'} }}; - -merge(obj1, obj2); // {a: {b : 2, c : 1, d : {e : 1, f : 'yeah'}}} -``` - -See: [`deepMixIn()`](#deppMixIn), [`deepFillIn()`](#deepFillIn) - - - -## max(obj[, iterator]):* - -Returns maximum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/max](array.html#max). - -See: [`min()`](#min) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(obj[, iterator]):* - -Returns minimum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/min](array.html#min). - -See: [`max()`](#max) - -```js -min({a: 100, b: 2, c: 1, d: 3, e: 200}); // 1 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## mixIn(target, ...objects):Object - -Combine properties from all the objects into first one. - -This method affects target object in place, if you want to create a new Object -pass an empty object as first parameter. - -### Arguments - - 1. `target` (Object) : Target Object. - 2. `...objects` (...Object) : Objects to be combined (0...n objects). - -### Example - -```js -var a = {foo: "bar"}; -var b = {lorem: 123}; - -mixIn({}, a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar"} - -mixIn(a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar", lorem: 123} -``` - -See: [`fillIn()`](#fillIn), [`merge()`](#merge) - - - - -## namespace(obj, propName):Object - -Creates an empty object inside namespace if not existent. Will return created -object or existing object. - -See: [`get()`](#get), [`set()`](#set) - -```js -var obj = {}; -namespace(obj, 'foo.bar'); // {} -console.log(obj); // {foo:{bar:{}}} -``` - - - -## pick(obj, ...keys):Object - -Return a copy of the object that contains only the whitelisted keys. - -See: [`filter()`](#filter) - -```js -var user = { - firstName : 'John', - lastName : 'Doe', - dob : '1985/07/23', - gender : 'male' -}; - -// can pass an array of keys as second argument -var keys = ['firstName', 'dob'] -pick(user, keys); // {firstName:"John", dob: "1985/07/23"} - -// or multiple arguments -pick(user, 'firstName', 'lastName'); // {firstName:"John", lastName: "Doe"} -``` - - - -## pluck(obj, propName):Object - -Extract an object containing property values with keys as they appear in the -passed object. - -```js -var users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // {first: 'John', second: 'Mary'} ); -pluck(users, 'age'); // {first: 21, second: 25} ); -``` - - - -## reduce(obj, callback, initial, [thisObj]):* - -Similar to [Array/reduce](array.html#reduce). - -Apply a function against an accumulator and each property of the object (order -is undefined) as to reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - compare1.push(prev); - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - - - -## reject(obj, callback, thisObj):Object - -Returns a new object containing all properties where `callback` returns true, -similar to [Array/reject](array.html#reject). It does not use properties from -the object's prototype. Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // {b: 2, d: 4} -``` - - - -## values(obj):Array - -Returns an array of all own enumerable properties values found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -values(obj); // [1, 2, 3] -``` - - - -## set(obj, propName, value) - -Sets a nested property value. - -See: [`get()`](#get), [`namespace()`](#namespace) - -```js -var obj = {}; -set(obj, 'foo.bar', 123); -console.log(obj.foo.bar); // 123 -console.log(obj); // {foo:{bar:123}} -``` - - - -## size(obj):Number - -Returns the count of own enumerable properties found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -``` - - - -## some(obj, callback, [thisObj]):Boolean - -Similar to [Array/some](array.html#some). Tests whether any properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -``` - - - -## unset(obj, propName):Boolean - -Delete object property if existent and returns a boolean indicating succes. It -will also return `true` if property doesn't exist. - -Some properties can't be deleted, to understand why [check this -article](http://perfectionkills.com/understanding-delete/). - -See: [`set()`](#set) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -unset(lorem, 'ipsum.dolor.sit'); // true -console.log(lorem.ipsum.dolor); // {} -unset(lorem, 'foo.bar'); // true -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md deleted file mode 100644 index 1be3c102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md +++ /dev/null @@ -1,115 +0,0 @@ -# queryString # - -Utilities for query string manipulation. - - - -## contains(url, paramName):Boolen - -Checks if query string contains parameter. - -### Arguments: - - 1. `url` (String) : URL or query string. - 2. `paramName` (String) : Parameter name. - -### Example: - -```js -var url = 'example.com/?lorem=ipsum'; -contains(url, 'lorem'); // true -contains(url, 'foo'); //false -``` - - - -## decode(queryStr[, shouldTypecast]):Object - -Parses query string and creates an object of keys => vals. - -Will typecast value with [`string/typecast`](string.html#typecast) by default -and decode string parameters using `decodeURIComponent()`. - -```js -var query = '?foo=bar&lorem=123'; -decode(query); // {foo: "bar", lorem: 123} -decode(query, false); // {foo: "bar", lorem: "123"} -``` - - -## encode(obj):String - -Encode object into a query string. - -Will encode parameters with `encodeURIComponent()`. - -```js -encode({foo: "bar", lorem: 123}); // "?foo=bar&lorem=123" -``` - - -## getParam(url, param[, shouldTypecast]):* - -Get query parameter value. - -Will typecast value with [`string/typecast`](string.html#typecast) by default. - -See: [`setParam()`](#setParam) - -### Arguments: - - 1. `url` (String) : Url. - 2. `param` (String) : Parameter name. - 3. `[shouldTypecast]` (Boolean) : If it should typecast value. - -### Example: - -```js -var url = 'example.com/?foo=bar&lorem=123&ipsum=false'; -getParam(url, 'dolor'); // "amet" -getParam(url, 'lorem'); // 123 -getParam(url, 'lorem', false); // "123" -``` - - -## parse(url[, shouldTypecast]):Object - -Parses URL, extracts query string and decodes it. - -It will typecast all properties of the query object unless second argument is -`false`. - -Alias to: `decode(getQuery(url))`. - -```js -var url = 'example.com/?lorem=ipsum&a=123'; -parse(url); // {lorem: "ipsum", a: 123} -parse(url, false); // {lorem: "ipsum", a: "123"} -``` - - -## getQuery(url):String - -Gets full query as string with all special chars decoded. - -```js -getQuery('example.com/?lorem=ipsum'); // "?lorem=ipsum" -``` - - -## setParam(url, paramName, value):String - -Add new query string parameter to URL or update existing value. - -See: [`getParam()`](#getParam) - -```js -setParam('?foo=bar&lorem=0', 'lorem', 'ipsum'); // '?foo=bar&lorem=ipsum' -setParam('?lorem=1', 'foo', 123); // '?lorem=1&foo=123' -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md deleted file mode 100644 index b058b4e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md +++ /dev/null @@ -1,218 +0,0 @@ -# random # - -Pseudo-random generators. - -mout uses `Math.random` by default on all the pseudo-random generators, if -you need a seeded random or a better algorithm see the [`random()`](#random) -documentation for instructions. - - - -## choice(...items):* - -Returns a random element from the supplied arguments or from an array if single -argument is an array. - -### Example: - -```js -choice(1, 2, 3, 4, 5); // 3 - -var arr = ['lorem', 'ipsum', 'dolor']; -choice(arr); // 'dolor' -``` - - - -## guid():String - -Generates a pseudo-random [Globally Unique Identifier](http://en.wikipedia.org/wiki/Globally_unique_identifier) (v4). - -Since the total number of GUIDs is 2<sup>122</sup> the chance of generating the -same value twice is negligible. - -**Important:** this method uses `Math.random` by default so the UUID isn't -*safe* (sequence of outputs can be predicted in some cases), check the -[`random()`](#random) documentation for more info on how to replace the default -PRNG if you need extra safety or need *seeded* results. - -See: [`randHex()`](#randHex), [`random()`](#random) - -### Example: - -```js -guid(); // 830e9f50-ac7f-4369-a14f-ed0e62b2fa0b -guid(); // 5de3d09b-e79c-4727-932b-48c49228d508 -``` - - - -## rand([min], [max]):Number - -Gets a random number inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -rand(); // 448740433.55274725 -rand(); // -31797596.097682 -rand(0, 10); // 7.369723 -rand(0, 10); // 5.987042 -``` - -See: [`random()`](#random) - - - -## randBit():Number - -Returns a random "bit" (0 or 1). Useful for addition/subtraction. - -It's slightly faster than `choice(0, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randBit(); // 1 -randBit(); // 0 - -//same effect as -choice(0, 1); -``` - - - -## randHex([size]):String - -Returns a random hexadecimal string. - -The default `size` is `6`. - -### Example: - -```js -randHex(); // "dd8575" -randHex(); // "e6baeb" -randHex(2); // "a2" -randHex(30); // "effd7e2ad9a4a3067e30525fab983a" -``` - - - -## randInt([min], [max]):Number - -Gets a random integer inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -randInt(); // 448740433 -randInt(); // -31797596 -randInt(0, 10); // 7 -randInt(0, 10); // 5 -``` - - - -## randSign():Number - -Returns a random "sign" (-1 or 1). Useful for multiplications. - -It's slightly faster than `choice(-1, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randSign(); // -1 -randSign(); // 1 - -//same effect as -choice(-1, 1); -``` - - - -## random():Number - -Returns a random number between `0` and `1`. Same as `Math.random()`. - -```js -random(); // 0.35435103671625257 -random(); // 0.8768321881070733 -``` - -**Important:** No methods inside mout should call `Math.random()` -directly, they all use `random/random` as a proxy, that way we can -inject/replace the pseudo-random number generator if needed (ie. in case we -need a seeded random or a better algorithm than the native one). - -### Replacing the PRNG - -In some cases we might need better/different algorithms than the one provided -by `Math.random` (ie. safer, seeded). - -Because of licensing issues, file size limitations and different needs we -decided to **not** implement a custom PRNG and instead provide a easy way to -override the default behavior. - [issue #99](https://github.com/millermedeiros/amd-utils/issues/99) - -If you are using mout with a loader that supports the [AMD map -config](https://github.com/amdjs/amdjs-api/wiki/Common-Config), such as -[RequireJS](http://requirejs.org/), you can use it to replace the PRNG -(recommended approach): - -```js -requirejs.config({ - map : { - // all modules will load "my_custom_prng" instead of - // "mout/random/random" - '*' : { - 'mout/random/random' : 'my_custom_prng' - } - } -}); -``` - -You also have the option to override `random.get` in case you are using -mout on node.js or with a loader which doesn't support the map config: - -```js -// replace the PRNG -var n = 0; -random.get = function(){ - return ++n % 2? 0 : 1; // not so random :P -}; -random(); // 0 -random(); // 1 -random(); // 0 -random(); // 1 -``` - -See this [detailed explanation about PRNG in -JavaScript](http://baagoe.org/en/w/index.php/Better_random_numbers_for_javascript) -to understand the issues with the native `Math.random` and also for a list of -algorithms that could be used instead. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md deleted file mode 100644 index 2b282315..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md +++ /dev/null @@ -1,594 +0,0 @@ -# string # - -String utilities. - - -## camelCase(str):String - -Convert string to "camelCase" text. - -See: [`pascalCase()`](#pascalCase), [`unCamelCase()`](#unCamelCase) - -### Example - -```js -camelCase('lorem-ipsum-dolor'); // "loremIpsumDolor" -camelCase('lorem ipsum dolor'); // "loremIpsumDolor" -``` - - - -## contains(str, substring, [fromIndex]):Boolean - -Checks if string contains the given substring. - -See: [`startsWith()`](#startsWith), [`endsWith()`](#endsWith) - -### Example - -```js -contains('lorem', 'or'); // true -contains('lorem', 'bar'); // false -``` - - - -## crop(str, maxChars, [append]):String - -Truncate string at full words. Alias to `truncate(str, maxChars, append, true);`. - -See: [`truncate()`](#truncate) - -### Example - -```js -crop('lorem ipsum dolor', 10); // "lorem..." -crop('lorem ipsum dolor', 10, '+'); // "lorem+" -``` - - - -## endsWith(str, suffix):Boolean - -Checks if string ends with specified suffix. - -See: [`startsWith()`](#startsWith), [`contains()`](#contains) - -### Example - -```js -endsWith('lorem ipsum', 'lorem'); // false -endsWith('lorem ipsum', 'ipsum'); // true -``` - - - -## escapeHtml(str):String - -Escapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`unescapeHtml()`](#unescapeHtml) - -### Example - -```js -escapeHtml('lorem & "ipsum"'); // "lorem &amp; &quot;ipsum&quot;" -``` - - - -## escapeRegExp(str):String - -Escape special chars to be used as literals in RegExp constructors. - -### Example - -```js -str = escapeRegExp('[lorem.ipsum]'); // "\\[lorem\\.ipsum\\]" -reg = new RegExp(str); // /\[lorem\.ipsum\]/ -``` - - - -## escapeUnicode(str[, shouldEscapePrintable]):String - -Unicode escape chars. - -It will only escape non-printable ASCII chars unless `shouldEscapePrintable` is -set to `true`. - -See: [`unescapeUnicode()`](#unescapeUnicode) - -```js -escapeUnicode('føo bÃ¥r'); -// > "f\u00f8o b\u00e5r" -escapeUnicode('føo bÃ¥r', true); -// > "\u0066\u00f8\u006f\u0020\u0062\u00e5\u0072" -``` - - - -## hyphenate(str):String - -Replaces spaces with hyphens, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`underscore()`](#underscore), -[`unhyphenate`](#unhyphenate) - -```js -hyphenate(' %# lorem ipsum ? $ dolor'); // "lorem-ipsum-dolor" -hyphenate('spéçïãl çhârs'); // "special-chars" -hyphenate('loremIpsum'); // "lorem-ipsum" -``` - - - -## interpolate(str, replacements[, syntax]):String - -String interpolation. Format/replace tokens with object properties. - -```js -var tmpl = 'Hello {{name}}!'; -interpolate(tmpl, {name: 'World'}); // "Hello World!" -interpolate(tmpl, {name: 'Lorem Ipsum'}); // "Hello Lorem Ipsum!" -``` - -It uses a mustache-like syntax by default but you can set your own format if -needed. You can also use Arrays for the replacements (since Arrays are -objects as well): - -```js -// matches everything inside "${}" -var syntax = /\$\{([^}]+)\}/g; -var tmpl = "Hello ${0}!"; -interpolate(tmpl, ['Foo Bar'], syntax); // "Hello Foo Bar!" -``` - - - -## lowerCase(str):String - -"Safer" `String.toLowerCase()`. (Used internally) - -### Example - -```js -(null).toLowerCase(); // Error! -(undefined).toLowerCase(); // Error! -lowerCase(null); // "" -lowerCase(undefined); // "" -``` - - - -## lpad(str, minLength[, char]):String - -Pad string from left with `char` if its' length is smaller than `minLen`. - -See: [`rpad()`](#rpad) - -### Example - -```js -lpad('a', 5); // " a" -lpad('a', 5, '-'); // "----a" -lpad('abc', 3, '-'); // "abc" -lpad('abc', 4, '-'); // "-abc" -``` - - - -## ltrim(str, [chars]):String - -Remove chars or white-spaces from beginning of string. - -`chars` is an array of chars to remove from the beginning of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`rtrim()`](#rtrim), [`trim()`](#trim) - -### Example - -```js -ltrim(' lorem ipsum '); // "lorem ipsum " -ltrim('--lorem ipsum--', ['-']); // "lorem ipsum--" -``` - - - -## makePath(...args):String - -Group arguments as path segments, if any of the args is `null` or `undefined` -it will be ignored from resulting path. It will also remove duplicate "/". - -See: [`array/join()`](array.html#join) - -### Example - -```js -makePath('lorem', 'ipsum', null, 'dolor'); // "lorem/ipsum/dolor" -makePath('foo///bar/'); // "foo/bar/" -``` - - - -## normalizeLineBreaks(str, [lineBreak]):String - -Normalize line breaks to a single format. Defaults to Unix `\n`. - -It handles DOS (`\r\n`), Mac (`\r`) and Unix (`\n`) formats. - -### Example - -```js -// "foo\nbar\nlorem\nipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum'); - -// "foo\rbar\rlorem\ripsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', '\r'); - -// "foo bar lorem ipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', ' '); -``` - - - -## pascalCase(str):String - -Convert string to "PascalCase" text. - -See: [`camelCase()`](#camelCase) - -### Example - -```js -pascalCase('lorem-ipsum-dolor'); // "LoremIpsumDolor" -pascalCase('lorem ipsum dolor'); // "LoremIpsumDolor" -``` - - - -## properCase(str):String - -UPPERCASE first char of each word, lowercase other chars. - -### Example - -```js -properCase('loRem iPSum'); // "Lorem Ipsum" -``` - - - -## removeNonASCII(str):String - -Remove [non-printable ASCII -chars](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters). - -### Example - -```js -removeNonASCII('äÄçÇéÉêlorem-ipsumöÖÃþúÚ'); // "lorem-ipsum" -``` - - - -## removeNonWord(str):String - -Remove non-word chars. - -### Example - -```js -var str = 'lorem ~!@#$%^&*()_+`-={}[]|\\:";\'/?><., ipsum'; -removeNonWord(str); // "lorem - ipsum" -``` - - - -## repeat(str, n):String - -Repeat string n-times. - -### Example - -```js -repeat('a', 3); // "aaa" -repeat('bc', 2); // "bcbc" -repeat('a', 0); // "" -``` - - - -## replace(str, search, replacements):String - -Replace string(s) with the replacement(s) in the source. - -`search` and `replacements` can be an array, or a single item. For every item -in `search`, it will call `str.replace` with the search item and the matching -replacement in `replacements`. If `replacements` only contains one replacement, -it will be used for all the searches, otherwise it will use the replacement at -the same index as the search. - -### Example - -```js -replace('foo bar', 'foo', 'test'); // "test bar" -replace('test 1 2', ['1', '2'], 'n'); // "test n n" -replace('test 1 2', ['1', '2'], ['one', 'two']); // "test one two" -replace('123abc', [/\d/g, /[a-z]/g], ['0', '.']); // "000..." -``` - - - -## replaceAccents(str):String - -Replaces all accented chars with regular ones. - -**Important:** Only covers **Basic Latin** and **Latin-1** unicode chars. - -### Example - -```js -replaceAccents('spéçïãl çhârs'); // "special chars" -``` - - - -## rpad(str, minLength[, char]):String - -Pad string from right with `char` if its' length is smaller than `minLen`. - -See: [`lpad()`](#lpad) - -### Example - -```js -rpad('a', 5); // "a " -rpad('a', 5, '-'); // "a----" -rpad('abc', 3, '-'); // "abc" -rpad('abc', 4, '-'); // "abc-" -``` - - - -## rtrim(str, [chars]):String - -Remove chars or white-spaces from end of string. - -`chars` is an array of chars to remove from the end of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`trim()`](#trim), [`ltrim()`](#ltrim) - -### Example - -```js -rtrim(' lorem ipsum '); // " lorem ipsum" -rtrim('--lorem ipsum--', ['-']); // "--lorem ipsum" -``` - - - -## sentenceCase(str):String - -UPPERCASE first char of each sentence and lowercase other chars. - -### Example - -```js -var str = 'Lorem IpSum DoLOr. maeCeNnas Ullamcor.'; -sentenceCase(str); // "Lorem ipsum dolor. Maecennas ullamcor." -``` - - - -## stripHtmlTags(str):String - -Remove HTML/XML tags from string. - -### Example - -```js -var str = '<p><em>lorem</em> <strong>ipsum</strong></p>'; -stripHtmlTags(str); // "lorem ipsum" -``` - - - -## startsWith(str, prefix):Boolean - -Checks if string starts with specified prefix. - -See: [`endsWith()`](#endsWith), [`contains()`](#contains) - -### Example - -```js -startsWith('lorem ipsum', 'lorem'); // true -startsWith('lorem ipsum', 'ipsum'); // false -``` - - - -## slugify(str[, delimeter]):String - -Convert to lower case, remove accents, remove non-word chars and replace spaces -with the delimeter. The default delimeter is a hyphen. - -Note that this does not split camelCase text. - -See: [`hyphenate()`](#hyphenate) and [`underscore()`](#underscore) - -### Example - -```js -var str = 'loremIpsum dolor spéçïãl chârs'; -slugify(str); // "loremipsum-dolor-special-chars" -slugify(str, '_'); // "loremipsum_dolor_special_chars" -``` - - - -## trim(str, [chars]):String - -Remove chars or white-spaces from beginning and end of string. - -`chars` is an array of chars to remove from the beginning and end of the -string. If `chars` is not specified, Unicode whitespace chars will be used -instead. - -See: [`rtrim()`](#rtrim), [`ltrim()`](#ltrim) - -### Example - -```js -trim(' lorem ipsum '); // "lorem ipsum" -trim('-+-lorem ipsum-+-', ['-', '+']); // "lorem ipsum" -``` - - - -## truncate(str, maxChars, [append], [onlyFullWords]):String - -Limit number of chars. Returned string `length` will be `<= maxChars`. - -See: [`crop()`](#crop) - -### Arguments - - 1. `str` (String) : String - 2. `maxChars` (Number) : Maximum number of characters including `append.length`. - 3. `[append]` (String) : Value that should be added to the end of string. - Defaults to "...". - 4. `[onlyFullWords]` (Boolean) : If it shouldn't break words. Default is - `false`. (favor [`crop()`](#crop) since code will be clearer). - -### Example - -```js -truncate('lorem ipsum dolor', 11); // "lorem ip..." -truncate('lorem ipsum dolor', 11, '+'); // "lorem ipsu+" -truncate('lorem ipsum dolor', 11, null, true); // "lorem..." -``` - - - -## typecast(str):* - -Parses string and convert it into a native value. - -### Example - -```js -typecast('lorem ipsum'); // "lorem ipsum" -typecast('123'); // 123 -typecast('123.45'); // 123.45 -typecast('false'); // false -typecast('true'); // true -typecast('null'); // null -typecast('undefined'); // undefined -``` - - - -## unCamelCase(str, [delimiter]):String - -Add the delimiter between camelCase text and convert first char of each word to -lower case. - -The delimiter defaults to a space character. - -See: [`camelCase()`][#camelCase] - -### Example - -```js -unCamelCase('loremIpsumDolor'); // "lorem ipsum dolor" -unCamelCase('loremIpsumDolor', '-'); // "lorem-ipsum-color" -``` - - -## underscore(str):String - -Replaces spaces with underscores, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`hyphenate()`](#hyphenate) - -```js -underscore(' %# lorem ipsum ? $ dolor'); // "lorem_ipsum_dolor" -underscore('spéçïãl çhârs'); // "special_chars" -underscore('loremIpsum'); // "lorem_ipsum" -``` - - - -## unescapeHtml(str):String - -Unescapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`escapeHtml()`](#escapeHtml) - -### Example - -```js -unescapeHtml('lorem &amp; &quot;ipsum&quot;'); // 'lorem & "ipsum"' -``` - - - -## unescapeUnicode(str):String - -Unescapes unicode char sequences. - -See: [`escapeUnicode()`](#escapeUnicode) - -```js -unescapeUnicode('\\u0066\\u00f8\\u006f\\u0020\\u0062\\u00e5\\u0072'); -// > 'føo bÃ¥r' -``` - - - -## unhyphenate(str):String - -Replaces hyphens with spaces. (only hyphens between word chars) - -See : [`hyphenate()`](#hyphenate) - -### Example - -```js -unhyphenate('lorem-ipsum-dolor'); // "lorem ipsum dolor" -``` - - -## upperCase(str):String - -"Safer" `String.toUpperCase()`. (Used internally) - -### Example - -```js -(null).toUpperCase(); // Error! -(undefined).toUpperCase(); // Error! -upperCase(null); // "" -upperCase(undefined); // "" -``` - - - -## WHITE_SPACES:Array - -Constant array of all [Unicode white-space -characters](http://en.wikipedia.org/wiki/Whitespace_character). - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md deleted file mode 100644 index 628c2a9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md +++ /dev/null @@ -1,64 +0,0 @@ -# time # - -Utilities for time manipulation. - - -## convert(value, sourceUnit, [destinationUnit]):Number - -Converts time between units. - -Available units: `millisecond`, `second`, `minute`, `hour`, `day`, `week`. -Abbreviations: `ms`, `s`, `m`, `h`, `d`, `w`. - -We do **not** support year and month as a time unit since their values are not -fixed. - -The default `destinationUnit` is `ms`. - -```js -convert(1, 'minute'); // 60000 -convert(2.5, 's', 'ms'); // 2500 -convert(2, 'm', 's'); // 120 -convert(500, 'ms', 's'); // 0.5 -``` - - - -## now():Number - -Returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. -Uses `Date.now()` if available. - -### Example - -```js -now(); // 1335449614650 -``` - - - -## parseMs(ms):Object - -Parse timestamp (milliseconds) into an object `{milliseconds:number, -seconds:number, minutes:number, hours:number, days:number}`. - -### Example - -```js -// {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} -parseMs(2348765454); -``` - - - -## toTimeString(ms):String - -Convert timestamp (milliseconds) into a time string in the format "[H:]MM:SS". - -### Example - -```js -toTimeString(12513); // "00:12" -toTimeString(951233); // "15:51" -toTimeString(8765235); // "2:26:05" -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function.js deleted file mode 100644 index 43a16ef4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function.js +++ /dev/null @@ -1,18 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js deleted file mode 100644 index 71bc1257..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - module.exports = bind; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js deleted file mode 100644 index 8cd5c5f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - module.exports = compose; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js deleted file mode 100644 index a0ed07f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js +++ /dev/null @@ -1,29 +0,0 @@ - - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - return debounced; - } - - module.exports = debounce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js deleted file mode 100644 index b81bf0a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - module.exports = func; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js deleted file mode 100644 index 767610a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js +++ /dev/null @@ -1,34 +0,0 @@ -var prop = require('./prop'); -var deepMatches = require('../object/deepMatches'); - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'object': - // typeof null == "object" - return (src != null)? function(val, key, target){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - case 'function': - if (typeof thisObj === 'undefined') { - return src; - } else { - return function(val, i, arr){ - return src.call(thisObj, val, i, arr); - }; - } - default: - return src; - } - } - - module.exports = makeIterator; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js deleted file mode 100644 index d63ff1be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - module.exports = partial; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js deleted file mode 100644 index 734acb7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - module.exports = prop; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js deleted file mode 100644 index 25159c2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ - - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - module.exports = series; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js deleted file mode 100644 index 619dc540..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js +++ /dev/null @@ -1,32 +0,0 @@ -var now = require('../time/now'); - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - return throttled; - } - - module.exports = throttle; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js deleted file mode 100644 index e0d21a66..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - module.exports = timeout; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/index.js deleted file mode 100644 index 32a1c639..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/**@license - * mout v0.6.0 | http://moutjs.com | MIT license - */ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'VERSION' : '0.6.0', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang.js deleted file mode 100644 index b9816218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang.js +++ /dev/null @@ -1,36 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toString' : require('./lang/toString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js deleted file mode 100644 index 33c4e949..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js +++ /dev/null @@ -1,49 +0,0 @@ -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); -var mixIn = require('../object/mixIn'); - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - module.exports = clone; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js deleted file mode 100644 index bbc14c1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -var mixIn = require('../object/mixIn'); - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - module.exports = createObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js deleted file mode 100644 index d68dc506..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ - - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - module.exports = ctorApply; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js deleted file mode 100644 index 25fd95f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js +++ /dev/null @@ -1,48 +0,0 @@ -var clone = require('./clone'); -var forOwn = require('../object/forOwn'); -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - module.exports = deepClone; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js deleted file mode 100644 index 1111b2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js +++ /dev/null @@ -1,17 +0,0 @@ -var toArray = require('./toArray'); -var find = require('../array/find'); - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - module.exports = defaults; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js deleted file mode 100644 index cd8a379e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -var createObject = require('./createObject'); - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - } - - module.exports = inheritPrototype; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js deleted file mode 100644 index 4a835739..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - module.exports = is; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js deleted file mode 100644 index f7b08ba4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -var isKind = require('./isKind'); - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - module.exports = isArgs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js deleted file mode 100644 index 262ee400..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - module.exports = isArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js deleted file mode 100644 index 86557cb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - module.exports = isBoolean; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js deleted file mode 100644 index 4a5130f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - module.exports = isDate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js deleted file mode 100644 index 0e9f77da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js +++ /dev/null @@ -1,24 +0,0 @@ -var forOwn = require('../object/forOwn'); -var isArray = require('./isArray'); - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - module.exports = isEmpty; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js deleted file mode 100644 index 6d4006f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -var isNumber = require('./isNumber'); - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - module.exports = isFinite; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js deleted file mode 100644 index 216879f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - module.exports = isFunction; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js deleted file mode 100644 index 29f95d96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - module.exports = isInteger; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js deleted file mode 100644 index 02301e04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -var kindOf = require('./kindOf'); - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - module.exports = isKind; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js deleted file mode 100644 index f6efeb1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js +++ /dev/null @@ -1,15 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - return !isNumber(val) || val != +val; - } - - module.exports = isNaN; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js deleted file mode 100644 index 6252f9ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - */ - function isNull(val){ - return val === null; - } - module.exports = isNull; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js deleted file mode 100644 index 126c1cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - module.exports = isNumber; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js deleted file mode 100644 index 7350c891..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - module.exports = isObject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js deleted file mode 100644 index 0d2d7b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value - && typeof value === 'object' - && value.constructor === Object); - } - - module.exports = isPlainObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js deleted file mode 100644 index fc5459a9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - module.exports = isRegExp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js deleted file mode 100644 index f8906584..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - module.exports = isString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js deleted file mode 100644 index fb2261df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ - - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - module.exports = isUndef; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js deleted file mode 100644 index 9dad58ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -var is = require('./is'); - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - module.exports = isnt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js deleted file mode 100644 index 663464d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ - - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - module.exports = kindOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js deleted file mode 100644 index e39b8734..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -var kindOf = require('./kindOf'); - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - module.exports = toArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js deleted file mode 100644 index ae5c2b0f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - module.exports = toString; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math.js deleted file mode 100644 index c6ee889b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math.js +++ /dev/null @@ -1,19 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js deleted file mode 100644 index a279e158..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - module.exports = ceil; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js deleted file mode 100644 index e929a9a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - module.exports = clamp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js deleted file mode 100644 index 60ac90c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ - - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - module.exports = countSteps; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js deleted file mode 100644 index 9de50531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - module.exports = floor; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js deleted file mode 100644 index 763218f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - module.exports = inRange; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js deleted file mode 100644 index 45486b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - module.exports = isNear; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js deleted file mode 100644 index 111e2717..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - module.exports = lerp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js deleted file mode 100644 index 35207c1a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - module.exports = loop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js deleted file mode 100644 index 96c4b787..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js +++ /dev/null @@ -1,11 +0,0 @@ -var lerp = require('./lerp'); -var norm = require('./norm'); - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js deleted file mode 100644 index 54caf78a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - module.exports = norm; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js deleted file mode 100644 index d108e6cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - module.exports = round; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number.js deleted file mode 100644 index 0b6186cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js deleted file mode 100644 index 1d6f0e48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ - - module.exports = 2147483647; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js deleted file mode 100644 index 700da0f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ - - module.exports = 4294967295; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js deleted file mode 100644 index b34ab2ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ - - module.exports = -2147483648; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js deleted file mode 100644 index dd6716b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -var enforcePrecision = require('./enforcePrecision'); - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - module.exports = abbreviateNumber; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js deleted file mode 100644 index 1cf02497..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js +++ /dev/null @@ -1,26 +0,0 @@ - - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - module.exports = currencyFormat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js deleted file mode 100644 index f73a92d7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js +++ /dev/null @@ -1,13 +0,0 @@ - - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) -> - * 0.61` - */ - function enforcePrecision(val, nDecimalDigits){ - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - module.exports = enforcePrecision; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js deleted file mode 100644 index da752706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -var lpad = require('../string/lpad'); - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - return lpad(''+ n, minLength, char || '0'); - } - - module.exports = pad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js deleted file mode 100644 index ecd58da4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - module.exports = rol; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js deleted file mode 100644 index 2eda81da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - module.exports = ror; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js deleted file mode 100644 index b854a4ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * Get sign of the value. - */ - function sign(val) { - var num = Number(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - module.exports = sign; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js deleted file mode 100644 index bcefae0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - return ~~val; - } - - module.exports = toInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js deleted file mode 100644 index 5290b627..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - return val >>> 0; - } - - module.exports = toUInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js deleted file mode 100644 index fcc5a97c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js +++ /dev/null @@ -1,13 +0,0 @@ -var MAX_INT = require('./MAX_INT'); - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - module.exports = toUInt31; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object.js deleted file mode 100644 index 76c06424..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object.js +++ /dev/null @@ -1,42 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js deleted file mode 100644 index b2f27d08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js +++ /dev/null @@ -1,18 +0,0 @@ -var functions = require('./functions'); -var bind = require('../function/bind'); -var forEach = require('../array/forEach'); - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - module.exports = bindAll; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js deleted file mode 100644 index 8076e2c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -var some = require('./some'); - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js deleted file mode 100644 index fcde9449..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js +++ /dev/null @@ -1,27 +0,0 @@ -var isObject = require('../lang/isObject'); -var equals = require('./equals'); - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - module.exports = deepEquals; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js deleted file mode 100644 index d27db44d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js +++ /dev/null @@ -1,32 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) - && isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - module.exports = deepFillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js deleted file mode 100644 index 3366c52d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js +++ /dev/null @@ -1,55 +0,0 @@ -var forOwn = require('./forOwn'); -var isArray = require('../lang/isArray'); - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - module.exports = deepMatches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js deleted file mode 100644 index a97e98d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js +++ /dev/null @@ -1,34 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - module.exports = deepMixIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js deleted file mode 100644 index f50cbe4e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js +++ /dev/null @@ -1,36 +0,0 @@ -var hasOwn = require('./hasOwn'); -var every = require('./every'); -var isObject = require('../lang/isObject'); - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - module.exports = equals; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js deleted file mode 100644 index 01106e5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js +++ /dev/null @@ -1,23 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - module.exports = every; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js deleted file mode 100644 index 80dcdf07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js +++ /dev/null @@ -1,20 +0,0 @@ -var forEach = require('../array/forEach'); -var forOwn = require('./forOwn'); - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - module.exports = fillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js deleted file mode 100644 index 3a83a92f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - module.exports = filterValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js deleted file mode 100644 index d39c0706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js +++ /dev/null @@ -1,21 +0,0 @@ -var some = require('./some'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js deleted file mode 100644 index 367f08ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ - - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - module.exports = forIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js deleted file mode 100644 index 5f2dfbfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js +++ /dev/null @@ -1,19 +0,0 @@ -var hasOwn = require('./hasOwn'); -var forIn = require('./forIn'); - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - module.exports = forOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js deleted file mode 100644 index f5717979..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -var forIn = require('./forIn'); - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - module.exports = functions; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js deleted file mode 100644 index 6673561e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ - - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object') return; - } - - return obj[last]; - } - - module.exports = get; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js deleted file mode 100644 index ca9f2289..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -var get = require('./get'); - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - module.exports = has; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js deleted file mode 100644 index 7e3c82ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - module.exports = hasOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js deleted file mode 100644 index dd2f4f55..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - module.exports = keys; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js deleted file mode 100644 index dd449a78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js +++ /dev/null @@ -1,18 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - module.exports = mapValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js deleted file mode 100644 index 6074faa2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - module.exports = matches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js deleted file mode 100644 index 3e8e92c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMax = require('../array/max'); -var values = require('./values'); - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - module.exports = max; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js deleted file mode 100644 index 6961f608..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = require('./hasOwn'); -var deepClone = require('../lang/deepClone'); -var isObject = require('../lang/isObject'); - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - module.exports = merge; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js deleted file mode 100644 index e1e66976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMin = require('../array/min'); -var values = require('./values'); - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - module.exports = min; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js deleted file mode 100644 index 55ec8fd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - module.exports = mixIn; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js deleted file mode 100644 index c6e79f63..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -var forEach = require('../array/forEach'); - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - module.exports = namespace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js deleted file mode 100644 index 74e56f98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js deleted file mode 100644 index e844df47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js +++ /dev/null @@ -1,13 +0,0 @@ -var map = require('./map'); -var prop = require('../function/prop'); - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js deleted file mode 100644 index 6f19a3a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js +++ /dev/null @@ -1,29 +0,0 @@ -var forOwn = require('./forOwn'); -var size = require('./size'); - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - module.exports = reduce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js deleted file mode 100644 index 74643795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js deleted file mode 100644 index 9b3cdc48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -var namespace = require('./namespace'); - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - module.exports = set; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js deleted file mode 100644 index 97885953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js deleted file mode 100644 index 384c6f3c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js +++ /dev/null @@ -1,21 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - module.exports = some; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js deleted file mode 100644 index 343bca0a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -var has = require('./has'); - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - module.exports = unset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js deleted file mode 100644 index 265a6938..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - module.exports = values; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/package.json deleted file mode 100644 index a3c16824..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "mout", - "description": "Modular Utilities", - "version": "0.6.0", - "homepage": "http://moutjs.com/", - "contributors": [ - { - "name": "Adam Nowotny" - }, - { - "name": "André Cruz", - "email": "amdfcruz@gmail.com" - }, - { - "name": "Conrad Zimmerman", - "url": "http://www.conradz.com" - }, - { - "name": "Friedemann Altrock", - "email": "frodenius@gmail.com" - }, - { - "name": "Jarrod Overson", - "url": "http://jarrodoverson.com" - }, - { - "name": "Miller Medeiros", - "email": "contact@millermedeiros.com", - "url": "http://blog.millermedeiros.com" - }, - { - "name": "Zach Shipley" - } - ], - "keywords": [ - "utilities", - "functional", - "amd-utils", - "stdlib" - ], - "repository": { - "type": "git", - "url": "git://github.com/mout/mout.git" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - } - ], - "bugs": { - "url": "https://github.com/mout/mout/issues/" - }, - "main": "./index.js", - "scripts": { - "prepublish": "node build cjs .", - "pretest": "node build pkg", - "test": "node node_modules/istanbul/lib/cli test tests/runner.js --hook-run-in-context" - }, - "directories": { - "doc": "./doc" - }, - "devDependencies": { - "istanbul": "~0.1.27", - "jasmine-node": "~1.2.2", - "requirejs": "2.x", - "nodefy": "*", - "mdoc": "~0.3.2", - "handlebars": "~1.0.6", - "commander": "~1.0.5", - "rocambole": "~0.2.3" - }, - "testling": { - "preprocess": "node build testling", - "browsers": { - "ie": [ - 7, - 8, - 9, - 10 - ], - "firefox": [ - 17, - "nightly" - ], - "chrome": [ - 23, - "canary" - ], - "opera": [ - 12, - "next" - ], - "safari": [ - 5.1, - 6 - ], - "iphone": [ - 6 - ], - "ipad": [ - 6 - ] - }, - "scripts": [ - "tests/lib/jasmine/jasmine.js", - "tests/lib/jasmine/jasmine.async.js", - "tests/lib/jasmine/jasmine-tap.js", - "tests/lib/requirejs/require.js", - "tests/testling/src.js", - "tests/testling/specs.js", - "tests/runner.js" - ] - }, - "readme": "![mout](http://moutjs.com/logo.png \"Modular JavaScript Utilties\")\n\nhttp://moutjs.com/\n\n[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout)\n\nAll code is library agnostic and consist mostly of helper methods that aren't\ndirectly related with the DOM, the purpose of this library isn't to replace\nDojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common\nproblems that aren't solved by most of them. Consider it as a crossbrowser\nJavaScript standard library.\n\n\n\n## Main goals ##\n\n - increase code reuse;\n - be clear (code should be clean/readable);\n - be easy to debug;\n - be easy to maintain;\n - follow best practices;\n - follow standards when possible;\n - **don't convert JavaScript into another language!**\n - be compatible with other frameworks;\n - be modular;\n - have unit tests for all modules;\n - work on multiple environments (IE7+, modern browsers, node.js);\n\n\n\n## What shouldn't be here ##\n\n - UI components;\n - CSS selector engine;\n - Event system - pub/sub;\n - Template engine;\n - Anything that isn't generic enough to be on a standard library;\n - Anything that could be a separate library and/or isn't a modular utility...\n\n\n\n## API Documentation ##\n\nOnline documentation can be found at http://moutjs.com/ or inside the\n`doc` folder.\n\n\n\n## FAQ / Wiki / IRC ##\n\nFor more info about project structure, design decisions, tips, how to\ncontribute, build system, etc, please check the [project\nwiki](https://github.com/mout/mout/wiki).\n\nWe also have an IRC channel [#moutjs on\nirc.freenode.net](http://webchat.freenode.net/?channels=moutjs)\n\n\n\n## License ##\n\nReleased under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n\n", - "readmeFilename": "README.md", - "_id": "mout@0.6.0", - "_from": "mout@~0.6.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js deleted file mode 100644 index 22685a7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js deleted file mode 100644 index da678cf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -var getQuery = require('./getQuery'); - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js deleted file mode 100644 index 7e689990..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js +++ /dev/null @@ -1,21 +0,0 @@ -var typecast = require('../string/typecast'); -var isString = require('../lang/isString'); - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - n = queryArr.length, - obj = {}, - item, val; - while (n--) { - item = queryArr[n].split('='); - val = shouldTypecast === false? item[1] : typecast(item[1]); - obj[item[0]] = isString(val)? decodeURIComponent(val) : val; - } - return obj; - } - - module.exports = decode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js deleted file mode 100644 index 6d2b12f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js +++ /dev/null @@ -1,15 +0,0 @@ -var forOwn = require('../object/forOwn'); - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = []; - forOwn(obj, function(val, key){ - query.push( key +'='+ encodeURIComponent(val) ); - }); - return (query.length)? '?'+ query.join('&') : ''; - } - - module.exports = encode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js deleted file mode 100644 index f149c3ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js +++ /dev/null @@ -1,15 +0,0 @@ -var typecast = require('../string/typecast'); -var getQuery = require('./getQuery'); - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - module.exports = getParam; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js deleted file mode 100644 index 5194af2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - module.exports = getQuery; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js deleted file mode 100644 index 532906c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js +++ /dev/null @@ -1,13 +0,0 @@ -var decode = require('./decode'); -var getQuery = require('./getQuery'); - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - module.exports = parse; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js deleted file mode 100644 index 052a9ba6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - module.exports = setParam; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random.js deleted file mode 100644 index d9267f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random.js +++ /dev/null @@ -1,16 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js deleted file mode 100644 index 51aa82a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js +++ /dev/null @@ -1,15 +0,0 @@ -var randInt = require('./randInt'); -var isArray = require('../lang/isArray'); - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - module.exports = choice; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js deleted file mode 100644 index 41f6eddc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js +++ /dev/null @@ -1,24 +0,0 @@ -var randHex = require('./randHex'); -var choice = require('./choice'); - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - module.exports = guid; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js deleted file mode 100644 index 782dec88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js +++ /dev/null @@ -1,15 +0,0 @@ -var random = require('./random'); -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - module.exports = rand; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js deleted file mode 100644 index bd20b4a0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - module.exports = randomBit; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js deleted file mode 100644 index d8d711c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -var choice = require('./choice'); - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - module.exports = randHex; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js deleted file mode 100644 index e237d964..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js +++ /dev/null @@ -1,18 +0,0 @@ -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); -var rand = require('./rand'); - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - module.exports = randInt; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js deleted file mode 100644 index 5a9fed76..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - module.exports = randomSign; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js deleted file mode 100644 index 670a3cc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - module.exports = random; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js deleted file mode 100644 index 7bcc961b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js +++ /dev/null @@ -1,46 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js deleted file mode 100644 index 549d8754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - return append; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js deleted file mode 100644 index 8f60cda2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./append', '../function/makeIterator_'], function (append, makeIterator) { - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - return collect; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js deleted file mode 100644 index 22efb860..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - return combine; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js deleted file mode 100644 index 02a81098..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./filter'], function (filter) { - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - return compact; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js deleted file mode 100644 index fca4f7cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js deleted file mode 100644 index 819bda3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./unique', './filter', './some', './contains'], function (unique, filter, some, contains) { - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return difference; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js deleted file mode 100644 index 78ba46d3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - return every; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js deleted file mode 100644 index 52cf685a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js deleted file mode 100644 index 3957dcd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./findIndex'], function (findIndex) { - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js deleted file mode 100644 index 59dfeeb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - return findIndex; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js deleted file mode 100644 index 42e87f43..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js +++ /dev/null @@ -1,42 +0,0 @@ -define(['../lang/isArray', './append'], function (isArray, append) { - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - return flatten; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js deleted file mode 100644 index 0e045868..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - return forEach; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js deleted file mode 100644 index 0e75f99b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - return indexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js deleted file mode 100644 index d8d831f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./difference', '../lang/toArray'], function (difference, toArray) { - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - return insert; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js deleted file mode 100644 index 64e6ee97..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./unique', './filter', './every', './contains'], function (unique, filter, every, contains) { - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return intersection; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js deleted file mode 100644 index a2e78b39..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./forEach'], function (forEach) { - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - return invoke; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js deleted file mode 100644 index 2c618d29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./filter'], function(filter) { - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - return join; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js deleted file mode 100644 index 931235f4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - return lastIndexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js deleted file mode 100644 index 1580b481..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js deleted file mode 100644 index a7326c89..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return max; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js deleted file mode 100644 index 41644480..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return min; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js deleted file mode 100644 index 97d7f595..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../random/randInt'], function (randInt) { - - /** - * Remove a random item from the Array and return it - */ - function pick(arr){ - if (arr == null || !arr.length) return; - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js deleted file mode 100644 index c908856e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js deleted file mode 100644 index 148ebf96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../math/countSteps'], function (countSteps) { - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - return range; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js deleted file mode 100644 index 88aacfd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forEach'], function (forEach) { - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - return reduce; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js deleted file mode 100644 index ddae0e7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ -define(function () { - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - return reduceRight; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js deleted file mode 100644 index db105dde..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js +++ /dev/null @@ -1,25 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function(forEach, makeIterator) { - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return reject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js deleted file mode 100644 index dec9134d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - return remove; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js deleted file mode 100644 index e81022b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - return removeAll; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js deleted file mode 100644 index f5a60972..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../random/randInt', './forEach'], function (randInt, forEach) { - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - return shuffle; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js deleted file mode 100644 index e46a9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - return some; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js deleted file mode 100644 index 4c194042..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ -define(function () { - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - return mergeSort; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js deleted file mode 100644 index a17275eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ -define(function() { - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - return split; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js deleted file mode 100644 index aac8fd1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../lang/isFunction'], function (isFunction) { - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - return toLookup; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js deleted file mode 100644 index 5f9922e5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./unique', './append'], function (unique, append) { - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - return union; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js deleted file mode 100644 index c4bd23b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./indexOf', './filter'], function(indexOf, filter){ - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - return unique; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js deleted file mode 100644 index 7df89d9c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['./unique', './filter', './contains'], function (unique, filter, contains) { - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - return xor; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js deleted file mode 100644 index 374cd282..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['./max', './pluck', './map'], function (max, pluck, map) { - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1, - item; - while (++i < len) { - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - return zip; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js deleted file mode 100644 index 386e6da9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js deleted file mode 100644 index 192167e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/contains', '../object/contains'], function (make, arrContains, objContains) { - - /** - */ - return make(arrContains, objContains); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js deleted file mode 100644 index 6317f503..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/every', '../object/every'], function (make, arrEvery, objEvery) { - - /** - */ - return make(arrEvery, objEvery); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js deleted file mode 100644 index 4e7fadc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js deleted file mode 100644 index 681f9414..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/find', '../object/find'], function(make, arrFind, objFind) { - - /** - * Find value that returns true on iterator check. - */ - return make(arrFind, objFind); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js deleted file mode 100644 index 3b39d3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/forEach', '../object/forOwn'], function (make, arrForEach, objForEach) { - - /** - */ - return make(arrForEach, objForEach); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js deleted file mode 100644 index 312e0564..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(){ - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - return makeCollectionMethod; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js deleted file mode 100644 index 96e24987..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/isObject', '../object/values', '../array/map', '../function/makeIterator_'], function (isObject, values, arrMap, makeIterator) { - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - return map; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js deleted file mode 100644 index de9a6da5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/max', '../object/max'], function (make, arrMax, objMax) { - - /** - * Get maximum value inside collection - */ - return make(arrMax, objMax); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js deleted file mode 100644 index f0c239a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/min', '../object/min'], function (make, arrMin, objMin) { - - /** - * Get minimum value inside collection. - */ - return make(arrMin, objMin); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js deleted file mode 100644 index ef784a7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js deleted file mode 100644 index bd05d43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/reduce', '../object/reduce'], function (make, arrReduce, objReduce) { - - /** - */ - return make(arrReduce, objReduce); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js deleted file mode 100644 index 581adfdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js deleted file mode 100644 index 4e5ab419..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/isArray', '../object/size'], function (isArray, objSize) { - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js deleted file mode 100644 index c0aebee2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/some', '../object/some'], function (make, arrSome, objSome) { - - /** - */ - return make(arrSome, objSome); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js deleted file mode 100644 index 4d449150..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js deleted file mode 100644 index dc77ae1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - return dayOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js deleted file mode 100644 index 667165fe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js +++ /dev/null @@ -1,128 +0,0 @@ -define(['./totalDaysInMonth', './totalDaysInYear', '../time/convert'], function(totalDaysInMonth, totalDaysInYear, convert){ - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - return diff; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js deleted file mode 100644 index 5e640c22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // en-US (English, United States) - return { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js deleted file mode 100644 index 47256dd2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // pt-BR (Brazillian Portuguese) - return { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js deleted file mode 100644 index c04ce885..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../object/mixIn', './i18n/en-US'], function(mixIn, enUS){ - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - return activeLocale; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js deleted file mode 100644 index e400b43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - return isLeapYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js deleted file mode 100644 index f30531fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./startOf'], function (startOf) { - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - return isSame; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js deleted file mode 100644 index 9a2aacb0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -define(['../array/some'], function (some) { - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - var match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else if ((match = TIME_ZONE.exec(str))) { - var match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - return parseISO8601; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js deleted file mode 100644 index 747f114d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['../lang/clone'], function (clone) { - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - return startOf; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js deleted file mode 100644 index dd782505..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js +++ /dev/null @@ -1,113 +0,0 @@ -define(['../number/pad', './i18n_', './dayOfTheYear', './timezoneOffset', './timezoneAbbr', './weekOfTheYear'], function (pad, i18n, dayOfTheYear, timezoneOffset, timezoneAbbr, weekOfTheYear) { - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - return strftime; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js deleted file mode 100644 index 225a6856..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./timezoneOffset'], function(timezoneOffset) { - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - return timezoneAbbr; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js deleted file mode 100644 index ca06705d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/pad'], function (pad) { - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - return timezoneOffset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js deleted file mode 100644 index 98f7e9d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['../lang/isDate', './isLeapYear'], function (isDate, isLeapYear) { - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - return totalDaysInMonth; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js deleted file mode 100644 index e9036b42..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./isLeapYear'], function (isLeapYear) { - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - return totalDaysInYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js deleted file mode 100644 index 8dabc458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./dayOfTheYear'], function (dayOfTheYear) { - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - return weekOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js deleted file mode 100644 index 23f4fd74..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js deleted file mode 100644 index 09e5e20a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function(){ - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - return bind; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js deleted file mode 100644 index d8b228fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - return compose; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js deleted file mode 100644 index 21644ecc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - return debounced; - } - - return debounce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js deleted file mode 100644 index b920e00e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - return func; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js deleted file mode 100644 index deb6e137..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./prop', '../object/deepMatches'], function(prop, deepMatches) { - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'object': - // typeof null == "object" - return (src != null)? function(val, key, target){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - case 'function': - if (typeof thisObj === 'undefined') { - return src; - } else { - return function(val, i, arr){ - return src.call(thisObj, val, i, arr); - }; - } - default: - return src; - } - } - - return makeIterator; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js deleted file mode 100644 index ad730746..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - return partial; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js deleted file mode 100644 index c9df78ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - return prop; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js deleted file mode 100644 index c8856a27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function () { - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - return series; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js deleted file mode 100644 index 8ce3929a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../time/now'], function (now) { - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - return throttled; - } - - return throttle; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js deleted file mode 100644 index 15388bdd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - return timeout; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js deleted file mode 100644 index 744bb119..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/**@license - * mout v0.6.0 | http://moutjs.com | MIT license - */ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'VERSION' : '0.6.0', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js deleted file mode 100644 index de16b597..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js +++ /dev/null @@ -1,36 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toString' : require('./lang/toString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js deleted file mode 100644 index 468489a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js +++ /dev/null @@ -1,47 +0,0 @@ -define(['./kindOf', './isPlainObject', '../object/mixIn'], function (kindOf, isPlainObject, mixIn) { - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - return clone; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js deleted file mode 100644 index f7661500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../object/mixIn'], function(mixIn){ - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - return createObject; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js deleted file mode 100644 index a9ac1c54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function () { - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - return ctorApply; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js deleted file mode 100644 index d45c10aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js +++ /dev/null @@ -1,45 +0,0 @@ -define(['./clone', '../object/forOwn', './kindOf', './isPlainObject'], function (clone, forOwn, kindOf, isPlainObject) { - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - return deepClone; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js deleted file mode 100644 index 5156b1bb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./toArray', '../array/find'], function (toArray, find) { - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - return defaults; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js deleted file mode 100644 index c1fda3a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./createObject'], function(createObject){ - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - } - - return inheritPrototype; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js deleted file mode 100644 index 261a2077..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - return is; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js deleted file mode 100644 index f889ee8e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isKind'], function (isKind) { - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - return isArgs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js deleted file mode 100644 index 886e2aa5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - return isArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js deleted file mode 100644 index 1ca27a69..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - return isBoolean; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js deleted file mode 100644 index 2708d676..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - return isDate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js deleted file mode 100644 index 4cc3d2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../object/forOwn', './isArray'], function (forOwn, isArray) { - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - return isEmpty; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js deleted file mode 100644 index 5a982f4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - return isFinite; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js deleted file mode 100644 index ff5df7f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - return isFunction; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js deleted file mode 100644 index 1931f516..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - return isInteger; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js deleted file mode 100644 index 6937a12f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -define(['./kindOf'], function (kindOf) { - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - return isKind; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js deleted file mode 100644 index 9467a3c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - return !isNumber(val) || val != +val; - } - - return isNaN; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js deleted file mode 100644 index 506e05ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function () { - /** - */ - function isNull(val){ - return val === null; - } - return isNull; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js deleted file mode 100644 index 9a832c5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - return isNumber; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js deleted file mode 100644 index 0befb063..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - return isObject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js deleted file mode 100644 index 6c5854fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value - && typeof value === 'object' - && value.constructor === Object); - } - - return isPlainObject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js deleted file mode 100644 index d78a03da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - return isRegExp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js deleted file mode 100644 index 8a42fe01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - return isString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js deleted file mode 100644 index c57b28eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function () { - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - return isUndef; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js deleted file mode 100644 index d4336222..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./is'], function (is) { - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - return isnt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js deleted file mode 100644 index 97d21d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - return kindOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js deleted file mode 100644 index 552916f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./kindOf'], function (kindOf) { - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - return toArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js deleted file mode 100644 index c28b89af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - return toString; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js deleted file mode 100644 index e2ba8705..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js deleted file mode 100644 index d73b0581..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - return ceil; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js deleted file mode 100644 index fb5a1484..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - return clamp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js deleted file mode 100644 index 0ecb32f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(){ - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - return countSteps; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js deleted file mode 100644 index 8a4456b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - return floor; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js deleted file mode 100644 index 0c890536..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - return inRange; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js deleted file mode 100644 index b308a0b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - return isNear; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js deleted file mode 100644 index 26b99d04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - return lerp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js deleted file mode 100644 index c735ecf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - return loop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js deleted file mode 100644 index bf7dc5d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./lerp', './norm'], function(lerp, norm){ - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js deleted file mode 100644 index fccae20e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - return norm; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js deleted file mode 100644 index b43e4ac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - return round; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js deleted file mode 100644 index cb52fc75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js deleted file mode 100644 index 23a6e1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ -define(function(){ - return 2147483647; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js deleted file mode 100644 index a035096c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ -define(function(){ - return 4294967295; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js deleted file mode 100644 index 9b3e9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ -define(function(){ - return -2147483648; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js deleted file mode 100644 index 7e7405ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -define(['./enforcePrecision'], function (enforcePrecision) { - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - return abbreviateNumber; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js deleted file mode 100644 index dcde8fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js +++ /dev/null @@ -1,26 +0,0 @@ -define(function () { - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - return currencyFormat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js deleted file mode 100644 index 84554d0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function(){ - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) -> - * 0.61` - */ - function enforcePrecision(val, nDecimalDigits){ - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - return enforcePrecision; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js deleted file mode 100644 index 3b2c062a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../string/lpad'], function(lpad){ - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - return lpad(''+ n, minLength, char || '0'); - } - - return pad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js deleted file mode 100644 index a148f444..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - return rol; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js deleted file mode 100644 index b5c66f92..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - return ror; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js deleted file mode 100644 index dfc131d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function () { - - /** - * Get sign of the value. - */ - function sign(val) { - var num = Number(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - return sign; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js deleted file mode 100644 index 1e9b4c0b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(){ - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - return ~~val; - } - - return toInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js deleted file mode 100644 index d5b25b2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - return val >>> 0; - } - - return toUInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js deleted file mode 100644 index 9785a054..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./MAX_INT'], function(MAX_INT){ - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - return toUInt31; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js deleted file mode 100644 index 343e7826..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js +++ /dev/null @@ -1,42 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js deleted file mode 100644 index b131ed15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./functions', '../function/bind', '../array/forEach'], function (functions, bind, forEach) { - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - return bindAll; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js deleted file mode 100644 index 297e8986..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./some'], function (some) { - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js deleted file mode 100644 index 8b7d5d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['../lang/isObject', './equals'], function (isObject, equals) { - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - return deepEquals; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js deleted file mode 100644 index 84ba154a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) - && isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - return deepFillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js deleted file mode 100644 index 2eae6297..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['./forOwn', '../lang/isArray'], function(forOwn, isArray) { - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - return deepMatches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js deleted file mode 100644 index 1b4178ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - return deepMixIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js deleted file mode 100644 index 596cb952..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./hasOwn', './every', '../lang/isObject'], function(hasOwn, every, isObject) { - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - return equals; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js deleted file mode 100644 index 52983a5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - return every; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js deleted file mode 100644 index 0845d3c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach', './forOwn'], function (forEach, forOwn) { - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - return fillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js deleted file mode 100644 index f213b915..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - return filterValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js deleted file mode 100644 index 47e6b09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./some', '../function/makeIterator_'], function(some, makeIterator) { - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js deleted file mode 100644 index 2058e9cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ -define(function () { - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - return forIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js deleted file mode 100644 index b40cbaf1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./hasOwn', './forIn'], function (hasOwn, forIn) { - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - return forOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js deleted file mode 100644 index 60fee3dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./forIn'], function (forIn) { - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - return functions; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js deleted file mode 100644 index ca80b059..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object') return; - } - - return obj[last]; - } - - return get; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js deleted file mode 100644 index cc29817f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./get'], function (get) { - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - return has; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js deleted file mode 100644 index 5c53bcf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - return hasOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js deleted file mode 100644 index ed7c4f91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - return keys; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js deleted file mode 100644 index 2958f6b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - return mapValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js deleted file mode 100644 index 73ff427c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - return matches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js deleted file mode 100644 index ef311dcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/max', './values'], function(arrMax, values) { - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - return max; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js deleted file mode 100644 index d7cfedec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js +++ /dev/null @@ -1,38 +0,0 @@ -define(['./hasOwn', '../lang/deepClone', '../lang/isObject'], function (hasOwn, deepClone, isObject) { - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - return merge; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js deleted file mode 100644 index 9fb4c1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/min', './values'], function(arrMin, values) { - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - return min; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js deleted file mode 100644 index 6210b7e7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn'], function(forOwn){ - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - return mixIn; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js deleted file mode 100644 index 7ed65db8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach'], function (forEach) { - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - return namespace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js deleted file mode 100644 index 76e22bfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(){ - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js deleted file mode 100644 index d47744bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map', '../function/prop'], function (map, prop) { - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js deleted file mode 100644 index d3a57788..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn', './size'], function(forOwn, size) { - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - return reduce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js deleted file mode 100644 index 84296428..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js deleted file mode 100644 index b8fa25a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./namespace'], function (namespace) { - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - return set; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js deleted file mode 100644 index c6e377cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js deleted file mode 100644 index 1bd6fdae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - return some; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js deleted file mode 100644 index 787fc19a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./has'], function (has) { - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - return unset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js deleted file mode 100644 index b311fd09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - return values; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js deleted file mode 100644 index 44346127..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js deleted file mode 100644 index a6d11cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./getQuery'], function (getQuery) { - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js deleted file mode 100644 index 02bc1609..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../string/typecast', '../lang/isString'], function (typecast, isString) { - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - n = queryArr.length, - obj = {}, - item, val; - while (n--) { - item = queryArr[n].split('='); - val = shouldTypecast === false? item[1] : typecast(item[1]); - obj[item[0]] = isString(val)? decodeURIComponent(val) : val; - } - return obj; - } - - return decode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js deleted file mode 100644 index bd72a5b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../object/forOwn'], function (forOwn) { - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = []; - forOwn(obj, function(val, key){ - query.push( key +'='+ encodeURIComponent(val) ); - }); - return (query.length)? '?'+ query.join('&') : ''; - } - - return encode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js deleted file mode 100644 index d9813724..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../string/typecast', './getQuery'], function (typecast, getQuery) { - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - return getParam; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js deleted file mode 100644 index aa3d99f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - return getQuery; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js deleted file mode 100644 index ac153e3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./decode', './getQuery'], function (decode, getQuery) { - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - return parse; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js deleted file mode 100644 index 97081aa7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - return setParam; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js deleted file mode 100644 index b2641ee3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js deleted file mode 100644 index 0d0c38df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./randInt', '../lang/isArray'], function (randInt, isArray) { - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - return choice; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js deleted file mode 100644 index 82f3a2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./randHex', './choice'], function (randHex, choice) { - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - return guid; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js deleted file mode 100644 index b8c231dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./random', '../number/MIN_INT', '../number/MAX_INT'], function(random, MIN_INT, MAX_INT){ - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - return rand; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js deleted file mode 100644 index b3422d2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - return randomBit; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js deleted file mode 100644 index 6e9bf1c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./choice'], function (choice) { - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - return randHex; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js deleted file mode 100644 index 1750e9de..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/MIN_INT', '../number/MAX_INT', './rand'], function(MIN_INT, MAX_INT, rand){ - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - return randInt; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js deleted file mode 100644 index 4141cdf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - return randomSign; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js deleted file mode 100644 index 4270822e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function () { - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - return random; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js deleted file mode 100644 index 3f5fd804..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js +++ /dev/null @@ -1,45 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js deleted file mode 100644 index e830d86d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function() { - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - return [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js deleted file mode 100644 index 02e6c04d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './upperCase', './lowerCase'], function(toString, replaceAccents, removeNonWord, upperCase, lowerCase){ - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - return camelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js deleted file mode 100644 index 825b5a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js deleted file mode 100644 index 3c073f05..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './truncate'], function (toString, truncate) { - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - return crop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js deleted file mode 100644 index 31a73f20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString) { - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - return endsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js deleted file mode 100644 index de34b61b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - return escapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js deleted file mode 100644 index 32facac0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - return escapeRegExp; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js deleted file mode 100644 index bd5e8c4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - return escapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js deleted file mode 100644 index 679c405c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - return hyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js deleted file mode 100644 index ecb8ba80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - return interpolate; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js deleted file mode 100644 index b045d69c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - return lowerCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js deleted file mode 100644 index ea4f5fbf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './repeat'], function(toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return ((str.length < minLen) - ? repeat(ch, minLen - str.length) + str : str); - } - - return lpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js deleted file mode 100644 index 477df953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - return ltrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js deleted file mode 100644 index 7aa7baba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../array/join'], function(join){ - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - return result.replace(/\/{2,}/g, '/'); - } - - return makePath; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js deleted file mode 100644 index 44e4194f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - return normalizeLineBreaks; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js deleted file mode 100644 index ead9ead4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './camelCase', './upperCase'], function(toString, camelCase, upperCase){ - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - return pascalCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js deleted file mode 100644 index 2987b507..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - return properCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js deleted file mode 100644 index 4905869d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - return removeNonASCII; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js deleted file mode 100644 index 2b1a2040..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - return removeNonWord; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js deleted file mode 100644 index 02f5659f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString){ - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - return repeat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js deleted file mode 100644 index 8b762fdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', '../lang/toArray'], function (toString, toArray) { - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - return replace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js deleted file mode 100644 index 3a63f55a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - return replaceAccents; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js deleted file mode 100644 index 2efd9c88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString', './repeat'], function (toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - return rpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js deleted file mode 100644 index a4cc282d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - return rtrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js deleted file mode 100644 index cfe45af5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - return sentenceCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js deleted file mode 100644 index c6d68c7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './trim'], function(toString, replaceAccents, removeNonWord, trim){ - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - return slugify; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js deleted file mode 100644 index 88ae5453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function (toString) { - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - return startsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js deleted file mode 100644 index e8da956d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - return stripHtmlTags; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js deleted file mode 100644 index 55526041..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES', './ltrim', './rtrim'], function(toString, WHITE_SPACES, ltrim, rtrim){ - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - return trim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js deleted file mode 100644 index 34000d9f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/toString', './trim'], function(toString, trim){ - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - return truncate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js deleted file mode 100644 index a7c83153..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - return typecast; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js deleted file mode 100644 index eeef39b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../lang/toString'], function(toString){ - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - return unCamelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js deleted file mode 100644 index 75dd4649..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - return underscore; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js deleted file mode 100644 index 173c69c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - return unescapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js deleted file mode 100644 index d4a7ba1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - return unescapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js deleted file mode 100644 index 6ac2fa4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - return unhyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js deleted file mode 100644 index 8b2073e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - return upperCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js deleted file mode 100644 index 67c90685..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js deleted file mode 100644 index 2de0cf2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ -define(function () { - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - return convert; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js deleted file mode 100644 index a3a38bcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - return now; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js deleted file mode 100644 index 964929ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['../math/countSteps'], function(countSteps){ - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - return parseMs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js deleted file mode 100644 index edf18218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../math/countSteps', '../number/pad'], function(countSteps, pad){ - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - return toTimeString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string.js deleted file mode 100644 index 7f0ca3bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string.js +++ /dev/null @@ -1,45 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js deleted file mode 100644 index 03e01254..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - module.exports = [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js deleted file mode 100644 index aadb69a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js +++ /dev/null @@ -1,20 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var upperCase = require('./upperCase'); -var lowerCase = require('./lowerCase'); - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - module.exports = camelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js deleted file mode 100644 index cb22cae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js deleted file mode 100644 index 53b93b49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js +++ /dev/null @@ -1,12 +0,0 @@ -var toString = require('../lang/toString'); -var truncate = require('./truncate'); - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - module.exports = crop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js deleted file mode 100644 index d504e9dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - module.exports = endsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js deleted file mode 100644 index e67c4b21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - module.exports = escapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js deleted file mode 100644 index 70cb84ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - module.exports = escapeRegExp; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js deleted file mode 100644 index ec649adf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - module.exports = escapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js deleted file mode 100644 index 95e32436..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - module.exports = hyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js deleted file mode 100644 index ac88fac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - module.exports = interpolate; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js deleted file mode 100644 index 30bb7ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - module.exports = lowerCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js deleted file mode 100644 index 694d711e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js +++ /dev/null @@ -1,17 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return ((str.length < minLen) - ? repeat(ch, minLen - str.length) + str : str); - } - - module.exports = lpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js deleted file mode 100644 index 23d7b33f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js +++ /dev/null @@ -1,34 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - module.exports = ltrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js deleted file mode 100644 index 69aef310..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js +++ /dev/null @@ -1,13 +0,0 @@ -var join = require('../array/join'); - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - return result.replace(/\/{2,}/g, '/'); - } - - module.exports = makePath; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js deleted file mode 100644 index 8a8dccfd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - module.exports = normalizeLineBreaks; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js deleted file mode 100644 index fd190353..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var camelCase = require('./camelCase'); -var upperCase = require('./upperCase'); - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - module.exports = pascalCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js deleted file mode 100644 index 61636be4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - module.exports = properCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js deleted file mode 100644 index fb463816..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - module.exports = removeNonASCII; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js deleted file mode 100644 index bdd153b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - module.exports = removeNonWord; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js deleted file mode 100644 index 0f9b4754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - module.exports = repeat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js deleted file mode 100644 index 14433fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var toArray = require('../lang/toArray'); - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - module.exports = replace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js deleted file mode 100644 index bb221265..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - module.exports = replaceAccents; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js deleted file mode 100644 index 99f6378d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - module.exports = rpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js deleted file mode 100644 index 66ba80e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - module.exports = rtrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js deleted file mode 100644 index 354104c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - module.exports = sentenceCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js deleted file mode 100644 index 142f0d9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js +++ /dev/null @@ -1,24 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var trim = require('./trim'); - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - module.exports = slugify; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js deleted file mode 100644 index bce2bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - module.exports = startsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js deleted file mode 100644 index 01d17b0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - module.exports = stripHtmlTags; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js deleted file mode 100644 index 9652b0c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); -var ltrim = require('./ltrim'); -var rtrim = require('./rtrim'); - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - module.exports = trim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js deleted file mode 100644 index a98d6c7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); -var trim = require('./trim'); - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - module.exports = truncate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js deleted file mode 100644 index c1386a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ - - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - module.exports = typecast; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js deleted file mode 100644 index 4968f378..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -var toString = require('../lang/toString'); - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - module.exports = unCamelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js deleted file mode 100644 index ebd6e2b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - module.exports = underscore; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js deleted file mode 100644 index 52cf3f45..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - module.exports = unescapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js deleted file mode 100644 index 0b7fb73b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - module.exports = unescapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js deleted file mode 100644 index 311dfa17..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - module.exports = unhyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js deleted file mode 100644 index 6c92552c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - module.exports = upperCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time.js deleted file mode 100644 index 9f533296..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time.js +++ /dev/null @@ -1,12 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js deleted file mode 100644 index 852a0f03..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ - - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - module.exports = convert; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js deleted file mode 100644 index effcfbe3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - module.exports = now; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js deleted file mode 100644 index 6d997976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - module.exports = parseMs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js deleted file mode 100644 index 101d69fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js +++ /dev/null @@ -1,24 +0,0 @@ -var countSteps = require('../math/countSteps'); -var pad = require('../number/pad'); - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - module.exports = toTimeString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore deleted file mode 100644 index f1250e58..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/History.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/History.md deleted file mode 100644 index 88119480..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/History.md +++ /dev/null @@ -1,42 +0,0 @@ - -1.0.0 / 2013-06-18 -================== - - * remove .version - * >=. Closes #19 - * Merge pull request #15 from davglass/readline-osx - * On OSX revert back to terminal hack to avoid a readline bug - -0.1.0 / 2012-09-19 -================== - - * Fixed logic bug that caused bar to jump one extra space at the end [davglass] - * Working with readline impl, even on Windows [davglass] - * Using readline instead of the \r hack [davglass] - -0.0.5 / 2012-08-07 -================== - - * add ability to tick by zero chunks - tick(0) - * fix ETA. Closes #4 [lwille] - -0.0.4 / 2011-11-14 -================== - - * Allow more recent versions of node - -0.0.3 / 2011-04-20 -================== - - * Changed; erase the line when complete - -0.0.2 / 2011-04-20 -================== - - * Added custom tokens support - * Fixed; clear line before writing - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Makefile deleted file mode 100644 index 36a3ed7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Makefile +++ /dev/null @@ -1,5 +0,0 @@ - -test: - @echo "populate me" - -.PHONY: test \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md deleted file mode 100644 index 4e08a49b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md +++ /dev/null @@ -1,117 +0,0 @@ -# node-progress - - Flexible ascii progress bar - -## Installation - - npm install progress - -## Usage - - First we create a `ProgressBar`, giving it a format string - as well as the `total`, telling the progress bar when it will - be considered complete. After that all we need to do is `tick()` appropriately. - -```javascript -var ProgressBar = require('progress'); - -var bar = new ProgressBar(':bar', { total: 10 }); -var timer = setInterval(function(){ - bar.tick(); - if (bar.complete) { - console.log('\ncomplete\n'); - clearInterval(timer); - } -}, 100); -``` - -## Options: - - - `total` total number of ticks to complete - - `width` the displayed width of the progress bar defaulting to total - - `stream` the output stream defaulting to stdout - - `complete` completion character defaulting to "=" - - `incomplete` incomplete character defaulting to "-" - - `clear` option to clear the bar on completion defaulting to false - - `callback` optional function to call when the progress bar completes - -## Tokens: - - - `:bar` the progress bar itself - - `:current` current tick number - - `:total` total ticks - - `:elapsed` time elapsed in seconds - - `:percent` completion percentage - - `:eta` estimated completion time in seconds - -## Examples - -### Download - - In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length. - -```javascript -var ProgressBar = require('../') - , https = require('https'); - -var req = https.request({ - host: 'download.github.com' - , port: 443 - , path: '/visionmedia-node-jscoverage-0d4608a.zip' -}); - -req.on('response', function(res){ - var len = parseInt(res.headers['content-length'], 10); - - console.log(); - var bar = new ProgressBar(' downloading [:bar] :percent :etas', { - complete: '=' - , incomplete: ' ' - , width: 20 - , total: len - }); - - res.on('data', function(chunk){ - bar.tick(chunk.length); - }); - - res.on('end', function(){ - console.log('\n'); - }); -}); - -req.end(); -``` - - The code above will generate a progress bar that looks like this: - -``` -downloading [===== ] 29% 3.7s -``` - -You can see more examples in the `examples` folder. - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk `<tj@vision-media.ca>` - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/index.js deleted file mode 100644 index 4449dd30..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/node-progress'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js deleted file mode 100644 index ca0ce4f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js +++ /dev/null @@ -1,183 +0,0 @@ -/*! - * node-progress - * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca> - * MIT Licensed - */ - -/** - * Expose `ProgressBar`. - */ - -exports = module.exports = ProgressBar; - -/** - * Initialize a `ProgressBar` with the given - * `fmt` string and `options` or `total`. - * - * Options: - * - * - `total` total number of ticks to complete - * - `width` the displayed width of the progress bar defaulting to total - * - `stream` the output stream defaulting to stdout - * - `complete` completion character defaulting to "=" - * - `incomplete` incomplete character defaulting to "-" - * - `callback` optional function to call when the progress bar completes - * - * Tokens: - * - * - `:bar` the progress bar itself - * - `:current` current tick number - * - `:total` total ticks - * - `:elapsed` time elapsed in seconds - * - `:percent` completion percentage - * - `:eta` eta in seconds - * - * @param {String} fmt - * @param {Object|Number} options or total - * @api public - */ - -function ProgressBar(fmt, options) { - this.rl = require('readline').createInterface({ - input: process.stdin, - output: options.stream || process.stdout - }); - this.rl.setPrompt('', 0); - this.rl.clearLine = function() { - this.write(null, {ctrl: true, name: 'u'}); - }; - - if (typeof(options) == 'number') { - var total = options; - options = {}; - options.total = total; - } else { - options = options || {}; - if ('string' != typeof fmt) throw new Error('format required'); - if ('number' != typeof options.total) throw new Error('total required'); - } - - this.fmt = fmt; - this.curr = 0; - this.total = options.total; - this.width = options.width || this.total; - this.clear = options.clear - this.chars = { - complete: options.complete || '=' - , incomplete: options.incomplete || '-' - }; - this.callback = options.callback || function () {}; -} - -/** - * "tick" the progress bar with optional `len` and - * optional `tokens`. - * - * @param {Number|Object} len or tokens - * @param {Object} tokens - * @api public - */ - -ProgressBar.prototype.tick = function(len, tokens){ - if (len !== 0) - len = len || 1; - - // swap tokens - if ('object' == typeof len) tokens = len, len = 1; - - // start time for eta - if (0 == this.curr) this.start = new Date; - - this.curr += len - this.render(tokens); - - // progress complete - if (this.curr >= this.total) { - this.complete = true; - this.terminate(); - this.callback(this); - return; - } -}; - -/** - * Method to render the progress bar with optional `tokens` to - * place in the progress bar's `fmt` field. - * - * @param {Object} tokens - * @api public - */ - -ProgressBar.prototype.render = function(tokens){ - if(!process.stdout.isTTY) { - return; - } - - var ratio = this.curr / this.total; - ratio = Math.min(Math.max(ratio, 0), 1); - - var percent = ratio * 100 - , complete = Math.round(this.width * ratio) - , incomplete - , elapsed = new Date - this.start - , eta = (percent == 100) ? 0 : elapsed * (this.total / this.curr - 1); - - complete = Array(complete).join(this.chars.complete); - incomplete = Array(this.width - complete.length).join(this.chars.incomplete); - - var str = this.fmt - .replace(':bar', complete + incomplete) - .replace(':current', this.curr) - .replace(':total', this.total) - .replace(':elapsed', isNaN(elapsed) ? "0.0" : (elapsed / 1000).toFixed(1)) - .replace(':eta', (isNaN(eta) || !isFinite(eta)) ? "0.0" : (eta / 1000).toFixed(1)) - .replace(':percent', percent.toFixed(0) + '%'); - - if (tokens) { - for (var key in tokens) { - str = str.replace(':' + key, tokens[key]); - } - } - - this.rl.clearLine(); - this.rl.write(str); -}; - -/** - * "update" the progress bar to represent an exact percentage. - * The ratio (between 0 and 1) specified will be multiplied by `total` and - * floored, representing the closest available "tick." For example, if a - * progress bar has a length of 3 and `update(0.5)` is called, the progress - * will be set to 1. - * - * A ratio of 0.5 will attempt to set the progress to halfway. - * - * @param {Number} ratio The ratio (between 0 and 1 inclusive) to set the - * overall completion to. - * @api public - */ - -ProgressBar.prototype.update = function(ratio, tokens) { - var goal = Math.floor(ratio * this.total); - var delta = goal - this.curr; - - this.tick(delta, tokens); -}; - -/** - * Terminates a progress bar. - * - * @api public - */ - -ProgressBar.prototype.terminate = function() { - this.rl.resume(); - - if (this.clear) { - this.rl.clearLine(); - this.rl.close(); - } else { - this.rl.close(); - console.log(); - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/package.json deleted file mode 100644 index c5ad2ccb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/progress/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "progress", - "version": "1.1.3", - "description": "Flexible ascii progress bar", - "keywords": [ - "cli", - "progress" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "main": "index", - "engines": { - "node": ">=0.4.0" - }, - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-progress" - }, - "readme": "# node-progress\n\n Flexible ascii progress bar\n\n## Installation\n\n npm install progress\n\n## Usage\n\n First we create a `ProgressBar`, giving it a format string\n as well as the `total`, telling the progress bar when it will\n be considered complete. After that all we need to do is `tick()` appropriately.\n\n```javascript\nvar ProgressBar = require('progress');\n\nvar bar = new ProgressBar(':bar', { total: 10 });\nvar timer = setInterval(function(){\n bar.tick();\n if (bar.complete) {\n console.log('\\ncomplete\\n');\n clearInterval(timer);\n }\n}, 100);\n```\n\n## Options:\n\n - `total` total number of ticks to complete\n - `width` the displayed width of the progress bar defaulting to total\n - `stream` the output stream defaulting to stdout\n - `complete` completion character defaulting to \"=\"\n - `incomplete` incomplete character defaulting to \"-\"\n - `clear` option to clear the bar on completion defaulting to false\n - `callback` optional function to call when the progress bar completes\n\n## Tokens:\n\n - `:bar` the progress bar itself\n - `:current` current tick number\n - `:total` total ticks\n - `:elapsed` time elapsed in seconds\n - `:percent` completion percentage\n - `:eta` estimated completion time in seconds\n\n## Examples\n\n### Download\n\n In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length.\n\n```javascript\nvar ProgressBar = require('../')\n , https = require('https');\n\nvar req = https.request({\n host: 'download.github.com'\n , port: 443\n , path: '/visionmedia-node-jscoverage-0d4608a.zip'\n});\n\nreq.on('response', function(res){\n var len = parseInt(res.headers['content-length'], 10);\n\n console.log();\n var bar = new ProgressBar(' downloading [:bar] :percent :etas', {\n complete: '='\n , incomplete: ' '\n , width: 20\n , total: len\n });\n\n res.on('data', function(chunk){\n bar.tick(chunk.length);\n });\n\n res.on('end', function(){\n console.log('\\n');\n });\n});\n\nreq.end();\n```\n\n The code above will generate a progress bar that looks like this:\n\n```\ndownloading [===== ] 29% 3.7s\n```\n\nYou can see more examples in the `examples` folder.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk `<tj@vision-media.ca>`\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-progress/issues" - }, - "homepage": "https://github.com/visionmedia/node-progress", - "_id": "progress@1.1.3", - "_from": "progress@~1.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/README.md deleted file mode 100644 index ff1eb531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The "which" util from npm's guts. - -Finds the first instance of a specified executable in the PATH -environment variable. Does not cache the results, so `hash -r` is not -needed when the PATH changes. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/bin/which b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/bin/which deleted file mode 100755 index 8432ce2f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/bin/which +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env node -var which = require("../") -if (process.argv.length < 3) { - console.error("Usage: which <thing>") - process.exit(1) -} - -which(process.argv[2], function (er, thing) { - if (er) { - console.error(er.message) - process.exit(er.errno || 127) - } - console.log(thing) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/package.json deleted file mode 100644 index 37965061..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "which", - "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.", - "version": "1.0.5", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-which.git" - }, - "main": "which.js", - "bin": { - "which": "./bin/which" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": {}, - "readme": "The \"which\" util from npm's guts.\n\nFinds the first instance of a specified executable in the PATH\nenvironment variable. Does not cache the results, so `hash -r` is not\nneeded when the PATH changes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-which/issues" - }, - "homepage": "https://github.com/isaacs/node-which", - "_id": "which@1.0.5", - "_from": "which@~1.0.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/which.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/which.js deleted file mode 100644 index db7e8f74..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/node_modules/which/which.js +++ /dev/null @@ -1,104 +0,0 @@ -module.exports = which -which.sync = whichSync - -var path = require("path") - , fs - , COLON = process.platform === "win32" ? ";" : ":" - , isExe - -try { - fs = require("graceful-fs") -} catch (ex) { - fs = require("fs") -} - -if (process.platform == "win32") { - // On windows, there is no good way to check that a file is executable - isExe = function isExe () { return true } -} else { - isExe = function isExe (mod, uid, gid) { - //console.error(mod, uid, gid); - //console.error("isExe?", (mod & 0111).toString(8)) - var ret = (mod & 0001) - || (mod & 0010) && process.getgid && gid === process.getgid() - || (mod & 0100) && process.getuid && uid === process.getuid() - //console.error("isExe?", ret) - return ret - } -} - - - -function which (cmd, cb) { - if (isAbsolute(cmd)) return cb(null, cmd) - var pathEnv = (process.env.PATH || "").split(COLON) - , pathExt = [""] - if (process.platform === "win32") { - pathEnv.push(process.cwd()) - pathExt = (process.env.PATHEXT || ".EXE").split(COLON) - if (cmd.indexOf(".") !== -1) pathExt.unshift("") - } - //console.error("pathEnv", pathEnv) - ;(function F (i, l) { - if (i === l) return cb(new Error("not found: "+cmd)) - var p = path.resolve(pathEnv[i], cmd) - ;(function E (ii, ll) { - if (ii === ll) return F(i + 1, l) - var ext = pathExt[ii] - //console.error(p + ext) - fs.stat(p + ext, function (er, stat) { - if (!er && - stat && - stat.isFile() && - isExe(stat.mode, stat.uid, stat.gid)) { - //console.error("yes, exe!", p + ext) - return cb(null, p + ext) - } - return E(ii + 1, ll) - }) - })(0, pathExt.length) - })(0, pathEnv.length) -} - -function whichSync (cmd) { - if (isAbsolute(cmd)) return cmd - var pathEnv = (process.env.PATH || "").split(COLON) - , pathExt = [""] - if (process.platform === "win32") { - pathEnv.push(process.cwd()) - pathExt = (process.env.PATHEXT || ".EXE").split(COLON) - if (cmd.indexOf(".") !== -1) pathExt.unshift("") - } - for (var i = 0, l = pathEnv.length; i < l; i ++) { - var p = path.join(pathEnv[i], cmd) - for (var j = 0, ll = pathExt.length; j < ll; j ++) { - var cur = p + pathExt[j] - var stat - try { stat = fs.statSync(cur) } catch (ex) {} - if (stat && - stat.isFile() && - isExe(stat.mode, stat.uid, stat.gid)) return cur - } - } - throw new Error("not found: "+cmd) -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/package.json deleted file mode 100644 index ed2dcc0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/bin-wrapper/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "bin-wrapper", - "version": "0.1.9", - "description": "Binary wrapper for Node.js that makes your programs seamlessly available as local dependencies", - "keywords": [ - "bin", - "build", - "make", - "wrapper" - ], - "homepage": "https://github.com/kevva/bin-wrapper", - "bugs": { - "url": "https://github.com/kevva/bin-wrapper/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/bin-wrapper.git" - }, - "scripts": { - "test": "mocha --reporter list --timeout 0" - }, - "main": "bin-wrapper.js", - "files": [ - "bin-wrapper.js" - ], - "dependencies": { - "download": "~0.1.2", - "isbin": "0.0.2", - "mout": "~0.6.0", - "progress": "~1.1.0", - "which": "~1.0.5" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# bin-wrapper [![Build Status](https://secure.travis-ci.org/kevva/bin-wrapper.png?branch=master)](http://travis-ci.org/kevva/bin-wrapper)\r\n\r\nBinary wrapper for Node.js that makes your programs seamlessly available as local dependencies\r\n\r\n## Getting started\r\n\r\nInstall with [npm](https://npmjs.org/package/bin-wrapper): `npm install bin-wrapper`\r\n\r\n## Examples\r\n\r\nAll `platform` and `arch` specific options takes precedence over the base \r\noptions. See [test.js](test.js) for a full fleshed example.\r\n\r\n```js\r\nvar Bin = require('bin-wrapper');\r\n\r\nvar opts = {\r\n name: 'Gifsicle',\r\n bin: 'gifsicle',\r\n path: 'vendor',\r\n url: 'http://url/to/gifsicle',\r\n src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz',\r\n buildScript: './configure --bindir=\"vendor\" && make install',\r\n platform: {\r\n win32: {\r\n bin: 'gifsicle.exe',\r\n url: [\r\n 'http://url/to/gifsicle.exe'\r\n 'http://url/to/gifsicle.dll'\r\n ]\r\n }\r\n }\r\n}\r\nvar bin = new Bin(opts);\r\n\r\nbin.check('--version', function (works) {\r\n if (!works) {\r\n console.log('Pre-build test failed, compiling from source');\r\n return bin.build();\r\n }\r\n\r\n console.log('Binary passed the test');\r\n});\r\n```\r\n\r\nGet the path to your binary with `bin.path`.\r\n\r\n```js\r\nconsole.log(bin.path);\r\n// => path/to/vendor/gifsicle\r\n```\r\n\r\n## API\r\n\r\n### .check(cmd, cb)\r\n\r\nCheck if a binary is present and working. If it isn't, download and test it by \r\nrunning the binary with `cmd` and see if it exits correctly.\r\n\r\n### .build(cb)\r\n\r\nDownload the source archive defined in the `src` property and build it using the \r\nbuild script defined in the `buildScript` property.\r\n\r\n## License\r\n\r\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\r\n", - "readmeFilename": "README.md", - "_id": "bin-wrapper@0.1.9", - "_from": "bin-wrapper@~0.1.3" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/chalk.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/chalk.js deleted file mode 100644 index 17c6dbab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/chalk.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; -var ansi = require('ansi-styles'); -var defineProps = Object.defineProperties; - -ansi.grey = ansi.gray; - -var styles = (function () { - var ret = {}; - - Object.keys(ansi).forEach(function (key) { - ret[key] = { - get: function () { - this._styles.push(key); - return this; - } - }; - }); - - return ret; -})(); - -var chalk = module.exports = defineProps({}, init()); - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - var obj = defineProps(function self(str) { - if (!chalk.enabled) { - return str; - } - - return self._styles.reduce(function (str, name) { - var code = ansi[name]; - return code[0] + (str || '') + code[1]; - }, str); - }, styles); - - obj._styles = []; - - return obj[name]; - } - } - }); - - return ret; -} - -chalk.styles = ansi; - -chalk.stripColor = function (str) { - return str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, ''); -}; - -chalk.supportsColor = require('has-color'); - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js deleted file mode 100644 index 56a5d19b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -module.exports = { - reset: ['\x1b[0m', '\x1b[0m'], - - bold: ['\x1b[1m', '\x1b[22m'], - italic: ['\x1b[3m', '\x1b[23m'], - underline: ['\x1b[4m', '\x1b[24m'], - inverse: ['\x1b[7m', '\x1b[27m'], - strikethrough: ['\x1b[9m', '\x1b[29m'], - - black: ['\x1b[30m', '\x1b[39m'], - red: ['\x1b[31m', '\x1b[39m'], - green: ['\x1b[32m', '\x1b[39m'], - yellow: ['\x1b[33m', '\x1b[39m'], - blue: ['\x1b[34m', '\x1b[39m'], - magenta: ['\x1b[35m', '\x1b[39m'], - cyan: ['\x1b[36m', '\x1b[39m'], - white: ['\x1b[37m', '\x1b[39m'], - gray: ['\x1B[90m', '\x1b[39m'], - - bgBlack: ['\x1b[40m', '\x1b[49m'], - bgRed: ['\x1b[41m', '\x1b[49m'], - bgGreen: ['\x1b[42m', '\x1b[49m'], - bgYellow: ['\x1b[43m', '\x1b[49m'], - bgBlue: ['\x1b[44m', '\x1b[49m'], - bgMagenta: ['\x1b[45m', '\x1b[49m'], - bgCyan: ['\x1b[46m', '\x1b[49m'], - bgWhite: ['\x1b[47m', '\x1b[49m'] -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index c2f556a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "ansi-styles", - "version": "0.2.0", - "description": "ANSI escape codes for colorizing strings in the terminal", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/ansi-styles", - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "ansi-styles.js" - ], - "main": "ansi-styles", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles)\n\n> ANSI escape codes for colorizing strings in the terminal.\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![screenshot](screenshot.png)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles`\n\n\n## Example\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green[0] + 'Hello world!' + ansi.green[1]);\n```\n\n## API\n\nEach style is an array of a start and end escape code.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT License • © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "ansi-styles@0.2.0", - "_from": "ansi-styles@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 646837c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles) - -> ANSI escape codes for colorizing strings in the terminal. - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -Install with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles` - - -## Example - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green[0] + 'Hello world!' + ansi.green[1]); -``` - -## API - -Each style is an array of a start and end escape code. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/has-color.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/has-color.js deleted file mode 100644 index 27316b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/has-color.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (!process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - return /^screen|^xterm|color|ansi|cygwin|linux/i.test(process.env.TERM); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/package.json deleted file mode 100644 index e55a6244..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "has-color", - "version": "0.1.4", - "description": "Detect whether a terminal supports color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "capability", - "detect" - ], - "homepage": "https://github.com/sindresorhus/has-color", - "bugs": { - "url": "https://github.com/sindresorhus/has-color/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "has-color.js" - ], - "main": "has-color", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-color.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color)\n\n> Detect whether a terminal supports color.\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/has-color): `npm install --save has-color`\n\n\n## Example\n\n```js\nvar hasColor = require('has-color');\n\nif (hasColor) {\n\tconsole.log('Terminal supports color.');\n}\n```\n\nIt obeys the CLI flags `--color` and `--no-color`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "has-color@0.1.4", - "_from": "has-color@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/readme.md deleted file mode 100644 index 0918c851..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/node_modules/has-color/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color) - -> Detect whether a terminal supports color. - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install with [npm](https://npmjs.org/package/has-color): `npm install --save has-color` - - -## Example - -```js -var hasColor = require('has-color'); - -if (hasColor) { - console.log('Terminal supports color.'); -} -``` - -It obeys the CLI flags `--color` and `--no-color`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/package.json deleted file mode 100644 index fa15ac29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "chalk", - "version": "0.2.1", - "description": "Terminal string styling done right", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/chalk", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "chalk.js" - ], - "main": "chalk", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk.git" - }, - "scripts": { - "test": "mocha" - }, - "dependencies": { - "has-color": "~0.1.0", - "ansi-styles": "~0.2.0" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk)\n\n> Terminal string styling done right.\n\n[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](screenshot.png)\n\n\n## Why\n\n- **Doesn't extend String.prototype**\n- Expressive API\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/chalk): `npm install --save chalk`\n\n\n## Example\n\nChalk comes with an easy to use composable API where you just chain the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nconsole.log(chalk.blue('Hello world!'));\n\n// combine styled and normal strings\nconsole.log(chalk.blue('Hello') + 'World' + chalk.red('!'));\n\n// compose multiple styles using the chainable API\nconsole.log(chalk.blue.bgRed.bold('Hello world!'));\n\n// nest styles\nchalk.red('Hello' + chalk.underline.bgBlue('world') + '!');\n```\n\nYou can easily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\n\n## API\n\n### chalk.\\<style>\\[.\\<style>...](string)\n\nChain [styles](#styles) and call the last one as a method with a string argument.\n\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it.\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/has-color).\n\nCan be overridden by the user with the flags `--color` and `--no-color`.\n\nUsed internally and handled for you, but exposed for convenience.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> ['\\x1b[31m', '\\x1b[39m']\n\nconsole.log(chalk.styles.red[0] + 'Hello' + chalk.styles.red[1]);\n// first item is the style escape code and second is the reset escape code\n```\n\n### chalk.stripColor(string)\n\nStrip color from a string.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT License • © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "chalk@0.2.1", - "_from": "chalk@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/readme.md deleted file mode 100644 index d369d2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/node_modules/chalk/readme.md +++ /dev/null @@ -1,130 +0,0 @@ -# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) - -> Terminal string styling done right. - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](screenshot.png) - - -## Why - -- **Doesn't extend String.prototype** -- Expressive API -- Clean and focused -- Auto-detects color support -- Actively maintained - - -## Install - -Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` - - -## Example - -Chalk comes with an easy to use composable API where you just chain the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log(chalk.blue('Hello world!')); - -// combine styled and normal strings -console.log(chalk.blue('Hello') + 'World' + chalk.red('!')); - -// compose multiple styles using the chainable API -console.log(chalk.blue.bgRed.bold('Hello world!')); - -// nest styles -chalk.red('Hello' + chalk.underline.bgBlue('world') + '!'); -``` - -You can easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - - -## API - -### chalk.\<style>\[.\<style>...](string) - -Chain [styles](#styles) and call the last one as a method with a string argument. - - -### chalk.enabled - -Color support is automatically detected, but you can override it. - -### chalk.supportsColor - -Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). - -Can be overridden by the user with the flags `--color` and `--no-color`. - -Used internally and handled for you, but exposed for convenience. - -### chalk.styles - -Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). - -```js -var chalk = require('chalk'); - -console.log(chalk.styles.red); -//=> ['\x1b[31m', '\x1b[39m'] - -console.log(chalk.styles.red[0] + 'Hello' + chalk.styles.red[1]); -// first item is the style escape code and second is the reset escape code -``` - -### chalk.stripColor(string) - -Strip color from a string. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/package.json deleted file mode 100644 index 8279e73b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "jpegtran-bin", - "version": "0.2.3", - "description": "jpegtran (part of libjpeg-turbo) wrapper that makes it seamlessly available as a local dependency on OS X, Linux, FreeBSD, Solaris and Windows. Most commonly used to losslessly minify JPEG images.", - "keywords": [ - "jpeg", - "jpg", - "img", - "image", - "compress", - "minify", - "optimize" - ], - "homepage": "https://github.com/yeoman/node-jpegtran-bin", - "bugs": { - "url": "https://github.com/yeoman/node-jpegtran-bin/issues" - }, - "license": "BSD", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "maintainers": [ - { - "name": "Duncan Wong" - }, - { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - } - ], - "main": "lib/jpegtran", - "bin": { - "jpegtran": "bin/jpegtran.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/yeoman/node-jpegtran-bin.git" - }, - "scripts": { - "test": "mocha", - "postinstall": "node lib/check.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "bin-wrapper": "~0.1.3", - "chalk": "~0.2.0" - }, - "devDependencies": { - "mocha": "~1.13.0" - }, - "files": [ - "bin", - "lib", - "test" - ], - "readme": "# node-jpegtran-bin [![Build Status](https://secure.travis-ci.org/yeoman/node-jpegtran-bin.png?branch=master)](http://travis-ci.org/yeoman/node-jpegtran-bin)\n\njpegtran 1.3 (part of [libjpeg-turbo](http://libjpeg-turbo.virtualgl.org/)) Node.js wrapper that makes it seamlessly available as a local dependency on OS X, Linux, FreeBSD, Solaris and Windows. Most commonly used to losslessly minify JPEG images.\n\n> libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression on x86, x86-64, and ARM systems. On such systems, libjpeg-turbo is generally 2-4x as fast as the unmodified version of libjpeg, all else being equal.\n\n\n## Install\n\n- Install with [npm](https://npmjs.org/package/jpegtran-bin): `npm install --save jpegtran-bin`\n\n\n## Example usage\n\n```js\nvar execFile = require('child_process').execFile;\nvar jpegtranPath = require('jpegtran-bin').path;\n\nexecFile(jpegtranPath, ['-outfile', 'output.jpg', 'input.jpg'], function() {\n console.log('Image minified');\n});\n```\n\nCan also be run directly from `./node_modules/.bin/jpegtran`.\n\n\n## Dev\n\nNote to self on how to update the binaries.\n\n### OS X and Linux\n\n- Run `npm install` to build the binary.\n\nThe `nasm` (Netwide Assember) package is required to build the binary on Ubuntu.\n\n### Windows\n\n- Download the [Windows files 32/64-bit](http://sourceforge.net/projects/libjpeg-turbo/files/) (GCC compiled) on a Windows machine\n\n (current version 1.3.0, x64 `libjpeg-turbo-1.3.0-gcc64.exe` and for x86 `libjpeg-turbo-1.3.0-gcc.exe`)\n- Run the downloaded file to extract\n- In the extracted folder go to the `bin` folder and copy `jpegtran.exe` and `libjpeg-62.dll` to `jpegtran-bin\\vendor\\` folder\n \n (for `grunt-contrib-imagemin` the folder is `grunt-contrib-imagemin\\node_modules\\jpegtran-bin\\vendor\\`)\n\n\n## License\n\nEverything excluding the binaries licensed under the [BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google.\n\nlibjpeg-turbo licensed under the BSD license and copyright dcommander.\n", - "readmeFilename": "readme.md", - "_id": "jpegtran-bin@0.2.3", - "_from": "jpegtran-bin@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/readme.md deleted file mode 100644 index 4e32f68e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/readme.md +++ /dev/null @@ -1,52 +0,0 @@ -# node-jpegtran-bin [![Build Status](https://secure.travis-ci.org/yeoman/node-jpegtran-bin.png?branch=master)](http://travis-ci.org/yeoman/node-jpegtran-bin) - -jpegtran 1.3 (part of [libjpeg-turbo](http://libjpeg-turbo.virtualgl.org/)) Node.js wrapper that makes it seamlessly available as a local dependency on OS X, Linux, FreeBSD, Solaris and Windows. Most commonly used to losslessly minify JPEG images. - -> libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression on x86, x86-64, and ARM systems. On such systems, libjpeg-turbo is generally 2-4x as fast as the unmodified version of libjpeg, all else being equal. - - -## Install - -- Install with [npm](https://npmjs.org/package/jpegtran-bin): `npm install --save jpegtran-bin` - - -## Example usage - -```js -var execFile = require('child_process').execFile; -var jpegtranPath = require('jpegtran-bin').path; - -execFile(jpegtranPath, ['-outfile', 'output.jpg', 'input.jpg'], function() { - console.log('Image minified'); -}); -``` - -Can also be run directly from `./node_modules/.bin/jpegtran`. - - -## Dev - -Note to self on how to update the binaries. - -### OS X and Linux - -- Run `npm install` to build the binary. - -The `nasm` (Netwide Assember) package is required to build the binary on Ubuntu. - -### Windows - -- Download the [Windows files 32/64-bit](http://sourceforge.net/projects/libjpeg-turbo/files/) (GCC compiled) on a Windows machine - - (current version 1.3.0, x64 `libjpeg-turbo-1.3.0-gcc64.exe` and for x86 `libjpeg-turbo-1.3.0-gcc.exe`) -- Run the downloaded file to extract -- In the extracted folder go to the `bin` folder and copy `jpegtran.exe` and `libjpeg-62.dll` to `jpegtran-bin\vendor\` folder - - (for `grunt-contrib-imagemin` the folder is `grunt-contrib-imagemin\node_modules\jpegtran-bin\vendor\`) - - -## License - -Everything excluding the binaries licensed under the [BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google. - -libjpeg-turbo licensed under the BSD license and copyright dcommander. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/fixtures/test.jpg b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/fixtures/test.jpg deleted file mode 100644 index 831b4375425dc371ee8922bdcefcdb247a067838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2139 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 Bjrafn diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/minified.jpg b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/minified.jpg deleted file mode 100644 index 22f4cfdbadb7b99943bc0a530177b2c73d82155d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmex=<NpH&0WUXCHwH#V1_nkTWcYuZ!5PSd0VW`Wi3vyo2?$_jVg>>r!2$xztYE+n z0vvDvG6ZA-PzNhBGb=kQ3oDW=Tp51G{{swy91KDXBFv0}3`~NI%z}*nk1$989mx!I zCjxM>b8vD4Wh?|37=R99VQ1lnN;0#svN1BTa|j8GFbIm8a4ISpo0%tbi5Z3{8=1Oz z1f~|XZ9M|iDFt*Y0~0gCNCtKwmxYZ3D5nOrn~|9X=o6ScBap=+$jT<9$Zja?XcU-O z`0)QN1|FcJm;{*x8SEM2zJCrAkC^iD#Fd;YA>V>K&mCRi&2qYHF^lp;)$IZWTG}Vp z*r+jda25pVnH*znd+@xY@NJEm_9wQ5>u$x~KAX18yF}-bQbX*H=4+8tE9U$<Ve{iR zOIP5HYOni&n`e2piAt&H#c0G&+{I;`^!8|jVq{3l2HBLD-?qH1vkUi!D<9lh#j*9T z=B+b@8djN^>9>z0-sw<v=Q;6uDW}B+A%`%THAh)HlG<&`os7RaZ#6N0JNI*WWz`1n zd?h9h-6O1F%oa(q9p@Jq_|<p4lk>b49d+9~bIX$*p5Cj~Pn-Bj3156=ab?S#4x1?* zhib)?cFDc&e6eHNGGDf^y3Ha+p9<2FkA67ZzP|qHrrgS38<UrQyRq8$LU2@k^c$@Q z(I&^f=!T?owHh03NtJn>dg*eBO52?0x!NpC6*o=PS-`;B+H%Zsjs^$MgxUHc?A+`< z^2zpZi{F}ZE^?OIE|SFgqAcWT^`AEW7ylU&9wghonYjG&y6@|+>@<3}c3a17-My-2 zQ!ixg`trfi=o!z#4@<pgtaiV9xGgE*oFVhwrV4>WIu~X|9&OolWb^TTw(ah_=DG55 z&q?i?aCq}c2bC3XdSvAH2=*9O`q#XD8+J+L^4h4o2i2U?C&kQDU=4UNCqQt{#!1eX zJ~0-ZvhUh#vhUr;lDB4V^IKkZfBMxY+RSGAqj+EQ_iuIE!%kh1b@$~zdn^CMcTwrX zvghZv@AQv<TC3B$YSoH8HToqr-^={>e>gtVV@~_h&-+(qnyp&t{4x0Ze5rby-`>CP Le}5Yq|NkZcl^sW1 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-build.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-build.js deleted file mode 100644 index 3788b95d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-build.js +++ /dev/null @@ -1,30 +0,0 @@ -/*global describe, it */ -'use strict'; - -var assert = require('assert'); -var Bin = require('bin-wrapper'); -var fs = require('fs'); -var options = require('../lib/jpegtran').options; -var path = require('path'); - -describe('jpegtran.build()', function () { - it('should rebuild the jpegtran binaries', function (cb) { - this.timeout(false); - var bin = new Bin(options); - - bin.path = path.join(__dirname, '../tmp', bin.bin); - bin.buildScript = './configure --disable-shared --prefix="' + bin.path + '" && ' + 'make install'; - - bin.build(function (err) { - if (err) { - cb(err); - } - - var origCTime = fs.statSync(bin.path).ctime; - var actualCTime = fs.statSync(bin.path).ctime; - - assert(actualCTime !== origCTime); - cb(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-path.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-path.js deleted file mode 100644 index db3690f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/test/test-path.js +++ /dev/null @@ -1,49 +0,0 @@ -/*global describe, it, after */ -'use strict'; - -var assert = require('assert'); -var execFile = require('child_process').execFile; -var fs = require('fs'); -var path = require('path'); - -describe('jpegtran()', function () { - after(function () { - fs.unlinkSync('test/minified.jpg'); - }); - - it('should return path to jpegtran binary', function (cb) { - var binPath = require('../lib/jpegtran').path; - - execFile(binPath, ['-v', '-'], function (err, stdout, stderr) { - assert(stderr.toString().indexOf('libjpeg-turbo') !== -1); - cb(); - }); - }); - - it('should successfully proxy jpegtran', function (cb) { - var binPath = path.join(__dirname, '../bin/jpegtran.js'); - - execFile('node', [binPath, '-v', '-'], function (err, stdout, stderr) { - assert(stderr.toString().indexOf('libjpeg-turbo') !== -1); - cb(); - }); - }); - - it('should minify a .jpg', function (cb) { - var binPath = path.join(__dirname, '../bin/jpegtran.js'); - var args = [ - '-copy', 'none', - '-optimize', - '-outfile', path.join(__dirname, 'minified.jpg'), - path.join(__dirname, 'fixtures', 'test.jpg') - ]; - - execFile('node', [binPath].concat(args), function () { - var actual = fs.statSync('test/minified.jpg').size; - var original = fs.statSync('test/fixtures/test.jpg').size; - - assert(actual < original); - cb(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/vendor/jpegtran b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/jpegtran-bin/vendor/jpegtran deleted file mode 100755 index 04d0dfe411f1f41a24626cdba2d8383989f5f7df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137944 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 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c347..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.travis.yml deleted file mode 100644 index 84fd7ca2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1aeb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/examples/pow.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e6924212..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/index.js deleted file mode 100644 index fda6de8a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/index.js +++ /dev/null @@ -1,82 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/package.json deleted file mode 100644 index 221a22e3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "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", - "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, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `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\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, - "homepage": "https://github.com/substack/node-mkdirp", - "_id": "mkdirp@0.3.5", - "_from": "mkdirp@~0.3.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/readme.markdown b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/readme.markdown deleted file mode 100644 index 83b0216a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/readme.markdown +++ /dev/null @@ -1,63 +0,0 @@ -# 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/chmod.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/clobber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb70998..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/mkdirp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abbd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm_sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f609..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/race.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a04476..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/rel.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 79858243..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return_sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/root.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cada..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask_sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cbb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.editorconfig b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.editorconfig deleted file mode 100644 index e036e247..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -; EditorConfig is awesome: http://EditorConfig.org - -; top-most EditorConfig file -root = true - -; base rules -[*] -end_of_line = lf -insert_final_newline = false -indent_style = space -indent_size = 4 -charset = utf-8 -trim_trailing_whitespace = true - -; The default indent on package.json is 2 spaces, better to keep it so we can -; use `npm install --save` and other features that rewrites the package.json -; file automatically -[package.json] -indent_style = space -indent_size = 2 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.jshintrc deleted file mode 100644 index bbdb29cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.jshintrc +++ /dev/null @@ -1,69 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 50, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : true, // Standard browser globals e.g. `window`, `document`. - "couch" : false, - "dojo" : false, - "jquery" : true, - "mootools" : false, - "node" : false, - "prototypejs" : false, - "rhino" : false, - "wsh" : false, - - // Custom globals. - "predef" : [ - "define", - "require" - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : false, // Allow EcmaScript 5 syntax. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - "strict" : false, // Require `use strict` pragma in every file. - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "bitwise" : false, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : true, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : true, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : false, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexdash" : true, // Tolerate unescaped last dash i.e. `[-...]`. - "regexp" : false, // Prohibit `.` and `[^...]` in regular expressions. - "scripturl" : false, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : false, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "nonew" : true, // Prohibit use of constructors for side-effects. - "onevar" : false, // Allow only one `var` statement per function. - "plusplus" : false, // Prohibit use of `++` & `--`. - "sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.npmignore deleted file mode 100644 index 1341acd9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.npmignore +++ /dev/null @@ -1,30 +0,0 @@ -# dumb files -# ========== - -.tmp* -.project -.settings/ -.livereload -.DS_Store? -ehthumbs.db -Icon? -Thumbs.db - - -# stuff not needed by node -# ======================== - -node_modules/ -tests/ -_build/ -doc_html/ -coverage/ - -# we keep the doc/ folder in case npm decides to display it in the future -# also good in case user is using an old version or working offline - -# we also keep the src/ folder in case the user still needs the AMD modules -# after build (see issue #102) - -bower.json -build.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.travis.yml deleted file mode 100644 index 324041b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ - language: node_js - node_js: - - "0.8" - script: - - "npm test --coverage" - - "jshint src" - notifications: - irc: - channels: - - "irc.freenode.org#moutjs" - on_success: always - on_failure: always - use_notice: true - skip_join: true - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CHANGELOG.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CHANGELOG.md deleted file mode 100644 index 6ce1d6f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CHANGELOG.md +++ /dev/null @@ -1,116 +0,0 @@ -mout changelog -============== - -v0.7.1 (2013/09/18) -------------------- - - - fix `null` value handling in object/get. - -v0.7.0 (2013/09/05) -------------------- - - - add bower ignores. - - add german translation for date localization. - - alias `function` package as `fn` since "function" is a reserved keyword. - - allow second argument on `array/pick`. - - improve `string/makePath` to not remove "//" after protocol. - - make sure methods inside `number` package works with mixed types. - - support arrays on `queryString/encode`. - - support multiple values for same property on `queryString/decode`. - - add `cancel()` method to `throttled/debounced` functions. - - add `function/times`. - - add `lang/toNumber`. - - add `string/insert`. - - add `super_` to constructor on `lang/inheritPrototype`. - - -v0.6.0 (2013/05/22) -------------------- - - - add optional delimeter to `string/unCamelCase` - - allow custom char on `number/pad` - - allow underscore characters in `string/removeNonWord` - - accept `level` on `array/flatten` instead of a flag - - convert underscores to camelCase in `string/camelCase` - - remove `create()` from number/currencyFormat - - add `date/dayOfTheYear` - - add `date/diff` - - add `date/isSame` - - add `date/startOf` - - add `date/strftime` - - add `date/timezoneAbbr` - - add `date/timezoneOffset` - - add `date/totalDaysInYear` - - add `date/weekOfTheYear` - - add `function/timeout` - - add `object/bindAll` - - add `object/functions` - - add `time/convert` - - -v0.5.0 (2013/04/04) -------------------- - - - add `array/collect` - - add `callback` parameter to `object/equals` and `object/deepEquals` to allow - custom compare operations. - - normalize behavior in `array/*` methods to treat `null` values as empty - arrays when reading from array - - add `date/parseIso` - - add `date/isLeapYear` - - add `date/totalDaysInMonth` - - add `object/deepMatches` - - change `function/makeIterator_` to use `deepMatches` (affects nearly all - iteration methods) - - add `thisObj` parameter to `array/min` and `array/max` - - -v0.4.0 (2013/02/26) -------------------- - - - add `object/equals` - - add `object/deepEquals` - - add `object/matches`. - - add `lang/is` and `lang/isnt`. - - add `lang/isInteger`. - - add `array/findIndex`. - - add shorthand syntax to `array/*`, `object/*` and `collection/*` methods. - - improve `number/sign` behavior when value is NaN or +0 or -0. - - improve `lang/isNaN` to actually check if value *is not a number* without - coercing value; so `[]`, `""`, `null` and `"12"` are considered NaN (#39). - - improve `string/contains` to match ES6 behavior (add fromIndex argument). - - -v0.3.0 (2013/02/01) -------------------- - - - add `lang/clone`. - - add `lang/toString`. - - add `string/replace`. - - add `string/WHITE_SPACES` - - rename `function/curry` to `function/partial`. - - allow custom chars in `string/trim`, `ltrim`, and `rtrim`. - - convert values to strings in the `string/*` functions. - - -v0.2.0 (2013/01/13) -------------------- - - - fix bug in `math/ceil` for negative radixes. - - change `object/deepFillIn` and `object/deepMixIn` to recurse only if both - existing and new values are plain objects. Will not recurse into arrays - or objects not created by the Object constructor. - - add `lang/isPlainObject` to check if a file is a valid object and is created - by the Object constructor - - change `lang/clone` behavior when dealing with custom types (avoid cloning - it by default) and add second argument to allow custom behavior if needed. - - rename `lang/clone` to `lang/deepClone`. - - add VERSION property to index.js - - simplify `math/floor`, `math/round`, `math/ceil` and `math/countSteps`. - - -v0.1.0 (2013/01/09) -------------------- - -- Rename project from "amd-utils" to "mout" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CONTRIBUTING.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CONTRIBUTING.md deleted file mode 100644 index 65d9add1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/CONTRIBUTING.md +++ /dev/null @@ -1,61 +0,0 @@ -# Contributing - -Fork the repo at https://github.com/mout/mout - - > "Write clearly, don't be too clever" - The Elements of Programming Style - -Avoid unnamed functions and follow the other modules structure. By only using named functions it will be easier to extract the code from the AMD module if needed and it will also give better error messages, JavaScript minifiers like [Google Closure Compiler](http://code.google.com/closure/compiler/) and [UglifyJS](https://github.com/mishoo/UglifyJS) will make sure code is as small/optimized as possible. - - > "Make it clear before you make it faster." - The Elements of Programming Style - -Be sure to always create tests for each proposed module. Features will only be merged if they contain proper tests and documentation. - - > "Good code is its own best documentation." - Steve McConnell - -We should do a code review before merging to make sure names makes sense and implementation is as good as possible. - -Try to split your pull requests into logical groups, the smaller the easier to be reviewed/merged. - - - -## Tests & Code Coverage ## - -Tests can be found inside the `tests` folder, to execute them in the browser open the `tests/runner.html`. The same tests also work on node.js by running `npm test`. - -We should have tests for all methods and ensure we have a high code coverage through our continuous integration server ([travis](https://travis-ci.org/mout/mout)). When you ask for a pull request Travis will automatically run the tests on node.js and check the code coverage as well. - -We run `node build pkg` automatically before any `npm test`, so specs and packages should always be in sync. (will avoid human mistakes) - -To check code coverage run `npm test --coverage`, it will generate the reports inside the `coverage` folder and also log the results. Please note that node.js doesn't execute all code branches since we have some conditionals that are only met on old JavaScript engines (eg. IE 7-8), so we will never have 100% code coverage (but should be close to it). - - - -## Build Script ## - -The [build script](https://github.com/mout/mout/wiki/Build-Script) can be extremely helpful and can avoid human mistakes, use it. - - - -## Admins / Pull Requests ## - -Even if you are an admin (have commit rights) please do pull requests when adding new features or changing current behavior, that way we can review the work and discuss. Feel free to push changes that doesn't affect behavior without asking for a pull request (readme, changelog, build script, typos, refactoring, ...). - - - -## Large changes ## - -If you are proposing some major change, please create an issue to discuss it first. (maybe it's outside the scope of the project) - - - -## Questions / IRC / Wiki / Issue Tracker ## - -When in doubt ask someone on IRC to help you ([#moutjs on irc.freenode.net](http://webchat.freenode.net/?channels=moutjs)) or create a [new issue](http://github.com/mout/mout/issues). - -The [project wiki](https://github.com/mout/mout/wiki) can also be a good resource of information. - - ---- - -Check the [contributors list at github](https://github.com/mout/mout/contributors). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/LICENSE.md deleted file mode 100644 index e9ccc2be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) -## Copyright (c) 2012, 2013 moutjs team and contributors (http://moutjs.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/README.md deleted file mode 100644 index 872943bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/README.md +++ /dev/null @@ -1,63 +0,0 @@ -![mout](http://moutjs.com/logo.png "Modular JavaScript Utilties") - -http://moutjs.com/ - -[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout) - -All code is library agnostic and consist mostly of helper methods that aren't -directly related with the DOM, the purpose of this library isn't to replace -Dojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common -problems that aren't solved by most of them. Consider it as a crossbrowser -JavaScript standard library. - - - -## Main goals ## - - - increase code reuse; - - be clear (code should be clean/readable); - - be easy to debug; - - be easy to maintain; - - follow best practices; - - follow standards when possible; - - **don't convert JavaScript into another language!** - - be compatible with other frameworks; - - be modular; - - have unit tests for all modules; - - work on multiple environments (IE7+, modern browsers, node.js); - - - -## What shouldn't be here ## - - - UI components; - - CSS selector engine; - - Event system - pub/sub; - - Template engine; - - Anything that isn't generic enough to be on a standard library; - - Anything that could be a separate library and/or isn't a modular utility... - - - -## API Documentation ## - -Online documentation can be found at http://moutjs.com/ or inside the -`doc` folder. - - - -## FAQ / Wiki / IRC ## - -For more info about project structure, design decisions, tips, how to -contribute, build system, etc, please check the [project -wiki](https://github.com/mout/mout/wiki). - -We also have an IRC channel [#moutjs on -irc.freenode.net](http://webchat.freenode.net/?channels=moutjs) - - - -## License ## - -Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array.js deleted file mode 100644 index 89d388ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array.js +++ /dev/null @@ -1,46 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/append.js deleted file mode 100644 index bf74037e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ - - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - module.exports = append; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/collect.js deleted file mode 100644 index 58637493..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/collect.js +++ /dev/null @@ -1,27 +0,0 @@ -var append = require('./append'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - module.exports = collect; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/combine.js deleted file mode 100644 index d66e6212..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - module.exports = combine; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/compact.js deleted file mode 100644 index 74c176ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -var filter = require('./filter'); - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - module.exports = compact; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/contains.js deleted file mode 100644 index 92bb6ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/difference.js deleted file mode 100644 index d0570510..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/difference.js +++ /dev/null @@ -1,22 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var some = require('./some'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = difference; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/every.js deleted file mode 100644 index ac598832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - module.exports = every; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/filter.js deleted file mode 100644 index f0e74199..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/filter.js +++ /dev/null @@ -1,26 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/find.js deleted file mode 100644 index b4a73131..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -var findIndex = require('./findIndex'); - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/findIndex.js deleted file mode 100644 index 53f22a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - module.exports = findIndex; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/flatten.js deleted file mode 100644 index aa9757ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/flatten.js +++ /dev/null @@ -1,43 +0,0 @@ -var isArray = require('../lang/isArray'); -var append = require('./append'); - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - module.exports = flatten; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/forEach.js deleted file mode 100644 index 268e506f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - module.exports = forEach; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/indexOf.js deleted file mode 100644 index 6a9ac832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - module.exports = indexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/insert.js deleted file mode 100644 index f1f95b75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/insert.js +++ /dev/null @@ -1,15 +0,0 @@ -var difference = require('./difference'); -var toArray = require('../lang/toArray'); - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - module.exports = insert; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/intersection.js deleted file mode 100644 index e6170062..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/intersection.js +++ /dev/null @@ -1,23 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var every = require('./every'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = intersection; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/invoke.js deleted file mode 100644 index d7be6cdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - module.exports = invoke; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/join.js deleted file mode 100644 index 71d8bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -var filter = require('./filter'); - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - module.exports = join; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/lastIndexOf.js deleted file mode 100644 index ee44a25b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - module.exports = lastIndexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/map.js deleted file mode 100644 index 7b7fb331..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/map.js +++ /dev/null @@ -1,22 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/max.js deleted file mode 100644 index 0b8f2594..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/max.js +++ /dev/null @@ -1,34 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = max; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/min.js deleted file mode 100644 index ed6cc6a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/min.js +++ /dev/null @@ -1,34 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = min; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pick.js deleted file mode 100644 index 64086784..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pick.js +++ /dev/null @@ -1,31 +0,0 @@ -var randInt = require('../random/randInt'); - - /** - * Remove random item(s) from the Array and return it. - * Returns an Array of items if [nItems] is provided or a single item if - * it isn't specified. - */ - function pick(arr, nItems){ - if (nItems != null) { - var result = []; - if (nItems > 0 && arr && arr.length) { - nItems = nItems > arr.length? arr.length : nItems; - while (nItems--) { - result.push( pickOne(arr) ); - } - } - return result; - } - return (arr && arr.length)? pickOne(arr) : void(0); - } - - - function pickOne(arr){ - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pluck.js deleted file mode 100644 index fef4043b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/range.js deleted file mode 100644 index 31d3c770..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - module.exports = range; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduce.js deleted file mode 100644 index 827f428f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ - - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - module.exports = reduce; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduceRight.js deleted file mode 100644 index e36fd4aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ - - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - module.exports = reduceRight; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reject.js deleted file mode 100644 index 0cfc8b1a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/reject.js +++ /dev/null @@ -1,25 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = reject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/remove.js deleted file mode 100644 index aa6517db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - module.exports = remove; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/removeAll.js deleted file mode 100644 index d5f7f3b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - module.exports = removeAll; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/shuffle.js deleted file mode 100644 index 99d0660f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/shuffle.js +++ /dev/null @@ -1,28 +0,0 @@ -var randInt = require('../random/randInt'); - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - module.exports = shuffle; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/some.js deleted file mode 100644 index 8d17772b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - module.exports = some; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/sort.js deleted file mode 100644 index 7807339b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ - - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - module.exports = mergeSort; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/split.js deleted file mode 100644 index 4f3ba50c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ - - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - module.exports = split; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/toLookup.js deleted file mode 100644 index ce4c55dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -var isFunction = require('../lang/isFunction'); - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - module.exports = toLookup; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/union.js deleted file mode 100644 index f1334a91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/union.js +++ /dev/null @@ -1,19 +0,0 @@ -var unique = require('./unique'); -var append = require('./append'); - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - module.exports = union; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/unique.js deleted file mode 100644 index 0192b2df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/unique.js +++ /dev/null @@ -1,17 +0,0 @@ -var indexOf = require('./indexOf'); -var filter = require('./filter'); - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - module.exports = unique; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/xor.js deleted file mode 100644 index c125a996..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/xor.js +++ /dev/null @@ -1,26 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var contains = require('./contains'); - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - module.exports = xor; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/zip.js deleted file mode 100644 index 8bce9c07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/array/zip.js +++ /dev/null @@ -1,28 +0,0 @@ -var max = require('./max'); -var map = require('./map'); - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1; - while (++i < len) { - // jshint loopfunc: true - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - module.exports = zip; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection.js deleted file mode 100644 index d5cf6cad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection.js +++ /dev/null @@ -1,22 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/contains.js deleted file mode 100644 index a73f994b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/contains.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrContains = require('../array/contains'); -var objContains = require('../object/contains'); - - /** - */ - module.exports = make(arrContains, objContains); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/every.js deleted file mode 100644 index 300e03c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/every.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrEvery = require('../array/every'); -var objEvery = require('../object/every'); - - /** - */ - module.exports = make(arrEvery, objEvery); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/filter.js deleted file mode 100644 index 38757005..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/filter.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/find.js deleted file mode 100644 index 14317e64..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/find.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrFind = require('../array/find'); -var objFind = require('../object/find'); - - /** - * Find value that returns true on iterator check. - */ - module.exports = make(arrFind, objFind); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/forEach.js deleted file mode 100644 index 6e28dcb1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/forEach.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrForEach = require('../array/forEach'); -var objForEach = require('../object/forOwn'); - - /** - */ - module.exports = make(arrForEach, objForEach); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/make_.js deleted file mode 100644 index 029d27bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ - - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - module.exports = makeCollectionMethod; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/map.js deleted file mode 100644 index fc157f53..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var isObject = require('../lang/isObject'); -var values = require('../object/values'); -var arrMap = require('../array/map'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - module.exports = map; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/max.js deleted file mode 100644 index a8490e7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/max.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMax = require('../array/max'); -var objMax = require('../object/max'); - - /** - * Get maximum value inside collection - */ - module.exports = make(arrMax, objMax); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/min.js deleted file mode 100644 index 51d9f148..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/min.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMin = require('../array/min'); -var objMin = require('../object/min'); - - /** - * Get minimum value inside collection. - */ - module.exports = make(arrMin, objMin); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/pluck.js deleted file mode 100644 index 9b283776..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reduce.js deleted file mode 100644 index 4c075735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reduce.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrReduce = require('../array/reduce'); -var objReduce = require('../object/reduce'); - - /** - */ - module.exports = make(arrReduce, objReduce); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reject.js deleted file mode 100644 index 2a92e3b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/size.js deleted file mode 100644 index 244e33e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/size.js +++ /dev/null @@ -1,19 +0,0 @@ -var isArray = require('../lang/isArray'); -var objSize = require('../object/size'); - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/some.js deleted file mode 100644 index 48fd252e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/collection/some.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrSome = require('../array/some'); -var objSome = require('../object/some'); - - /** - */ - module.exports = make(arrSome, objSome); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date.js deleted file mode 100644 index 1cde1a95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/dayOfTheYear.js deleted file mode 100644 index 85905c5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - module.exports = dayOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/diff.js deleted file mode 100644 index 1131cdcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/diff.js +++ /dev/null @@ -1,130 +0,0 @@ -var totalDaysInMonth = require('./totalDaysInMonth'); -var totalDaysInYear = require('./totalDaysInYear'); -var convert = require('../time/convert'); - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - module.exports = diff; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/de-DE.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/de-DE.js deleted file mode 100644 index b3ab6207..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/de-DE.js +++ /dev/null @@ -1,61 +0,0 @@ - - // de-DE (German) - module.exports = { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ], - - "months_abbr" : [ - "Jan", - "Febr", - "März", - "Apr", - "Mai", - "Juni", - "Juli", - "Aug", - "Sept", - "Okt", - "Nov", - "Dez" - ], - - "days" : [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ], - - "days_abbr" : [ - "So", - "Mo", - "Di", - "Mi", - "Do", - "Fr", - "Sa" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/en-US.js deleted file mode 100644 index f9526ce4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ - - // en-US (English, United States) - module.exports = { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/pt-BR.js deleted file mode 100644 index 71ebadb5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ - - // pt-BR (Brazillian Portuguese) - module.exports = { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n_.js deleted file mode 100644 index 723fc103..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/i18n_.js +++ /dev/null @@ -1,14 +0,0 @@ -var mixIn = require('../object/mixIn'); -var enUS = require('./i18n/en-US'); - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - module.exports = activeLocale; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isLeapYear.js deleted file mode 100644 index 4212870b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - module.exports = isLeapYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isSame.js deleted file mode 100644 index 4097d29b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -var startOf = require('./startOf'); - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - module.exports = isSame; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/parseIso.js deleted file mode 100644 index 40a70a88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -var some = require('../array/some'); - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else { - match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - module.exports = parseISO8601; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/startOf.js deleted file mode 100644 index 072bc0ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -var clone = require('../lang/clone'); - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - module.exports = startOf; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/strftime.js deleted file mode 100644 index f033d10f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/strftime.js +++ /dev/null @@ -1,118 +0,0 @@ -var pad = require('../number/pad'); -var i18n = require('./i18n_'); -var dayOfTheYear = require('./dayOfTheYear'); -var timezoneOffset = require('./timezoneOffset'); -var timezoneAbbr = require('./timezoneAbbr'); -var weekOfTheYear = require('./weekOfTheYear'); - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - module.exports = strftime; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneAbbr.js deleted file mode 100644 index b1006875..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -var timezoneOffset = require('./timezoneOffset'); - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - module.exports = timezoneAbbr; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneOffset.js deleted file mode 100644 index 9492dceb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -var pad = require('../number/pad'); - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - module.exports = timezoneOffset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInMonth.js deleted file mode 100644 index 8aafeb84..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInMonth.js +++ /dev/null @@ -1,25 +0,0 @@ -var isDate = require('../lang/isDate'); -var isLeapYear = require('./isLeapYear'); - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - module.exports = totalDaysInMonth; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInYear.js deleted file mode 100644 index b4b7e9b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isLeapYear = require('./isLeapYear'); - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - module.exports = totalDaysInYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/weekOfTheYear.js deleted file mode 100644 index dd51b7f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -var dayOfTheYear = require('./dayOfTheYear'); - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - module.exports = weekOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/array.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/array.md deleted file mode 100644 index a81a50b5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/array.md +++ /dev/null @@ -1,781 +0,0 @@ -# array # - -Array utilities. - - - - -## append(arr1, arr2):Array - -Appends an array to the end of the other. -The first array will be modified and will contain the appended items. - -See: [`union()`](#union), [`combine()`](#combine) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -append(foo, bar); // ['a', 'b', 'b', 'd'] -``` - - - -## collect(arr, callback, [thisObj]):Array - -Maps the items in `arr` and concatenates the resulting arrays. - -See: [`map()`](#map) - -```js -collect([1, 2, 3], function(val) { - return [val, val % 2]; -}); // [1, 1, 2, 0, 3, 1]; - -collect(['a', 'bb', ''], function(val) { - return val.split(''); -}); // ['a', 'b', 'b'] -``` - -It also supports a shorthand syntax: - -```js -var items = [{ a: [1] }, { b: 'foo' }, { a: [2, 3] }]; -collect(items, 'a'); // [1, 2, 3]; -``` - - - -## combine(arr1, arr2):Array - -Combines an array with all the items of another. -The first array will be modified and will contain the combined items. -Does not allow duplicates and is case and type sensitive. - -See: [`union()`](#union), [`append()`](#append) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -combine(foo, bar); // ['a', 'b', 'd'] -``` - - - -## compact(arr):Array - -Returns a new Array without any `null` or `undefined` values. Note that it will -keep empty strings and other falsy values (simillar to Ruby Array#compact). - -```js -var arr = [0, 1, null, false, '', 'foo', undefined, 'bar']; -compact(arr); // [0, 1, false, '', 'foo', 'bar']; -``` - - - -## contains(arr, value):Boolean - -Checks if Array contains value. Alias to `indexOf(arr, val) !== -1`. - -```js -var arr = [1, 2, 3]; -contains(arr, 2); // true -contains(arr, 'foo'); // false -``` - - - -## difference(...arrs):Array - -Return a new Array with elements that aren't present in the other Arrays -besides the first one. - -Works like [Python set#difference](http://docs.python.org/library/stdtypes.html#set.difference). - -It will remove duplicates. - -See: [`xor()`](#xor), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -difference(a, b); // ['a', 'b'] -``` - - - -## every(arr, callback, [thisObj]):Array - -Crossbrowser `Array.every()`. - -Tests whether all elements in the array pass the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -every(items, isString); // false -every(items, isFunction); // false -every(items, function(val, key, arr){ - return val != null; -}); // true -``` - -more info at [MDN Array#every](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:true}, {id:8, active:true}]; -// all items with `id === 8` -every(items, {id:8}); // false -// `active` is truthy on all items -every(items, 'active'); // true -``` - - - -## filter(arr, callback, [thisObj]):Array - -Crossbrowser `Array.filter()`. - -Creates a new array with all elements that pass the callback test. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var nums = [1, 2, 3, 4, 5, 6]; -var oddNumbers = filter(nums, function(val, key, arr){ - return (val % 2) !== 0; -}); -// > [1, 3, 5] -``` - -more info at [MDN Array#filter](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter) - -Filter also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// filter item that matches all properties/values pairs -filter(arr, {name:'john', beard:false}); -// > [{name:'john', surnname:'connor', beard:false}] -// items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'doe', beard:true}] -``` - -See [`reject()`](#reject) - - - -## find(arr, callback, [thisObj]):void - -Loops through all the items in the Array and returns the first one that passes -a truth test (callback). - -```js -var arr = [123, {a:'b'}, 'foo', 'bar']; -find(arr, isString); // "foo" -find(arr, isNumber); // 123 -find(arr, isObject); // {a:'b'} -``` - -Find also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true} -]; -// first item that matches all properties/values pairs -find(arr, {name:'john'}); // {name:'john', surnname:'connor', beard:false} -// first item where 'beard' is a truthy value -find(arr, 'beard'); // {name:'john', surnname:'doe', beard:true} -``` - -See: [findIndex()](#findIndex) - - - -## findIndex(arr, iterator, [thisObj]):Number - -Loops through the items in the Array and returns the index of the first one -that passes a truth test (callback). - -Returns `-1` if no item was found that passes the truth test. - -```js -var arr = [1, { a: 1 }, 'foo', 'bar']; -findIndex(arr, isString); // 2 -findIndex(arr, isNumber); // 0 -findIndex(arr, isObject); // 1 -findIndex(arr, isRegExp); // -1 -``` - -`findIndex` also supports shorthand notation: - -```js -var pets = [ - { pet: 'dog', name: 'Sam' }, - { pet: 'dog', name: 'Maggie' } -]; - -findIndex(pets, { pet: 'dog' }); // 0 -findIndex(pets, { name: 'Maggie' }); // 1 -``` - -See: [find()](#find) - - - -## flatten(arr, [level]):Array - -Recursively flattens an array. A new array containing all the elements is -returned. If `level` is specified, it will only flatten up to that level. - -### Example - -```js -flatten([1, [2], [3, [4, 5]]]); -// > [1, 2, 3, 4, 5] -flatten([1, [2], [3, [4, 5]]], 1); -// > [1, 2, 3, [4, 5]] -``` - - - -## forEach(arr, callback, [thisObj]):void - -Crossbrowser `Array.forEach()`. - -It allows exiting the iteration early by returning `false` on the callback. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = ['foo', 'bar', 'lorem', 'ipsum']; -forEach(items, function(val, key, arr){ - console.log(key +' : '+ val); - if (val === 'lorem') { - // stop iteration (break) - return false; - } -}); -``` - -more info at [MDN Array#forEach](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach) - - - -## indexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.indexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#indexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf) - - - - -## insert(arr, ...items):Number - -Push items into array only if they aren't contained by it. Returns the new -`length` of the array. - -See: [`remove()`](#remove), [`removeAll()`](#removeAll), -[`contains()`](#contains) - -```js -var arr = ['a', 'b']; -insert(arr, 'a'); // 2 : ['a', 'b'] -insert(arr, 'c'); // 3 : ['a', 'b', 'c'] -insert(arr, 1, 2, 'b'); // 5 : ['a', 'b', 'c', 1, 2] -``` - - - -## intersection(...arrs):Array - -Return a new Array with elements common to all Arrays. - -Similar to Python set#intersection and underscore.js intersection. - -It will remove duplicates. - -See: [`difference()`](#difference), [`xor()`](#xor) - -```js -var a = ['a', 'b', 1], - b = ['c', 1], - c = [1, 2, 3]; -intersection(a, b, c); // [1] -``` - - - -## invoke(arr, methodName[, ...args]):Array - -Call `methodName` on each item of the array passing custom arguments if needed. - -```js -invoke([[3,2,1], [9,5,2]], 'sort'); // [[1,2,3], [2,5,9]] -``` - - - -## join(arr, [separator]):String - -Joins the strings in `arr`, inserting `separator` between each value. - -This ignores null values and empty strings that are in the array. `separator` -defaults to an empty string. This will convert all non-string objects in the -array to a string. - -### Example - -```js -join(['a', 'b', 'c']); // 'abc' -join(['foo', 'bar'], ', '); // 'foo, bar' -join([null, 'foo', '', 'bar', undefined], ':'); // 'foo:bar' -``` - - - -## lastIndexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.lastIndexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#lastIndexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf) - - - -## map(arr, callback, [thisObj]]):Array - -Crossbrowser `Array.map()`. - -Creates a new array with the results of calling a provided function on every -element in this array. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -See: [`collect()`](#collect) - -```js -var nums = [1,2,3,4]; -var double = map(nums, function(val, key, arr){ - return val * 2; -}); -// > [2, 4, 6, 8] -``` - -more info at [MDN Array#map](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map) - -It also supports a shorthand notation which can be used to achieve same result -as [`array/pluck`](#pluck): - -```js -var src = ['lorem', 'ipsum', 'foo', 'amet']; -// grab the "length" property of all items -var lengths = map(src, 'length'); // [5, 5, 3, 4] -``` - - - -## max(arr, [iterator], [thisObj]):* - -Returns maximum value inside array or use a custom iterator to define how items -should be compared. - -See: [`min()`](#min) - -```js -max([10, 2, 7]); // 10 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - -It also supports a shorthand notation: - -```js -max(['foo', 'lorem', 'amet'], 'length'); // "lorem" -``` - - - -## min(arr, [iterator], [thisObj]):* - -Returns minimum value inside array or use a custom iterator to define how items -should be compared. - -See: [`max()`](#max) - -```js -min([10, 2, 7]); // 2 -min(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'foo' -``` - -It also supports a shorthand notation: - -```js -min(['foo', 'lorem', 'amet'], 'length'); // "foo" -``` - - - -## pick(arr, [nItems]):* - -Gets random item(s) and removes it from the original array. - -If `nItems` is specified it will return a new Array contained the *picked* -items otherwise it returns a single item. - -See: [`random/choice()`](./random.html#choice) - -### Example: - -```js -var arr = [1, 2, 3, 4, 5, 6]; -var item1 = pick(arr); // 4 -var item2 = pick(arr); // 1 -var items = pick(arr, 2); // [5, 2] -console.log(arr); // [3, 6] -``` - - - -## pluck(arr, propName):Array - -Extract a list of property values. - -See: [`function/prop()`](function.html#prop) - -```js -var users = [{name : 'John', age: 21}, {name: 'Jane', age : 27}]; -var names = pluck(users, 'name'); // ["John", "Jane"] -var ages = pluck(users, 'age'); // [21, 27] -``` - - - -## range([start], stop[, step]):Array - -Creates a new Array with all the values inside the range. Works similarly to -Python#range or PHP#range. - -### Arguments - - 1. `[start]` (Number) : Range start. Default is `0`. - 2. `stop` (Number) : Range limit. - 3. `[step]` (Number) : Step size. Default is `1`. - -### Example - -```js -range(5); // [0, 1, 2, 3, 4, 5] -range(0, 5); // [0, 1, 2, 3, 4, 5] -range(0, 5, 2); // [0, 2, 4] -range(20, 40, 5); // [20, 25, 30, 35, 40] -``` - - - -## reduce(arr, fn):* - -Crossbrowser `Array.reduce()`. - -Apply a function against an accumulator and each value of the array (from -left-to-right) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduce](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce) - - - -## reduceRight(arr, fn):* - -Crossbrowser `Array.reduceRight()`. - -Apply a function simultaneously against two values of the array (from -right-to-left) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) - - - -## reject(arr, fn, thisObj):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var numbers = [1, 2, 3, 4, 5, 6]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4, 6] -``` - -It also supports a shorthand syntax: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// reject items that matches all properties/values pairs -reject(arr, {name:'john'}); -// > [{name:'jane', surnname:'doe', beard:false}] -// reject items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'connor', beard:false}, -// {name:'jane', surname:'doe', beard:false}] -``` - - - -## remove(arr, item):void - -Remove a single item from the array. - -IMPORTANT: it won't remove duplicates, just a single item. - -### Example - -```js -var foo = [1, 2, 3, 4]; -remove(foo, 2); -console.log(foo); // [1, 3, 4] -``` - - - -## removeAll(arr, item):void - -Remove all instances of an item from the array. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2]; -removeAll(foo, 2); -console.log(foo); // [1, 3, 4]; -``` - - - -## shuffle(arr):Array - -Returns a new Array with items randomly sorted (shuffled). Similar to Ruby Array#shuffle. - -### Example - -```js -var arr = ['a', 'b', 'c', 'd', 'e']; -shuffle(arr); // ['b', 'd', 'e', 'c', 'a'] -``` - - - -## some(arr, callback, [thisObj]):Array - -Crossbrowser `Array.some()`. - -Tests whether some element in the array passes the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -some(items, isString); // true -some(items, isFunction); // false -``` - -more info at [MDN Array#some](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:false}, {id:8, active:false}]; -// at least one item with `id === 8` -some(items, {id:8}); // true -// `active` is truthy on at least one item -some(items, 'active'); // true -``` - -see also: [`object/matches`](object.html#matches) - - - -## sort(arr, [compareFn]):Array - -Returns a sorted Array using the [Merge Sort](http://en.wikipedia.org/wiki/Merge_sort) algorithm (stable sort). - -The `Array.prototype.sort` browser implementations differ since the sorting algorithm isn't described in the ES spec - [in V8 it isn't stable](http://code.google.com/p/v8/issues/detail?id=90) and [on Firefox it is stable](https://bugzilla.mozilla.org/show_bug.cgi?id=224128) - so this function doesn't use the browser native implementation and is recommended in cases where a stable sort is required (items should preserve same order if already sorted). - -**Important:** It does logical comparisson by default (greater/less than) and -not a string comparisson like the native `Array#sort`. - -### compareFn - -If `compareFn` is supplied elements are sorted based on the value returned by -the `compareFn`. - - - If `compareFn(a, b)` is less than `0`, sort `a` to a lower index than `b`. - - If `compareFn(a, b)` returns `0`, leave `a` and `b` unchanged with respect - to each other, but sorted with respect to all different elements. - - If `compareFn(a, b)` is greater than `0`, sort `b` to a lower index than - `a`. - -### Example - -```js -sort([187, 23, 47, 987, 12, 59, 0]); // [0, 12, 23, 47, 59, 187, 987] -sort(['a', 'z', 'c', 'beta', 'b']); // ['a', 'b', 'beta', 'c', 'z'] - -// ['sit', 'amet', 'lorem', 'ipsum'] -sort(['lorem', 'ipsum', 'sit', 'amet'], function(a, b){ - // sort by length, items with same length - // will keep the relative order (stable) - return a.length - b.length; -}); - -// [4, 3, 2, 1] -sort([2, 3, 1, 4], function(a, b){ - // reverse sort - return b - a; -}); -``` - - - -## split(arr, [segments]):Array - -Splits an array into a fixed number of segments. - -The number of segments is specified by `segments` and defaults to 2. If the -array cannot be evenly split, the first segments will contain the extra items. -If `arr` is empty, an empty array is returned. If `arr.length` is less than -`segments`, then the resulting array will have `arr.length` number of -single-element arrays. - -### Example -```js -split([1, 2, 3, 4, 5], 3) // [ [1, 2], [3, 4], [5] ] -split([1, 2, 3, 4, 5]) // [ [1, 2, 3], [4, 5] ] -split([]) // [] -split([1, 2], 3) // [ [1], [2] ] -``` - - - -## toLookup(arr, key):Object - -Create an object that indexes the items in the array by a key. If `key` is a function, the key for each value in the resulting object will be the result of calling the function with the value as an argument. Otherwise `key` specifies the property on each value to use as the key. - -### Example - -```js -var foo = [{ name: 'a', thing: 1 }, { name: 'b', thing: 2 }]; -// { a: { name: 'a', thing: 1 }, b: { name: 'b', thing: 2 } } -toLookup(foo, 'name'); -// same as above -toLookup(foo, function (value) { return value.name; }); -``` - - - -## union(...arrs):Array - -Concat multiple arrays removing duplicates. - -```js -var a = ['a', 'b'], - b = ['c', 'a'], - c = [1, 'b', 2, 3, 'a']; - -//note that unique remove from begin to end -union(a, b, c); // ['c', 1, 'b', 2, 3, 'a'] -``` - - - -## unique(arr):Array - -Return a new Array of unique items. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2, 3, 4]; -var bar = unique(foo); -console.log(foo); // [1, 2, 3, 4]; -``` - - - -## xor(arr1, arr2):Array - -Exclusive OR. Returns items that are present in a single array. - -Works like [Python set#symmetric_difference](http://docs.python.org/library/stdtypes.html#set.symmetric_difference) renamed for brevity. - -It will remove duplicates. - -See: [`difference()`](#difference), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -xor(a, b); // ['a', 'b', 'c'] -``` - - - -## zip(...arrs):Array - -Groups the elements of each array at their corresponding indexes. - -Useful for separate data sources that are coordinated through matching array -indexes. For a matrix of nested arrays, `zip.apply(...)` can transpose the -matrix in a similar fashion. - -```js -// [['moe', 30, true], ['larry', 40, false], ['curly', 50, false]] -zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); -``` - - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/collection.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/collection.md deleted file mode 100644 index 2ffcab10..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/collection.md +++ /dev/null @@ -1,233 +0,0 @@ -# collection # - -Methods for dealing with collections (Array or Objects). - - - -## contains(list, value):Boolean - -Checks if collection contains value. - -```js -contains({a: 1, b: 2, c: 'bar'}, 2); // true -contains([1, 2, 3], 'foo'); // false -``` - -See: [array/contains](array.html#contains), [object/contains](object.html#contains) - - - -## every(list, callback, [thisObj]):Boolean - -Tests whether all values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - -See: [array/every](array.html#every), [object/every](object.html#every) - - - -## filter(list, callback, [thisObj]):Array - -Filter collection properties. - -See: [array/filter](array.html#filter), [object/filter](object.html#filter) - - - -## find(list, callback, [thisObj]):* - -Loops through all the values in the collection and returns the first one that -passes a truth test (callback). - -**Important:** loop order over objects properties isn't guaranteed to be the -same on all environments. - -```js -find({a: 'foo', b: 12}, isString); // 'foo' -find(['foo', 12], isNumber); // 12 -``` - -See: [array/find](array.html#find), [object/find](object.html#find) - - - -## forEach(list, callback, [thisObj]) - -Loop through all values of the collection. - -See: [array/forEach](array.html#forEach), [object/forOwn](object.html#forOwn) - - - -## map(list, callback, [thisObj]):Array - -Returns a new collection where the properties values are the result of calling -the callback for each property in the original collection. - -See: [array/map](array.html#map), [object/map](object.html#map) - - - -## max(list, [iterator]):* - -Returns maximum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`min()`](#min), [array/max](array.html#max), [object/max](object.html#max) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(list, [iterator]):* - -Returns minimum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`max()`](#max), [array/min](array.html#min), [object/min](object.html#min) - -```js -min([10, 2, 7]); // 2 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## pluck(list, propName):Array - -Extract a list of property values. - -```js -var users = [ - { - name : 'John', - age : 21 - }, - { - name : 'Jane', - age : 27 - } -]; - -pluck(users, 'name'); // ["John", "Jane"] -pluck(users, 'age'); // [21, 27] - -users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // ['John', 'Mary'] -``` - -See: [array/pluck](array.html#pluck), [object/pluck](object.html#pluck) - - - -## reduce(list, callback, initial, [thisObj]):* - -Apply a function against an accumulator and each value in the collection as to -reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - -See: [array/reduce](array.html#reduce), [object/reduce](object.html#reduce) - - - -## reject(list, fn, [thisObj]):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -### Example - -```js -var numbers = [1, 2, 3, 4, 5]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4] - -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // [2, 4] -``` - -See: [array/reject](array.html#reject), [object/reject](object.html#reject) - - - -## size(list):Number - -Returns the number of values in the collection. - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -size([1,2,3]); // 3 -size(null); // 0 -``` - -See: [object/size](object.html#size) - - - -## some(list, callback, [thisObj]):Boolean - -Tests whether any values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -some(obj, isString); // true -some([1, 2, 3], isNumber) // true -some([1, 2, 3], isString) // false -``` - -See: [array/some](array.html#some), [object/some](object.html#some) - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/date.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/date.md deleted file mode 100644 index b3f7f40e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/date.md +++ /dev/null @@ -1,295 +0,0 @@ -# date # - -Date utilities. - - -## dayOfTheYear(date):Number - -How many days elapsed since begining of the year (following gregorian -calendar). - -```js -// Jan 1st -dayOfTheYear(new Date(2013, 0, 1)); // 1 -// Dec 31th -dayOfTheYear(new Date(2013, 11, 31)); // 364 -``` - - - -## diff(date1, date2, [unitName]):Number - -Calculate the difference between dates (range). - -The returned value is always positive. The default `unitName` is `"ms"`. - -Available units: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`, -`millisecond`. - -See: [`time/convert()`](time.html#convert) - -```js -var d1 = new Date(2012, 4, 5); -var d2 = new Date(2013, 4, 8); -diff(d1, d2); // 31795200000 -diff(d1, d2, 'hour'); // 8832 -diff(d1, d2, 'week'); // 52.57142857142857 -diff(d1, d2, 'month'); // 12.096774193548388 -diff(d1, d2, 'year'); // 1.0082191780821919 -``` - - - -## isLeapYear(fullYear|date):Boolean - -Checks if it's a [leap year](http://en.wikipedia.org/wiki/Leap_year) according -to the Gregorian calendar. - -see: [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -isLeapYear(2012); // true -isLeapYear(2013); // false -isLeapYear(new Date(2012, 2, 28)); // true -``` - - -## isSame(date1, date2[, period]):Boolean - -Check if both dates are the "same". - -You can pass an optional *period* used to set the comparisson precision. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -var date1 = new Date(2013, 1, 3); -var date2 = new Date(2013, 2, 9); -isSame(date1, date2); // false -isSame(date1, date2, 'day'); // false -isSame(date1, date2, 'month'); // false -isSame(date1, date2, 'year'); // true -``` - - - -## parseIso(str):Number - -Parses an [ISO8601](http://en.wikipedia.org/wiki/Iso8601) date and returns the -number of milliseconds since January 1, 1970, 00:00:00 UTC, or `NaN` if it is -not a valid ISO8601 date. - -This parses *all* ISO8601 dates, including dates without times, [ordinal -dates](https://en.wikipedia.org/wiki/ISO_8601#Ordinal_dates), and the compact -representation (omitting delimeters). The only exception is [ISO week -dates](https://en.wikipedia.org/wiki/ISO_week_date), which are not parsed. - -If no time zone offset is specified, it assumes UTC time. - -```js -// Jan 01, 1970 00:00 GMT -parseIso('1970-01-01T00:00:00') // 0 -parseIso('1970-001') // 0 -parseIso('1970-01-01') // 0 -parseIso('19700101T000000.00') // 0 -parseIso('1970-01-01T02:00+02:00') // 0 - -// Jan 02, 2000 20:10 GMT+04:00 -parseIso('2000-01-02T20:10+04:00') // 946829400000 -``` - - - -## startOf(date, period):Date - -Get a new Date at the start of the period. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -// Apr 05 2013 11:27:43 -var date = new Date(2013, 3, 5, 11, 27, 43, 123); -startOf(date, 'year'); // Jan 01 2013 00:00:00 -startOf(date, 'month'); // Apr 01 2013 00:00:00 -startOf(date, 'day'); // Apr 05 2013 00:00:00 -startOf(date, 'hour'); // Apr 05 2013 11:00:00 -``` - - - -## strftime(date, format, [l10n]):String - -Format date based on strftime format. - -Replaced tokens: - -<dl> -<dt>%a</dt><dd> locale's abbreviated weekday name.</dd> -<dt>%A</dt><dd> locale's full weekday name.</dd> -<dt>%b</dt><dd> locale's abbreviated month name.</dd> -<dt>%B</dt><dd> locale's full month name.</dd> -<dt>%c</dt><dd> locale's appropriate date and time representation.</dd> -<dt>%C</dt><dd> century number (the year divided by 100 and truncated -to an integer) as a decimal number [00..99].</dd> -<dt>%d</dt><dd> day of the month as a decimal number [01..31].</dd> -<dt>%D</dt><dd>same as %m/%d/%y.</dd> -<dt>%e</dt><dd> day of the month as a decimal number [1..31]; -a single digit is preceded by a space.</dd> -<dt>%F</dt><dd>The ISO 8601 date format (%Y-%m-%d)</dd> -<dt>%h</dt><dd>same as %b.</dd> -<dt>%H</dt><dd> hour (24-hour clock) as a decimal number [00..23].</dd> -<dt>%I</dt><dd> hour (12-hour clock) as a decimal number [01..12].</dd> -<dt>%j</dt><dd> day of the year as a decimal number [001..366].</dd> -<dt>%L</dt><dd> zero-padded milliseconds [000..999]</dd> -<dt>%m</dt><dd> month as a decimal number [01..12].</dd> -<dt>%M</dt><dd> minute as a decimal number [00..59].</dd> -<dt>%n</dt><dd> newline character.</dd> -<dt>%p</dt><dd> locale's equivalent of either "am" or "pm"</dd> -<dt>%P</dt><dd> locale's equivalent of either "AM" or "PM"</dd> -<dt>%r</dt><dd> time in a.m. and -p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p.</dd> -<dt>%R</dt><dd> time in 24 hour notation (%H:%M).</dd> -<dt>%s</dt><dd> seconds since Epoch (1970-01-01 00:00:00 UTC)</dd> -<dt>%S</dt><dd> second as a decimal number [00..60].</dd> -<dt>%t</dt><dd> tab character.</dd> -<dt>%T</dt><dd> time (%H:%M:%S).</dd> -<dt>%u</dt><dd> weekday as a decimal number [1..7], with 1 representing -Monday.</dd> -<dt>%U</dt><dd> week number of the year (Sunday as the first day of -the week) as a decimal number [00..53].</dd> -<del><dt>%V</dt><dd> week number of the year (Monday as the first day of the -week) as a decimal number [01..53]. If the week containing 1 January has -four or more days in the new year, then it is considered week 1. Otherwise, -it is the last week of the previous year, and the next week is week 1.</dd></del> -<dt>%w</dt><dd> weekday as a decimal number [0..6], with 0 representing -Sunday.</dd> -<dt>%W</dt><dd> week number of the year (Monday as the first day of -the week) as a decimal number [00..53]. All days in a new year preceding -the first Monday are considered to be in week 0.</dd> -<dt>%x</dt><dd> locale's appropriate date representation.</dd> -<dt>%X</dt><dd> locale's appropriate time representation.</dd> -<dt>%y</dt><dd> year without century as a decimal number [00..99].</dd> -<dt>%Y</dt><dd> year with century as a decimal number.</dd> -<dt>%Z</dt><dd> timezone name or abbreviation, or by no bytes -if no timezone information exists.</dd> -<dt>%%</dt><dd>is replaced by %.</dd> -</dl> - -```js -var date = new Date(2013, 3, 8, 9, 2, 4); -strftime(date, '%Y-%m-%d'); // "2013-04-08" -strftime(date, '%R'); // "09:02" -strftime(date, '%Y-%m-%dT%H:%M:%S%z'); // "2013-04-08T09:02:04+0000" -``` - -You can also set a custom locale: - -```js -var ptBr = require('mout/date/i18n/pt-BR'); -strftime(date, '%a, %d %b', ptBr); // 'Seg, 08 Abr' -strftime(date, '%A, %d %B', ptBr); // 'Segunda, 08 Abril' -``` - -To set it globally: - -```js -require('mout/date/i18n_').set( customLocaleData ); -``` - -See [date/i18n](https://github.com/mout/mout/tree/master/src/date/i18n) -for localization examples. - - - -## timezoneAbbr(date):String - -Return timezone abbreviation or similar data. - -The result will vary based on the OS/browser since some environments doesn't -provide enough info about the current locale. - -```js -// IE 7-8 -timezoneAbbr(new Date()); // "-0500" -// Chrome, FF, V8 -timezoneAbbr(new Date()); // "EST" -``` - - - -## timezoneOffset(date):String - -Return time zone as hour and minute offset from UTC (e.g. +0900). - -It's important to note that JavaScript Date object will use the system locale -info to determinate the [timezone -offset](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) -and that daylight saving time affects the result. - -```js -// if system locale is EST -timezoneOffset(new Date()); // -0500 -``` - - - -## totalDaysInMonth(fullYear, monthIndex):Number - -Returns the amount of days in the month taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear) - -```js -totalDaysInMonth(2008, 1); // 29 (leap year) -totalDaysInMonth(2009, 1); // 28 - -// you can also pass a Date object as single argument -totalDaysInMonth( new Date(2013, 0, 1) ); // 31 -``` - - -## totalDaysInYear(fullYear):Number - -Returns the amount of days in the year taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear), [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -totalDaysInYear(2008); // 366 (leap year) -totalDaysInYear(2009); // 365 - -// you can also pass a Date object as single argument -totalDaysInYear( new Date(2013, 0, 1) ); // 365 -``` - - - -## weekOfTheYear(date, [firstDayOfWeek]):Number - -Returns how many weeks elapsed since start of the year (`0..53`). - -`firstDayOfWeek` can be `0` (Sunday) or `1` (Monday). By default weeks start at -Sunday. - -It will return `0` if `date` is before the first `firstDayOfWeek` of the year. - -```js -// Tue Jan 01 2013 -weekOfTheYear( new Date(2013,0,1) ); // 0 -// Wed Jan 09 2013 -weekOfTheYear( new Date(2013,0,9) ); // 1 -// Sun Jan 01 2012 -weekOfTheYear( new Date(2012,0,1) ); // 1 -// Mon Jan 09 2012 -weekOfTheYear( new Date(2012,0,9) ); // 2 -``` - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/function.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/function.md deleted file mode 100644 index f753744e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/function.md +++ /dev/null @@ -1,210 +0,0 @@ -# function # - -Function*(al)* utilities. - - - -## bind(fn, context, [...args]):Function - -Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - -### Arguments - - 1. `fn` (Function) : Target Function - 2. `context` (Object) : Execution context (object used as `this`) - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`partial()`](#partial), [object/bindAll](./object.html#bindAll) - - - -## compose(...fn):Function - -Returns the composition of a list of functions, where each function consumes -the return value of the function that follows. In math terms, composing the -functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - -```js -function add2(x) { return x + 2 } -function multi2(x) { return x * 2 } -map([1, 2, 3], compose(add2, multi2)); // [4, 6, 8] - -//same as -map([1, 2, 3], function(x){ - return add2( multi2(x) ); -}); -``` - - - -## debounce(fn, delay[, isAsap]):Function - -Creates a function that will delay the execution of `fn` until after `delay` -milliseconds have elapsed since the last time it was invoked. - -Subsequent calls to the debounced function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = debounce(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a debounced-function call and `X` is the actual -callback execution: - - Default - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - - Debounced with `isAsap == true`: - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - -You also have the option to cancel the debounced call if it didn't happen yet: - -```js -lazyRedraw(); -// lazyRedraw won't be called since `cancel` was called before the `delay` -lazyRedraw.cancel(); -``` - -See: [`throttle()`](#throttle) - - -## func(name):Function - -Returns a function that calls a method with given `name` on supplied object. -Useful for iteration methods like `array/map` and `array/forEach`. - -See: [`prop()`](#prop) - -```js -// will call the method `getName()` for each `user` -var names = map(users, func('getName')); -``` - - - -## partial(fn, [...args]):Function - -Return a partially applied function supplying default arguments. - -This method is similar to [`bind`](#bind), except it does not alter the this -binding. - -### Arguments - - 1. `fn` (Function) : Target Function - 2. `[...args]` (*) : Arguments (0...n arguments) - -See: [`bind()`](#bind) - -```js -function add(a, b){ return a + b } -var add10 = partial(add, 10); -console.log( add10(2) ); // 12 -``` - - - -## prop(name):Function - -Returns a function that gets a property with given `name` from supplied object. -Useful for using in conjunction with `array/map` and/or for creating getters. - -See: [`array/pluck()`](array.html#pluck) - -```js -var users = [{name:"John", age:21}, {name:"Jane", age:25}]; -// ["John", "Jane"] -var names = map(users, prop('name')); -``` - - - -## series(...fn):Function - -Returns a function that will execute all the supplied functions in order and -passing the same parameters to all of them. Useful for combining multiple -`array/forEach` into a single one and/or for debugging. - -```js -// call `console.log()` and `doStuff()` for each item item in the array -forEach(arr, series(console.log, doStuff)); -``` - - - -## throttle(fn, interval):Function - -Creates a function that, when executed, will only call the `fn` function at -most once per every `interval` milliseconds. - -If the throttled function is invoked more than once during the wait timeout, -`fn` will also be called on the trailing edge of the timeout. - -Subsequent calls to the throttled function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = throttle(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a throttled-function call and `X` is the actual -`fn` execution: - - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X X X X X X X X X X X - -You also have the option to cancel the throttled call if it didn't happen yet: - -```js -lazyRedraw(); -setTimeout(function(){ - lazyRedraw(); - // lazyRedraw will be called only once since `cancel` was called before - // the `interval` for 2nd call completed - lazyRedraw.cancel(); -}, 250); -``` - -See: [`debounce()`](#debounce) - - -## timeout(fn, millis, context, [...args]):Number - -Functions as a wrapper for `setTimeout`. Calls a the function `fn` after a given delay `millis` in milliseconds. -The function is called within the specified context. The return value can be used to clear the timeout using `clearTimeout`. - -```js -var id = timeout(doStuff, 300, this); - -clearTimeout(id); -``` - -## times(n, callback, [context]):void - -Iterates over a callback `n` times. - -### Arguments - - 1. `n` (Number) : Number of iterations - 2. `callback` (Function) : Closure executed for every iteration - 3. `context` (Object) : Execution context (object used as `this`) - -```js -var output = ''; -times(5, function(i) { - output += i.toString(); -}); -// output: 01234 -``` - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/lang.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/lang.md deleted file mode 100644 index 8ad3928b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/lang.md +++ /dev/null @@ -1,464 +0,0 @@ -# lang # - -Language Utilities. Easier inheritance, scope handling, type checks. - - - -## clone(val):* - -Clone native types like Object, Array, RegExp, Date and primitives. - -This method will not clone values that are referenced within `val`. It will -only copy the value reference to the new value. If the value is not a plain -object but is an object, it will return the value unchanged. - -### Example - -```js -var a = { foo: 'bar' }; -var b = clone(a); -console.log(a === b); // false -console.log(a.foo === b.foo); // true - -var c = [1, 2, 3]; -var d = clone(b); -console.log(c === d); // false -console.log(c); // [1, 2, 3] -``` - -See: [`deepClone()`](#deepClone) - - - -## createObject(parent, [props]):Object - -Create Object using prototypal inheritance and setting custom properties. - -Mix between [Douglas Crockford Prototypal Inheritance](http://javascript.crockford.com/prototypal.html) and [`object/mixIn`](./object.html#mixIn). - -### Arguments - - 1. `parent` (Object) : Parent Object - 2. `[props]` (Object) : Object properties - -### Example - -```js -var base = { - trace : function(){ - console.log(this.name); - } -}; - -var myObj = createObject(base, { - name : 'Lorem Ipsum' -}); - -myObject.trace(); // "Lorem Ipsum" -``` - - - -## ctorApply(constructor, args):Object - -Do `Function.prototype.apply()` on a constructor while maintaining prototype -chain. - -```js -function Person(name, surname) { - this.name = name; - this.surname = surname; -} - -Person.prototype.walk = function(){ - console.log(this.name +' is walking'); -}; - -var args = ['John', 'Doe']; - -// "similar" effect as calling `new Person("John", "Doe")` -var john = ctorApply(Person, args); -john.walk(); // "John is walking" -``` - - - -## deepClone(val, [instanceClone]):* - -Deep clone native types like Object, Array, RegExp, Date and primitives. - -The `instanceClone` function will be invoked to clone objects that are not -"plain" objects (as defined by [`isPlainObject`](#isPlainObject)) if it is -provided. If `instanceClone` is not specified, it will not attempt to clone -non-plain objects, and will copy the object reference. - -### Example - -```js -var a = {foo:'bar', obj: {a:1, b:2}}; -var b = deepClone(a); // {foo:'bar', obj: {a:1, b:2}} -console.log( a === b ); // false -console.log( a.obj === b.obj ); // false - -var c = [1, 2, [3, 4]]; -var d = deepClone(c); // [1, 2, [3, 4]] -var e = c.concat(); // [1, 2, [3, 4]] - -console.log( c[2] === d[2] ); // false -// concat doesn't do a deep clone, arrays are passed by reference -console.log( e[2] === d[2] ); // true - -function Custom() { } -function cloneCustom(x) { return new Custom(); } -var f = { test: new Custom() }; -var g = deepClone(f, cloneCustom); -g.test === f.test // false, since new Custom instance will be created -``` - -See: [`clone()`](#clone) - - - -## defaults(val, ...defaults):void - -Return first value that isn't `null` or `undefined`. - - function doSomethingAwesome(foo, bar) { - // default arguments - foo = defaults(foo, 'lorem'); - bar = defaults(bar, 123); - // ... - } - - - -## inheritPrototype(childCtor, parentCtor):void - -Inherit the prototype methods from one constructor into another. - -Similar to [node.js util/inherits](http://nodejs.org/docs/latest/api/util.html#util_util_inherits_constructor_superconstructor). - -```js -function Foo(name){ - this.name = name; -} -Foo.prototype = { - getName : function(){ - return this.name; - } -}; - -function Bar(name){ - Foo.call(this, name); -} -//should be called before calling constructor -inheritPrototype(Bar, Foo); - -var myObj = new Bar('lorem ipsum'); -myObj.getName(); // "lorem ipsum" - -console.log(myObj instanceof Foo); // true - -// you also have access to the "super" constructor -console.log(Bar.super_ === Foo); // true -``` - - -## is(x, y):Boolean - -Check if both values are identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -is(NaN, NaN); // true -is(-0, +0); // false -is('a', 'b'); // false -``` - -See: [`isnt()`](#isnt) - - - -## isnt(x, y):Boolean - -Check if both values are not identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -isnt(NaN, NaN); // false -isnt(-0, +0); // true -isnt('a', 'b'); // true -``` - -See: [`is()`](#is) - - - - -## isArguments(val):Boolean - -If value is an "Arguments" object. - - - -## isArray(val):Boolean - -If value is an Array. Uses native ES5 `Array.isArray()` if available. - - - -## isBoolean(val):Boolean - -If value is a Boolean. - - - -## isDate(val):Boolean - -If value is a Date. - - - -## isEmpty(val):Boolean - -Checks if Array/Object/String is empty. - - -```js -isEmpty(''); // true -isEmpty('bar'); // false -isEmpty([]); // true -isEmpty([1, 2]); // false -isEmpty({}); // true -isEmpty({a:1, b:2}); // false -``` - - -## isFinite(val):Boolean - -Checks if value is Finite. - -**IMPORTANT:** This is not the same as native `isFinite`, which will return -`true` for values that can be coerced into finite numbers. See -http://es5.github.com/#x15.1.2.5. - -```js -isFinite(123); // true -isFinite(Infinity); // false - -// this is different than native behavior -isFinite(''); // false -isFinite(true); // false -isFinite([]); // false -isFinite(null); // false -``` - - -## isFunction(val):Boolean - -If value is a Function. - - - -## isKind(val, kind):Boolean - -If value is of "kind". (used internally by some of the *isSomething* checks). - -Favor the other methods since strings are commonly mistyped and also because -some "kinds" can only be accurately checked by using other methods (e.g. -`Arguments`), some of the other checks are also faster. - -```js -isKind([1,2], 'Array'); // true -isKind(3, 'Array'); // false -isKind(3, 'Number'); // true -``` - -See: [`kindOf()`](#kindOf) - - - -## isInteger(val):Boolean - -Check if value is an integer. - -```js -isInteger(123); // true -isInteger(123.45); // false -isInteger({}); // false -isInteger('foo'); // false -isInteger('123'); // false -``` - - - -## isNaN(val):Boolean - -Check if value is not a number. - -It doesn't coerce value into number before doing the check, giving better -results than native `isNaN`. Returns `true` for everything besides numeric -values. - -**IMPORTANT:** behavior is very different than the native `isNaN` and way more -useful!!! See: http://es5.github.io/#x15.1.2.4 - -```js -isNaN(123); // false - -isNaN(NaN); // true -isNaN({}); // true -isNaN(undefined); // true -isNaN([4,5]); // true - -// these are all "false" on native isNaN and main reason why this module exists -isNaN(''); // true -isNaN(null); // true -isNaN(true); // true -isNaN(false); // true -isNaN("123"); // true -isNaN([]); // true -isNaN([5]); // true -``` - - - -## isNull(val):Boolean - -If value is `null`. - - - -## isNumber(val):Boolean - -If value is a Number. - - - -## isObject(val):Boolean - -If value is an Object. - - - -## isPlainObject(val):Boolean - -If the value is an Object created by the Object constructor. - - - -## isRegExp(val):Boolean - -If value is a RegExp. - - - -## isString(val):Boolean - -If value is a String. - - - -## isUndefined(val):Boolean - -If value is `undefined`. - - - -## kindOf(val):String - -Gets kind of value (e.g. "String", "Number", "RegExp", "Null", "Date"). -Used internally by `isKind()` and most of the other *isSomething* checks. - -```js -kindOf([1,2]); // "Array" -kindOf('foo'); // "String" -kindOf(3); // "Number" -``` - -See: [`isKind()`](#isKind) - - -## toArray(val):Array - -Convert array-like object into Array or wrap value into Array. - -```js -toArray({ - "0" : "foo", - "1" : "bar", - "length" : 2 -}); // ["foo", "bar"] - -function foo(){ - return toArray(arguments); -} -foo("lorem", 123); // ["lorem", 123] - -toArray("lorem ipsum"); // ["lorem ipsum"] -toArray(window); // [window] -toArray({foo:"bar", lorem:123}); // [{foo:"bar", lorem:123}] -``` - -See: object/values() - - - -## toNumber(val):Number - -Convert value into number. - -```js -// numeric values are typecasted as Number -toNumber('123'); // 123 -toNumber(-567); // -567 - -// falsy values returns zero -toNumber(''); // 0 -toNumber(null); // 0 -toNumber(undefined); // 0 -toNumber(false); // 0 - -// non-numeric values returns NaN -toNumber('asd'); // NaN -toNumber({}); // NaN -toNumber([]); // NaN - -// Date objects return milliseconds since epoch -toNumber(new Date(1985, 6, 23)); // 490935600000 -``` - - - -## toString(val):String - -Convert any value to its string representation. - -Will return an empty string for `undefined` or `null`, otherwise will convert -the value to its string representation. - -```js -// null and undefined are converted into empty strings -toString(null); // "" -toString(undefined); // "" - -toString(1); // "1" -toString([1,2,3]); // "1,2,3" -toString(false); // "false" - -// uses `val.toString()` to convert value -toString({toString:funtion(){ return 'foo'; }}); // "foo" -``` - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/math.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/math.md deleted file mode 100644 index f45be3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/math.md +++ /dev/null @@ -1,298 +0,0 @@ -# math # - -Math utilities. - - -## ceil(val[, step]):Number - -Round value up to full steps. Similar to `Math.ceil()` but can round value -to an arbitrary *radix*. - - ceil(7.2); // 8 - ceil(7.8); // 8 - ceil(7, 5); // 10 - ceil(11, 5); // 15 - ceil(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`floor()`](#floor), [`countSteps()`](#countSteps) - - - -## clamp(val, min, max):Number - -Clamps value inside range. - -`clamp()` is extremely useful in cases where you need to limit a value inside -a certain range. So instead of doing a complex `if/else` to filter/process the -value you can restrict it to always be inside the desired range: - - clamp(-5, 0, 10); // 0 - clamp(7, 1, 10); // 7 - clamp(8, 1, 10); // 8 - clamp(10, 1, 10); // 10 - clamp(11, 1, 10); // 10 - -If the value is smaller than `min` it returns the `min`, if `val` is higher -than `max` it returns `max`. - -### Common use cases - -Any situation where you need to limit a number inside a range like: slider -position, image galleries <small>(so user can't skip to an image that doesn't -exist)</small>, drag and drop, scroll boundaries, etc. - -See: [`loop()`](#loop) - - - - -## countSteps(val, step[, overflow]):Number - -Count number of full steps. - -### Arguments: - - 1. `val` (Number) : Value. - 2. `step` (Number) : Step size. - 3. `[overflow]` (Number) : Maximum number of steps, nSteps will loop if -`>=` than overflow. - - -Count steps is very useful for cases where you need to know how many "full -steps" the number *completed*. Think of it as a division that only returns -integers and ignore remainders. - - countSteps(3, 5); // 0 - countSteps(6, 5); // 1 - countSteps(12, 5); // 2 - countSteps(18, 5); // 3 - countSteps(21, 5); // 4 - -You can also set an `overflow` which will reset the *counter* before reaching -this number. - - countSteps(3, 5, 3); // 0 - countSteps(6, 5, 3); // 1 - countSteps(12, 5, 3); // 2 - countSteps(18, 5, 3); // 0 - countSteps(21, 5, 3); // 1 - -### Common use cases - -#### How many items fit inside an area: - - var containerWidth = 100; - var itemWidth = 8; - var howManyFit = countSteps(containerWidth, itemWidth); // 12 - -#### Split value into different scales or convert value from one scale to another - -From [mout/time/parseMs](time.html#parseMs): - - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - // {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} - parseMs(2348765454); - - - -## floor(val[, step]):Number - -Round value down to full steps. Similar to `Math.floor()` but can round value -to an arbitrary *radix*. (formerly `snap`) - - floor(7.2); // 7 - floor(7.8); // 7 - floor(7, 5); // 5 - floor(11, 5); // 10 - floor(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -## inRange(val, min, max[, threshold]):Boolean - -Checks if value is inside the range. - - inRange(-6, 1, 10); // false - inRange( 5, 1, 10); // true - inRange(12, 1, 10); // false - -The threshold can be useful when you want granular control of what should match -and/or the precision could change at runtime or by some configuration option, -avoids the clutter of adding/subtracting the `threshold` from `mix` and `max`. - - inRange(12, 1, 10, 2); // true - inRange(13, 1, 10, 2); // false - -### Common use cases - -Anything that needs to check if value is inside a range, be it collision -detection, limiting interaction by mouse position, ignoring parts of the logic -that shouldn't happen if value isn't valid, simplify `if/else` conditions, -making code more readable, etc... - - - - -## isNear(val, target, threshold):Boolean - -Check if value is close to target. - -Similar to `inRange()` but used to check if value is close to a certain value -or match the desired value. Basically to simplify `if/else` conditions and to -make code clearer. - - isNear( 10.2, 10, 0.5); // true - isNear( 10.5, 10, 0.5); // true - isNear(10.51, 10, 0.5); // false - -### Common use cases - -Games where a certain action should happen if an *actor* is close to a target, -gravity fields, any numeric check that has some tolerance. - - - - -## lerp(ratio, start, end):Number - -Linear interpolation. - - lerp(0.5, 0, 10); // 5 - lerp(0.75, 0, 10); // 7.5 - -### Common use cases - -Linear interpolation is commonly used to create animations of elements moving -from one point to another, where you simply update the current ratio (which in -this case represents time) and get back the position of the element at that -"frame". - -The core idea of `lerp` is that you are using a number that goes from `0` to -`1` to specify a ratio inside that scale. This concept can be applied to -convert numbers from different scales easily. - -See: [`map()`](#map), [`norm()`](#norm) - - - - -## loop(val, min, max):Number - -Loops value inside range. Will return `min` if `val > max` and `max` if `val -< min`, otherwise it returns `val`. - - loop(-1, 0, 10); // 10 - loop( 1, 0, 10); // 1 - loop( 5, 0, 10); // 5 - loop( 9, 0, 10); // 9 - loop(10, 0, 10); // 10 - loop(11, 0, 10); // 0 - -Similar to [`clamp()`](#clamp) but *loops* the value inside the range when an -overflow occurs. - -### Common use cases - -Image galleries, infinite scroll, any kind of logic that requires that the -first item should be displayed after the last one or the last one should be -displayed after first if going on the opposite direction. - -See: [`clamp()`](#clamp) - - - - -## map(val, min1, max1, min2, max2):Number - -Maps a number from one scale to another. - - map(3, 0, 4, -1, 1) // 0.5 - map(3, 0, 10, 0, 100) // 30 - -### Common use cases - -Very useful to convert values from/to multiple scales. - -Let's suppose we have a slider that needs to go from `2000` to `5000` and that slider -has `300px` of width, here is how we would translate the knob position into the -current value: - - var knobX = 123; - var sliderWid = 300; - var minVal = 2000; - var maxVal = 5000; - - var curVal = map(knobX, 0, sliderWid, minVal, maxVal); // 3230 - -See: [`lerp()`](#lerp), [`norm()`](#norm) - - - - -## norm(val, min, max):Number - -Gets normalized ratio of value inside range. - - norm(50, 0, 100); // 0.5 - norm(75, 0, 100); // 0.75 - -### Common use cases - -Convert values between scales, used by [`map()`](#map) internally. Direct -opposite of [`lerp()`](#lerp). - -See: [`lerp()`](#lerp), [`map()`](#map) - - - -## round(val[, step]):Number - -Round value to full steps. Similar to `Math.round()` but allow setting an -arbitrary *radix*. - - // default - round(0.22); // 0 - round(0.49); // 0 - round(0.51); // 1 - - // custom radix - round(0.22, 0.5); // 0 - round(0.49, 0.5); // 0.5 - round(0.51, 0.5); // 0.5 - round(0.74, 0.5); // 0.5 - round(0.75, 0.5); // 1 - round(1.24, 0.5); // 1 - round(1.25, 0.5); // 1.5 - round(1.74, 0.5); // 1.5 - -### Common use cases - -Round values by increments of 0.5/5/10/1000/etc. - -See: [`floor()`](#floor), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -------------------------------------------------------------------------------- - -For more usage more info check the specs and source code. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/number.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/number.md deleted file mode 100644 index 8d93865b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/number.md +++ /dev/null @@ -1,225 +0,0 @@ -# number # - -Number utilities. - - -## abbreviate(val[, nDecimalDigits, dictionary]):String - -Abbreviate number to thousands (K), millions (M) or billions (B). - -The default value for `nDecimalDigits` is `1`. - -### Example - - abbreviate(123456); // "123.5K" - abbreviate(12345678); // "12.3M" - abbreviate(1234567890); // "1.2B" - -You can set the amount of decimal digits (default is `1`): - - abbreviate(543); // "0.5K" - abbreviate(543, 1); // "0.5K" - abbreviate(543, 2); // "0.54K" - abbreviate(543, 3); // "0.543K" - -You can customize the abbreviation by passing a custom "dictionary": - - var _ptbrDict = { - thousands : ' mil', - millions : ' Mi', - billions : ' Bi' - }; - function customAbbr(val) { - return abbreviate(val, 1, _ptbrDict); - } - - customAbbr(123456); // "123.5 mil" - customAbbr(12345678); // "12.3 Mi" - customAbbr(1234567890); // "1.2 Bi" - - - -## currencyFormat(val[, nDecimalDigits, decimalSeparator, thousandsSeparator]):String - -Format a number as currency. - -### Example: - - currencyFormat(1000); // "1,000.00" - currencyFormat(1000, 1); // "1,000.0" - currencyFormat(1000, 2, ',', '.'); // "1.000,00" - - - -## enforcePrecision(val, nDecimalDigits):Number - -Enforce a specific amount of decimal digits and also fix floating point -rounding issues. - -### Example: - -```js -enforcePrecision(0.615, 2); // 0.62 -enforcePrecision(0.625, 2); // 0.63 -//floating point rounding "error" (rounds to odd number) -+(0.615).toFixed(2); // 0.61 -+(0.625).toFixed(2); // 0.63 -``` - - - -## MAX_INT:Number - -Maximum 32-bit signed integer value. `Math.pow(2, 31) - 1` - -### Example: - -```js -console.log( MAX_INT ); // 2147483647 -``` - - -## MAX_UINT:Number - -Maximum 32-bit unsigned integer value. `Math.pow(2, 32) - 1` - -### Example: - -```js -console.log( MAX_UINT ); // 4294967295 -``` - - -## MIN_INT:Number - -Minimum 32-bit signed integer value. `Math.pow(2, 31) * -1`. - -### Example: - -```js -console.log( MIN_INT ); // -2147483648 -``` - - -## pad(n, minLength[, char]):String - -Add padding zeros if `n.length` < `minLength`. - -### Example: - -```js -pad(1, 5); // "00001" -pad(12, 5); // "00012" -pad(123, 5); // "00123" -pad(1234, 5); // "01234" -pad(12345, 5); // "12345" -pad(123456, 5); // "123456" - -// you can also specify the "char" used for padding -pad(12, 5, '_'); // "___12" -``` - -see: [string/lpad](./string.html#lpad) - - - -## rol(val, shift):Number - -Bitwise circular shift left. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## ror(val, shift):Number - -Bitwise circular shift right. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## sign(val):Number - -Returns `-1` if value is negative, `0` if the value is `0` and `1` if value is positive. Useful for -multiplications. - -```js -sign(-123); // -1 -sign(123); // 1 -sign(0); // 0 -``` - - - -## toInt(val):Number - -"Convert" value into an 32-bit integer. Works like `Math.floor` if `val > 0` and -`Math.ceil` if `val < 0`. - -**IMPORTANT:** val will wrap at [number/MIN_INT](#MIN_INT) and -[number/MAX_INT](#MAX_INT). - -Created because most people don't know bitwise operations and also because this -feature is commonly needed. - -[Perf tests](http://jsperf.com/vs-vs-parseint-bitwise-operators/7) - -### Example: - -```js -toInt(1.25); // 1 -toInt(0.75); // 0 -toInt(-0.55); // 0 -toInt(-5.0001) // -5 -``` - - - -## toUInt(val):Number - -"Convert" value into an 32-bit unsigned integer. - -Works like AS3#uint(). - -**IMPORTANT:** val will wrap at 2^32. - -### Example: - -```js -toUInt(1.25); // 1 -toUInt(0.75); // 0 -toUInt(-0.55); // 0 -toUInt(-5.0001); // 4294967291 -toUInt(Math.pow(2,32) - 0.5); // 4294967295 -toUInt(Math.pow(2,32) + 0.5); // 0 -``` - - -## toUInt31(val):Number - -"Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - -Useful since all bitwise operators besides `>>>` treat numbers as signed -integers. - -**IMPORTANT:** val will wrap at 2^31 and negative numbers will be treated as -`zero`. - -### Example: - -```js -toUInt31(1.25); // 1 -toUInt31(0.75); // 0 -toUInt31(-0.55); // 0 -toUInt31(-5.0001); // 0 -toUInt31(Math.pow(2,31) - 0.5); // 21474836470 -toUInt31(Math.pow(2,31) + 0.5); // 0 -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/object.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/object.md deleted file mode 100644 index b120aeed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/object.md +++ /dev/null @@ -1,780 +0,0 @@ -# object # - -Object utilities. - - - -## bindAll(obj, [...methodNames]):void - -Bind methods of the target object to always execute on its own context -(ovewritting the original function). - -See: [function/bind](./function.html#bind) - -```js -var view = { - name: 'Lorem Ipsum', - logNameOnClick: function() { - console.log(this.name); - } -}; - -// binds all methods by default -bindAll(view); -jQuery('#docs').on('click', view.logNameOnClick); -``` - -You can also specify the list of methods that you want to bind (in case you -just want to bind a few of them). - -```js -// only the listed methods will be bound to `obj` context -bindAll(obj, 'logNameOnClick', 'doAwesomeStuffOnDrag'); -``` - - - -## contains(obj, value):Boolean - -Similar to [Array/contains](array.html#contains). Checks if Object contains -value. - -```js -var obj = { - a: 1, - b: 2, - c: 'bar' -}; -contains(obj, 2); // true -contains(obj, 'foo'); // false -``` - - - -## deepEquals(a, b, [callback]):Boolean - -Recursively tests whether two objects contain the same keys and equal values. - -`callback` specifies the equality comparison function used to compare -non-object values. It defaults to using the strict equals (`===`) operator. - -If the values are both an object, it will recurse into the objects, checking if -their keys/values are equal. It will only check the keys and values contained -by the objects; it will not check the objects' prototypes. If the either of -the values are not objects, they will be checked using the `callback` function. - -Example: - -```js -deepEquals({ a: 1 }, { a: 1 }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 1 } }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 2 } }); // false -deepEquals({ value: { a: 1 } }, { value: { a: 1, b: 2 } }); // false -deepEquals({}, null); // false -deepEquals(null, null); // true -deepEquals( - { a: { b: 1 } }, - { a: { b: '1' } }, - function(a, b) { return a == b; }); // true -``` - -See: [`equals()`](#equals) - - - -## deepFillIn(target, ...objects):Object - -Fill missing properties recursively. - -It's different from `deepMixIn` since it won't override any existing property. -It's also different from `merge` since it won't clone child objects during the -process. - -It returns the target object and mutates it in place. - -See: [`fillIn()`](#fillIn), [`deepMixIn()`](#deepMixIn), [`merge()`](#merge) - -```js -var base = { - foo : { - bar : 123 - }, - lorem : 'ipsum' -}; -var options = deepFillIn({foo : { baz : 45 }, lorem : 'amet'}, base); -// > {foo: {bar:123, baz : 45}, lorem : 'amet'} -``` - - - -## deepMatches(target, pattern):Boolean - -Recursively checks if object contains all properties/value pairs. When both -the target and pattern values are arrays, it checks that the target value -contain matches for all the items in the pattern array (independent of order). - -```js -var john = { - name: 'John', - age: 22, - pets: [ - { type: 'cat', name: 'Grumpy Cat' }, - { type: 'dog', name: 'Hawk' } - ] -}; - -deepMatches(john, { name: 'John' }); // true -deepMatches(john, { age: 21 }); // false -deepMatches(john, { pets: [ { type: 'cat' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hawk' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hairball' } ] }); // false -``` - -See [`matches()`](#matches) - - - -## deepMixIn(target, ...objects):Object - -Mixes objects into the target object, recursively mixing existing child objects -as well. - -It will only recursively mix objects if both (existing and new) values are -plain objects. - -Returns the target object. Like [`merge()`](#merge), but mutates the target -object, and does not clone child objects. - -```js -var target = { - foo: { - name: "foo", - id: 1 - } -}; - -deepMixIn(target, { foo: { id: 2 } }); -console.log(target); // { foo: { name: "foo", id: 2 } } -``` - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## equals(a, b, [callback]):Boolean - -Tests whether two objects contain the same keys and values. - -`callback` specifies the equality comparison function used to compare the -values. It defaults to using the strict equals (`===`) operator. - -It will only check the keys and values contained by the objects; it will not -check the objects' prototypes. If either of the values are not objects, they -will be compared using the `callback` function. - -```js -equals({}, {}); // true -equals({ a: 1 }, { a: 1 }); // true -equals({ a: 1 }, { a: 2 }); // false -equals({ a: 1, b: 2 }, { a: 1 }); // false -equals({ a: 1 }, { a: 1, b: 2 }); // false -equals(null, null); // true -equals(null, {}); // false -equals({ a: 1 }, { a: '1' }, function(a, b) { return a == b; }); // true -``` - - - -## every(obj, callback, [thisObj]):Boolean - -Similar to [Array/every](array.html#every). Tests whether all properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - - - -## fillIn(obj, ...default):Object - -Fill in missing properties in object with values from the *defaults* objects. - - var base = { - foo : 'bar', - num : 123 - }; - - fillIn({foo:'ipsum'}, base); // {foo:'ipsum', num:123} - -PS: it allows merging multiple objects at once, the first ones will take -precedence. - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## filter(obj, callback, [thisObj]) - -Returns a new object containing all properties where `callback` returns true, -similar to Array/filter. It does not use properties from the object's -prototype. - -Callback receives the same arguments as `forOwn()`. - -See: [`forOwn()`](#forOwn), [`forIn()`](#forIn), [`pick()`](#pick) - -```js -var obj = { - foo: 'value', - bar: 'bar value' -}; - -// returns { bar: 'bar value' } -filter(obj, function(v) { return value.length > 5; }); - -// returns { foo: 'value' } -filter(obj, function(v, k) { return k === 'foo'; }); -``` - - - -## find(obj, callback, [thisObj]) - -Loops through all the properties in the Object and returns the first one that -passes a truth test (callback), similar to [Array/find](array.html#find). -Unlike Array/find, order of iteration is not guaranteed. - -```js -var obj = { - a: 'foo', - b: 12 -}; - -find(obj, isString); // 'foo' -find(obj, isNumber); // 12 -``` - - - -## forIn(obj, callback[, thisObj]) - -Iterate over all properties of an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -It **will** iterate over inherited (enumerable) properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forIn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 7 -console.log(keys); // ['foo', 'bar', 'lorem'] -``` - - - -## forOwn(obj, callback[, thisObj]) - -Iterate over all own properties from an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -Notice that it **won't** iterate over properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forIn()`](#forIn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -// will be ignored -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forOwn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 3 -console.log(keys); // ['foo', 'bar'] -``` - - - -## functions(obj):Array - -Returns a sorted list of all enumerable properties that have function values -(including inherited properties). - -```js -var obj = { - foo : function(){}, - bar : 'baz' -}; -functions(obj); // ['foo'] -``` - - - -## get(obj, propName):* - -Returns nested property value. Will return `undefined` if property doesn't -exist. - -See: [`set()`](#set), [`namespace()`](#namespace), [`has()`](#has) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -get(lorem, 'ipsum.dolor.sit'); // "amet" -get(lorem, 'foo.bar'); // undefined -``` - - - -## has(obj, propName):Boolean - -Checks if object contains a child property. Useful for cases where you need to -check if an object contain a *nested* property. It will get properties -inherited by the prototype. - -see: [`hasOwn()`](#hasOwn), [`get()`](#get) - -```js -var a = { - b : { - c : 123 - } - }; - -has(a, 'b.c'); // true -has(a, 'foo.c'); // false -``` - -### Common use case - -```js -if( has(a, 'foo.c') ){ // false - // ... -} - -if( a.foo.c ){ // ReferenceError: `foo` is not defined - // ... -} -``` - - - -## hasOwn(obj, propName):Boolean - -Safer `Object.hasOwnProperty`. Returns a boolean indicating whether the object -has the specified property. - -see: [`has()`](#has) - -```js -var obj = { - foo: 1, - hasOwnProperty : 'bar' -}; - -obj.hasOwnProperty('foo'); // ERROR! hasOwnProperty is not a function - -hasOwn(obj, 'foo'); // true -hasOwn(obj, 'hasOwnProperty'); // true -hasOwn(obj, 'toString'); // false -``` - - - -## keys(obj):Array - -Returns an array of all own enumerable properties found upon a given object. -It will use the native `Object.keys` if present. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`values()`](#values) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -keys(obj); // ['foo', 'bar', 'lorem'] -``` - - - -## map(obj, callback, [thisObj]):Object - -Returns a new object where the property values are the result of calling the -callback for each property in the original object, similar to Array/map. - -The callback function receives the same arguments as in `forOwn()`. - -See: [`forOwn()`](#forOwn) - -```js -var obj = { foo: 1, bar: 2 }, - data = { foo: 0, bar: 1 }; - -map(obj, function(v) { return v + 1; }); // { foo: 2, bar: 3 } -map(obj, function(v, k) { return k; }); // { foo: "foo", bar: "bar" } -map(obj, function(v, k) { return this[k]; }, data); // { foo: 0, bar: 1 } -``` - - - -## matches(obj, props):Boolean - -Checks if object contains all properties/values pairs. Useful for validation -and filtering. - -```js -var john = {age:25, hair:'long', beard:true}; -var mark = {age:27, hair:'short', beard:false}; -var hippie = {hair:'long', beard:true}; -matches(john, hippie); // true -matches(mark, hippie); // false -``` - -See [`deepMatches()`](#deepMatches) - - - -## merge(...objects):Object - -Deep merges objects. Note that objects and properties will be cloned during the -process to avoid undesired side effects. It return a new object and won't -affect source objects. - -```js -var obj1 = {a: {b: 1, c: 1, d: {e: 1, f: 1}}}; -var obj2 = {a: {b: 2, d : {f : 'yeah'} }}; - -merge(obj1, obj2); // {a: {b : 2, c : 1, d : {e : 1, f : 'yeah'}}} -``` - -See: [`deepMixIn()`](#deepMixIn), [`deepFillIn()`](#deepFillIn) - - - -## max(obj[, iterator]):* - -Returns maximum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/max](array.html#max). - -See: [`min()`](#min) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(obj[, iterator]):* - -Returns minimum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/min](array.html#min). - -See: [`max()`](#max) - -```js -min({a: 100, b: 2, c: 1, d: 3, e: 200}); // 1 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## mixIn(target, ...objects):Object - -Combine properties from all the objects into first one. - -This method affects target object in place, if you want to create a new Object -pass an empty object as first parameter. - -### Arguments - - 1. `target` (Object) : Target Object. - 2. `...objects` (...Object) : Objects to be combined (0...n objects). - -### Example - -```js -var a = {foo: "bar"}; -var b = {lorem: 123}; - -mixIn({}, a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar"} - -mixIn(a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar", lorem: 123} -``` - -See: [`fillIn()`](#fillIn), [`merge()`](#merge) - - - - -## namespace(obj, propName):Object - -Creates an empty object inside namespace if not existent. Will return created -object or existing object. - -See: [`get()`](#get), [`set()`](#set) - -```js -var obj = {}; -namespace(obj, 'foo.bar'); // {} -console.log(obj); // {foo:{bar:{}}} -``` - - - -## pick(obj, ...keys):Object - -Return a copy of the object that contains only the whitelisted keys. - -See: [`filter()`](#filter) - -```js -var user = { - firstName : 'John', - lastName : 'Doe', - dob : '1985/07/23', - gender : 'male' -}; - -// can pass an array of keys as second argument -var keys = ['firstName', 'dob'] -pick(user, keys); // {firstName:"John", dob: "1985/07/23"} - -// or multiple arguments -pick(user, 'firstName', 'lastName'); // {firstName:"John", lastName: "Doe"} -``` - - - -## pluck(obj, propName):Object - -Extract an object containing property values with keys as they appear in the -passed object. - -```js -var users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // {first: 'John', second: 'Mary'} ); -pluck(users, 'age'); // {first: 21, second: 25} ); -``` - - - -## reduce(obj, callback, initial, [thisObj]):* - -Similar to [Array/reduce](array.html#reduce). - -Apply a function against an accumulator and each property of the object (order -is undefined) as to reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - compare1.push(prev); - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - - - -## reject(obj, callback, thisObj):Object - -Returns a new object containing all properties where `callback` returns true, -similar to [Array/reject](array.html#reject). It does not use properties from -the object's prototype. Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // {b: 2, d: 4} -``` - - - -## values(obj):Array - -Returns an array of all own enumerable properties values found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -values(obj); // [1, 2, 3] -``` - - - -## set(obj, propName, value) - -Sets a nested property value. - -See: [`get()`](#get), [`namespace()`](#namespace) - -```js -var obj = {}; -set(obj, 'foo.bar', 123); -console.log(obj.foo.bar); // 123 -console.log(obj); // {foo:{bar:123}} -``` - - - -## size(obj):Number - -Returns the count of own enumerable properties found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -``` - - - -## some(obj, callback, [thisObj]):Boolean - -Similar to [Array/some](array.html#some). Tests whether any properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -``` - - - -## unset(obj, propName):Boolean - -Delete object property if existent and returns a boolean indicating succes. It -will also return `true` if property doesn't exist. - -Some properties can't be deleted, to understand why [check this -article](http://perfectionkills.com/understanding-delete/). - -See: [`set()`](#set) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -unset(lorem, 'ipsum.dolor.sit'); // true -console.log(lorem.ipsum.dolor); // {} -unset(lorem, 'foo.bar'); // true -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/queryString.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/queryString.md deleted file mode 100644 index 1be3c102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/queryString.md +++ /dev/null @@ -1,115 +0,0 @@ -# queryString # - -Utilities for query string manipulation. - - - -## contains(url, paramName):Boolen - -Checks if query string contains parameter. - -### Arguments: - - 1. `url` (String) : URL or query string. - 2. `paramName` (String) : Parameter name. - -### Example: - -```js -var url = 'example.com/?lorem=ipsum'; -contains(url, 'lorem'); // true -contains(url, 'foo'); //false -``` - - - -## decode(queryStr[, shouldTypecast]):Object - -Parses query string and creates an object of keys => vals. - -Will typecast value with [`string/typecast`](string.html#typecast) by default -and decode string parameters using `decodeURIComponent()`. - -```js -var query = '?foo=bar&lorem=123'; -decode(query); // {foo: "bar", lorem: 123} -decode(query, false); // {foo: "bar", lorem: "123"} -``` - - -## encode(obj):String - -Encode object into a query string. - -Will encode parameters with `encodeURIComponent()`. - -```js -encode({foo: "bar", lorem: 123}); // "?foo=bar&lorem=123" -``` - - -## getParam(url, param[, shouldTypecast]):* - -Get query parameter value. - -Will typecast value with [`string/typecast`](string.html#typecast) by default. - -See: [`setParam()`](#setParam) - -### Arguments: - - 1. `url` (String) : Url. - 2. `param` (String) : Parameter name. - 3. `[shouldTypecast]` (Boolean) : If it should typecast value. - -### Example: - -```js -var url = 'example.com/?foo=bar&lorem=123&ipsum=false'; -getParam(url, 'dolor'); // "amet" -getParam(url, 'lorem'); // 123 -getParam(url, 'lorem', false); // "123" -``` - - -## parse(url[, shouldTypecast]):Object - -Parses URL, extracts query string and decodes it. - -It will typecast all properties of the query object unless second argument is -`false`. - -Alias to: `decode(getQuery(url))`. - -```js -var url = 'example.com/?lorem=ipsum&a=123'; -parse(url); // {lorem: "ipsum", a: 123} -parse(url, false); // {lorem: "ipsum", a: "123"} -``` - - -## getQuery(url):String - -Gets full query as string with all special chars decoded. - -```js -getQuery('example.com/?lorem=ipsum'); // "?lorem=ipsum" -``` - - -## setParam(url, paramName, value):String - -Add new query string parameter to URL or update existing value. - -See: [`getParam()`](#getParam) - -```js -setParam('?foo=bar&lorem=0', 'lorem', 'ipsum'); // '?foo=bar&lorem=ipsum' -setParam('?lorem=1', 'foo', 123); // '?lorem=1&foo=123' -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/random.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/random.md deleted file mode 100644 index b058b4e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/random.md +++ /dev/null @@ -1,218 +0,0 @@ -# random # - -Pseudo-random generators. - -mout uses `Math.random` by default on all the pseudo-random generators, if -you need a seeded random or a better algorithm see the [`random()`](#random) -documentation for instructions. - - - -## choice(...items):* - -Returns a random element from the supplied arguments or from an array if single -argument is an array. - -### Example: - -```js -choice(1, 2, 3, 4, 5); // 3 - -var arr = ['lorem', 'ipsum', 'dolor']; -choice(arr); // 'dolor' -``` - - - -## guid():String - -Generates a pseudo-random [Globally Unique Identifier](http://en.wikipedia.org/wiki/Globally_unique_identifier) (v4). - -Since the total number of GUIDs is 2<sup>122</sup> the chance of generating the -same value twice is negligible. - -**Important:** this method uses `Math.random` by default so the UUID isn't -*safe* (sequence of outputs can be predicted in some cases), check the -[`random()`](#random) documentation for more info on how to replace the default -PRNG if you need extra safety or need *seeded* results. - -See: [`randHex()`](#randHex), [`random()`](#random) - -### Example: - -```js -guid(); // 830e9f50-ac7f-4369-a14f-ed0e62b2fa0b -guid(); // 5de3d09b-e79c-4727-932b-48c49228d508 -``` - - - -## rand([min], [max]):Number - -Gets a random number inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -rand(); // 448740433.55274725 -rand(); // -31797596.097682 -rand(0, 10); // 7.369723 -rand(0, 10); // 5.987042 -``` - -See: [`random()`](#random) - - - -## randBit():Number - -Returns a random "bit" (0 or 1). Useful for addition/subtraction. - -It's slightly faster than `choice(0, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randBit(); // 1 -randBit(); // 0 - -//same effect as -choice(0, 1); -``` - - - -## randHex([size]):String - -Returns a random hexadecimal string. - -The default `size` is `6`. - -### Example: - -```js -randHex(); // "dd8575" -randHex(); // "e6baeb" -randHex(2); // "a2" -randHex(30); // "effd7e2ad9a4a3067e30525fab983a" -``` - - - -## randInt([min], [max]):Number - -Gets a random integer inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -randInt(); // 448740433 -randInt(); // -31797596 -randInt(0, 10); // 7 -randInt(0, 10); // 5 -``` - - - -## randSign():Number - -Returns a random "sign" (-1 or 1). Useful for multiplications. - -It's slightly faster than `choice(-1, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randSign(); // -1 -randSign(); // 1 - -//same effect as -choice(-1, 1); -``` - - - -## random():Number - -Returns a random number between `0` and `1`. Same as `Math.random()`. - -```js -random(); // 0.35435103671625257 -random(); // 0.8768321881070733 -``` - -**Important:** No methods inside mout should call `Math.random()` -directly, they all use `random/random` as a proxy, that way we can -inject/replace the pseudo-random number generator if needed (ie. in case we -need a seeded random or a better algorithm than the native one). - -### Replacing the PRNG - -In some cases we might need better/different algorithms than the one provided -by `Math.random` (ie. safer, seeded). - -Because of licensing issues, file size limitations and different needs we -decided to **not** implement a custom PRNG and instead provide a easy way to -override the default behavior. - [issue #99](https://github.com/millermedeiros/amd-utils/issues/99) - -If you are using mout with a loader that supports the [AMD map -config](https://github.com/amdjs/amdjs-api/wiki/Common-Config), such as -[RequireJS](http://requirejs.org/), you can use it to replace the PRNG -(recommended approach): - -```js -requirejs.config({ - map : { - // all modules will load "my_custom_prng" instead of - // "mout/random/random" - '*' : { - 'mout/random/random' : 'my_custom_prng' - } - } -}); -``` - -You also have the option to override `random.get` in case you are using -mout on node.js or with a loader which doesn't support the map config: - -```js -// replace the PRNG -var n = 0; -random.get = function(){ - return ++n % 2? 0 : 1; // not so random :P -}; -random(); // 0 -random(); // 1 -random(); // 0 -random(); // 1 -``` - -See this [detailed explanation about PRNG in -JavaScript](http://baagoe.org/en/w/index.php/Better_random_numbers_for_javascript) -to understand the issues with the native `Math.random` and also for a list of -algorithms that could be used instead. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/string.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/string.md deleted file mode 100644 index 04f61a76..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/string.md +++ /dev/null @@ -1,606 +0,0 @@ -# string # - -String utilities. - - -## camelCase(str):String - -Convert string to "camelCase" text. - -See: [`pascalCase()`](#pascalCase), [`unCamelCase()`](#unCamelCase) - -### Example - -```js -camelCase('lorem-ipsum-dolor'); // "loremIpsumDolor" -camelCase('lorem ipsum dolor'); // "loremIpsumDolor" -``` - - - -## contains(str, substring, [fromIndex]):Boolean - -Checks if string contains the given substring. - -See: [`startsWith()`](#startsWith), [`endsWith()`](#endsWith) - -### Example - -```js -contains('lorem', 'or'); // true -contains('lorem', 'bar'); // false -``` - - - -## crop(str, maxChars, [append]):String - -Truncate string at full words. Alias to `truncate(str, maxChars, append, true);`. - -See: [`truncate()`](#truncate) - -### Example - -```js -crop('lorem ipsum dolor', 10); // "lorem..." -crop('lorem ipsum dolor', 10, '+'); // "lorem+" -``` - - - -## endsWith(str, suffix):Boolean - -Checks if string ends with specified suffix. - -See: [`startsWith()`](#startsWith), [`contains()`](#contains) - -### Example - -```js -endsWith('lorem ipsum', 'lorem'); // false -endsWith('lorem ipsum', 'ipsum'); // true -``` - - - -## escapeHtml(str):String - -Escapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`unescapeHtml()`](#unescapeHtml) - -### Example - -```js -escapeHtml('lorem & "ipsum"'); // "lorem &amp; &quot;ipsum&quot;" -``` - - - -## escapeRegExp(str):String - -Escape special chars to be used as literals in RegExp constructors. - -### Example - -```js -str = escapeRegExp('[lorem.ipsum]'); // "\\[lorem\\.ipsum\\]" -reg = new RegExp(str); // /\[lorem\.ipsum\]/ -``` - - - -## escapeUnicode(str[, shouldEscapePrintable]):String - -Unicode escape chars. - -It will only escape non-printable ASCII chars unless `shouldEscapePrintable` is -set to `true`. - -See: [`unescapeUnicode()`](#unescapeUnicode) - -```js -escapeUnicode('føo bÃ¥r'); -// > "f\u00f8o b\u00e5r" -escapeUnicode('føo bÃ¥r', true); -// > "\u0066\u00f8\u006f\u0020\u0062\u00e5\u0072" -``` - - - -## hyphenate(str):String - -Replaces spaces with hyphens, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`underscore()`](#underscore), -[`unhyphenate`](#unhyphenate) - -```js -hyphenate(' %# lorem ipsum ? $ dolor'); // "lorem-ipsum-dolor" -hyphenate('spéçïãl çhârs'); // "special-chars" -hyphenate('loremIpsum'); // "lorem-ipsum" -``` - - - -## insert(str, index, partial):String - -Inserts a `partial` before the given `index` in the provided `str`. -If the index is larger than the length of the string the partial is appended at the end. -A negative index is treated as `length - index` where `length` is the length or the string. - -```js -insert('this is a sentence', 10, 'sample '); // "this is a sample sentence" -insert('foo', 100, 'bar'); // "foobar" -insert('image.png', -4, '-large'); // "image-large.png" -``` - -## interpolate(str, replacements[, syntax]):String - -String interpolation. Format/replace tokens with object properties. - -```js -var tmpl = 'Hello {{name}}!'; -interpolate(tmpl, {name: 'World'}); // "Hello World!" -interpolate(tmpl, {name: 'Lorem Ipsum'}); // "Hello Lorem Ipsum!" -``` - -It uses a mustache-like syntax by default but you can set your own format if -needed. You can also use Arrays for the replacements (since Arrays are -objects as well): - -```js -// matches everything inside "${}" -var syntax = /\$\{([^}]+)\}/g; -var tmpl = "Hello ${0}!"; -interpolate(tmpl, ['Foo Bar'], syntax); // "Hello Foo Bar!" -``` - - - -## lowerCase(str):String - -"Safer" `String.toLowerCase()`. (Used internally) - -### Example - -```js -(null).toLowerCase(); // Error! -(undefined).toLowerCase(); // Error! -lowerCase(null); // "" -lowerCase(undefined); // "" -``` - - - -## lpad(str, minLength[, char]):String - -Pad string from left with `char` if its' length is smaller than `minLen`. - -See: [`rpad()`](#rpad) - -### Example - -```js -lpad('a', 5); // " a" -lpad('a', 5, '-'); // "----a" -lpad('abc', 3, '-'); // "abc" -lpad('abc', 4, '-'); // "-abc" -``` - - - -## ltrim(str, [chars]):String - -Remove chars or white-spaces from beginning of string. - -`chars` is an array of chars to remove from the beginning of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`rtrim()`](#rtrim), [`trim()`](#trim) - -### Example - -```js -ltrim(' lorem ipsum '); // "lorem ipsum " -ltrim('--lorem ipsum--', ['-']); // "lorem ipsum--" -``` - - - -## makePath(...args):String - -Group arguments as path segments, if any of the args is `null` or `undefined` -it will be ignored from resulting path. It will also remove duplicate "/". - -See: [`array/join()`](array.html#join) - -### Example - -```js -makePath('lorem', 'ipsum', null, 'dolor'); // "lorem/ipsum/dolor" -makePath('foo///bar/'); // "foo/bar/" -``` - - - -## normalizeLineBreaks(str, [lineBreak]):String - -Normalize line breaks to a single format. Defaults to Unix `\n`. - -It handles DOS (`\r\n`), Mac (`\r`) and Unix (`\n`) formats. - -### Example - -```js -// "foo\nbar\nlorem\nipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum'); - -// "foo\rbar\rlorem\ripsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', '\r'); - -// "foo bar lorem ipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', ' '); -``` - - - -## pascalCase(str):String - -Convert string to "PascalCase" text. - -See: [`camelCase()`](#camelCase) - -### Example - -```js -pascalCase('lorem-ipsum-dolor'); // "LoremIpsumDolor" -pascalCase('lorem ipsum dolor'); // "LoremIpsumDolor" -``` - - - -## properCase(str):String - -UPPERCASE first char of each word, lowercase other chars. - -### Example - -```js -properCase('loRem iPSum'); // "Lorem Ipsum" -``` - - - -## removeNonASCII(str):String - -Remove [non-printable ASCII -chars](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters). - -### Example - -```js -removeNonASCII('äÄçÇéÉêlorem-ipsumöÖÃþúÚ'); // "lorem-ipsum" -``` - - - -## removeNonWord(str):String - -Remove non-word chars. - -### Example - -```js -var str = 'lorem ~!@#$%^&*()_+`-={}[]|\\:";\'/?><., ipsum'; -removeNonWord(str); // "lorem - ipsum" -``` - - - -## repeat(str, n):String - -Repeat string n-times. - -### Example - -```js -repeat('a', 3); // "aaa" -repeat('bc', 2); // "bcbc" -repeat('a', 0); // "" -``` - - - -## replace(str, search, replacements):String - -Replace string(s) with the replacement(s) in the source. - -`search` and `replacements` can be an array, or a single item. For every item -in `search`, it will call `str.replace` with the search item and the matching -replacement in `replacements`. If `replacements` only contains one replacement, -it will be used for all the searches, otherwise it will use the replacement at -the same index as the search. - -### Example - -```js -replace('foo bar', 'foo', 'test'); // "test bar" -replace('test 1 2', ['1', '2'], 'n'); // "test n n" -replace('test 1 2', ['1', '2'], ['one', 'two']); // "test one two" -replace('123abc', [/\d/g, /[a-z]/g], ['0', '.']); // "000..." -``` - - - -## replaceAccents(str):String - -Replaces all accented chars with regular ones. - -**Important:** Only covers **Basic Latin** and **Latin-1** unicode chars. - -### Example - -```js -replaceAccents('spéçïãl çhârs'); // "special chars" -``` - - - -## rpad(str, minLength[, char]):String - -Pad string from right with `char` if its' length is smaller than `minLen`. - -See: [`lpad()`](#lpad) - -### Example - -```js -rpad('a', 5); // "a " -rpad('a', 5, '-'); // "a----" -rpad('abc', 3, '-'); // "abc" -rpad('abc', 4, '-'); // "abc-" -``` - - - -## rtrim(str, [chars]):String - -Remove chars or white-spaces from end of string. - -`chars` is an array of chars to remove from the end of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`trim()`](#trim), [`ltrim()`](#ltrim) - -### Example - -```js -rtrim(' lorem ipsum '); // " lorem ipsum" -rtrim('--lorem ipsum--', ['-']); // "--lorem ipsum" -``` - - - -## sentenceCase(str):String - -UPPERCASE first char of each sentence and lowercase other chars. - -### Example - -```js -var str = 'Lorem IpSum DoLOr. maeCeNnas Ullamcor.'; -sentenceCase(str); // "Lorem ipsum dolor. Maecennas ullamcor." -``` - - - -## stripHtmlTags(str):String - -Remove HTML/XML tags from string. - -### Example - -```js -var str = '<p><em>lorem</em> <strong>ipsum</strong></p>'; -stripHtmlTags(str); // "lorem ipsum" -``` - - - -## startsWith(str, prefix):Boolean - -Checks if string starts with specified prefix. - -See: [`endsWith()`](#endsWith), [`contains()`](#contains) - -### Example - -```js -startsWith('lorem ipsum', 'lorem'); // true -startsWith('lorem ipsum', 'ipsum'); // false -``` - - - -## slugify(str[, delimeter]):String - -Convert to lower case, remove accents, remove non-word chars and replace spaces -with the delimeter. The default delimeter is a hyphen. - -Note that this does not split camelCase text. - -See: [`hyphenate()`](#hyphenate) and [`underscore()`](#underscore) - -### Example - -```js -var str = 'loremIpsum dolor spéçïãl chârs'; -slugify(str); // "loremipsum-dolor-special-chars" -slugify(str, '_'); // "loremipsum_dolor_special_chars" -``` - - - -## trim(str, [chars]):String - -Remove chars or white-spaces from beginning and end of string. - -`chars` is an array of chars to remove from the beginning and end of the -string. If `chars` is not specified, Unicode whitespace chars will be used -instead. - -See: [`rtrim()`](#rtrim), [`ltrim()`](#ltrim) - -### Example - -```js -trim(' lorem ipsum '); // "lorem ipsum" -trim('-+-lorem ipsum-+-', ['-', '+']); // "lorem ipsum" -``` - - - -## truncate(str, maxChars, [append], [onlyFullWords]):String - -Limit number of chars. Returned string `length` will be `<= maxChars`. - -See: [`crop()`](#crop) - -### Arguments - - 1. `str` (String) : String - 2. `maxChars` (Number) : Maximum number of characters including `append.length`. - 3. `[append]` (String) : Value that should be added to the end of string. - Defaults to "...". - 4. `[onlyFullWords]` (Boolean) : If it shouldn't break words. Default is - `false`. (favor [`crop()`](#crop) since code will be clearer). - -### Example - -```js -truncate('lorem ipsum dolor', 11); // "lorem ip..." -truncate('lorem ipsum dolor', 11, '+'); // "lorem ipsu+" -truncate('lorem ipsum dolor', 11, null, true); // "lorem..." -``` - - - -## typecast(str):* - -Parses string and convert it into a native value. - -### Example - -```js -typecast('lorem ipsum'); // "lorem ipsum" -typecast('123'); // 123 -typecast('123.45'); // 123.45 -typecast('false'); // false -typecast('true'); // true -typecast('null'); // null -typecast('undefined'); // undefined -``` - - - -## unCamelCase(str, [delimiter]):String - -Add the delimiter between camelCase text and convert first char of each word to -lower case. - -The delimiter defaults to a space character. - -See: [`camelCase()`][#camelCase] - -### Example - -```js -unCamelCase('loremIpsumDolor'); // "lorem ipsum dolor" -unCamelCase('loremIpsumDolor', '-'); // "lorem-ipsum-color" -``` - - -## underscore(str):String - -Replaces spaces with underscores, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`hyphenate()`](#hyphenate) - -```js -underscore(' %# lorem ipsum ? $ dolor'); // "lorem_ipsum_dolor" -underscore('spéçïãl çhârs'); // "special_chars" -underscore('loremIpsum'); // "lorem_ipsum" -``` - - - -## unescapeHtml(str):String - -Unescapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`escapeHtml()`](#escapeHtml) - -### Example - -```js -unescapeHtml('lorem &amp; &quot;ipsum&quot;'); // 'lorem & "ipsum"' -``` - - - -## unescapeUnicode(str):String - -Unescapes unicode char sequences. - -See: [`escapeUnicode()`](#escapeUnicode) - -```js -unescapeUnicode('\\u0066\\u00f8\\u006f\\u0020\\u0062\\u00e5\\u0072'); -// > 'føo bÃ¥r' -``` - - - -## unhyphenate(str):String - -Replaces hyphens with spaces. (only hyphens between word chars) - -See : [`hyphenate()`](#hyphenate) - -### Example - -```js -unhyphenate('lorem-ipsum-dolor'); // "lorem ipsum dolor" -``` - - -## upperCase(str):String - -"Safer" `String.toUpperCase()`. (Used internally) - -### Example - -```js -(null).toUpperCase(); // Error! -(undefined).toUpperCase(); // Error! -upperCase(null); // "" -upperCase(undefined); // "" -``` - - - -## WHITE_SPACES:Array - -Constant array of all [Unicode white-space -characters](http://en.wikipedia.org/wiki/Whitespace_character). - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/time.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/time.md deleted file mode 100644 index 628c2a9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/doc/time.md +++ /dev/null @@ -1,64 +0,0 @@ -# time # - -Utilities for time manipulation. - - -## convert(value, sourceUnit, [destinationUnit]):Number - -Converts time between units. - -Available units: `millisecond`, `second`, `minute`, `hour`, `day`, `week`. -Abbreviations: `ms`, `s`, `m`, `h`, `d`, `w`. - -We do **not** support year and month as a time unit since their values are not -fixed. - -The default `destinationUnit` is `ms`. - -```js -convert(1, 'minute'); // 60000 -convert(2.5, 's', 'ms'); // 2500 -convert(2, 'm', 's'); // 120 -convert(500, 'ms', 's'); // 0.5 -``` - - - -## now():Number - -Returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. -Uses `Date.now()` if available. - -### Example - -```js -now(); // 1335449614650 -``` - - - -## parseMs(ms):Object - -Parse timestamp (milliseconds) into an object `{milliseconds:number, -seconds:number, minutes:number, hours:number, days:number}`. - -### Example - -```js -// {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} -parseMs(2348765454); -``` - - - -## toTimeString(ms):String - -Convert timestamp (milliseconds) into a time string in the format "[H:]MM:SS". - -### Example - -```js -toTimeString(12513); // "00:12" -toTimeString(951233); // "15:51" -toTimeString(8765235); // "2:26:05" -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function.js deleted file mode 100644 index 75d0c7e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function.js +++ /dev/null @@ -1,19 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout'), - 'times' : require('./function/times') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/bind.js deleted file mode 100644 index 71bc1257..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - module.exports = bind; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/compose.js deleted file mode 100644 index 8cd5c5f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - module.exports = compose; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/debounce.js deleted file mode 100644 index 7f6f3021..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/debounce.js +++ /dev/null @@ -1,32 +0,0 @@ - - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - debounced.cancel = function(){ - clearTimeout(timeout); - }; - return debounced; - } - - module.exports = debounce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/func.js deleted file mode 100644 index b81bf0a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - module.exports = func; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/makeIterator_.js deleted file mode 100644 index b6e6a00e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/makeIterator_.js +++ /dev/null @@ -1,31 +0,0 @@ -var prop = require('./prop'); -var deepMatches = require('../object/deepMatches'); - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'function': - // function is the first to improve perf (most common case) - return (typeof thisObj !== 'undefined')? function(val, i, arr){ - return src.call(thisObj, val, i, arr); - } : src; - case 'object': - // typeof null == "object" - return (src != null)? function(val){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - default: - return src; - } - } - - module.exports = makeIterator; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/partial.js deleted file mode 100644 index d63ff1be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - module.exports = partial; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/prop.js deleted file mode 100644 index 734acb7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - module.exports = prop; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/series.js deleted file mode 100644 index 25159c2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ - - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - module.exports = series; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/throttle.js deleted file mode 100644 index 10bdc1f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/throttle.js +++ /dev/null @@ -1,35 +0,0 @@ -var now = require('../time/now'); - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - throttled.cancel = function(){ - clearTimeout(timeout); - }; - return throttled; - } - - module.exports = throttle; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/timeout.js deleted file mode 100644 index e0d21a66..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - module.exports = timeout; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/times.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/times.js deleted file mode 100644 index 04a11c26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/function/times.js +++ /dev/null @@ -1,17 +0,0 @@ - - - /** - * Iterates over a callback a set amount of times - */ - function times(n, callback, thisObj){ - var i = -1; - while (++i < n) { - if ( callback.call(thisObj, i) === false ) { - break; - } - } - } - - module.exports = times; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/index.js deleted file mode 100644 index 5016d085..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/**@license - * mout v0.7.1 | http://moutjs.com | MIT license - */ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'VERSION' : '0.7.1', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time'), - 'fn' : require('./function') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang.js deleted file mode 100644 index 024f7fa5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang.js +++ /dev/null @@ -1,37 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toNumber' : require('./lang/toNumber'), - 'toString' : require('./lang/toString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/clone.js deleted file mode 100644 index 33c4e949..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/clone.js +++ /dev/null @@ -1,49 +0,0 @@ -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); -var mixIn = require('../object/mixIn'); - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - module.exports = clone; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/createObject.js deleted file mode 100644 index bbc14c1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -var mixIn = require('../object/mixIn'); - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - module.exports = createObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/ctorApply.js deleted file mode 100644 index d68dc506..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ - - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - module.exports = ctorApply; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/deepClone.js deleted file mode 100644 index 25fd95f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/deepClone.js +++ /dev/null @@ -1,48 +0,0 @@ -var clone = require('./clone'); -var forOwn = require('../object/forOwn'); -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - module.exports = deepClone; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/defaults.js deleted file mode 100644 index 1111b2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/defaults.js +++ /dev/null @@ -1,17 +0,0 @@ -var toArray = require('./toArray'); -var find = require('../array/find'); - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - module.exports = defaults; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/inheritPrototype.js deleted file mode 100644 index eb17b9ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/inheritPrototype.js +++ /dev/null @@ -1,17 +0,0 @@ -var createObject = require('./createObject'); - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - child.super_ = parent; - } - - module.exports = inheritPrototype; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/is.js deleted file mode 100644 index 4a835739..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - module.exports = is; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArguments.js deleted file mode 100644 index f7b08ba4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -var isKind = require('./isKind'); - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - module.exports = isArgs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArray.js deleted file mode 100644 index 262ee400..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - module.exports = isArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isBoolean.js deleted file mode 100644 index 86557cb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - module.exports = isBoolean; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isDate.js deleted file mode 100644 index 4a5130f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - module.exports = isDate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isEmpty.js deleted file mode 100644 index 0e9f77da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isEmpty.js +++ /dev/null @@ -1,24 +0,0 @@ -var forOwn = require('../object/forOwn'); -var isArray = require('./isArray'); - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - module.exports = isEmpty; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFinite.js deleted file mode 100644 index 6d4006f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -var isNumber = require('./isNumber'); - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - module.exports = isFinite; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFunction.js deleted file mode 100644 index 216879f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - module.exports = isFunction; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isInteger.js deleted file mode 100644 index 29f95d96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - module.exports = isInteger; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isKind.js deleted file mode 100644 index 02301e04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -var kindOf = require('./kindOf'); - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - module.exports = isKind; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNaN.js deleted file mode 100644 index 4ea3065d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNaN.js +++ /dev/null @@ -1,16 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - // jshint eqeqeq: false - return !isNumber(val) || val != +val; - } - - module.exports = isNaN; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNull.js deleted file mode 100644 index 6252f9ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - */ - function isNull(val){ - return val === null; - } - module.exports = isNull; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNumber.js deleted file mode 100644 index 126c1cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - module.exports = isNumber; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isObject.js deleted file mode 100644 index 7350c891..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - module.exports = isObject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isPlainObject.js deleted file mode 100644 index b81342ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isPlainObject.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value && typeof value === 'object' && - value.constructor === Object); - } - - module.exports = isPlainObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isRegExp.js deleted file mode 100644 index fc5459a9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - module.exports = isRegExp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isString.js deleted file mode 100644 index f8906584..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - module.exports = isString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isUndefined.js deleted file mode 100644 index fb2261df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ - - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - module.exports = isUndef; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isnt.js deleted file mode 100644 index 9dad58ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -var is = require('./is'); - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - module.exports = isnt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/kindOf.js deleted file mode 100644 index 663464d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ - - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - module.exports = kindOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toArray.js deleted file mode 100644 index e39b8734..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -var kindOf = require('./kindOf'); - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - module.exports = toArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toNumber.js deleted file mode 100644 index 8b6df344..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toNumber.js +++ /dev/null @@ -1,20 +0,0 @@ -var isArray = require('./isArray'); - - /** - * covert value into number if numeric - */ - function toNumber(val){ - // numberic values should come first because of -0 - if (typeof val === 'number') return val; - // we want all falsy values (besides -0) to return zero to avoid - // headaches - if (!val) return 0; - if (typeof val === 'string') return parseFloat(val); - // arrays are edge cases. `Number([4]) === 4` - if (isArray(val)) return NaN; - return Number(val); - } - - module.exports = toNumber; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toString.js deleted file mode 100644 index ae5c2b0f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - module.exports = toString; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math.js deleted file mode 100644 index c6ee889b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math.js +++ /dev/null @@ -1,19 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/ceil.js deleted file mode 100644 index a279e158..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - module.exports = ceil; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/clamp.js deleted file mode 100644 index e929a9a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - module.exports = clamp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/countSteps.js deleted file mode 100644 index 60ac90c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ - - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - module.exports = countSteps; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/floor.js deleted file mode 100644 index 9de50531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - module.exports = floor; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/inRange.js deleted file mode 100644 index 763218f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - module.exports = inRange; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/isNear.js deleted file mode 100644 index 45486b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - module.exports = isNear; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/lerp.js deleted file mode 100644 index 111e2717..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - module.exports = lerp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/loop.js deleted file mode 100644 index 35207c1a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - module.exports = loop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/map.js deleted file mode 100644 index 96c4b787..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/map.js +++ /dev/null @@ -1,11 +0,0 @@ -var lerp = require('./lerp'); -var norm = require('./norm'); - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/norm.js deleted file mode 100644 index 54caf78a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - module.exports = norm; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/round.js deleted file mode 100644 index d108e6cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - module.exports = round; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number.js deleted file mode 100644 index 0b6186cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_INT.js deleted file mode 100644 index 1d6f0e48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ - - module.exports = 2147483647; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_UINT.js deleted file mode 100644 index 700da0f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ - - module.exports = 4294967295; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MIN_INT.js deleted file mode 100644 index b34ab2ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ - - module.exports = -2147483648; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/abbreviate.js deleted file mode 100644 index dd6716b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -var enforcePrecision = require('./enforcePrecision'); - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - module.exports = abbreviateNumber; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/currencyFormat.js deleted file mode 100644 index c85a6685..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/currencyFormat.js +++ /dev/null @@ -1,27 +0,0 @@ -var toNumber = require('../lang/toNumber'); - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - val = toNumber(val); - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - module.exports = currencyFormat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/enforcePrecision.js deleted file mode 100644 index 3d3b2d40..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/enforcePrecision.js +++ /dev/null @@ -1,12 +0,0 @@ -var toNumber = require('../lang/toNumber'); - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - */ - function enforcePrecision(val, nDecimalDigits){ - val = toNumber(val); - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - module.exports = enforcePrecision; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/pad.js deleted file mode 100644 index 1f83af45..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/pad.js +++ /dev/null @@ -1,14 +0,0 @@ -var lpad = require('../string/lpad'); -var toNumber = require('../lang/toNumber'); - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - n = toNumber(n); - return lpad(''+ n, minLength, char || '0'); - } - - module.exports = pad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/rol.js deleted file mode 100644 index ecd58da4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - module.exports = rol; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/ror.js deleted file mode 100644 index 2eda81da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - module.exports = ror; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/sign.js deleted file mode 100644 index 7f9a1e2f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ -var toNumber = require('../lang/toNumber'); - - /** - * Get sign of the value. - */ - function sign(val) { - var num = toNumber(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - module.exports = sign; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toInt.js deleted file mode 100644 index 72fd7de4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toInt.js +++ /dev/null @@ -1,17 +0,0 @@ - - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - // we do not use lang/toNumber because of perf and also because it - // doesn't break the functionality - return ~~val; - } - - module.exports = toInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt.js deleted file mode 100644 index d2796563..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - // we do not use lang/toNumber because of perf and also because it - // doesn't break the functionality - return val >>> 0; - } - - module.exports = toUInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt31.js deleted file mode 100644 index 6cd3bb52..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/number/toUInt31.js +++ /dev/null @@ -1,15 +0,0 @@ -var MAX_INT = require('./MAX_INT'); - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - // we do not use lang/toNumber because of perf and also because it - // doesn't break the functionality - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - module.exports = toUInt31; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object.js deleted file mode 100644 index 76c06424..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object.js +++ /dev/null @@ -1,42 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/bindAll.js deleted file mode 100644 index b2f27d08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/bindAll.js +++ /dev/null @@ -1,18 +0,0 @@ -var functions = require('./functions'); -var bind = require('../function/bind'); -var forEach = require('../array/forEach'); - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - module.exports = bindAll; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/contains.js deleted file mode 100644 index 8076e2c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -var some = require('./some'); - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepEquals.js deleted file mode 100644 index fcde9449..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepEquals.js +++ /dev/null @@ -1,27 +0,0 @@ -var isObject = require('../lang/isObject'); -var equals = require('./equals'); - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - module.exports = deepEquals; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepFillIn.js deleted file mode 100644 index 6568ea87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepFillIn.js +++ /dev/null @@ -1,33 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - // jshint loopfunc: true - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) && - isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - module.exports = deepFillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMatches.js deleted file mode 100644 index 3366c52d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMatches.js +++ /dev/null @@ -1,55 +0,0 @@ -var forOwn = require('./forOwn'); -var isArray = require('../lang/isArray'); - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - module.exports = deepMatches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMixIn.js deleted file mode 100644 index a97e98d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/deepMixIn.js +++ /dev/null @@ -1,34 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - module.exports = deepMixIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/equals.js deleted file mode 100644 index f50cbe4e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/equals.js +++ /dev/null @@ -1,36 +0,0 @@ -var hasOwn = require('./hasOwn'); -var every = require('./every'); -var isObject = require('../lang/isObject'); - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - module.exports = equals; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/every.js deleted file mode 100644 index 01106e5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/every.js +++ /dev/null @@ -1,23 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - module.exports = every; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/fillIn.js deleted file mode 100644 index 80dcdf07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/fillIn.js +++ /dev/null @@ -1,20 +0,0 @@ -var forEach = require('../array/forEach'); -var forOwn = require('./forOwn'); - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - module.exports = fillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/filter.js deleted file mode 100644 index 3a83a92f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/filter.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - module.exports = filterValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/find.js deleted file mode 100644 index d39c0706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/find.js +++ /dev/null @@ -1,21 +0,0 @@ -var some = require('./some'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forIn.js deleted file mode 100644 index 367f08ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ - - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - module.exports = forIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forOwn.js deleted file mode 100644 index 5f2dfbfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/forOwn.js +++ /dev/null @@ -1,19 +0,0 @@ -var hasOwn = require('./hasOwn'); -var forIn = require('./forIn'); - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - module.exports = forOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/functions.js deleted file mode 100644 index f5717979..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -var forIn = require('./forIn'); - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - module.exports = functions; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/get.js deleted file mode 100644 index 7cf9d9bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ - - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object' || !obj) return; - } - - return obj[last]; - } - - module.exports = get; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/has.js deleted file mode 100644 index ca9f2289..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -var get = require('./get'); - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - module.exports = has; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/hasOwn.js deleted file mode 100644 index 7e3c82ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - module.exports = hasOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/keys.js deleted file mode 100644 index dd2f4f55..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - module.exports = keys; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/map.js deleted file mode 100644 index dd449a78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/map.js +++ /dev/null @@ -1,18 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - module.exports = mapValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/matches.js deleted file mode 100644 index 6074faa2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - module.exports = matches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/max.js deleted file mode 100644 index 3e8e92c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/max.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMax = require('../array/max'); -var values = require('./values'); - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - module.exports = max; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/merge.js deleted file mode 100644 index 6961f608..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/merge.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = require('./hasOwn'); -var deepClone = require('../lang/deepClone'); -var isObject = require('../lang/isObject'); - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - module.exports = merge; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/min.js deleted file mode 100644 index e1e66976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/min.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMin = require('../array/min'); -var values = require('./values'); - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - module.exports = min; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/mixIn.js deleted file mode 100644 index 55ec8fd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - module.exports = mixIn; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/namespace.js deleted file mode 100644 index c6e79f63..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -var forEach = require('../array/forEach'); - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - module.exports = namespace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pick.js deleted file mode 100644 index 74e56f98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pluck.js deleted file mode 100644 index e844df47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/pluck.js +++ /dev/null @@ -1,13 +0,0 @@ -var map = require('./map'); -var prop = require('../function/prop'); - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reduce.js deleted file mode 100644 index 6f19a3a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reduce.js +++ /dev/null @@ -1,29 +0,0 @@ -var forOwn = require('./forOwn'); -var size = require('./size'); - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - module.exports = reduce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reject.js deleted file mode 100644 index 74643795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/set.js deleted file mode 100644 index 9b3cdc48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -var namespace = require('./namespace'); - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - module.exports = set; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/size.js deleted file mode 100644 index 97885953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/some.js deleted file mode 100644 index 384c6f3c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/some.js +++ /dev/null @@ -1,21 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - module.exports = some; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/unset.js deleted file mode 100644 index 343bca0a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -var has = require('./has'); - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - module.exports = unset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/values.js deleted file mode 100644 index 265a6938..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - module.exports = values; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/package.json deleted file mode 100644 index 3e313bf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "name": "mout", - "description": "Modular Utilities", - "version": "0.7.1", - "homepage": "http://moutjs.com/", - "contributors": [ - { - "name": "Adam Nowotny" - }, - { - "name": "André Cruz", - "email": "amdfcruz@gmail.com" - }, - { - "name": "Conrad Zimmerman", - "url": "http://www.conradz.com" - }, - { - "name": "Friedemann Altrock", - "email": "frodenius@gmail.com" - }, - { - "name": "Jarrod Overson", - "url": "http://jarrodoverson.com" - }, - { - "name": "Miller Medeiros", - "email": "contact@millermedeiros.com", - "url": "http://blog.millermedeiros.com" - }, - { - "name": "Zach Shipley" - } - ], - "keywords": [ - "utilities", - "functional", - "amd-utils", - "stdlib" - ], - "repository": { - "type": "git", - "url": "git://github.com/mout/mout.git" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - } - ], - "bugs": { - "url": "https://github.com/mout/mout/issues/" - }, - "main": "./index.js", - "scripts": { - "prepublish": "node build cjs .", - "pretest": "node build pkg", - "test": "node node_modules/istanbul/lib/cli test tests/runner.js --hook-run-in-context" - }, - "directories": { - "doc": "./doc" - }, - "devDependencies": { - "istanbul": "~0.1.27", - "jasmine-node": "~1.2.2", - "requirejs": "2.x", - "nodefy": "*", - "mdoc": "~0.3.2", - "handlebars": "~1.0.6", - "commander": "~1.0.5", - "rocambole": "~0.2.3", - "jshint": "2.x" - }, - "testling": { - "preprocess": "node build testling", - "browsers": { - "ie": [ - 7, - 8, - 9, - 10 - ], - "firefox": [ - 17, - "nightly" - ], - "chrome": [ - 23, - "canary" - ], - "opera": [ - 12, - "next" - ], - "safari": [ - 5.1, - 6 - ], - "iphone": [ - 6 - ], - "ipad": [ - 6 - ] - }, - "scripts": [ - "tests/lib/jasmine/jasmine.js", - "tests/lib/jasmine/jasmine.async.js", - "tests/lib/jasmine/jasmine-tap.js", - "tests/lib/requirejs/require.js", - "tests/testling/src.js", - "tests/testling/specs.js", - "tests/runner.js" - ] - }, - "readme": "![mout](http://moutjs.com/logo.png \"Modular JavaScript Utilties\")\n\nhttp://moutjs.com/\n\n[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout)\n\nAll code is library agnostic and consist mostly of helper methods that aren't\ndirectly related with the DOM, the purpose of this library isn't to replace\nDojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common\nproblems that aren't solved by most of them. Consider it as a crossbrowser\nJavaScript standard library.\n\n\n\n## Main goals ##\n\n - increase code reuse;\n - be clear (code should be clean/readable);\n - be easy to debug;\n - be easy to maintain;\n - follow best practices;\n - follow standards when possible;\n - **don't convert JavaScript into another language!**\n - be compatible with other frameworks;\n - be modular;\n - have unit tests for all modules;\n - work on multiple environments (IE7+, modern browsers, node.js);\n\n\n\n## What shouldn't be here ##\n\n - UI components;\n - CSS selector engine;\n - Event system - pub/sub;\n - Template engine;\n - Anything that isn't generic enough to be on a standard library;\n - Anything that could be a separate library and/or isn't a modular utility...\n\n\n\n## API Documentation ##\n\nOnline documentation can be found at http://moutjs.com/ or inside the\n`doc` folder.\n\n\n\n## FAQ / Wiki / IRC ##\n\nFor more info about project structure, design decisions, tips, how to\ncontribute, build system, etc, please check the [project\nwiki](https://github.com/mout/mout/wiki).\n\nWe also have an IRC channel [#moutjs on\nirc.freenode.net](http://webchat.freenode.net/?channels=moutjs)\n\n\n\n## License ##\n\nReleased under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n\n", - "readmeFilename": "README.md", - "_id": "mout@0.7.1", - "_from": "mout@~0.7.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString.js deleted file mode 100644 index 22685a7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/contains.js deleted file mode 100644 index da678cf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -var getQuery = require('./getQuery'); - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/decode.js deleted file mode 100644 index 1c15785b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/decode.js +++ /dev/null @@ -1,38 +0,0 @@ -var typecast = require('../string/typecast'); -var isString = require('../lang/isString'); -var isArray = require('../lang/isArray'); -var hasOwn = require('../object/hasOwn'); - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - count = -1, - length = queryArr.length, - obj = {}, - item, pValue, pName, toSet; - - while (++count < length) { - item = queryArr[count].split('='); - pName = item[0]; - if (!pName || !pName.length){ - continue; - } - pValue = shouldTypecast === false ? item[1] : typecast(item[1]); - toSet = isString(pValue) ? decodeURIComponent(pValue) : pValue; - if (hasOwn(obj,pName)){ - if(isArray(obj[pName])){ - obj[pName].push(toSet); - } else { - obj[pName] = [obj[pName],toSet]; - } - } else { - obj[pName] = toSet; - } - } - return obj; - } - - module.exports = decode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/encode.js deleted file mode 100644 index 3a4fd0a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/encode.js +++ /dev/null @@ -1,27 +0,0 @@ -var forOwn = require('../object/forOwn'); -var isArray = require('../lang/isArray'); -var forEach = require('../array/forEach'); - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = [], - arrValues, reg; - forOwn(obj, function (val, key) { - if (isArray(val)) { - arrValues = key + '='; - reg = new RegExp('&'+key+'+=$'); - forEach(val, function (aValue) { - arrValues += encodeURIComponent(aValue) + '&' + key + '='; - }); - query.push(arrValues.replace(reg, '')); - } else { - query.push(key + '=' + encodeURIComponent(val)); - } - }); - return (query.length) ? '?' + query.join('&') : ''; - } - - module.exports = encode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getParam.js deleted file mode 100644 index f149c3ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getParam.js +++ /dev/null @@ -1,15 +0,0 @@ -var typecast = require('../string/typecast'); -var getQuery = require('./getQuery'); - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - module.exports = getParam; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getQuery.js deleted file mode 100644 index 5194af2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - module.exports = getQuery; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/parse.js deleted file mode 100644 index 532906c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/parse.js +++ /dev/null @@ -1,13 +0,0 @@ -var decode = require('./decode'); -var getQuery = require('./getQuery'); - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - module.exports = parse; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/setParam.js deleted file mode 100644 index 052a9ba6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - module.exports = setParam; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random.js deleted file mode 100644 index d9267f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random.js +++ /dev/null @@ -1,16 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/choice.js deleted file mode 100644 index 51aa82a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/choice.js +++ /dev/null @@ -1,15 +0,0 @@ -var randInt = require('./randInt'); -var isArray = require('../lang/isArray'); - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - module.exports = choice; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/guid.js deleted file mode 100644 index 41f6eddc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/guid.js +++ /dev/null @@ -1,24 +0,0 @@ -var randHex = require('./randHex'); -var choice = require('./choice'); - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - module.exports = guid; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/rand.js deleted file mode 100644 index 782dec88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/rand.js +++ /dev/null @@ -1,15 +0,0 @@ -var random = require('./random'); -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - module.exports = rand; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randBit.js deleted file mode 100644 index bd20b4a0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - module.exports = randomBit; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randHex.js deleted file mode 100644 index d8d711c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -var choice = require('./choice'); - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - module.exports = randHex; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randInt.js deleted file mode 100644 index e237d964..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randInt.js +++ /dev/null @@ -1,18 +0,0 @@ -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); -var rand = require('./rand'); - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - module.exports = randInt; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randSign.js deleted file mode 100644 index 5a9fed76..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - module.exports = randomSign; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/random.js deleted file mode 100644 index 670a3cc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - module.exports = random; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array.js deleted file mode 100644 index 7bcc961b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array.js +++ /dev/null @@ -1,46 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/append.js deleted file mode 100644 index 549d8754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - return append; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/collect.js deleted file mode 100644 index 8f60cda2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/collect.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./append', '../function/makeIterator_'], function (append, makeIterator) { - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - return collect; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/combine.js deleted file mode 100644 index 22efb860..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - return combine; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/compact.js deleted file mode 100644 index 02a81098..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./filter'], function (filter) { - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - return compact; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/contains.js deleted file mode 100644 index fca4f7cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/difference.js deleted file mode 100644 index 819bda3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/difference.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./unique', './filter', './some', './contains'], function (unique, filter, some, contains) { - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return difference; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/every.js deleted file mode 100644 index 78ba46d3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - return every; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/filter.js deleted file mode 100644 index 38add180..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/filter.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/find.js deleted file mode 100644 index 3957dcd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./findIndex'], function (findIndex) { - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/findIndex.js deleted file mode 100644 index 59dfeeb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - return findIndex; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/flatten.js deleted file mode 100644 index 42e87f43..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/flatten.js +++ /dev/null @@ -1,42 +0,0 @@ -define(['../lang/isArray', './append'], function (isArray, append) { - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - return flatten; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/forEach.js deleted file mode 100644 index 0e045868..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - return forEach; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/indexOf.js deleted file mode 100644 index 0e75f99b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - return indexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/insert.js deleted file mode 100644 index d8d831f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/insert.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./difference', '../lang/toArray'], function (difference, toArray) { - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - return insert; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/intersection.js deleted file mode 100644 index 64e6ee97..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/intersection.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./unique', './filter', './every', './contains'], function (unique, filter, every, contains) { - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return intersection; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/invoke.js deleted file mode 100644 index f94a9a4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - return invoke; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/join.js deleted file mode 100644 index 2c618d29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./filter'], function(filter) { - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - return join; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/lastIndexOf.js deleted file mode 100644 index 931235f4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - return lastIndexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/map.js deleted file mode 100644 index 14377ab6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/map.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/max.js deleted file mode 100644 index d0628f0a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/max.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return max; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/min.js deleted file mode 100644 index 07a0c71f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/min.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return min; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pick.js deleted file mode 100644 index dc5b222f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pick.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['../random/randInt'], function (randInt) { - - /** - * Remove random item(s) from the Array and return it. - * Returns an Array of items if [nItems] is provided or a single item if - * it isn't specified. - */ - function pick(arr, nItems){ - if (nItems != null) { - var result = []; - if (nItems > 0 && arr && arr.length) { - nItems = nItems > arr.length? arr.length : nItems; - while (nItems--) { - result.push( pickOne(arr) ); - } - } - return result; - } - return (arr && arr.length)? pickOne(arr) : void(0); - } - - - function pickOne(arr){ - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pluck.js deleted file mode 100644 index c908856e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/range.js deleted file mode 100644 index 148ebf96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../math/countSteps'], function (countSteps) { - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - return range; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduce.js deleted file mode 100644 index 5f97ae8e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -define(function () { - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - return reduce; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduceRight.js deleted file mode 100644 index ddae0e7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ -define(function () { - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - return reduceRight; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reject.js deleted file mode 100644 index cad40384..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/reject.js +++ /dev/null @@ -1,25 +0,0 @@ -define(['../function/makeIterator_'], function(makeIterator) { - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return reject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/remove.js deleted file mode 100644 index dec9134d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - return remove; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/removeAll.js deleted file mode 100644 index e81022b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - return removeAll; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/shuffle.js deleted file mode 100644 index 891d1677..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/shuffle.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../random/randInt'], function (randInt) { - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - return shuffle; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/some.js deleted file mode 100644 index e46a9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - return some; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/sort.js deleted file mode 100644 index 4c194042..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ -define(function () { - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - return mergeSort; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/split.js deleted file mode 100644 index a17275eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ -define(function() { - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - return split; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/toLookup.js deleted file mode 100644 index aac8fd1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../lang/isFunction'], function (isFunction) { - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - return toLookup; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/union.js deleted file mode 100644 index 5f9922e5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/union.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./unique', './append'], function (unique, append) { - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - return union; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/unique.js deleted file mode 100644 index c4bd23b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/unique.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./indexOf', './filter'], function(indexOf, filter){ - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - return unique; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/xor.js deleted file mode 100644 index 7df89d9c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/xor.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['./unique', './filter', './contains'], function (unique, filter, contains) { - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - return xor; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/zip.js deleted file mode 100644 index bd0dbb84..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/array/zip.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['./max', './map'], function (max, map) { - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1; - while (++i < len) { - // jshint loopfunc: true - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - return zip; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection.js deleted file mode 100644 index 386e6da9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/contains.js deleted file mode 100644 index 192167e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/contains.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/contains', '../object/contains'], function (make, arrContains, objContains) { - - /** - */ - return make(arrContains, objContains); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/every.js deleted file mode 100644 index 6317f503..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/every.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/every', '../object/every'], function (make, arrEvery, objEvery) { - - /** - */ - return make(arrEvery, objEvery); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/filter.js deleted file mode 100644 index 4e7fadc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/filter.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/find.js deleted file mode 100644 index 681f9414..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/find.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/find', '../object/find'], function(make, arrFind, objFind) { - - /** - * Find value that returns true on iterator check. - */ - return make(arrFind, objFind); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/forEach.js deleted file mode 100644 index 3b39d3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/forEach.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/forEach', '../object/forOwn'], function (make, arrForEach, objForEach) { - - /** - */ - return make(arrForEach, objForEach); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/make_.js deleted file mode 100644 index 312e0564..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(){ - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - return makeCollectionMethod; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/map.js deleted file mode 100644 index 96e24987..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/map.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/isObject', '../object/values', '../array/map', '../function/makeIterator_'], function (isObject, values, arrMap, makeIterator) { - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - return map; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/max.js deleted file mode 100644 index de9a6da5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/max.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/max', '../object/max'], function (make, arrMax, objMax) { - - /** - * Get maximum value inside collection - */ - return make(arrMax, objMax); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/min.js deleted file mode 100644 index f0c239a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/min.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/min', '../object/min'], function (make, arrMin, objMin) { - - /** - * Get minimum value inside collection. - */ - return make(arrMin, objMin); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/pluck.js deleted file mode 100644 index ef784a7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reduce.js deleted file mode 100644 index bd05d43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reduce.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/reduce', '../object/reduce'], function (make, arrReduce, objReduce) { - - /** - */ - return make(arrReduce, objReduce); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reject.js deleted file mode 100644 index 581adfdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/size.js deleted file mode 100644 index 4e5ab419..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/size.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/isArray', '../object/size'], function (isArray, objSize) { - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/some.js deleted file mode 100644 index c0aebee2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/collection/some.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/some', '../object/some'], function (make, arrSome, objSome) { - - /** - */ - return make(arrSome, objSome); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date.js deleted file mode 100644 index 4d449150..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/dayOfTheYear.js deleted file mode 100644 index dc77ae1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - return dayOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/diff.js deleted file mode 100644 index 667165fe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/diff.js +++ /dev/null @@ -1,128 +0,0 @@ -define(['./totalDaysInMonth', './totalDaysInYear', '../time/convert'], function(totalDaysInMonth, totalDaysInYear, convert){ - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - return diff; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/de-DE.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/de-DE.js deleted file mode 100644 index 46f5c6aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/de-DE.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // de-DE (German) - return { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ], - - "months_abbr" : [ - "Jan", - "Febr", - "März", - "Apr", - "Mai", - "Juni", - "Juli", - "Aug", - "Sept", - "Okt", - "Nov", - "Dez" - ], - - "days" : [ - "Sonntag", - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag" - ], - - "days_abbr" : [ - "So", - "Mo", - "Di", - "Mi", - "Do", - "Fr", - "Sa" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/en-US.js deleted file mode 100644 index 5e640c22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // en-US (English, United States) - return { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/pt-BR.js deleted file mode 100644 index 47256dd2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // pt-BR (Brazillian Portuguese) - return { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n_.js deleted file mode 100644 index c04ce885..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/i18n_.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../object/mixIn', './i18n/en-US'], function(mixIn, enUS){ - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - return activeLocale; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isLeapYear.js deleted file mode 100644 index e400b43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - return isLeapYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isSame.js deleted file mode 100644 index f30531fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./startOf'], function (startOf) { - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - return isSame; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/parseIso.js deleted file mode 100644 index b21c8797..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -define(['../array/some'], function (some) { - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else { - match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - return parseISO8601; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/startOf.js deleted file mode 100644 index 747f114d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['../lang/clone'], function (clone) { - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - return startOf; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/strftime.js deleted file mode 100644 index dd782505..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/strftime.js +++ /dev/null @@ -1,113 +0,0 @@ -define(['../number/pad', './i18n_', './dayOfTheYear', './timezoneOffset', './timezoneAbbr', './weekOfTheYear'], function (pad, i18n, dayOfTheYear, timezoneOffset, timezoneAbbr, weekOfTheYear) { - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - return strftime; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneAbbr.js deleted file mode 100644 index 225a6856..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./timezoneOffset'], function(timezoneOffset) { - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - return timezoneAbbr; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneOffset.js deleted file mode 100644 index ca06705d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/pad'], function (pad) { - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - return timezoneOffset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInMonth.js deleted file mode 100644 index 98f7e9d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInMonth.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['../lang/isDate', './isLeapYear'], function (isDate, isLeapYear) { - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - return totalDaysInMonth; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInYear.js deleted file mode 100644 index e9036b42..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./isLeapYear'], function (isLeapYear) { - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - return totalDaysInYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/weekOfTheYear.js deleted file mode 100644 index 8dabc458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./dayOfTheYear'], function (dayOfTheYear) { - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - return weekOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function.js deleted file mode 100644 index 71307246..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout'), - 'times' : require('./function/times') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/bind.js deleted file mode 100644 index 09e5e20a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function(){ - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - return bind; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/compose.js deleted file mode 100644 index d8b228fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - return compose; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/debounce.js deleted file mode 100644 index 8c5fd47f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/debounce.js +++ /dev/null @@ -1,32 +0,0 @@ -define(function () { - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - debounced.cancel = function(){ - clearTimeout(timeout); - }; - return debounced; - } - - return debounce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/func.js deleted file mode 100644 index b920e00e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - return func; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/makeIterator_.js deleted file mode 100644 index c498e131..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/makeIterator_.js +++ /dev/null @@ -1,30 +0,0 @@ -define(['./prop', '../object/deepMatches'], function(prop, deepMatches) { - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'function': - // function is the first to improve perf (most common case) - return (typeof thisObj !== 'undefined')? function(val, i, arr){ - return src.call(thisObj, val, i, arr); - } : src; - case 'object': - // typeof null == "object" - return (src != null)? function(val){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - default: - return src; - } - } - - return makeIterator; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/partial.js deleted file mode 100644 index ad730746..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - return partial; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/prop.js deleted file mode 100644 index c9df78ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - return prop; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/series.js deleted file mode 100644 index c8856a27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function () { - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - return series; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/throttle.js deleted file mode 100644 index 1885fc6a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/throttle.js +++ /dev/null @@ -1,35 +0,0 @@ -define(['../time/now'], function (now) { - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - throttled.cancel = function(){ - clearTimeout(timeout); - }; - return throttled; - } - - return throttle; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/timeout.js deleted file mode 100644 index 15388bdd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - return timeout; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/times.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/times.js deleted file mode 100644 index ec10caeb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/function/times.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function () { - - /** - * Iterates over a callback a set amount of times - */ - function times(n, callback, thisObj){ - var i = -1; - while (++i < n) { - if ( callback.call(thisObj, i) === false ) { - break; - } - } - } - - return times; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/index.js deleted file mode 100644 index 3098aff6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/**@license - * mout v0.7.1 | http://moutjs.com | MIT license - */ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'VERSION' : '0.7.1', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time'), - 'fn' : require('./function') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang.js deleted file mode 100644 index 434916a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang.js +++ /dev/null @@ -1,37 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toNumber' : require('./lang/toNumber'), - 'toString' : require('./lang/toString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/clone.js deleted file mode 100644 index 468489a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/clone.js +++ /dev/null @@ -1,47 +0,0 @@ -define(['./kindOf', './isPlainObject', '../object/mixIn'], function (kindOf, isPlainObject, mixIn) { - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - return clone; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/createObject.js deleted file mode 100644 index f7661500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../object/mixIn'], function(mixIn){ - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - return createObject; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/ctorApply.js deleted file mode 100644 index a9ac1c54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function () { - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - return ctorApply; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/deepClone.js deleted file mode 100644 index d45c10aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/deepClone.js +++ /dev/null @@ -1,45 +0,0 @@ -define(['./clone', '../object/forOwn', './kindOf', './isPlainObject'], function (clone, forOwn, kindOf, isPlainObject) { - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - return deepClone; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/defaults.js deleted file mode 100644 index 5156b1bb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/defaults.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./toArray', '../array/find'], function (toArray, find) { - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - return defaults; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/inheritPrototype.js deleted file mode 100644 index d47d0fee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/inheritPrototype.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./createObject'], function(createObject){ - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - child.super_ = parent; - } - - return inheritPrototype; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/is.js deleted file mode 100644 index 261a2077..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - return is; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArguments.js deleted file mode 100644 index f889ee8e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isKind'], function (isKind) { - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - return isArgs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArray.js deleted file mode 100644 index 886e2aa5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - return isArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isBoolean.js deleted file mode 100644 index 1ca27a69..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - return isBoolean; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isDate.js deleted file mode 100644 index 2708d676..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - return isDate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isEmpty.js deleted file mode 100644 index 4cc3d2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isEmpty.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../object/forOwn', './isArray'], function (forOwn, isArray) { - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - return isEmpty; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFinite.js deleted file mode 100644 index 5a982f4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - return isFinite; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFunction.js deleted file mode 100644 index ff5df7f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - return isFunction; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isInteger.js deleted file mode 100644 index 1931f516..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - return isInteger; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isKind.js deleted file mode 100644 index 6937a12f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -define(['./kindOf'], function (kindOf) { - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - return isKind; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNaN.js deleted file mode 100644 index b25e8c36..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNaN.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - // jshint eqeqeq: false - return !isNumber(val) || val != +val; - } - - return isNaN; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNull.js deleted file mode 100644 index 506e05ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function () { - /** - */ - function isNull(val){ - return val === null; - } - return isNull; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNumber.js deleted file mode 100644 index 9a832c5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - return isNumber; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isObject.js deleted file mode 100644 index 0befb063..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - return isObject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isPlainObject.js deleted file mode 100644 index 406a2797..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isPlainObject.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value && typeof value === 'object' && - value.constructor === Object); - } - - return isPlainObject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isRegExp.js deleted file mode 100644 index d78a03da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - return isRegExp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isString.js deleted file mode 100644 index 8a42fe01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - return isString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isUndefined.js deleted file mode 100644 index c57b28eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function () { - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - return isUndef; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isnt.js deleted file mode 100644 index d4336222..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./is'], function (is) { - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - return isnt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/kindOf.js deleted file mode 100644 index 97d21d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - return kindOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toArray.js deleted file mode 100644 index 552916f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./kindOf'], function (kindOf) { - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - return toArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toNumber.js deleted file mode 100644 index 39767386..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toNumber.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./isArray'], function (isArray) { - - /** - * covert value into number if numeric - */ - function toNumber(val){ - // numberic values should come first because of -0 - if (typeof val === 'number') return val; - // we want all falsy values (besides -0) to return zero to avoid - // headaches - if (!val) return 0; - if (typeof val === 'string') return parseFloat(val); - // arrays are edge cases. `Number([4]) === 4` - if (isArray(val)) return NaN; - return Number(val); - } - - return toNumber; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toString.js deleted file mode 100644 index c28b89af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - return toString; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math.js deleted file mode 100644 index e2ba8705..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/ceil.js deleted file mode 100644 index d73b0581..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - return ceil; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/clamp.js deleted file mode 100644 index fb5a1484..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - return clamp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/countSteps.js deleted file mode 100644 index 0ecb32f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(){ - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - return countSteps; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/floor.js deleted file mode 100644 index 8a4456b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - return floor; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/inRange.js deleted file mode 100644 index 0c890536..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - return inRange; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/isNear.js deleted file mode 100644 index b308a0b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - return isNear; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/lerp.js deleted file mode 100644 index 26b99d04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - return lerp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/loop.js deleted file mode 100644 index c735ecf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - return loop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/map.js deleted file mode 100644 index bf7dc5d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/map.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./lerp', './norm'], function(lerp, norm){ - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/norm.js deleted file mode 100644 index fccae20e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - return norm; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/round.js deleted file mode 100644 index b43e4ac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - return round; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number.js deleted file mode 100644 index cb52fc75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_INT.js deleted file mode 100644 index 23a6e1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ -define(function(){ - return 2147483647; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_UINT.js deleted file mode 100644 index a035096c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ -define(function(){ - return 4294967295; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MIN_INT.js deleted file mode 100644 index 9b3e9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ -define(function(){ - return -2147483648; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/abbreviate.js deleted file mode 100644 index 7e7405ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -define(['./enforcePrecision'], function (enforcePrecision) { - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - return abbreviateNumber; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/currencyFormat.js deleted file mode 100644 index 1e5fecba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/currencyFormat.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../lang/toNumber'], function (toNumber) { - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - val = toNumber(val); - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - return currencyFormat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/enforcePrecision.js deleted file mode 100644 index 1e65e505..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/enforcePrecision.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toNumber'], function(toNumber){ - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - */ - function enforcePrecision(val, nDecimalDigits){ - val = toNumber(val); - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - return enforcePrecision; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/pad.js deleted file mode 100644 index 194a3df3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/pad.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../string/lpad', '../lang/toNumber'], function(lpad, toNumber){ - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - n = toNumber(n); - return lpad(''+ n, minLength, char || '0'); - } - - return pad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/rol.js deleted file mode 100644 index a148f444..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - return rol; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/ror.js deleted file mode 100644 index b5c66f92..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - return ror; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/sign.js deleted file mode 100644 index b387c957..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/toNumber'], function (toNumber) { - - /** - * Get sign of the value. - */ - function sign(val) { - var num = toNumber(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - return sign; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toInt.js deleted file mode 100644 index 5ea59e51..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toInt.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function(){ - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - // we do not use lang/toNumber because of perf and also because it - // doesn't break the functionality - return ~~val; - } - - return toInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt.js deleted file mode 100644 index 36bbdadd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function () { - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - // we do not use lang/toNumber because of perf and also because it - // doesn't break the functionality - return val >>> 0; - } - - return toUInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt31.js deleted file mode 100644 index c1c4affd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/number/toUInt31.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./MAX_INT'], function(MAX_INT){ - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - // we do not use lang/toNumber because of perf and also because it - // doesn't break the functionality - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - return toUInt31; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object.js deleted file mode 100644 index 343e7826..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object.js +++ /dev/null @@ -1,42 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/bindAll.js deleted file mode 100644 index b131ed15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/bindAll.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./functions', '../function/bind', '../array/forEach'], function (functions, bind, forEach) { - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - return bindAll; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/contains.js deleted file mode 100644 index 297e8986..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./some'], function (some) { - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepEquals.js deleted file mode 100644 index 8b7d5d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepEquals.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['../lang/isObject', './equals'], function (isObject, equals) { - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - return deepEquals; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepFillIn.js deleted file mode 100644 index ee69c3d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepFillIn.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - // jshint loopfunc: true - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) && - isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - return deepFillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMatches.js deleted file mode 100644 index 2eae6297..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMatches.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['./forOwn', '../lang/isArray'], function(forOwn, isArray) { - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - return deepMatches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMixIn.js deleted file mode 100644 index 1b4178ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/deepMixIn.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - return deepMixIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/equals.js deleted file mode 100644 index 596cb952..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/equals.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./hasOwn', './every', '../lang/isObject'], function(hasOwn, every, isObject) { - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - return equals; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/every.js deleted file mode 100644 index 52983a5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/every.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - return every; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/fillIn.js deleted file mode 100644 index 0845d3c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/fillIn.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach', './forOwn'], function (forEach, forOwn) { - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - return fillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/filter.js deleted file mode 100644 index f213b915..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/filter.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - return filterValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/find.js deleted file mode 100644 index 47e6b09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/find.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./some', '../function/makeIterator_'], function(some, makeIterator) { - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forIn.js deleted file mode 100644 index 2058e9cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ -define(function () { - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - return forIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forOwn.js deleted file mode 100644 index b40cbaf1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/forOwn.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./hasOwn', './forIn'], function (hasOwn, forIn) { - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - return forOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/functions.js deleted file mode 100644 index 60fee3dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./forIn'], function (forIn) { - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - return functions; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/get.js deleted file mode 100644 index b498153d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object' || !obj) return; - } - - return obj[last]; - } - - return get; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/has.js deleted file mode 100644 index cc29817f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./get'], function (get) { - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - return has; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/hasOwn.js deleted file mode 100644 index 5c53bcf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - return hasOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/keys.js deleted file mode 100644 index ed7c4f91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - return keys; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/map.js deleted file mode 100644 index 2958f6b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/map.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - return mapValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/matches.js deleted file mode 100644 index 73ff427c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - return matches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/max.js deleted file mode 100644 index ef311dcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/max.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/max', './values'], function(arrMax, values) { - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - return max; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/merge.js deleted file mode 100644 index d7cfedec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/merge.js +++ /dev/null @@ -1,38 +0,0 @@ -define(['./hasOwn', '../lang/deepClone', '../lang/isObject'], function (hasOwn, deepClone, isObject) { - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - return merge; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/min.js deleted file mode 100644 index 9fb4c1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/min.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/min', './values'], function(arrMin, values) { - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - return min; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/mixIn.js deleted file mode 100644 index 6210b7e7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn'], function(forOwn){ - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - return mixIn; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/namespace.js deleted file mode 100644 index 7ed65db8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach'], function (forEach) { - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - return namespace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pick.js deleted file mode 100644 index 76e22bfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(){ - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pluck.js deleted file mode 100644 index d47744bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map', '../function/prop'], function (map, prop) { - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reduce.js deleted file mode 100644 index d3a57788..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reduce.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn', './size'], function(forOwn, size) { - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - return reduce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reject.js deleted file mode 100644 index 84296428..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/set.js deleted file mode 100644 index b8fa25a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./namespace'], function (namespace) { - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - return set; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/size.js deleted file mode 100644 index c6e377cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/some.js deleted file mode 100644 index 1bd6fdae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/some.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - return some; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/unset.js deleted file mode 100644 index 787fc19a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./has'], function (has) { - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - return unset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/values.js deleted file mode 100644 index b311fd09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - return values; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString.js deleted file mode 100644 index 44346127..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/contains.js deleted file mode 100644 index a6d11cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./getQuery'], function (getQuery) { - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/decode.js deleted file mode 100644 index 50da3f66..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/decode.js +++ /dev/null @@ -1,35 +0,0 @@ -define(['../string/typecast', '../lang/isString', '../lang/isArray', '../object/hasOwn'], function (typecast, isString, isArray, hasOwn) { - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - count = -1, - length = queryArr.length, - obj = {}, - item, pValue, pName, toSet; - - while (++count < length) { - item = queryArr[count].split('='); - pName = item[0]; - if (!pName || !pName.length){ - continue; - } - pValue = shouldTypecast === false ? item[1] : typecast(item[1]); - toSet = isString(pValue) ? decodeURIComponent(pValue) : pValue; - if (hasOwn(obj,pName)){ - if(isArray(obj[pName])){ - obj[pName].push(toSet); - } else { - obj[pName] = [obj[pName],toSet]; - } - } else { - obj[pName] = toSet; - } - } - return obj; - } - - return decode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/encode.js deleted file mode 100644 index c249287a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/encode.js +++ /dev/null @@ -1,25 +0,0 @@ -define(['../object/forOwn','../lang/isArray','../array/forEach'], function (forOwn,isArray,forEach) { - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = [], - arrValues, reg; - forOwn(obj, function (val, key) { - if (isArray(val)) { - arrValues = key + '='; - reg = new RegExp('&'+key+'+=$'); - forEach(val, function (aValue) { - arrValues += encodeURIComponent(aValue) + '&' + key + '='; - }); - query.push(arrValues.replace(reg, '')); - } else { - query.push(key + '=' + encodeURIComponent(val)); - } - }); - return (query.length) ? '?' + query.join('&') : ''; - } - - return encode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getParam.js deleted file mode 100644 index d9813724..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getParam.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../string/typecast', './getQuery'], function (typecast, getQuery) { - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - return getParam; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getQuery.js deleted file mode 100644 index aa3d99f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - return getQuery; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/parse.js deleted file mode 100644 index ac153e3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/parse.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./decode', './getQuery'], function (decode, getQuery) { - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - return parse; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/setParam.js deleted file mode 100644 index 97081aa7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - return setParam; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random.js deleted file mode 100644 index b2641ee3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/choice.js deleted file mode 100644 index 0d0c38df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/choice.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./randInt', '../lang/isArray'], function (randInt, isArray) { - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - return choice; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/guid.js deleted file mode 100644 index 82f3a2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/guid.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./randHex', './choice'], function (randHex, choice) { - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - return guid; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/rand.js deleted file mode 100644 index b8c231dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/rand.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./random', '../number/MIN_INT', '../number/MAX_INT'], function(random, MIN_INT, MAX_INT){ - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - return rand; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randBit.js deleted file mode 100644 index b3422d2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - return randomBit; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randHex.js deleted file mode 100644 index 6e9bf1c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./choice'], function (choice) { - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - return randHex; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randInt.js deleted file mode 100644 index 1750e9de..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randInt.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/MIN_INT', '../number/MAX_INT', './rand'], function(MIN_INT, MAX_INT, rand){ - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - return randInt; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randSign.js deleted file mode 100644 index 4141cdf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - return randomSign; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/random.js deleted file mode 100644 index 4270822e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function () { - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - return random; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string.js deleted file mode 100644 index a157e4cc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string.js +++ /dev/null @@ -1,46 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'insert' : require('./string/insert'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/WHITE_SPACES.js deleted file mode 100644 index e830d86d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function() { - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - return [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/camelCase.js deleted file mode 100644 index 02e6c04d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/camelCase.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './upperCase', './lowerCase'], function(toString, replaceAccents, removeNonWord, upperCase, lowerCase){ - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - return camelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/contains.js deleted file mode 100644 index 825b5a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/crop.js deleted file mode 100644 index 3c073f05..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/crop.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './truncate'], function (toString, truncate) { - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - return crop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/endsWith.js deleted file mode 100644 index 31a73f20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString) { - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - return endsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeHtml.js deleted file mode 100644 index de34b61b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - return escapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeRegExp.js deleted file mode 100644 index 32facac0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - return escapeRegExp; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeUnicode.js deleted file mode 100644 index bd5e8c4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - return escapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/hyphenate.js deleted file mode 100644 index 679c405c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/hyphenate.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - return hyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/insert.js deleted file mode 100644 index 79c45be7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/insert.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../math/clamp', '../lang/toString'], function (clamp, toString) { - - /** - * Inserts a string at a given index. - */ - function insert(string, index, partial){ - string = toString(string); - - if (index < 0) { - index = string.length + index; - } - - index = clamp(index, 0, string.length); - - return string.substr(0, index) + partial + string.substr(index); - } - - return insert; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/interpolate.js deleted file mode 100644 index ecb8ba80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - return interpolate; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lowerCase.js deleted file mode 100644 index b045d69c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - return lowerCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lpad.js deleted file mode 100644 index 134b4150..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/lpad.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './repeat'], function(toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return (str.length < minLen) ? - repeat(ch, minLen - str.length) + str : str; - } - - return lpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/ltrim.js deleted file mode 100644 index 477df953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/ltrim.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - return ltrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/makePath.js deleted file mode 100644 index 149275fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/makePath.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../array/join'], function(join){ - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - // need to disconsider duplicate '/' after protocol (eg: 'http://') - return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); - } - - return makePath; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/normalizeLineBreaks.js deleted file mode 100644 index 44e4194f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - return normalizeLineBreaks; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/pascalCase.js deleted file mode 100644 index ead9ead4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/pascalCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './camelCase', './upperCase'], function(toString, camelCase, upperCase){ - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - return pascalCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/properCase.js deleted file mode 100644 index 2987b507..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/properCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - return properCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonASCII.js deleted file mode 100644 index 4905869d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - return removeNonASCII; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonWord.js deleted file mode 100644 index 2b1a2040..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - return removeNonWord; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/repeat.js deleted file mode 100644 index 02f5659f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString){ - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - return repeat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replace.js deleted file mode 100644 index 8b762fdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replace.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', '../lang/toArray'], function (toString, toArray) { - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - return replace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replaceAccents.js deleted file mode 100644 index 3a63f55a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - return replaceAccents; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rpad.js deleted file mode 100644 index 2efd9c88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rpad.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString', './repeat'], function (toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - return rpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rtrim.js deleted file mode 100644 index a4cc282d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/rtrim.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - return rtrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/sentenceCase.js deleted file mode 100644 index cfe45af5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/sentenceCase.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - return sentenceCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/slugify.js deleted file mode 100644 index c6d68c7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/slugify.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './trim'], function(toString, replaceAccents, removeNonWord, trim){ - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - return slugify; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/startsWith.js deleted file mode 100644 index 88ae5453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function (toString) { - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - return startsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/stripHtmlTags.js deleted file mode 100644 index e8da956d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - return stripHtmlTags; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/trim.js deleted file mode 100644 index 55526041..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/trim.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES', './ltrim', './rtrim'], function(toString, WHITE_SPACES, ltrim, rtrim){ - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - return trim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/truncate.js deleted file mode 100644 index 34000d9f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/truncate.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/toString', './trim'], function(toString, trim){ - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - return truncate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/typecast.js deleted file mode 100644 index a7c83153..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - return typecast; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unCamelCase.js deleted file mode 100644 index eeef39b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../lang/toString'], function(toString){ - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - return unCamelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/underscore.js deleted file mode 100644 index 75dd4649..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/underscore.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - return underscore; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeHtml.js deleted file mode 100644 index 173c69c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - return unescapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeUnicode.js deleted file mode 100644 index d4a7ba1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - return unescapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unhyphenate.js deleted file mode 100644 index 6ac2fa4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - return unhyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/upperCase.js deleted file mode 100644 index 8b2073e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - return upperCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time.js deleted file mode 100644 index 67c90685..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/convert.js deleted file mode 100644 index 2de0cf2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ -define(function () { - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - return convert; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/now.js deleted file mode 100644 index a3a38bcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - return now; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/parseMs.js deleted file mode 100644 index 964929ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['../math/countSteps'], function(countSteps){ - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - return parseMs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/toTimeString.js deleted file mode 100644 index edf18218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/src/time/toTimeString.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../math/countSteps', '../number/pad'], function(countSteps, pad){ - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - return toTimeString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string.js deleted file mode 100644 index 6115811a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string.js +++ /dev/null @@ -1,46 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'insert' : require('./string/insert'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/WHITE_SPACES.js deleted file mode 100644 index 03e01254..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - module.exports = [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/camelCase.js deleted file mode 100644 index aadb69a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/camelCase.js +++ /dev/null @@ -1,20 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var upperCase = require('./upperCase'); -var lowerCase = require('./lowerCase'); - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - module.exports = camelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/contains.js deleted file mode 100644 index cb22cae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/crop.js deleted file mode 100644 index 53b93b49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/crop.js +++ /dev/null @@ -1,12 +0,0 @@ -var toString = require('../lang/toString'); -var truncate = require('./truncate'); - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - module.exports = crop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/endsWith.js deleted file mode 100644 index d504e9dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - module.exports = endsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeHtml.js deleted file mode 100644 index e67c4b21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - module.exports = escapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeRegExp.js deleted file mode 100644 index 70cb84ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - module.exports = escapeRegExp; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeUnicode.js deleted file mode 100644 index ec649adf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - module.exports = escapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/hyphenate.js deleted file mode 100644 index 95e32436..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/hyphenate.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - module.exports = hyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/insert.js deleted file mode 100644 index 8f042c6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/insert.js +++ /dev/null @@ -1,21 +0,0 @@ -var clamp = require('../math/clamp'); -var toString = require('../lang/toString'); - - /** - * Inserts a string at a given index. - */ - function insert(string, index, partial){ - string = toString(string); - - if (index < 0) { - index = string.length + index; - } - - index = clamp(index, 0, string.length); - - return string.substr(0, index) + partial + string.substr(index); - } - - module.exports = insert; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/interpolate.js deleted file mode 100644 index ac88fac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - module.exports = interpolate; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lowerCase.js deleted file mode 100644 index 30bb7ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - module.exports = lowerCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lpad.js deleted file mode 100644 index 63641d3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/lpad.js +++ /dev/null @@ -1,17 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return (str.length < minLen) ? - repeat(ch, minLen - str.length) + str : str; - } - - module.exports = lpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/ltrim.js deleted file mode 100644 index 23d7b33f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/ltrim.js +++ /dev/null @@ -1,34 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - module.exports = ltrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/makePath.js deleted file mode 100644 index 81a1a6e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/makePath.js +++ /dev/null @@ -1,14 +0,0 @@ -var join = require('../array/join'); - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - // need to disconsider duplicate '/' after protocol (eg: 'http://') - return result.replace(/([^:\/]|^)\/{2,}/g, '$1/'); - } - - module.exports = makePath; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/normalizeLineBreaks.js deleted file mode 100644 index 8a8dccfd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - module.exports = normalizeLineBreaks; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/pascalCase.js deleted file mode 100644 index fd190353..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/pascalCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var camelCase = require('./camelCase'); -var upperCase = require('./upperCase'); - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - module.exports = pascalCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/properCase.js deleted file mode 100644 index 61636be4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/properCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - module.exports = properCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonASCII.js deleted file mode 100644 index fb463816..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - module.exports = removeNonASCII; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonWord.js deleted file mode 100644 index bdd153b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - module.exports = removeNonWord; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/repeat.js deleted file mode 100644 index 0f9b4754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - module.exports = repeat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replace.js deleted file mode 100644 index 14433fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replace.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var toArray = require('../lang/toArray'); - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - module.exports = replace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replaceAccents.js deleted file mode 100644 index bb221265..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - module.exports = replaceAccents; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rpad.js deleted file mode 100644 index 99f6378d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rpad.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - module.exports = rpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rtrim.js deleted file mode 100644 index 66ba80e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/rtrim.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - module.exports = rtrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/sentenceCase.js deleted file mode 100644 index 354104c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/sentenceCase.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - module.exports = sentenceCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/slugify.js deleted file mode 100644 index 142f0d9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/slugify.js +++ /dev/null @@ -1,24 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var trim = require('./trim'); - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - module.exports = slugify; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/startsWith.js deleted file mode 100644 index bce2bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - module.exports = startsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/stripHtmlTags.js deleted file mode 100644 index 01d17b0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - module.exports = stripHtmlTags; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/trim.js deleted file mode 100644 index 9652b0c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/trim.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); -var ltrim = require('./ltrim'); -var rtrim = require('./rtrim'); - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - module.exports = trim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/truncate.js deleted file mode 100644 index a98d6c7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/truncate.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); -var trim = require('./trim'); - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - module.exports = truncate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/typecast.js deleted file mode 100644 index c1386a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ - - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - module.exports = typecast; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unCamelCase.js deleted file mode 100644 index 4968f378..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -var toString = require('../lang/toString'); - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - module.exports = unCamelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/underscore.js deleted file mode 100644 index ebd6e2b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/underscore.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - module.exports = underscore; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeHtml.js deleted file mode 100644 index 52cf3f45..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - module.exports = unescapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeUnicode.js deleted file mode 100644 index 0b7fb73b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - module.exports = unescapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unhyphenate.js deleted file mode 100644 index 311dfa17..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - module.exports = unhyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/upperCase.js deleted file mode 100644 index 6c92552c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - module.exports = upperCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time.js deleted file mode 100644 index 9f533296..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time.js +++ /dev/null @@ -1,12 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/convert.js deleted file mode 100644 index 852a0f03..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ - - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - module.exports = convert; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/now.js deleted file mode 100644 index effcfbe3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - module.exports = now; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/parseMs.js deleted file mode 100644 index 6d997976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - module.exports = parseMs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/toTimeString.js deleted file mode 100644 index 101d69fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/mout/time/toTimeString.js +++ /dev/null @@ -1,24 +0,0 @@ -var countSteps = require('../math/countSteps'); -var pad = require('../number/pad'); - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - module.exports = toTimeString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/bin/optipng.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/bin/optipng.js deleted file mode 100755 index 311d46f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/bin/optipng.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node -'use strict'; - -var binPath = require('../lib/optipng').path; -var spawn = require('child_process').spawn; - -spawn(binPath, process.argv.slice(2), { stdio: 'inherit' }) - .on('exit', process.exit); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/check.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/check.js deleted file mode 100644 index 0ac3db68..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/check.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -var bin = require('./optipng').bin; -var chalk = require('chalk'); - -bin.check(function (w) { - if (!w) { - console.log(chalk.red('✗ pre-build test failed, compiling from source...')); - - if (process.platform === 'win32') { - throw new Error('building is not supported on ' + process.platform); - } - - return bin.build(function (err) { - if (err) { - return console.log(chalk.red('✗ ' + err.message)); - } - - console.log(chalk.green('✓ optipng rebuilt successfully')); - }); - } - - console.log(chalk.green('✓ pre-build test passed successfully')); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/optipng.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/optipng.js deleted file mode 100644 index 45fa96df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/lib/optipng.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -var Bin = require('bin-wrapper'); -var path = require('path'); - -var options = { - name: 'optipng', - bin: 'optipng', - path: path.join(__dirname, '../vendor'), - src: 'http://downloads.sourceforge.net/project/optipng/OptiPNG/optipng-0.7.4/optipng-0.7.4.tar.gz', - buildScript: './configure --with-system-zlib --bindir="' + path.join(__dirname, '../vendor') + '" && ' + - 'make install', - platform: { - darwin: { - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/osx/optipng' - }, - freebsd: { - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/freebsd/optipng' - }, - linux: { - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/linux/x86/optipng', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/linux/x64/optipng' - } - } - }, - sunos: { - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/sunos/x86/optipng', - arch: { - x64: { - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/sunos/x64/optipng', - } - } - }, - win32: { - bin: 'optipng.exe', - url: 'https://raw.github.com/yeoman/node-optipng-bin/master/vendor/win/optipng.exe' - } - } -}; -var bin = new Bin(options); - -exports.bin = bin; -exports.options = options; -exports.path = bin.path; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/README.md deleted file mode 100644 index 81dbc571..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# bin-wrapper [![Build Status](https://secure.travis-ci.org/kevva/bin-wrapper.png?branch=master)](http://travis-ci.org/kevva/bin-wrapper) - -Binary wrapper for Node.js that makes your programs seamlessly available as local dependencies - -## Getting started - -Install with [npm](https://npmjs.org/package/bin-wrapper): `npm install bin-wrapper` - -## Examples - -All `platform` and `arch` specific options takes precedence over the base -options. See [test.js](test.js) for a full fleshed example. - -```js -var Bin = require('bin-wrapper'); - -var opts = { - name: 'Gifsicle', - bin: 'gifsicle', - path: 'vendor', - url: 'http://url/to/gifsicle', - src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz', - buildScript: './configure --bindir="vendor" && make install', - platform: { - win32: { - bin: 'gifsicle.exe', - url: [ - 'http://url/to/gifsicle.exe' - 'http://url/to/gifsicle.dll' - ] - } - } -} -var bin = new Bin(opts); - -bin.check('--version', function (works) { - if (!works) { - console.log('Pre-build test failed, compiling from source'); - return bin.build(); - } - - console.log('Binary passed the test'); -}); -``` - -Get the path to your binary with `bin.path`. - -```js -console.log(bin.path); -// => path/to/vendor/gifsicle -``` - -## API - -### .check(cmd, cb) - -Check if a binary is present and working. If it isn't, download and test it by -running the binary with `cmd` and see if it exits correctly. - -### .build(cb) - -Download the source archive defined in the `src` property and build it using the -build script defined in the `buildScript` property. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/bin-wrapper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/bin-wrapper.js deleted file mode 100644 index d84d5874..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/bin-wrapper.js +++ /dev/null @@ -1,223 +0,0 @@ -'use strict'; - -var download = require('download'); -var exec = require('child_process').exec; -var fs = require('fs'); -var hasOwn = require('mout/object/hasOwn'); -var isbin = require('isbin'); -var isFunction = require('mout/lang/isFunction'); -var mixIn = require('mout/object/mixIn'); -var os = require('os'); -var path = require('path'); -var ProgressBar = require('progress'); -var spawn = require('child_process').spawn; -var which = require('which'); - -/** - * Initialize BinWrapper with options - * - * @param {Object} opts - * @api public - */ - -function BinWrapper(opts) { - opts = opts || {}; - this.opts = this._parse(opts); - this.name = this.opts.name; - this.bin = this.opts.bin; - this.dest = this.opts.path; - this.path = this._path() || path.join(this.dest, this.bin); - this.url = this.opts.url; - this.src = this.opts.src; - this.buildScript = this.opts.buildScript; - this.proxy = process.env.http_proxy || - process.env.HTTP_PROXY || - process.env.https_proxy || - process.env.HTTPS_PROXY || - null; -} - -/** - * Check if a binary is present and working - * - * @param {String|Array} cmd - * @param {Function} cb - * @api public - */ - -BinWrapper.prototype.check = function (cmd, cb) { - var self = this; - - if (!cb && isFunction(cmd)) { - cb = cmd; - cmd = ['--help']; - } - - cmd = cmd; - cmd = Array.isArray(cmd) ? cmd : [cmd]; - - if (this._path()) { - return self._test(cmd, cb); - } - - this._download(this.url, this.dest, { mode: '0755', proxy: this.proxy }) - .once('close', function () { - return self._test(cmd, cb); - }); -}; - -/** - * Download source and build a binary - * - * @param {Function} cb - * @api public - */ - -BinWrapper.prototype.build = function (cb) { - var self = this; - var tmpDir = os.tmpdir ? os.tmpdir() : os.tmpDir(); - var tmp = path.join(tmpDir, this.name); - var get = this._download(this.src, tmp, { extract: true, strip: '1', proxy: this.proxy }); - - if (!cb || !isFunction(cb)) { - cb = function () {}; - } - - if (!isbin('make')) { - throw new Error('failed to find make'); - } - - get.once('close', function () { - exec(self.buildScript, { cwd: tmp }, function (err) { - if (err) { - return cb(err); - } - - return cb(); - }); - }); -}; - -/** - * Download a string or an array of files - * - * @param {String|Array} src - * @param {String} dest - * @param {Object} opts - * @api private - */ - -BinWrapper.prototype._download = function (src, dest, opts) { - var get = download(src, dest, opts); - - get.on('response', function (res) { - var len = parseInt(res.headers['content-length'], 10); - var bar = new ProgressBar(' ' + path.basename(src) + ': downloading [:bar] :percent :etas', { - complete: '=', - incomplete: ' ', - width: 20, - total: len - }); - - res.on('data', function (data) { - bar.tick(data.length); - }); - - res.on('end', function () { - console.log('\n'); - }); - }); - - return get; -}; - -/** - * If a binary exists, get its path - * - * @api private - */ - -BinWrapper.prototype._path = function () { - var self = this; - - if (fs.existsSync(path.join(this.dest, this.bin))) { - return path.join(self.dest, self.bin); - } - - if (isbin(this.bin)) { - if (which.sync(self.bin).indexOf('node_modules/.bin') === -1) { - return which.sync(self.bin); - } - } - - return false; -}; - -/** - * Test if a binary is working by checking its exit code - * - * @param {Array} cmd - * @param {Function} cb - * @api private - */ - -BinWrapper.prototype._test = function (cmd, cb) { - var working; - var bin = spawn(this.path, cmd); - - bin.on('error', function () { - working = false; - return cb(working); - }); - - bin.on('exit', function (code) { - working = code === 0; - return cb(working); - }); -}; - -/** - * Parse options - * - * @param {Object} opts - * @api private - */ - -BinWrapper.prototype._parse = function (opts) { - opts.platform = opts.platform || {}; - opts.arch = opts.arch || {}; - - var platform = process.platform; - var arch = process.arch === 'x64' ? 'x64' : process.arch === 'arm' ? 'arm' : 'x86'; - var required = [ - 'bin', - 'name', - 'path', - 'url' - ]; - - if (hasOwn(opts.platform, [platform])) { - opts = mixIn(opts, opts.platform[platform]); - } - - if (hasOwn(opts.arch, [arch])) { - opts = mixIn(opts, opts.arch[arch]); - } - - required.forEach(function (val) { - if (!hasOwn(opts, val)) { - throw new Error(val + ' option is required'); - } - }); - - delete opts.platform; - delete opts.arch; - - return opts; -}; - -/** - * Module exports - */ - -module.exports = BinWrapper; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/.bin/which b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/.bin/which deleted file mode 120000 index f62471c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/.bin/which +++ /dev/null @@ -1 +0,0 @@ -../which/bin/which \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/README.md deleted file mode 100644 index f57b2f41..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# download [![Build Status](https://secure.travis-ci.org/kevva/download.png?branch=master)](http://travis-ci.org/kevva/download) - -Download and extract files effortlessly in Node.js. - -## Getting started - -Install with [npm](https://npmjs.org/package/download): `npm install download` - -## Examples - -If you're fetching an archive you can set `extract: true` in options and -it'll extract it for you. - -```js -var download = require('download'); - -// download and extract `foo.tar.gz` into `bar/` -download('foo.tar.gz', 'bar', { extract: true }); - -// download and save `foo.exe` into `bar/foo.exe` with mode `0755` -download('foo.exe', 'bar', { mode: '0755' }); - -// download and save `foo.zip` into `bar/foobar.zip` -download({ url: 'foo.zip', name: 'foobar.zip' }, 'bar'); - -// download and save an array of files in `bar/` -var files = ['foo.jpg', 'bar.jpg', 'cat.jpg']; -download(files, 'bar'); - -// download, save and rename an array of files in `bar/` -var files = [{ - url: 'foo.jpg', - name: 'foobar.jpg' -}, { - url: 'cat.jpg', - name: 'dog.jpg' -}]; -download(files, 'bar'); -``` - -## API - -### download(url, dest, opts) - -Download a file or an array of files to a given destination. Returns an EventEmitter -that emits the following possible events: - -* `response` — Relayed when the underlying `http.ClientRequest` emits the same -event. Listeners called with a `http.IncomingMessage` instance. -* `data` — Relayed when the underlying `http.IncomingMessage` emits the same -event. Listeners called with a `Buffer` instance. -* `error` — Relayed when the underlying `http.ClientRequest` emits the same event -or when the response status code is not in the 200s. Listeners called with an -`Error` instance (in the first case) or the response status code. -* `close` — Relayed when the underlying `stream.Duplex` emits the same event. - -## Options - -You can define options accepted by the [request](https://github.com/mikeal/request/) module besides from the options below. - -### extract - -Type: `Boolean` -Default: `false` - -If set to `true`, try extracting the file using [decompress](https://github.com/kevva/decompress/). - -### mode - -Type: `String` -Default: `undefined` - -Set mode on the downloaded files. - -### strip - -Type: `Number` -Default: `0` - -Equivalent to `--strip-components` for tar. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/download.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/download.js deleted file mode 100644 index 4b9c05e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/download.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict'; - -var decompress = require('decompress'); -var eachAsync = require('each-async'); -var fs = require('fs'); -var mkdir = require('mkdirp'); -var path = require('path'); -var request = require('request'); -var through = require('through2'); - -/** - * Download a file to a given destination - * - * Options: - * - * - `extract` Try extracting the file - * - `mode` Set mode on the downloaded files - * - `strip` Equivalent to --strip-components for tar - * - * @param {String|Array|Object} url - * @param {String} dest - * @param {Object} opts - * @api public - */ - -module.exports = function (url, dest, opts) { - url = Array.isArray(url) ? url : [url]; - opts = opts || {}; - - var stream = through(); - var strip = opts.strip || '0'; - - eachAsync(url, function (url, index, done) { - opts.url = url; - var target = path.join(dest, path.basename(url)); - - if (url.url && url.name) { - target = path.join(dest, url.name); - opts.url = url.url; - } - - var req = request.get(opts) - .on('response', function (res) { - stream.emit('response', res); - }) - .on('data', function (data) { - stream.emit('data', data); - }) - .on('error', function (err) { - stream.emit('error', err); - }); - - req.on('response', function (res) { - var mime = res.headers['content-type']; - var status = res.statusCode; - var end; - - if (status < 200 || status >= 300) { - stream.emit('error', status); - return; - } - - if (opts.extract && decompress.canExtract(url, mime)) { - var ext; - - if (decompress.canExtract(url)) { - ext = url; - } else { - ext = mime; - } - - end = decompress.extract({ - ext: ext, - path: dest, - strip: strip - }); - } else { - if (!fs.existsSync(dest)) { - mkdir.sync(dest); - } - - end = fs.createWriteStream(target); - } - - req.pipe(end); - - end.on('close', function () { - if (!opts.extract && opts.mode) { - fs.chmodSync(target, opts.mode); - } - - done(); - }); - }); - }, function () { - stream.emit('close'); - }); - - return stream; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md deleted file mode 100644 index 4226d3f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# decompress [![Build Status](https://secure.travis-ci.org/kevva/decompress.png?branch=master)](http://travis-ci.org/kevva/decompress) - -Easily extract `.zip`, `.tar` and `.tar.gz` archives. Based on the extract -utility in [Bower](https://github.com/bower/bower). - -## Getting started - -Install with [npm](https://npmjs.org/package/decompress): `npm install decompress` - -## Examples - -You'll only need to pass a type into `ext` and it'll figure the rest out for -you. - -```js -var decompress = require('decompress'); -var fs = require('fs'); - -var src = fs.createReadStream('foo.tar.gz'); -var dest = decompress.extract({ ext: '.tar.gz' }); - -src.pipe(dest); -``` - -## API - -### .extract(opts) - -Extract an archive using the `ext` option to determine which extractor to use. -If no `path` is specified it'll extract it to your current location. - -### .canExtract(src, mime) - -Determine if a file can be extracted or not by checking the file extension -and/or the MIME type. - -```js -decompress.canExtract('foo.zip'); -// => true - -decompress.canExtract('application/zip'); -// => true -``` - -## Options - -### `ext` - -Type: `String` -Default: `''` - -String that can be a file name, URL, MIME type etc. - -### `path` - -Type: `String` -Default: `process.cwd()` - -Path to extract the archive to. If no `path` is defined it'll extract it to your -current location. - -### strip - -Type: `Number` -Default: `0` - -Equivalent to `--strip-components` for tar. - -## License - -[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js deleted file mode 100644 index 3b477c1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/decompress.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -var AdmZip = require('adm-zip'); -var endsWith = require('mout/string/endsWith'); -var find = require('mout/array/find'); -var fs = require('fs'); -var mkdir = require('mkdirp'); -var path = require('path'); -var pipeline = require('stream-combiner'); -var rm = require('rimraf'); -var tar = require('tar'); -var tempfile = require('tempfile'); -var zlib = require('zlib'); - -/** - * Initialize Decompress with options - * - * Options: - * - * - `ext` String with file name, MIME type, etc - * - `path` Path to extract to - * - * @param {Object} opts - * @api private - */ - -function Decompress(opts) { - opts = opts || {}; - opts.strip = opts.strip || 0; - this.opts = opts; - this.path = opts.path || process.cwd(); - this.ext = opts.ext || ''; - this.strip = opts.strip >= 0 ? opts.strip : 0; - this.extractors = { - '.zip': this._extractZip, - '.tar': this._extractTar, - '.tar.gz': this._extractTarGz, - '.tgz': this._extractTarGz, - 'application/zip': this._extractZip, - 'application/x-tar': this._extractTar, - 'application/x-tgz': this._extractTarGz - }; - this.extractorTypes = Object.keys(this.extractors); - this.extractor = this._getExtractor(this.ext); -} - -/** - * Extract an archive - * - * @api public - */ - -Decompress.prototype.extract = function () { - var self = this; - var stream = this.extractor(); - - if (!fs.existsSync(this.path)) { - mkdir.sync(self.path); - } - - return stream; -}; - -/** - * Check if a file can be extracted - * - * @param {String} src - * @param {String} mime - * @api public - */ - -Decompress.prototype.canExtract = function (src, mime) { - if (this._getExtractor(src)) { - return true; - } - - if (mime && this._getExtractor(mime)) { - return true; - } - - return false; -}; - -/** - * Get the extractor for a desired file - * - * @param {String} src - * @api private - */ - -Decompress.prototype._getExtractor = function (src) { - src = src.toLowerCase(); - - var ext = find(this.extractorTypes, function (ext) { - return endsWith(src, ext); - }); - - return ext ? this.extractors[ext] : null; -}; - -/** - * Extract a zip file - * - * @api private - */ - -Decompress.prototype._extractZip = function () { - var self = this; - var tmp = tempfile('.zip'); - - var stream = fs.createWriteStream(tmp).on('close', function () { - var zip = new AdmZip(tmp); - var zipEntries = zip.getEntries(); - - zipEntries.forEach(function (entry) { - if (!entry.isDirectory) { - var ef = path.basename(entry.entryName.toString()); - var ed = path.dirname(entry.entryName.toString().split('/').slice(self.strip).join('/')); - var d = path.join(self.path, ed, ef); - - mkdir.sync(path.dirname(d)); - fs.writeFileSync(d, entry.getData()); - } - }); - }); - - return stream.on('close', function () { - rm.sync(tmp); - }); -}; - -/** - * Extract a tar file - * - * @api private - */ - -Decompress.prototype._extractTar = function () { - var stream = tar.Extract(this.opts); - return stream; -}; - -/** - * Extract a tar.gz file - * - * @api private - */ - -Decompress.prototype._extractTarGz = function () { - var stream = zlib.Unzip(); - var dest = tar.Extract(this.opts); - - return pipeline(stream, dest); -}; - -/** - * Module exports - */ - -module.exports.extract = function (opts) { - var decompress = new Decompress(opts); - return decompress.extract(); -}; - -module.exports.canExtract = function (src, mime) { - var decompress = new Decompress(); - return decompress.canExtract(src, mime); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf deleted file mode 120000 index 4cd49a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/.bin/rimraf +++ /dev/null @@ -1 +0,0 @@ -../rimraf/bin.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml deleted file mode 100644 index 0d5175ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ -<component name="DependencyValidationManager"> - <state> - <option name="SKIP_IMPORT_STATEMENTS" value="false" /> - </state> -</component> \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt deleted file mode 100644 index 14c3ee5c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/MIT-LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2012 Another-D-Mention Software and other contributors, -http://www.another-d-mention.ro/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md deleted file mode 100644 index 030fab8a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# ADM-ZIP for NodeJS - -ADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). - -# Installation - -With [npm](http://npmjs.org) do: - - $ npm install adm-zip - -## What is it good for? -The library allows you to: - -* decompress zip files directly to disk or in memory buffers -* compress files and store them to disk in .zip format or in compressed buffers -* update content of/add new/delete files from an existing .zip - -# Dependencies -There are no other nodeJS libraries that ADM-ZIP is dependent of - -# Examples - -## Basic usage -```javascript - - var AdmZip = require('adm-zip'); - - // reading archives - var zip = new AdmZip("./my_file.zip"); - var zipEntries = zip.getEntries(); // an array of ZipEntry records - - zipEntries.forEach(function(zipEntry) { - console.log(zipEntry.toString()); // outputs zip entries information - if (zipEntry.entryName == "my_file.txt") { - console.log(zipEntry.data.toString('utf8')); - } - }); - // outputs the content of some_folder/my_file.txt - console.log(zip.readAsText("some_folder/my_file.txt")); - // extracts the specified file to the specified location - zip.extractEntryTo(/*entry name*/"some_folder/my_file.txt", /*target path*/"/home/me/tempfolder", /*maintainEntryPath*/false, /*overwrite*/true); - // extracts everything - zip.extractAllTo(/*target path*/"/home/me/zipcontent/", /*overwrite*/true); - - - // creating archives - var zip = new AdmZip(); - - // add file directly - zip.addFile("test.txt", new Buffer("inner content of the file"), "entry comment goes here"); - // add local file - zip.addLocalFile("/home/me/some_picture.png"); - // get everything as a buffer - var willSendthis = zip.toBuffer(); - // or write everything to disk - zip.writeZip(/*target file name*/"/home/me/files.zip"); - - - // ... more examples in the wiki -``` - -For more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki). - -[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js deleted file mode 100644 index 46595fc5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/adm-zip.js +++ /dev/null @@ -1,404 +0,0 @@ -var fs = require("fs"), - pth = require("path"); - -fs.existsSync = fs.existsSync || pth.existsSync; - -var ZipEntry = require("./zipEntry"), - ZipFile = require("./zipFile"), - Utils = require("./util"); - -module.exports = function(/*String*/input) { - var _zip = undefined, - _filename = ""; - - if (input && typeof input === "string") { // load zip file - if (fs.existsSync(input)) { - _filename = input; - _zip = new ZipFile(input, Utils.Constants.FILE); - } else { - throw Utils.Errors.INVALID_FILENAME; - } - } else if(input && Buffer.isBuffer(input)) { // load buffer - _zip = new ZipFile(input, Utils.Constants.BUFFER); - } else { // create new zip file - _zip = new ZipFile(null, Utils.Constants.NONE); - } - - function getEntry(/*Object*/entry) { - if (entry && _zip) { - var item; - // If entry was given as a file name - if (typeof entry === "string") - item = _zip.getEntry(entry); - // if entry was given as a ZipEntry object - if (typeof entry === "object" && entry.entryName != undefined && entry.header != undefined) - item = _zip.getEntry(entry.entryName); - - if (item) { - return item; - } - } - return null; - } - - return { - /** - * Extracts the given entry from the archive and returns the content as a Buffer object - * @param entry ZipEntry object or String with the full path of the entry - * - * @return Buffer or Null in case of error - */ - readFile : function(/*Object*/entry) { - var item = getEntry(entry); - return item && item.getData() || null; - }, - - /** - * Asynchronous readFile - * @param entry ZipEntry object or String with the full path of the entry - * @param callback - * - * @return Buffer or Null in case of error - */ - readFileAsync : function(/*Object*/entry, /*Function*/callback) { - var item = getEntry(entry); - if (item) { - item.getDataAsync(callback); - } else { - callback(null,"getEntry failed for:" + entry) - } - }, - - /** - * Extracts the given entry from the archive and returns the content as plain text in the given encoding - * @param entry ZipEntry object or String with the full path of the entry - * @param encoding Optional. If no encoding is specified utf8 is used - * - * @return String - */ - readAsText : function(/*Object*/entry, /*String - Optional*/encoding) { - var item = getEntry(entry); - if (item) { - var data = item.getData(); - if (data && data.length) { - return data.toString(encoding || "utf8"); - } - } - return ""; - }, - - /** - * Asynchronous readAsText - * @param entry ZipEntry object or String with the full path of the entry - * @param callback - * @param encoding Optional. If no encoding is specified utf8 is used - * - * @return String - */ - readAsTextAsync : function(/*Object*/entry, /*Function*/callback, /*String - Optional*/encoding) { - var item = getEntry(entry); - if (item) { - item.getDataAsync(function(data) { - if (data && data.length) { - callback(data.toString(encoding || "utf8")); - } else { - callback(""); - } - }) - } else { - callback(""); - } - }, - - /** - * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory - * - * @param entry - */ - deleteFile : function(/*Object*/entry) { // @TODO: test deleteFile - var item = getEntry(entry); - if (item) { - _zip.deleteEntry(item.entryName); - } - }, - - /** - * Adds a comment to the zip. The zip must be rewritten after adding the comment. - * - * @param comment - */ - addZipComment : function(/*String*/comment) { // @TODO: test addZipComment - _zip.comment = comment; - }, - - /** - * Returns the zip comment - * - * @return String - */ - getZipComment : function() { - return _zip.comment || ''; - }, - - /** - * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment - * The comment cannot exceed 65535 characters in length - * - * @param entry - * @param comment - */ - addZipEntryComment : function(/*Object*/entry,/*String*/comment) { - var item = getEntry(entry); - if (item) { - item.comment = comment; - } - }, - - /** - * Returns the comment of the specified entry - * - * @param entry - * @return String - */ - getZipEntryComment : function(/*Object*/entry) { - var item = getEntry(entry); - if (item) { - return item.comment || ''; - } - return '' - }, - - /** - * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content - * - * @param entry - * @param content - */ - updateFile : function(/*Object*/entry, /*Buffer*/content) { - var item = getEntry(entry); - if (item) { - item.setData(content); - } - }, - - /** - * Adds a file from the disk to the archive - * - * @param localPath - */ - addLocalFile : function(/*String*/localPath, /*String*/zipPath) { - if (fs.existsSync(localPath)) { - if(zipPath){ - zipPath=zipPath.split("\\").join("/"); - if(zipPath.charAt(zipPath.length - 1) != "/"){ - zipPath += "/"; - } - }else{ - zipPath=""; - } - var p = localPath.split("\\").join("/").split("/").pop(); - - this.addFile(zipPath+p, fs.readFileSync(localPath), "", 0) - } else { - throw Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath); - } - }, - - /** - * Adds a local directory and all its nested files and directories to the archive - * - * @param localPath - */ - addLocalFolder : function(/*String*/localPath, /*String*/zipPath) { - if(zipPath){ - zipPath=zipPath.split("\\").join("/"); - if(zipPath.charAt(zipPath.length - 1) != "/"){ - zipPath += "/"; - } - }else{ - zipPath=""; - } - localPath = localPath.split("\\").join("/"); //windows fix - if (localPath.charAt(localPath.length - 1) != "/") - localPath += "/"; - - if (fs.existsSync(localPath)) { - - var items = Utils.findFiles(localPath), - self = this; - - if (items.length) { - items.forEach(function(path) { - var p = path.split("\\").join("/").replace(localPath, ""); //windows fix - if (p.charAt(p.length - 1) !== "/") { - self.addFile(zipPath+p, fs.readFileSync(path), "", 0) - } else { - self.addFile(zipPath+p, new Buffer(0), "", 0) - } - }); - } - } else { - throw Utils.Errors.FILE_NOT_FOUND.replace("%s", localPath); - } - }, - - /** - * Allows you to create a entry (file or directory) in the zip file. - * If you want to create a directory the entryName must end in / and a null buffer should be provided. - * Comment and attributes are optional - * - * @param entryName - * @param content - * @param comment - * @param attr - */ - addFile : function(/*String*/entryName, /*Buffer*/content, /*String*/comment, /*Number*/attr) { - var entry = new ZipEntry(); - entry.entryName = entryName; - entry.comment = comment || ""; - entry.attr = attr || 438; //0666; - if (entry.isDirectory && content.length) { - // throw Utils.Errors.DIRECTORY_CONTENT_ERROR; - } - entry.setData(content); - _zip.setEntry(entry); - }, - - /** - * Returns an array of ZipEntry objects representing the files and folders inside the archive - * - * @return Array - */ - getEntries : function() { - if (_zip) { - return _zip.entries; - } else { - return []; - } - }, - - /** - * Returns a ZipEntry object representing the file or folder specified by ``name``. - * - * @param name - * @return ZipEntry - */ - getEntry : function(/*String*/name) { - return getEntry(name); - }, - - /** - * Extracts the given entry to the given targetPath - * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted - * - * @param entry ZipEntry object or String with the full path of the entry - * @param targetPath Target folder where to write the file - * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder - * will be created in targetPath as well. Default is TRUE - * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true. - * Default is FALSE - * - * @return Boolean - */ - extractEntryTo : function(/*Object*/entry, /*String*/targetPath, /*Boolean*/maintainEntryPath, /*Boolean*/overwrite) { - overwrite = overwrite || false; - maintainEntryPath = typeof maintainEntryPath == "undefined" ? true : maintainEntryPath; - - var item = getEntry(entry); - if (!item) { - throw Utils.Errors.NO_ENTRY; - } - - var target = pth.resolve(targetPath, maintainEntryPath ? item.entryName : pth.basename(item.entryName)); - - if (item.isDirectory) { - target = pth.resolve(target, ".."); - var children = _zip.getEntryChildren(item); - children.forEach(function(child) { - if (child.isDirectory) return; - var content = child.getData(); - if (!content) { - throw Utils.Errors.CANT_EXTRACT_FILE; - } - Utils.writeFileTo(pth.resolve(targetPath, maintainEntryPath ? child.entryName : child.entryName.substr(item.entryName.length)), content, overwrite); - }); - return true; - } - - var content = item.getData(); - if (!content) throw Utils.Errors.CANT_EXTRACT_FILE; - - if (fs.existsSync(targetPath) && !overwrite) { - throw Utils.Errors.CANT_OVERRIDE; - } - Utils.writeFileTo(target, content, overwrite); - - return true; - }, - - /** - * Extracts the entire archive to the given location - * - * @param targetPath Target location - * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true. - * Default is FALSE - */ - extractAllTo : function(/*String*/targetPath, /*Boolean*/overwrite) { - overwrite = overwrite || false; - if (!_zip) { - throw Utils.Errors.NO_ZIP; - } - - _zip.entries.forEach(function(entry) { - if (entry.isDirectory) { - Utils.makeDir(pth.resolve(targetPath, entry.entryName.toString())); - return; - } - var content = entry.getData(); - if (!content) { - throw Utils.Errors.CANT_EXTRACT_FILE + "2"; - } - Utils.writeFileTo(pth.resolve(targetPath, entry.entryName.toString()), content, overwrite); - }) - }, - - /** - * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip - * - * @param targetFileName - * @param callback - */ - writeZip : function(/*String*/targetFileName, /*Function*/callback) { - if (arguments.length == 1) { - if (typeof targetFileName == "function") { - callback = targetFileName; - targetFileName = ""; - } - } - - if (!targetFileName && _filename) { - targetFileName = _filename; - } - if (!targetFileName) return; - - var zipData = _zip.compressToBuffer(); - if (zipData) { - Utils.writeFileTo(targetFileName, zipData, true); - } - }, - - /** - * Returns the content of the entire zip file as a Buffer object - * - * @return Buffer - */ - toBuffer : function(/*Function*/onSuccess,/*Function*/onFail,/*Function*/onItemStart,/*Function*/onItemEnd) { - this.valueOf = 2; - if (typeof onSuccess == "function") { - _zip.toAsyncBuffer(onSuccess,onFail,onItemStart,onItemEnd); - return null; - } - return _zip.compressToBuffer() - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js deleted file mode 100644 index a29c70f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/entryHeader.js +++ /dev/null @@ -1,261 +0,0 @@ -var Utils = require("../util"), - Constants = Utils.Constants; - -/* The central directory file header */ -module.exports = function () { - var _verMade = 0x0A, - _version = 0x0A, - _flags = 0, - _method = 0, - _time = 0, - _crc = 0, - _compressedSize = 0, - _size = 0, - _fnameLen = 0, - _extraLen = 0, - - _comLen = 0, - _diskStart = 0, - _inattr = 0, - _attr = 0, - _offset = 0; - - var _dataHeader = {}; - - function setTime(val) { - var val = new Date(val); - _time = (val.getFullYear() - 1980 & 0x7f) << 25 // b09-16 years from 1980 - | (val.getMonth() + 1) << 21 // b05-08 month - | val.getDay() << 16 // b00-04 hour - - // 2 bytes time - | val.getHours() << 11 // b11-15 hour - | val.getMinutes() << 5 // b05-10 minute - | val.getSeconds() >> 1; // b00-04 seconds divided by 2 - } - - setTime(+new Date()); - - return { - get made () { return _verMade; }, - set made (val) { _verMade = val; }, - - get version () { return _version; }, - set version (val) { _version = val }, - - get flags () { return _flags }, - set flags (val) { _flags = val; }, - - get method () { return _method; }, - set method (val) { _method = val; }, - - get time () { return new Date( - ((_time >> 25) & 0x7f) + 1980, - ((_time >> 21) & 0x0f) - 1, - (_time >> 16) & 0x1f, - (_time >> 11) & 0x1f, - (_time >> 5) & 0x3f, - (_time & 0x1f) << 1 - ); - }, - set time (val) { - setTime(val); - }, - - get crc () { return _crc; }, - set crc (val) { _crc = val; }, - - get compressedSize () { return _compressedSize; }, - set compressedSize (val) { _compressedSize = val; }, - - get size () { return _size; }, - set size (val) { _size = val; }, - - get fileNameLength () { return _fnameLen; }, - set fileNameLength (val) { _fnameLen = val; }, - - get extraLength () { return _extraLen }, - set extraLength (val) { _extraLen = val; }, - - get commentLength () { return _comLen }, - set commentLength (val) { _comLen = val }, - - get diskNumStart () { return _diskStart }, - set diskNumStart (val) { _diskStart = val }, - - get inAttr () { return _inattr }, - set inAttr (val) { _inattr = val }, - - get attr () { return _attr }, - set attr (val) { _attr = val }, - - get offset () { return _offset }, - set offset (val) { _offset = val }, - - get encripted () { return (_flags & 1) == 1 }, - - get entryHeaderSize () { - return Constants.CENHDR + _fnameLen + _extraLen + _comLen; - }, - - get realDataOffset () { - return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen; - }, - - get dataHeader () { - return _dataHeader; - }, - - loadDataHeaderFromBinary : function(/*Buffer*/input) { - var data = input.slice(_offset, _offset + Constants.LOCHDR); - // 30 bytes and should start with "PK\003\004" - if (data.readUInt32LE(0) != Constants.LOCSIG) { - throw Utils.Errors.INVALID_LOC; - } - _dataHeader = { - // version needed to extract - version : data.readUInt16LE(Constants.LOCVER), - // general purpose bit flag - flags : data.readUInt16LE(Constants.LOCFLG), - // compression method - method : data.readUInt16LE(Constants.LOCHOW), - // modification time (2 bytes time, 2 bytes date) - time : data.readUInt32LE(Constants.LOCTIM), - // uncompressed file crc-32 value - crc : data.readUInt32LE(Constants.LOCCRC), - // compressed size - compressedSize : data.readUInt32LE(Constants.LOCSIZ), - // uncompressed size - size : data.readUInt32LE(Constants.LOCLEN), - // filename length - fnameLen : data.readUInt16LE(Constants.LOCNAM), - // extra field length - extraLen : data.readUInt16LE(Constants.LOCEXT) - } - }, - - loadFromBinary : function(/*Buffer*/data) { - // data should be 46 bytes and start with "PK 01 02" - if (data.length != Constants.CENHDR || data.readUInt32LE(0) != Constants.CENSIG) { - throw Utils.Errors.INVALID_CEN; - } - // version made by - _verMade = data.readUInt16LE(Constants.CENVEM); - // version needed to extract - _version = data.readUInt16LE(Constants.CENVER); - // encrypt, decrypt flags - _flags = data.readUInt16LE(Constants.CENFLG); - // compression method - _method = data.readUInt16LE(Constants.CENHOW); - // modification time (2 bytes time, 2 bytes date) - _time = data.readUInt32LE(Constants.CENTIM); - // uncompressed file crc-32 value - _crc = data.readUInt32LE(Constants.CENCRC); - // compressed size - _compressedSize = data.readUInt32LE(Constants.CENSIZ); - // uncompressed size - _size = data.readUInt32LE(Constants.CENLEN); - // filename length - _fnameLen = data.readUInt16LE(Constants.CENNAM); - // extra field length - _extraLen = data.readUInt16LE(Constants.CENEXT); - // file comment length - _comLen = data.readUInt16LE(Constants.CENCOM); - // volume number start - _diskStart = data.readUInt16LE(Constants.CENDSK); - // internal file attributes - _inattr = data.readUInt16LE(Constants.CENATT); - // external file attributes - _attr = data.readUInt32LE(Constants.CENATX); - // LOC header offset - _offset = data.readUInt32LE(Constants.CENOFF); - }, - - dataHeaderToBinary : function() { - // LOC header size (30 bytes) - var data = new Buffer(Constants.LOCHDR); - // "PK\003\004" - data.writeUInt32LE(Constants.LOCSIG, 0); - // version needed to extract - data.writeUInt16LE(_version, Constants.LOCVER); - // general purpose bit flag - data.writeUInt16LE(_flags, Constants.LOCFLG); - // compression method - data.writeUInt16LE(_method, Constants.LOCHOW); - // modification time (2 bytes time, 2 bytes date) - data.writeUInt32LE(_time, Constants.LOCTIM); - // uncompressed file crc-32 value - data.writeUInt32LE(_crc, Constants.LOCCRC); - // compressed size - data.writeUInt32LE(_compressedSize, Constants.LOCSIZ); - // uncompressed size - data.writeUInt32LE(_size, Constants.LOCLEN); - // filename length - data.writeUInt16LE(_fnameLen, Constants.LOCNAM); - // extra field length - data.writeUInt16LE(_extraLen, Constants.LOCEXT); - return data; - }, - - entryHeaderToBinary : function() { - // CEN header size (46 bytes) - var data = new Buffer(Constants.CENHDR + _fnameLen + _extraLen + _comLen); - // "PK\001\002" - data.writeUInt32LE(Constants.CENSIG, 0); - // version made by - data.writeUInt16LE(_verMade, Constants.CENVEM); - // version needed to extract - data.writeUInt16LE(_version, Constants.CENVER); - // encrypt, decrypt flags - data.writeUInt16LE(_flags, Constants.CENFLG); - // compression method - data.writeUInt16LE(_method, Constants.CENHOW); - // modification time (2 bytes time, 2 bytes date) - data.writeUInt32LE(_time, Constants.CENTIM); - // uncompressed file crc-32 value - data.writeInt32LE(_crc, Constants.CENCRC, true); - // compressed size - data.writeUInt32LE(_compressedSize, Constants.CENSIZ); - // uncompressed size - data.writeUInt32LE(_size, Constants.CENLEN); - // filename length - data.writeUInt16LE(_fnameLen, Constants.CENNAM); - // extra field length - data.writeUInt16LE(_extraLen, Constants.CENEXT); - // file comment length - data.writeUInt16LE(_comLen, Constants.CENCOM); - // volume number start - data.writeUInt16LE(_diskStart, Constants.CENDSK); - // internal file attributes - data.writeUInt16LE(_inattr, Constants.CENATT); - // external file attributes - data.writeUInt32LE(_attr, Constants.CENATX); - // LOC header offset - data.writeUInt32LE(_offset, Constants.CENOFF); - // fill all with - data.fill(0x00, Constants.CENHDR); - return data; - }, - - toString : function() { - return '{\n' + - '\t"made" : ' + _verMade + ",\n" + - '\t"version" : ' + _version + ",\n" + - '\t"flags" : ' + _flags + ",\n" + - '\t"method" : ' + Utils.methodToString(_method) + ",\n" + - '\t"time" : ' + _time + ",\n" + - '\t"crc" : 0x' + _crc.toString(16).toUpperCase() + ",\n" + - '\t"compressedSize" : ' + _compressedSize + " bytes,\n" + - '\t"size" : ' + _size + " bytes,\n" + - '\t"fileNameLength" : ' + _fnameLen + ",\n" + - '\t"extraLength" : ' + _extraLen + " bytes,\n" + - '\t"commentLength" : ' + _comLen + " bytes,\n" + - '\t"diskNumStart" : ' + _diskStart + ",\n" + - '\t"inAttr" : ' + _inattr + ",\n" + - '\t"attr" : ' + _attr + ",\n" + - '\t"offset" : ' + _offset + ",\n" + - '\t"entryHeaderSize" : ' + (Constants.CENHDR + _fnameLen + _extraLen + _comLen) + " bytes\n" + - '}'; - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js deleted file mode 100644 index b8c67b96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.EntryHeader = require("./entryHeader"); -exports.MainHeader = require("./mainHeader"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js deleted file mode 100644 index 002bc8a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/headers/mainHeader.js +++ /dev/null @@ -1,80 +0,0 @@ -var Utils = require("../util"), - Constants = Utils.Constants; - -/* The entries in the end of central directory */ -module.exports = function () { - var _volumeEntries = 0, - _totalEntries = 0, - _size = 0, - _offset = 0, - _commentLength = 0; - - return { - get diskEntries () { return _volumeEntries }, - set diskEntries (/*Number*/val) { _volumeEntries = _totalEntries = val; }, - - get totalEntries () { return _totalEntries }, - set totalEntries (/*Number*/val) { _totalEntries = _volumeEntries = val; }, - - get size () { return _size }, - set size (/*Number*/val) { _size = val; }, - - get offset () { return _offset }, - set offset (/*Number*/val) { _offset = val; }, - - get commentLength () { return _commentLength }, - set commentLength (/*Number*/val) { _commentLength = val; }, - - get mainHeaderSize () { - return Constants.ENDHDR + _commentLength; - }, - - loadFromBinary : function(/*Buffer*/data) { - // data should be 22 bytes and start with "PK 05 06" - if (data.length != Constants.ENDHDR || data.readUInt32LE(0) != Constants.ENDSIG) - throw Utils.Errors.INVALID_END; - - // number of entries on this volume - _volumeEntries = data.readUInt16LE(Constants.ENDSUB); - // total number of entries - _totalEntries = data.readUInt16LE(Constants.ENDTOT); - // central directory size in bytes - _size = data.readUInt32LE(Constants.ENDSIZ); - // offset of first CEN header - _offset = data.readUInt32LE(Constants.ENDOFF); - // zip file comment length - _commentLength = data.readUInt16LE(Constants.ENDCOM); - }, - - toBinary : function() { - var b = new Buffer(Constants.ENDHDR + _commentLength); - // "PK 05 06" signature - b.writeUInt32LE(Constants.ENDSIG, 0); - b.writeUInt32LE(0, 4); - // number of entries on this volume - b.writeUInt16LE(_volumeEntries, Constants.ENDSUB); - // total number of entries - b.writeUInt16LE(_totalEntries, Constants.ENDTOT); - // central directory size in bytes - b.writeUInt32LE(_size, Constants.ENDSIZ); - // offset of first CEN header - b.writeUInt32LE(_offset, Constants.ENDOFF); - // zip file comment length - b.writeUInt16LE(_commentLength, Constants.ENDCOM); - // fill comment memory with spaces so no garbage is left there - b.fill(" ", Constants.ENDHDR); - - return b; - }, - - toString : function() { - return '{\n' + - '\t"diskEntries" : ' + _volumeEntries + ",\n" + - '\t"totalEntries" : ' + _totalEntries + ",\n" + - '\t"size" : ' + _size + " bytes,\n" + - '\t"offset" : 0x' + _offset.toString(16).toUpperCase() + ",\n" + - '\t"commentLength" : 0x' + _commentLength + "\n" + - '}'; - } - } -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js deleted file mode 100644 index 32679434..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/deflater.js +++ /dev/null @@ -1,1578 +0,0 @@ -/* - * $Id: rawdeflate.js,v 0.5 2013/04/09 14:25:38 dankogai Exp dankogai $ - * - * GNU General Public License, version 2 (GPL-2.0) - * http://opensource.org/licenses/GPL-2.0 - * Original: - * http://www.onicos.com/staff/iz/amuse/javascript/expert/deflate.txt - */ -function JSDeflater(/*inbuff*/inbuf) { - - /* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp> - * Version: 1.0.1 - * LastModified: Dec 25 1999 - */ - - var WSIZE = 32768, // Sliding Window size - zip_STORED_BLOCK = 0, - zip_STATIC_TREES = 1, - zip_DYN_TREES = 2, - zip_DEFAULT_LEVEL = 6, - zip_FULL_SEARCH = true, - zip_INBUFSIZ = 32768, // Input buffer size - zip_INBUF_EXTRA = 64, // Extra buffer - zip_OUTBUFSIZ = 1024 * 8, - zip_window_size = 2 * WSIZE, - MIN_MATCH = 3, - MAX_MATCH = 258, - zip_BITS = 16, - LIT_BUFSIZE = 0x2000, - zip_HASH_BITS = 13, - zip_DIST_BUFSIZE = LIT_BUFSIZE, - zip_HASH_SIZE = 1 << zip_HASH_BITS, - zip_HASH_MASK = zip_HASH_SIZE - 1, - zip_WMASK = WSIZE - 1, - zip_NIL = 0, // Tail of hash chains - zip_TOO_FAR = 4096, - zip_MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1, - zip_MAX_DIST = WSIZE - zip_MIN_LOOKAHEAD, - zip_SMALLEST = 1, - zip_MAX_BITS = 15, - zip_MAX_BL_BITS = 7, - zip_LENGTH_CODES = 29, - zip_LITERALS = 256, - zip_END_BLOCK = 256, - zip_L_CODES = zip_LITERALS + 1 + zip_LENGTH_CODES, - zip_D_CODES = 30, - zip_BL_CODES = 19, - zip_REP_3_6 = 16, - zip_REPZ_3_10 = 17, - zip_REPZ_11_138 = 18, - zip_HEAP_SIZE = 2 * zip_L_CODES + 1, - zip_H_SHIFT = parseInt((zip_HASH_BITS + MIN_MATCH - 1) / MIN_MATCH); - - var zip_free_queue, zip_qhead, zip_qtail, zip_initflag, zip_outbuf = null, zip_outcnt, zip_outoff, zip_complete, - zip_window, zip_d_buf, zip_l_buf, zip_prev, zip_bi_buf, zip_bi_valid, zip_block_start, zip_ins_h, zip_hash_head, - zip_prev_match, zip_match_available, zip_match_length, zip_prev_length, zip_strstart, zip_match_start, zip_eofile, - zip_lookahead, zip_max_chain_length, zip_max_lazy_match, zip_compr_level, zip_good_match, zip_nice_match, - zip_dyn_ltree, zip_dyn_dtree, zip_static_ltree, zip_static_dtree, zip_bl_tree, zip_l_desc, zip_d_desc, zip_bl_desc, - zip_bl_count, zip_heap, zip_heap_len, zip_heap_max, zip_depth, zip_length_code, zip_dist_code, zip_base_length, - zip_base_dist, zip_flag_buf, zip_last_lit, zip_last_dist, zip_last_flags, zip_flags, zip_flag_bit, zip_opt_len, - zip_static_len, zip_deflate_data, zip_deflate_pos; - - var zip_DeflateCT = function () { - this.fc = 0; // frequency count or bit string - this.dl = 0; // father node in Huffman tree or length of bit string - }; - - var zip_DeflateTreeDesc = function () { - this.dyn_tree = null; // the dynamic tree - this.static_tree = null; // corresponding static tree or NULL - this.extra_bits = null; // extra bits for each code or NULL - this.extra_base = 0; // base index for extra_bits - this.elems = 0; // max number of elements in the tree - this.max_length = 0; // max bit length for the codes - this.max_code = 0; // largest code with non zero frequency - }; - - /* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ - var zip_DeflateConfiguration = function (a, b, c, d) { - this.good_length = a; // reduce lazy search above this match length - this.max_lazy = b; // do not perform lazy search above this match length - this.nice_length = c; // quit search above this match length - this.max_chain = d; - }; - - var zip_DeflateBuffer = function () { - this.next = null; - this.len = 0; - this.ptr = new Array(zip_OUTBUFSIZ); - this.off = 0; - }; - - /* constant tables */ - var zip_extra_lbits = new Array( - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0); - var zip_extra_dbits = new Array( - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13); - var zip_extra_blbits = new Array( - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7); - var zip_bl_order = new Array( - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15); - var zip_configuration_table = new Array( - new zip_DeflateConfiguration(0, 0, 0, 0), - new zip_DeflateConfiguration(4, 4, 8, 4), - new zip_DeflateConfiguration(4, 5, 16, 8), - new zip_DeflateConfiguration(4, 6, 32, 32), - new zip_DeflateConfiguration(4, 4, 16, 16), - new zip_DeflateConfiguration(8, 16, 32, 32), - new zip_DeflateConfiguration(8, 16, 128, 128), - new zip_DeflateConfiguration(8, 32, 128, 256), - new zip_DeflateConfiguration(32, 128, 258, 1024), - new zip_DeflateConfiguration(32, 258, 258, 4096)); - - - /* routines (deflate) */ - - var zip_deflate_start = function (level) { - var i; - - if (!level) - level = zip_DEFAULT_LEVEL; - else if (level < 1) - level = 1; - else if (level > 9) - level = 9; - - zip_compr_level = level; - zip_initflag = false; - zip_eofile = false; - if (zip_outbuf != null) - return; - - zip_free_queue = zip_qhead = zip_qtail = null; - zip_outbuf = new Array(zip_OUTBUFSIZ); - zip_window = new Array(zip_window_size); - zip_d_buf = new Array(zip_DIST_BUFSIZE); - zip_l_buf = new Array(zip_INBUFSIZ + zip_INBUF_EXTRA); - zip_prev = new Array(1 << zip_BITS); - zip_dyn_ltree = new Array(zip_HEAP_SIZE); - for (i = 0; i < zip_HEAP_SIZE; i++) zip_dyn_ltree[i] = new zip_DeflateCT(); - zip_dyn_dtree = new Array(2 * zip_D_CODES + 1); - for (i = 0; i < 2 * zip_D_CODES + 1; i++) zip_dyn_dtree[i] = new zip_DeflateCT(); - zip_static_ltree = new Array(zip_L_CODES + 2); - for (i = 0; i < zip_L_CODES + 2; i++) zip_static_ltree[i] = new zip_DeflateCT(); - zip_static_dtree = new Array(zip_D_CODES); - for (i = 0; i < zip_D_CODES; i++) zip_static_dtree[i] = new zip_DeflateCT(); - zip_bl_tree = new Array(2 * zip_BL_CODES + 1); - for (i = 0; i < 2 * zip_BL_CODES + 1; i++) zip_bl_tree[i] = new zip_DeflateCT(); - zip_l_desc = new zip_DeflateTreeDesc(); - zip_d_desc = new zip_DeflateTreeDesc(); - zip_bl_desc = new zip_DeflateTreeDesc(); - zip_bl_count = new Array(zip_MAX_BITS + 1); - zip_heap = new Array(2 * zip_L_CODES + 1); - zip_depth = new Array(2 * zip_L_CODES + 1); - zip_length_code = new Array(MAX_MATCH - MIN_MATCH + 1); - zip_dist_code = new Array(512); - zip_base_length = new Array(zip_LENGTH_CODES); - zip_base_dist = new Array(zip_D_CODES); - zip_flag_buf = new Array(parseInt(LIT_BUFSIZE / 8)); - }; - - var zip_deflate_end = function () { - zip_free_queue = zip_qhead = zip_qtail = null; - zip_outbuf = null; - zip_window = null; - zip_d_buf = null; - zip_l_buf = null; - zip_prev = null; - zip_dyn_ltree = null; - zip_dyn_dtree = null; - zip_static_ltree = null; - zip_static_dtree = null; - zip_bl_tree = null; - zip_l_desc = null; - zip_d_desc = null; - zip_bl_desc = null; - zip_bl_count = null; - zip_heap = null; - zip_depth = null; - zip_length_code = null; - zip_dist_code = null; - zip_base_length = null; - zip_base_dist = null; - zip_flag_buf = null; - }; - - var zip_reuse_queue = function (p) { - p.next = zip_free_queue; - zip_free_queue = p; - }; - - var zip_new_queue = function () { - var p; - - if (zip_free_queue != null) { - p = zip_free_queue; - zip_free_queue = zip_free_queue.next; - } - else - p = new zip_DeflateBuffer(); - p.next = null; - p.len = p.off = 0; - - return p; - }; - - var zip_head1 = function (i) { - return zip_prev[WSIZE + i]; - }; - - var zip_head2 = function (i, val) { - return zip_prev[WSIZE + i] = val; - }; - - /* put_byte is used for the compressed output, put_ubyte for the - * uncompressed output. However unlzw() uses window for its - * suffix table instead of its output buffer, so it does not use put_ubyte - * (to be cleaned up). - */ - var zip_put_byte = function (c) { - zip_outbuf[zip_outoff + zip_outcnt++] = c; - if (zip_outoff + zip_outcnt == zip_OUTBUFSIZ) - zip_qoutbuf(); - }; - - /* Output a 16 bit value, lsb first */ - var zip_put_short = function (w) { - w &= 0xffff; - if (zip_outoff + zip_outcnt < zip_OUTBUFSIZ - 2) { - zip_outbuf[zip_outoff + zip_outcnt++] = (w & 0xff); - zip_outbuf[zip_outoff + zip_outcnt++] = (w >>> 8); - } else { - zip_put_byte(w & 0xff); - zip_put_byte(w >>> 8); - } - }; - - /* ========================================================================== - * Insert string s in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of s are valid - * (except for the last MIN_MATCH-1 bytes of the input file). - */ - var zip_INSERT_STRING = function () { - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) - ^ (zip_window[zip_strstart + MIN_MATCH - 1] & 0xff)) - & zip_HASH_MASK; - zip_hash_head = zip_head1(zip_ins_h); - zip_prev[zip_strstart & zip_WMASK] = zip_hash_head; - zip_head2(zip_ins_h, zip_strstart); - }; - - /* Send a code of the given tree. c and tree must not have side effects */ - var zip_SEND_CODE = function (c, tree) { - zip_send_bits(tree[c].fc, tree[c].dl); - }; - - /* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. dist_code[256] and dist_code[257] are never - * used. - */ - var zip_D_CODE = function (dist) { - return (dist < 256 ? zip_dist_code[dist] - : zip_dist_code[256 + (dist >> 7)]) & 0xff; - }; - - /* ========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ - var zip_SMALLER = function (tree, n, m) { - return tree[n].fc < tree[m].fc || - (tree[n].fc == tree[m].fc && zip_depth[n] <= zip_depth[m]); - }; - - /* ========================================================================== - * read string data - */ - var zip_read_buff = function (buff, offset, n) { - var i; - for (i = 0; i < n && zip_deflate_pos < zip_deflate_data.length; i++) - buff[offset + i] = - zip_deflate_data[zip_deflate_pos++] & 0xff; - return i; - }; - - /* ========================================================================== - * Initialize the "longest match" routines for a new file - */ - var zip_lm_init = function () { - var j; - - /* Initialize the hash table. */ - for (j = 0; j < zip_HASH_SIZE; j++) - zip_prev[WSIZE + j] = 0; - zip_max_lazy_match = zip_configuration_table[zip_compr_level].max_lazy; - zip_good_match = zip_configuration_table[zip_compr_level].good_length; - if (!zip_FULL_SEARCH) - zip_nice_match = zip_configuration_table[zip_compr_level].nice_length; - zip_max_chain_length = zip_configuration_table[zip_compr_level].max_chain; - - zip_strstart = 0; - zip_block_start = 0; - - zip_lookahead = zip_read_buff(zip_window, 0, 2 * WSIZE); - if (zip_lookahead <= 0) { - zip_eofile = true; - zip_lookahead = 0; - return; - } - zip_eofile = false; - /* Make sure that we always have enough lookahead. This is important - * if input comes from a device such as a tty. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - - /* If lookahead < MIN_MATCH, ins_h is garbage, but this is - * not important since only literal bytes will be emitted. - */ - zip_ins_h = 0; - for (j = 0; j < MIN_MATCH - 1; j++) { - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) ^ (zip_window[j] & 0xff)) & zip_HASH_MASK; - } - }; - - /* ========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - */ - var zip_longest_match = function (cur_match) { - var chain_length = zip_max_chain_length; // max hash chain length - var scanp = zip_strstart; // current string - var matchp; // matched string - var len; // length of current match - var best_len = zip_prev_length; // best match length so far - - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - var limit = (zip_strstart > zip_MAX_DIST ? zip_strstart - zip_MAX_DIST : zip_NIL); - - var strendp = zip_strstart + MAX_MATCH; - var scan_end1 = zip_window[scanp + best_len - 1]; - var scan_end = zip_window[scanp + best_len]; - - /* Do not waste too much time if we already have a good match: */ - if (zip_prev_length >= zip_good_match) - chain_length >>= 2; - - do { - matchp = cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2: - */ - if (zip_window[matchp + best_len] != scan_end || - zip_window[matchp + best_len - 1] != scan_end1 || - zip_window[matchp] != zip_window[scanp] || - zip_window[++matchp] != zip_window[scanp + 1]) { - continue; - } - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scanp += 2; - matchp++; - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - zip_window[++scanp] == zip_window[++matchp] && - scanp < strendp); - - len = MAX_MATCH - (strendp - scanp); - scanp = strendp - MAX_MATCH; - - if (len > best_len) { - zip_match_start = cur_match; - best_len = len; - if (zip_FULL_SEARCH) { - if (len >= MAX_MATCH) break; - } else { - if (len >= zip_nice_match) break; - } - - scan_end1 = zip_window[scanp + best_len - 1]; - scan_end = zip_window[scanp + best_len]; - } - } while ((cur_match = zip_prev[cur_match & zip_WMASK]) > limit - && --chain_length != 0); - - return best_len; - }; - - /* ========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead, and sets eofile if end of input file. - * IN assertion: lookahead < MIN_LOOKAHEAD && strstart + lookahead > 0 - * OUT assertions: at least one byte has been read, or eofile is set; - * file reads are performed for at least two bytes (required for the - * translate_eol option). - */ - var zip_fill_window = function () { - var n, m; - - // Amount of free space at the end of the window. - var more = zip_window_size - zip_lookahead - zip_strstart; - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (more == -1) { - /* Very unlikely, but possible on 16 bit machine if strstart == 0 - * and lookahead == 1 (input done one byte at time) - */ - more--; - } else if (zip_strstart >= WSIZE + zip_MAX_DIST) { - /* By the IN assertion, the window is not empty so we can't confuse - * more == 0 with more == 64K on a 16 bit machine. - */ - for (n = 0; n < WSIZE; n++) - zip_window[n] = zip_window[n + WSIZE]; - - zip_match_start -= WSIZE; - zip_strstart -= WSIZE; - /* we now have strstart >= MAX_DIST: */ - zip_block_start -= WSIZE; - - for (n = 0; n < zip_HASH_SIZE; n++) { - m = zip_head1(n); - zip_head2(n, m >= WSIZE ? m - WSIZE : zip_NIL); - } - for (n = 0; n < WSIZE; n++) { - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - m = zip_prev[n]; - zip_prev[n] = (m >= WSIZE ? m - WSIZE : zip_NIL); - } - more += WSIZE; - } - // At this point, more >= 2 - if (!zip_eofile) { - n = zip_read_buff(zip_window, zip_strstart + zip_lookahead, more); - if (n <= 0) - zip_eofile = true; - else - zip_lookahead += n; - } - }; - - /* ========================================================================== - * Processes a new input file and return its compressed length. This - * function does not perform lazy evaluationof matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ - var zip_deflate_fast = function () { - while (zip_lookahead != 0 && zip_qhead == null) { - var flush; // set if current block must be flushed - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - zip_INSERT_STRING(); - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (zip_hash_head != zip_NIL && - zip_strstart - zip_hash_head <= zip_MAX_DIST) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - zip_match_length = zip_longest_match(zip_hash_head); - /* longest_match() sets match_start */ - if (zip_match_length > zip_lookahead) - zip_match_length = zip_lookahead; - } - if (zip_match_length >= MIN_MATCH) { - flush = zip_ct_tally(zip_strstart - zip_match_start, - zip_match_length - MIN_MATCH); - zip_lookahead -= zip_match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ - if (zip_match_length <= zip_max_lazy_match) { - zip_match_length--; // string at strstart already in hash table - do { - zip_strstart++; - zip_INSERT_STRING(); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH - * these bytes are garbage, but it does not matter since - * the next lookahead bytes will be emitted as literals. - */ - } while (--zip_match_length != 0); - zip_strstart++; - } else { - zip_strstart += zip_match_length; - zip_match_length = 0; - zip_ins_h = zip_window[zip_strstart] & 0xff; - zip_ins_h = ((zip_ins_h << zip_H_SHIFT) ^ (zip_window[zip_strstart + 1] & 0xff)) & zip_HASH_MASK; - } - } else { - /* No match, output a literal byte */ - flush = zip_ct_tally(0, zip_window[zip_strstart] & 0xff); - zip_lookahead--; - zip_strstart++; - } - if (flush) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - } - }; - - var zip_deflate_better = function () { - /* Process the input block. */ - while (zip_lookahead != 0 && zip_qhead == null) { - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - zip_INSERT_STRING(); - - /* Find the longest match, discarding those <= prev_length. - */ - zip_prev_length = zip_match_length; - zip_prev_match = zip_match_start; - zip_match_length = MIN_MATCH - 1; - - if (zip_hash_head != zip_NIL && - zip_prev_length < zip_max_lazy_match && - zip_strstart - zip_hash_head <= zip_MAX_DIST) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - zip_match_length = zip_longest_match(zip_hash_head); - /* longest_match() sets match_start */ - if (zip_match_length > zip_lookahead) - zip_match_length = zip_lookahead; - - /* Ignore a length 3 match if it is too distant: */ - if (zip_match_length == MIN_MATCH && - zip_strstart - zip_match_start > zip_TOO_FAR) { - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - zip_match_length--; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (zip_prev_length >= MIN_MATCH && - zip_match_length <= zip_prev_length) { - var flush; // set if current block must be flushed - flush = zip_ct_tally(zip_strstart - 1 - zip_prev_match, - zip_prev_length - MIN_MATCH); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. - */ - zip_lookahead -= zip_prev_length - 1; - zip_prev_length -= 2; - do { - zip_strstart++; - zip_INSERT_STRING(); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. If lookahead < MIN_MATCH - * these bytes are garbage, but it does not matter since the - * next lookahead bytes will always be emitted as literals. - */ - } while (--zip_prev_length != 0); - zip_match_available = 0; - zip_match_length = MIN_MATCH - 1; - zip_strstart++; - if (flush) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - } else if (zip_match_available != 0) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - if (zip_ct_tally(0, zip_window[zip_strstart - 1] & 0xff)) { - zip_flush_block(0); - zip_block_start = zip_strstart; - } - zip_strstart++; - zip_lookahead--; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - zip_match_available = 1; - zip_strstart++; - zip_lookahead--; - } - - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - while (zip_lookahead < zip_MIN_LOOKAHEAD && !zip_eofile) - zip_fill_window(); - } - }; - - var zip_init_deflate = function () { - if (zip_eofile) - return; - zip_bi_buf = 0; - zip_bi_valid = 0; - zip_ct_init(); - zip_lm_init(); - - zip_qhead = null; - zip_outcnt = 0; - zip_outoff = 0; - zip_match_available = 0; - - if (zip_compr_level <= 3) { - zip_prev_length = MIN_MATCH - 1; - zip_match_length = 0; - } - else { - zip_match_length = MIN_MATCH - 1; - zip_match_available = 0; - zip_match_available = 0; - } - - zip_complete = false; - }; - - /* ========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ - var zip_deflate_internal = function (buff, off, buff_size) { - var n; - - if (!zip_initflag) { - zip_init_deflate(); - zip_initflag = true; - if (zip_lookahead == 0) { // empty - zip_complete = true; - return 0; - } - } - - if ((n = zip_qcopy(buff, off, buff_size)) == buff_size) - return buff_size; - - if (zip_complete) - return n; - - if (zip_compr_level <= 3) // optimized for speed - zip_deflate_fast(); - else - zip_deflate_better(); - if (zip_lookahead == 0) { - if (zip_match_available != 0) - zip_ct_tally(0, zip_window[zip_strstart - 1] & 0xff); - zip_flush_block(1); - zip_complete = true; - } - return n + zip_qcopy(buff, n + off, buff_size - n); - }; - - var zip_qcopy = function (buff, off, buff_size) { - var n, i, j; - - n = 0; - while (zip_qhead != null && n < buff_size) { - i = buff_size - n; - if (i > zip_qhead.len) - i = zip_qhead.len; - for (j = 0; j < i; j++) - buff[off + n + j] = zip_qhead.ptr[zip_qhead.off + j]; - - zip_qhead.off += i; - zip_qhead.len -= i; - n += i; - if (zip_qhead.len == 0) { - var p; - p = zip_qhead; - zip_qhead = zip_qhead.next; - zip_reuse_queue(p); - } - } - - if (n == buff_size) - return n; - - if (zip_outoff < zip_outcnt) { - i = buff_size - n; - if (i > zip_outcnt - zip_outoff) - i = zip_outcnt - zip_outoff; - // System.arraycopy(outbuf, outoff, buff, off + n, i); - for (j = 0; j < i; j++) - buff[off + n + j] = zip_outbuf[zip_outoff + j]; - zip_outoff += i; - n += i; - if (zip_outcnt == zip_outoff) - zip_outcnt = zip_outoff = 0; - } - return n; - }; - - /* ========================================================================== - * Allocate the match buffer, initialize the various tables and save the - * location of the internal file attribute (ascii/binary) and method - * (DEFLATE/STORE). - */ - var zip_ct_init = function () { - var n; // iterates over tree elements - var bits; // bit counter - var length; // length value - var code; // code value - var dist; // distance index - - if (zip_static_dtree[0].dl != 0) return; // ct_init already called - - zip_l_desc.dyn_tree = zip_dyn_ltree; - zip_l_desc.static_tree = zip_static_ltree; - zip_l_desc.extra_bits = zip_extra_lbits; - zip_l_desc.extra_base = zip_LITERALS + 1; - zip_l_desc.elems = zip_L_CODES; - zip_l_desc.max_length = zip_MAX_BITS; - zip_l_desc.max_code = 0; - - zip_d_desc.dyn_tree = zip_dyn_dtree; - zip_d_desc.static_tree = zip_static_dtree; - zip_d_desc.extra_bits = zip_extra_dbits; - zip_d_desc.extra_base = 0; - zip_d_desc.elems = zip_D_CODES; - zip_d_desc.max_length = zip_MAX_BITS; - zip_d_desc.max_code = 0; - - zip_bl_desc.dyn_tree = zip_bl_tree; - zip_bl_desc.static_tree = null; - zip_bl_desc.extra_bits = zip_extra_blbits; - zip_bl_desc.extra_base = 0; - zip_bl_desc.elems = zip_BL_CODES; - zip_bl_desc.max_length = zip_MAX_BL_BITS; - zip_bl_desc.max_code = 0; - - // Initialize the mapping length (0..255) -> length code (0..28) - length = 0; - for (code = 0; code < zip_LENGTH_CODES - 1; code++) { - zip_base_length[code] = length; - for (n = 0; n < (1 << zip_extra_lbits[code]); n++) - zip_length_code[length++] = code; - } - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - zip_length_code[length - 1] = code; - - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - dist = 0; - for (code = 0; code < 16; code++) { - zip_base_dist[code] = dist; - for (n = 0; n < (1 << zip_extra_dbits[code]); n++) { - zip_dist_code[dist++] = code; - } - } - dist >>= 7; // from now on, all distances are divided by 128 - for (; code < zip_D_CODES; code++) { - zip_base_dist[code] = dist << 7; - for (n = 0; n < (1 << (zip_extra_dbits[code] - 7)); n++) - zip_dist_code[256 + dist++] = code; - } - // Construct the codes of the static literal tree - for (bits = 0; bits <= zip_MAX_BITS; bits++) - zip_bl_count[bits] = 0; - n = 0; - while (n <= 143) { - zip_static_ltree[n++].dl = 8; - zip_bl_count[8]++; - } - while (n <= 255) { - zip_static_ltree[n++].dl = 9; - zip_bl_count[9]++; - } - while (n <= 279) { - zip_static_ltree[n++].dl = 7; - zip_bl_count[7]++; - } - while (n <= 287) { - zip_static_ltree[n++].dl = 8; - zip_bl_count[8]++; - } - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - zip_gen_codes(zip_static_ltree, zip_L_CODES + 1); - - /* The static distance tree is trivial: */ - for (n = 0; n < zip_D_CODES; n++) { - zip_static_dtree[n].dl = 5; - zip_static_dtree[n].fc = zip_bi_reverse(n, 5); - } - - // Initialize the first block of the first file: - zip_init_block(); - }; - - /* ========================================================================== - * Initialize a new block. - */ - var zip_init_block = function () { - var n; // iterates over tree elements - - // Initialize the trees. - for (n = 0; n < zip_L_CODES; n++) zip_dyn_ltree[n].fc = 0; - for (n = 0; n < zip_D_CODES; n++) zip_dyn_dtree[n].fc = 0; - for (n = 0; n < zip_BL_CODES; n++) zip_bl_tree[n].fc = 0; - - zip_dyn_ltree[zip_END_BLOCK].fc = 1; - zip_opt_len = zip_static_len = 0; - zip_last_lit = zip_last_dist = zip_last_flags = 0; - zip_flags = 0; - zip_flag_bit = 1; - }; - - /* ========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ - var zip_pqdownheap = function (tree, // the tree to restore - k) { // node to move down - var v = zip_heap[k]; - var j = k << 1; // left son of k - - while (j <= zip_heap_len) { - // Set j to the smallest of the two sons: - if (j < zip_heap_len && - zip_SMALLER(tree, zip_heap[j + 1], zip_heap[j])) - j++; - - // Exit if v is smaller than both sons - if (zip_SMALLER(tree, v, zip_heap[j])) - break; - - // Exchange v with the smallest son - zip_heap[k] = zip_heap[j]; - k = j; - - // And continue down the tree, setting j to the left son of k - j <<= 1; - } - zip_heap[k] = v; - }; - - /* ========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ - var zip_gen_bitlen = function (desc) { // the tree descriptor - var tree = desc.dyn_tree; - var extra = desc.extra_bits; - var base = desc.extra_base; - var max_code = desc.max_code; - var max_length = desc.max_length; - var stree = desc.static_tree; - var h; // heap index - var n, m; // iterate over the tree elements - var bits; // bit length - var xbits; // extra bits - var f; // frequency - var overflow = 0; // number of elements with bit length too large - - for (bits = 0; bits <= zip_MAX_BITS; bits++) - zip_bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[zip_heap[zip_heap_max]].dl = 0; // root of the heap - - for (h = zip_heap_max + 1; h < zip_HEAP_SIZE; h++) { - n = zip_heap[h]; - bits = tree[tree[n].dl].dl + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n].dl = bits; - // We overwrite tree[n].dl which is no longer needed - - if (n > max_code) - continue; // not a leaf node - - zip_bl_count[bits]++; - xbits = 0; - if (n >= base) - xbits = extra[n - base]; - f = tree[n].fc; - zip_opt_len += f * (bits + xbits); - if (stree != null) - zip_static_len += f * (stree[n].dl + xbits); - } - if (overflow == 0) - return; - - // This happens for example on obj2 and pic of the Calgary corpus - - // Find the first bit length which could increase: - do { - bits = max_length - 1; - while (zip_bl_count[bits] == 0) - bits--; - zip_bl_count[bits]--; // move one leaf down the tree - zip_bl_count[bits + 1] += 2; // move one overflow item as its brother - zip_bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = zip_bl_count[bits]; - while (n != 0) { - m = zip_heap[--h]; - if (m > max_code) - continue; - if (tree[m].dl != bits) { - zip_opt_len += (bits - tree[m].dl) * tree[m].fc; - tree[m].fc = bits; - } - n--; - } - } - }; - - /* ========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ - var zip_gen_codes = function (tree, // the tree to decorate - max_code) { // largest code with non zero frequency - var next_code = new Array(zip_MAX_BITS + 1); // next code value for each bit length - var code = 0; // running code value - var bits; // bit index - var n; // code index - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= zip_MAX_BITS; bits++) { - code = ((code + zip_bl_count[bits - 1]) << 1); - next_code[bits] = code; - } - - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - for (n = 0; n <= max_code; n++) { - var len = tree[n].dl; - if (len == 0) - continue; - // Now reverse the bits - tree[n].fc = zip_bi_reverse(next_code[len]++, len); - } - }; - - /* ========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ - var zip_build_tree = function (desc) { // the tree descriptor - var tree = desc.dyn_tree; - var stree = desc.static_tree; - var elems = desc.elems; - var n, m; // iterate over heap elements - var max_code = -1; // largest code with non zero frequency - var node = elems; // next internal node of the tree - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - zip_heap_len = 0; - zip_heap_max = zip_HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].fc != 0) { - zip_heap[++zip_heap_len] = max_code = n; - zip_depth[n] = 0; - } else - tree[n].dl = 0; - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (zip_heap_len < 2) { - var xnew = zip_heap[++zip_heap_len] = (max_code < 2 ? ++max_code : 0); - tree[xnew].fc = 1; - zip_depth[xnew] = 0; - zip_opt_len--; - if (stree != null) - zip_static_len -= stree[xnew].dl; - // new is 0 or 1 so it does not have extra bits - } - desc.max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = zip_heap_len >> 1; n >= 1; n--) - zip_pqdownheap(tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - do { - n = zip_heap[zip_SMALLEST]; - zip_heap[zip_SMALLEST] = zip_heap[zip_heap_len--]; - zip_pqdownheap(tree, zip_SMALLEST); - - m = zip_heap[zip_SMALLEST]; // m = node of next least frequency - - // keep the nodes sorted by frequency - zip_heap[--zip_heap_max] = n; - zip_heap[--zip_heap_max] = m; - - // Create a new node father of n and m - tree[node].fc = tree[n].fc + tree[m].fc; - if (zip_depth[n] > zip_depth[m] + 1) - zip_depth[node] = zip_depth[n]; - else - zip_depth[node] = zip_depth[m] + 1; - tree[n].dl = tree[m].dl = node; - - // and insert the new node in the heap - zip_heap[zip_SMALLEST] = node++; - zip_pqdownheap(tree, zip_SMALLEST); - - } while (zip_heap_len >= 2); - - zip_heap[--zip_heap_max] = zip_heap[zip_SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - zip_gen_bitlen(desc); - - // The field len is now set, we can generate the bit codes - zip_gen_codes(tree, max_code); - }; - - /* ========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. Updates opt_len to take into account the repeat - * counts. (The contribution of the bit length codes will be added later - * during the construction of bl_tree.) - */ - var zip_scan_tree = function (tree,// the tree to be scanned - max_code) { // and its largest code of non zero frequency - var n; // iterates over all tree elements - var prevlen = -1; // last emitted length - var curlen; // length of current code - var nextlen = tree[0].dl; // length of next code - var count = 0; // repeat count of the current code - var max_count = 7; // max repeat count - var min_count = 4; // min repeat count - - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } - tree[max_code + 1].dl = 0xffff; // guard - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].dl; - if (++count < max_count && curlen == nextlen) - continue; - else if (count < min_count) - zip_bl_tree[curlen].fc += count; - else if (curlen != 0) { - if (curlen != prevlen) - zip_bl_tree[curlen].fc++; - zip_bl_tree[zip_REP_3_6].fc++; - } else if (count <= 10) - zip_bl_tree[zip_REPZ_3_10].fc++; - else - zip_bl_tree[zip_REPZ_11_138].fc++; - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - }; - - /* ========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ - var zip_send_tree = function (tree, // the tree to be scanned - max_code) { // and its largest code of non zero frequency - var n; // iterates over all tree elements - var prevlen = -1; // last emitted length - var curlen; // length of current code - var nextlen = tree[0].dl; // length of next code - var count = 0; // repeat count of the current code - var max_count = 7; // max repeat count - var min_count = 4; // min repeat count - - /* tree[max_code+1].dl = -1; */ - /* guard already set */ - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].dl; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { - zip_SEND_CODE(curlen, zip_bl_tree); - } while (--count != 0); - } else if (curlen != 0) { - if (curlen != prevlen) { - zip_SEND_CODE(curlen, zip_bl_tree); - count--; - } - // Assert(count >= 3 && count <= 6, " 3_6?"); - zip_SEND_CODE(zip_REP_3_6, zip_bl_tree); - zip_send_bits(count - 3, 2); - } else if (count <= 10) { - zip_SEND_CODE(zip_REPZ_3_10, zip_bl_tree); - zip_send_bits(count - 3, 3); - } else { - zip_SEND_CODE(zip_REPZ_11_138, zip_bl_tree); - zip_send_bits(count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138; - min_count = 3; - } else if (curlen == nextlen) { - max_count = 6; - min_count = 3; - } else { - max_count = 7; - min_count = 4; - } - } - }; - - /* ========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ - var zip_build_bl_tree = function () { - var max_blindex; // index of last bit length code of non zero freq - - // Determine the bit length frequencies for literal and distance trees - zip_scan_tree(zip_dyn_ltree, zip_l_desc.max_code); - zip_scan_tree(zip_dyn_dtree, zip_d_desc.max_code); - - // Build the bit length tree: - zip_build_tree(zip_bl_desc); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = zip_BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (zip_bl_tree[zip_bl_order[max_blindex]].dl != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - zip_opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - return max_blindex; - }; - - /* ========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ - var zip_send_all_trees = function (lcodes, dcodes, blcodes) { // number of codes for each tree - var rank; // index in bl_order - zip_send_bits(lcodes - 257, 5); // not +255 as stated in appnote.txt - zip_send_bits(dcodes - 1, 5); - zip_send_bits(blcodes - 4, 4); // not -3 as stated in appnote.txt - for (rank = 0; rank < blcodes; rank++) { - zip_send_bits(zip_bl_tree[zip_bl_order[rank]].dl, 3); - } - - // send the literal tree - zip_send_tree(zip_dyn_ltree, lcodes - 1); - - // send the distance tree - zip_send_tree(zip_dyn_dtree, dcodes - 1); - }; - - /* ========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ - var zip_flush_block = function (eof) { // true if this is the last block for a file - var opt_lenb, static_lenb; // opt_len and static_len in bytes - var max_blindex; // index of last bit length code of non zero freq - var stored_len; // length of input block - - stored_len = zip_strstart - zip_block_start; - zip_flag_buf[zip_last_flags] = zip_flags; // Save the flags for the last 8 items - - // Construct the literal and distance trees - zip_build_tree(zip_l_desc); - zip_build_tree(zip_d_desc); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = zip_build_bl_tree(); - - // Determine the best encoding. Compute first the block length in bytes - opt_lenb = (zip_opt_len + 3 + 7) >> 3; - static_lenb = (zip_static_len + 3 + 7) >> 3; - if (static_lenb <= opt_lenb) - opt_lenb = static_lenb; - if (stored_len + 4 <= opt_lenb // 4: two words for the lengths - && zip_block_start >= 0) { - var i; - - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - zip_send_bits((zip_STORED_BLOCK << 1) + eof, 3); - /* send block type */ - zip_bi_windup(); - /* align on byte boundary */ - zip_put_short(stored_len); - zip_put_short(~stored_len); - - // copy block - for (i = 0; i < stored_len; i++) - zip_put_byte(zip_window[zip_block_start + i]); - - } else if (static_lenb == opt_lenb) { - zip_send_bits((zip_STATIC_TREES << 1) + eof, 3); - zip_compress_block(zip_static_ltree, zip_static_dtree); - } else { - zip_send_bits((zip_DYN_TREES << 1) + eof, 3); - zip_send_all_trees(zip_l_desc.max_code + 1, - zip_d_desc.max_code + 1, - max_blindex + 1); - zip_compress_block(zip_dyn_ltree, zip_dyn_dtree); - } - - zip_init_block(); - - if (eof != 0) - zip_bi_windup(); - }; - - /* ========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ - var zip_ct_tally = function (dist, // distance of matched string - lc) { // match length-MIN_MATCH or unmatched char (if dist==0) - zip_l_buf[zip_last_lit++] = lc; - if (dist == 0) { - // lc is the unmatched char - zip_dyn_ltree[lc].fc++; - } else { - // Here, lc is the match length - MIN_MATCH - dist--; // dist = match distance - 1 - zip_dyn_ltree[zip_length_code[lc] + zip_LITERALS + 1].fc++; - zip_dyn_dtree[zip_D_CODE(dist)].fc++; - - zip_d_buf[zip_last_dist++] = dist; - zip_flags |= zip_flag_bit; - } - zip_flag_bit <<= 1; - - // Output the flags if they fill a byte - if ((zip_last_lit & 7) == 0) { - zip_flag_buf[zip_last_flags++] = zip_flags; - zip_flags = 0; - zip_flag_bit = 1; - } - // Try to guess if it is profitable to stop the current block here - if (zip_compr_level > 2 && (zip_last_lit & 0xfff) == 0) { - // Compute an upper bound for the compressed length - var out_length = zip_last_lit * 8; - var in_length = zip_strstart - zip_block_start; - var dcode; - - for (dcode = 0; dcode < zip_D_CODES; dcode++) { - out_length += zip_dyn_dtree[dcode].fc * (5 + zip_extra_dbits[dcode]); - } - out_length >>= 3; - if (zip_last_dist < parseInt(zip_last_lit / 2) && - out_length < parseInt(in_length / 2)) - return true; - } - return (zip_last_lit == LIT_BUFSIZE - 1 || - zip_last_dist == zip_DIST_BUFSIZE); - /* We avoid equality with LIT_BUFSIZE because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ - }; - - /* ========================================================================== - * Send the block data compressed using the given Huffman trees - */ - var zip_compress_block = function (ltree, // literal tree - dtree) { // distance tree - var dist; // distance of matched string - var lc; // match length or unmatched char (if dist == 0) - var lx = 0; // running index in l_buf - var dx = 0; // running index in d_buf - var fx = 0; // running index in flag_buf - var flag = 0; // current flags - var code; // the code to send - var extra; // number of extra bits to send - - if (zip_last_lit != 0) do { - if ((lx & 7) == 0) - flag = zip_flag_buf[fx++]; - lc = zip_l_buf[lx++] & 0xff; - if ((flag & 1) == 0) { - zip_SEND_CODE(lc, ltree); - /* send a literal byte */ - } else { - // Here, lc is the match length - MIN_MATCH - code = zip_length_code[lc]; - zip_SEND_CODE(code + zip_LITERALS + 1, ltree); // send the length code - extra = zip_extra_lbits[code]; - if (extra != 0) { - lc -= zip_base_length[code]; - zip_send_bits(lc, extra); // send the extra length bits - } - dist = zip_d_buf[dx++]; - // Here, dist is the match distance - 1 - code = zip_D_CODE(dist); - zip_SEND_CODE(code, dtree); // send the distance code - extra = zip_extra_dbits[code]; - if (extra != 0) { - dist -= zip_base_dist[code]; - zip_send_bits(dist, extra); // send the extra distance bits - } - } // literal or match pair ? - flag >>= 1; - } while (lx < zip_last_lit); - - zip_SEND_CODE(zip_END_BLOCK, ltree); - }; - - /* ========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ - var zip_Buf_size = 16; // bit size of bi_buf - var zip_send_bits = function (value, // value to send - length) { // number of bits - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (zip_bi_valid > zip_Buf_size - length) { - zip_bi_buf |= (value << zip_bi_valid); - zip_put_short(zip_bi_buf); - zip_bi_buf = (value >> (zip_Buf_size - zip_bi_valid)); - zip_bi_valid += length - zip_Buf_size; - } else { - zip_bi_buf |= value << zip_bi_valid; - zip_bi_valid += length; - } - }; - - /* ========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ - var zip_bi_reverse = function (code, // the value to invert - len) { // its bit length - var res = 0; - do { - res |= code & 1; - code >>= 1; - res <<= 1; - } while (--len > 0); - return res >> 1; - }; - - /* ========================================================================== - * Write out any remaining bits in an incomplete byte. - */ - var zip_bi_windup = function () { - if (zip_bi_valid > 8) { - zip_put_short(zip_bi_buf); - } else if (zip_bi_valid > 0) { - zip_put_byte(zip_bi_buf); - } - zip_bi_buf = 0; - zip_bi_valid = 0; - }; - - var zip_qoutbuf = function () { - if (zip_outcnt != 0) { - var q, i; - q = zip_new_queue(); - if (zip_qhead == null) - zip_qhead = zip_qtail = q; - else - zip_qtail = zip_qtail.next = q; - q.len = zip_outcnt - zip_outoff; - for (i = 0; i < q.len; i++) - q.ptr[i] = zip_outbuf[zip_outoff + i]; - zip_outcnt = zip_outoff = 0; - } - }; - - function deflate(buffData, level) { - zip_deflate_data = buffData; - zip_deflate_pos = 0; - zip_deflate_start(level); - - var buff = new Array(1024), - pages = [], - totalSize = 0, - i; - - for (i = 0; i < 1024; i++) buff[i] = 0; - while ((i = zip_deflate_internal(buff, 0, buff.length)) > 0) { - var buf = new Buffer(buff.slice(0, i)); - pages.push(buf); - totalSize += buf.length; - } - - if (pages.length == 1) { - return pages[0]; - } - - var result = new Buffer(totalSize), - index = 0; - - for (i = 0; i < pages.length; i++) { - pages[i].copy(result, index); - index = index + pages[i].length - } - - return result; - } - - return { - deflate: function () { - return deflate(inbuf, 8); - } - } -} - -module.exports = function (/*Buffer*/inbuf) { - - var zlib = require("zlib"); - - return { - deflate: function () { - return new JSDeflater(inbuf).deflate(); - }, - - deflateAsync: function (/*Function*/callback) { - var tmp = zlib.createDeflateRaw({chunkSize:(parseInt(inbuf.length / 1024) + 1)*1024}), - parts = [], total = 0; - tmp.on('data', function(data) { - parts.push(data); - total += data.length; - }); - tmp.on('end', function() { - var buf = new Buffer(total), written = 0; - buf.fill(0); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - part.copy(buf, written); - written += part.length; - } - callback && callback(buf); - }); - tmp.end(inbuf); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js deleted file mode 100644 index ddcbba60..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.Deflater = require("./deflater"); -exports.Inflater = require("./inflater"); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js deleted file mode 100644 index 59536c90..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/methods/inflater.js +++ /dev/null @@ -1,448 +0,0 @@ -var Buffer = require("buffer").Buffer; - -function JSInflater(/*Buffer*/input) { - - var WSIZE = 0x8000, - slide = new Buffer(0x10000), - windowPos = 0, - fixedTableList = null, - fixedTableDist, - fixedLookup, - bitBuf = 0, - bitLen = 0, - method = -1, - eof = false, - copyLen = 0, - copyDist = 0, - tblList, tblDist, bitList, bitdist, - - inputPosition = 0, - - MASK_BITS = [0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff], - LENS = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], - LEXT = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99], - DISTS = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], - DEXT = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], - BITORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - - function HuffTable(clen, cnum, cval, blist, elist, lookupm) { - - this.status = 0; - this.root = null; - this.maxbit = 0; - - var el, f, tail, - offsets = [], - countTbl = [], - sTbl = [], - values = [], - tentry = {extra: 0, bitcnt: 0, lbase: 0, next: null}; - - tail = this.root = null; - for(var i = 0; i < 0x11; i++) { countTbl[i] = 0; sTbl[i] = 0; offsets[i] = 0; } - for(i = 0; i < 0x120; i++) values[i] = 0; - - el = cnum > 256 ? clen[256] : 16; - - var pidx = -1; - while (++pidx < cnum) countTbl[clen[pidx]]++; - - if(countTbl[0] == cnum) return; - - for(var j = 1; j <= 16; j++) if(countTbl[j] != 0) break; - var bitLen = j; - for(i = 16; i != 0; i--) if(countTbl[i] != 0) break; - var maxLen = i; - - lookupm < j && (lookupm = j); - - var dCodes = 1 << j; - for(; j < i; j++, dCodes <<= 1) - if((dCodes -= countTbl[j]) < 0) { - this.status = 2; - this.maxbit = lookupm; - return; - } - - if((dCodes -= countTbl[i]) < 0) { - this.status = 2; - this.maxbit = lookupm; - return; - } - - countTbl[i] += dCodes; - offsets[1] = j = 0; - pidx = 1; - var xp = 2; - while(--i > 0) offsets[xp++] = (j += countTbl[pidx++]); - pidx = 0; - i = 0; - do { - (j = clen[pidx++]) && (values[offsets[j]++] = i); - } while(++i < cnum); - cnum = offsets[maxLen]; - offsets[0] = i = 0; - pidx = 0; - - var level = -1, - w = sTbl[0] = 0, - cnode = null, - tblCnt = 0, - tblStack = []; - - for(; bitLen <= maxLen; bitLen++) { - var kccnt = countTbl[bitLen]; - while(kccnt-- > 0) { - while(bitLen > w + sTbl[1 + level]) { - w += sTbl[1 + level]; - level++; - tblCnt = (tblCnt = maxLen - w) > lookupm ? lookupm : tblCnt; - if((f = 1 << (j = bitLen - w)) > kccnt + 1) { - f -= kccnt + 1; - xp = bitLen; - while(++j < tblCnt) { - if((f <<= 1) <= countTbl[++xp]) break; - f -= countTbl[xp]; - } - } - if(w + j > el && w < el) j = el - w; - tblCnt = 1 << j; - sTbl[1 + level] = j; - cnode = []; - while (cnode.length < tblCnt) cnode.push({extra: 0, bitcnt: 0, lbase: 0, next: null}); - if (tail == null) { - tail = this.root = {next:null, list:null}; - } else { - tail = tail.next = {next:null, list:null} - } - tail.next = null; - tail.list = cnode; - - tblStack[level] = cnode; - - if(level > 0) { - offsets[level] = i; - tentry.bitcnt = sTbl[level]; - tentry.extra = 16 + j; - tentry.next = cnode; - j = (i & ((1 << w) - 1)) >> (w - sTbl[level]); - - tblStack[level-1][j].extra = tentry.extra; - tblStack[level-1][j].bitcnt = tentry.bitcnt; - tblStack[level-1][j].lbase = tentry.lbase; - tblStack[level-1][j].next = tentry.next; - } - } - tentry.bitcnt = bitLen - w; - if(pidx >= cnum) - tentry.extra = 99; - else if(values[pidx] < cval) { - tentry.extra = (values[pidx] < 256 ? 16 : 15); - tentry.lbase = values[pidx++]; - } else { - tentry.extra = elist[values[pidx] - cval]; - tentry.lbase = blist[values[pidx++] - cval]; - } - - f = 1 << (bitLen - w); - for(j = i >> w; j < tblCnt; j += f) { - cnode[j].extra = tentry.extra; - cnode[j].bitcnt = tentry.bitcnt; - cnode[j].lbase = tentry.lbase; - cnode[j].next = tentry.next; - } - for(j = 1 << (bitLen - 1); (i & j) != 0; j >>= 1) - i ^= j; - i ^= j; - while((i & ((1 << w) - 1)) != offsets[level]) { - w -= sTbl[level]; - level--; - } - } - } - - this.maxbit = sTbl[1]; - this.status = ((dCodes != 0 && maxLen != 1) ? 1 : 0); - } - - function addBits(n) { - while(bitLen < n) { - bitBuf |= input[inputPosition++] << bitLen; - bitLen += 8; - } - return bitBuf; - } - - function cutBits(n) { - bitLen -= n; - return bitBuf >>= n; - } - - function maskBits(n) { - while(bitLen < n) { - bitBuf |= input[inputPosition++] << bitLen; - bitLen += 8; - } - var res = bitBuf & MASK_BITS[n]; - bitBuf >>= n; - bitLen -= n; - return res; - } - - function codes(buff, off, size) { - var e, t; - if(size == 0) return 0; - - var n = 0; - for(;;) { - t = tblList.list[addBits(bitList) & MASK_BITS[bitList]]; - e = t.extra; - while(e > 16) { - if(e == 99) return -1; - cutBits(t.bitcnt); - e -= 16; - t = t.next[addBits(e) & MASK_BITS[e]]; - e = t.extra; - } - cutBits(t.bitcnt); - if(e == 16) { - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = t.lbase; - if(n == size) return size; - continue; - } - if(e == 15) break; - - copyLen = t.lbase + maskBits(e); - t = tblDist.list[addBits(bitdist) & MASK_BITS[bitdist]]; - e = t.extra; - - while(e > 16) { - if(e == 99) return -1; - cutBits(t.bitcnt); - e -= 16; - t = t.next[addBits(e) & MASK_BITS[e]]; - e = t.extra - } - cutBits(t.bitcnt); - copyDist = windowPos - t.lbase - maskBits(e); - - while(copyLen > 0 && n < size) { - copyLen--; - copyDist &= WSIZE - 1; - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = slide[copyDist++]; - } - - if(n == size) return size; - } - - method = -1; // done - return n; - } - - function stored(buff, off, size) { - cutBits(bitLen & 7); - var n = maskBits(0x10); - if(n != ((~maskBits(0x10)) & 0xffff)) return -1; - copyLen = n; - - n = 0; - while(copyLen > 0 && n < size) { - copyLen--; - windowPos &= WSIZE - 1; - buff[off + n++] = slide[windowPos++] = maskBits(8); - } - - if(copyLen == 0) method = -1; - return n; - } - - function fixed(buff, off, size) { - var fixed_bd = 0; - if(fixedTableList == null) { - var lengths = []; - - for(var symbol = 0; symbol < 144; symbol++) lengths[symbol] = 8; - for(; symbol < 256; symbol++) lengths[symbol] = 9; - for(; symbol < 280; symbol++) lengths[symbol] = 7; - for(; symbol < 288; symbol++) lengths[symbol] = 8; - - fixedLookup = 7; - - var htbl = new HuffTable(lengths, 288, 257, LENS, LEXT, fixedLookup); - - if(htbl.status != 0) return -1; - - fixedTableList = htbl.root; - fixedLookup = htbl.maxbit; - - for(symbol = 0; symbol < 30; symbol++) lengths[symbol] = 5; - fixed_bd = 5; - - htbl = new HuffTable(lengths, 30, 0, DISTS, DEXT, fixed_bd); - if(htbl.status > 1) { - fixedTableList = null; - return -1; - } - fixedTableDist = htbl.root; - fixed_bd = htbl.maxbit; - } - - tblList = fixedTableList; - tblDist = fixedTableDist; - bitList = fixedLookup; - bitdist = fixed_bd; - return codes(buff, off, size); - } - - function dynamic(buff, off, size) { - var ll = new Array(0x023C); - - for (var m = 0; m < 0x023C; m++) ll[m] = 0; - - var llencnt = 257 + maskBits(5), - dcodescnt = 1 + maskBits(5), - bitlencnt = 4 + maskBits(4); - - if(llencnt > 286 || dcodescnt > 30) return -1; - - for(var j = 0; j < bitlencnt; j++) ll[BITORDER[j]] = maskBits(3); - for(; j < 19; j++) ll[BITORDER[j]] = 0; - - // build decoding table for trees--single level, 7 bit lookup - bitList = 7; - var hufTable = new HuffTable(ll, 19, 19, null, null, bitList); - if(hufTable.status != 0) - return -1; // incomplete code set - - tblList = hufTable.root; - bitList = hufTable.maxbit; - var lencnt = llencnt + dcodescnt, - i = 0, - lastLen = 0; - while(i < lencnt) { - var hufLcode = tblList.list[addBits(bitList) & MASK_BITS[bitList]]; - j = hufLcode.bitcnt; - cutBits(j); - j = hufLcode.lbase; - if(j < 16) - ll[i++] = lastLen = j; - else if(j == 16) { - j = 3 + maskBits(2); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = lastLen; - } else if(j == 17) { - j = 3 + maskBits(3); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = 0; - lastLen = 0; - } else { - j = 11 + maskBits(7); - if(i + j > lencnt) return -1; - while(j-- > 0) ll[i++] = 0; - lastLen = 0; - } - } - bitList = 9; - hufTable = new HuffTable(ll, llencnt, 257, LENS, LEXT, bitList); - bitList == 0 && (hufTable.status = 1); - - if (hufTable.status != 0) return -1; - - tblList = hufTable.root; - bitList = hufTable.maxbit; - - for(i = 0; i < dcodescnt; i++) ll[i] = ll[i + llencnt]; - bitdist = 6; - hufTable = new HuffTable(ll, dcodescnt, 0, DISTS, DEXT, bitdist); - tblDist = hufTable.root; - bitdist = hufTable.maxbit; - - if((bitdist == 0 && llencnt > 257) || hufTable.status != 0) return -1; - - return codes(buff, off, size); - } - - return { - inflate : function(/*Buffer*/outputBuffer) { - tblList = null; - - var size = outputBuffer.length, - offset = 0, i; - - while(offset < size) { - if(eof && method == -1) return; - if(copyLen > 0) { - if(method != 0) { - while(copyLen > 0 && offset < size) { - copyLen--; - copyDist &= WSIZE - 1; - windowPos &= WSIZE - 1; - outputBuffer[offset++] = (slide[windowPos++] = slide[copyDist++]); - } - } else { - while(copyLen > 0 && offset < size) { - copyLen--; - windowPos &= WSIZE - 1; - outputBuffer[offset++] = (slide[windowPos++] = maskBits(8)); - } - copyLen == 0 && (method = -1); // done - } - if (offset == size) return; - } - - if(method == -1) { - if(eof) break; - eof = maskBits(1) != 0; - method = maskBits(2); - tblList = null; - copyLen = 0; - } - switch(method) { - case 0: i = stored(outputBuffer, offset, size - offset); break; - case 1: i = tblList != null ? codes(outputBuffer, offset, size - offset) : fixed(outputBuffer, offset, size - offset); break; - case 2: i = tblList != null ? codes(outputBuffer, offset, size - offset) : dynamic(outputBuffer, offset, size - offset); break; - default: i = -1; break; - } - - if(i == -1) return; - offset += i; - } - } - }; -} - -module.exports = function(/*Buffer*/inbuf) { - var zlib = require("zlib"); - return { - inflateAsync : function(/*Function*/callback) { - var tmp = zlib.createInflateRaw(), - parts = [], total = 0; - tmp.on('data', function(data) { - parts.push(data); - total += data.length; - }); - tmp.on('end', function() { - var buf = new Buffer(total), written = 0; - buf.fill(0); - - for (var i = 0; i < parts.length; i++) { - var part = parts[i]; - part.copy(buf, written); - written += part.length; - } - callback && callback(buf); - }); - tmp.end(inbuf) - }, - - inflate : function(/*Buffer*/outputBuffer) { - var x = { - x: new JSInflater(inbuf) - }; - x.x.inflate(outputBuffer); - delete(x.x); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json deleted file mode 100644 index 6f8f7597..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "adm-zip", - "version": "0.4.4", - "description": "A Javascript implementation of zip for nodejs. Allows user to create or extract zip files both in memory or to/from disk", - "keywords": [ - "zip", - "methods", - "archive", - "unzip" - ], - "homepage": "http://github.com/cthackers/adm-zip", - "author": { - "name": "Nasca Iacob", - "email": "sy@another-d-mention.ro", - "url": "https://github.com/cthackers" - }, - "bugs": { - "url": "https://github.com/cthackers/adm-zip/issues", - "email": "sy@another-d-mention.ro" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/cthackers/adm-zip/master/MIT-LICENSE.txt" - } - ], - "main": "adm-zip.js", - "repository": { - "type": "git", - "url": "https://github.com/cthackers/adm-zip.git" - }, - "engines": { - "node": ">=0.3.0" - }, - "readme": "# ADM-ZIP for NodeJS\r\n\r\nADM-ZIP is a pure JavaScript implementation for zip data compression for [NodeJS](http://nodejs.org/). \r\n\r\n# Installation\r\n\r\nWith [npm](http://npmjs.org) do:\r\n\r\n $ npm install adm-zip\r\n\t\r\n## What is it good for?\r\nThe library allows you to:\r\n\r\n* decompress zip files directly to disk or in memory buffers\r\n* compress files and store them to disk in .zip format or in compressed buffers\r\n* update content of/add new/delete files from an existing .zip\r\n\r\n# Dependencies\r\nThere are no other nodeJS libraries that ADM-ZIP is dependent of\r\n\r\n# Examples\r\n\r\n## Basic usage\r\n```javascript\r\n\r\n\tvar AdmZip = require('adm-zip');\r\n\r\n\t// reading archives\r\n\tvar zip = new AdmZip(\"./my_file.zip\");\r\n\tvar zipEntries = zip.getEntries(); // an array of ZipEntry records\r\n\r\n\tzipEntries.forEach(function(zipEntry) {\r\n\t console.log(zipEntry.toString()); // outputs zip entries information\r\n\t\tif (zipEntry.entryName == \"my_file.txt\") {\r\n\t\t console.log(zipEntry.data.toString('utf8')); \r\n\t\t}\r\n\t});\r\n\t// outputs the content of some_folder/my_file.txt\r\n\tconsole.log(zip.readAsText(\"some_folder/my_file.txt\")); \r\n\t// extracts the specified file to the specified location\r\n\tzip.extractEntryTo(/*entry name*/\"some_folder/my_file.txt\", /*target path*/\"/home/me/tempfolder\", /*maintainEntryPath*/false, /*overwrite*/true);\r\n\t// extracts everything\r\n\tzip.extractAllTo(/*target path*/\"/home/me/zipcontent/\", /*overwrite*/true);\r\n\t\r\n\t\r\n\t// creating archives\r\n\tvar zip = new AdmZip();\r\n\t\r\n\t// add file directly\r\n\tzip.addFile(\"test.txt\", new Buffer(\"inner content of the file\"), \"entry comment goes here\");\r\n\t// add local file\r\n\tzip.addLocalFile(\"/home/me/some_picture.png\");\r\n\t// get everything as a buffer\r\n\tvar willSendthis = zip.toBuffer();\r\n\t// or write everything to disk\r\n\tzip.writeZip(/*target file name*/\"/home/me/files.zip\");\r\n\t\r\n\t\r\n\t// ... more examples in the wiki\r\n```\r\n\r\nFor more detailed information please check out the [wiki](https://github.com/cthackers/adm-zip/wiki).\r\n\r\n[![build status](https://secure.travis-ci.org/cthackers/adm-zip.png)](http://travis-ci.org/cthackers/adm-zip)\r\n", - "readmeFilename": "README.md", - "_id": "adm-zip@0.4.4", - "_from": "adm-zip@~0.4.3" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test.zip deleted file mode 100644 index d57bfc075800e3f49b0a3e0ceca9a199d82c4c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4189 zcmWIWW@h1H00FMbOb0LnN(cby#FCPt%%swi)Z%y`F3}HwtL8vcErLaLVsQ!{9hx|F z_@$OBgrruKD7fS&m*%GCmFSgJlprkrS%K<IIV{E`<s{~1E2L%Sq@wEmgQiy&x8D4m zl++?5*DIj;R~m~}kjv8$8buhG7&sWjfEtf9@wEjpF);jNW?)douQ4MtB_%Zv<m}kM zvwgD-1onLvSv)6-Gxz;o%Lgp08zvT-ot@agxsIc6L*|zJ`;wFHUJY|{nm6-({xYM_ zSF7^xvRpfykXBsReEN>h!4ktSn++dSWwfX5n<3HEoL1F5d!{YZ9ZQq4O_y1vGVZ?B zJ#^AQp|`wthxz7%5Ba3t$7V}EX+F30^i`jQoJ+3XzF6@?jE#Brug)7a@vc^vdnV3p zsCuuv<F>&L)dM*-GjhFU3~#KIo!)1&XS;j#R)5x}^WThE<P~2&GGzSO^YE3`?aTMq zY|J}dxuvdS;bxcGI3_V$(P(2quHruh#udhWf<_Tv_NM(U*?w-qS7}`noA4(qi{$To z%@%sSxNfHU6cg=b#XB~Ie(cX=4$at8{`kc^k+r44>6#P&OS(!$pS}6lG<%w<oR8ju ztL>~-2i|^Ob$*)stiqPfm3lm-Z$$!M+Me_IWcT1<uJNI>XIJ0*Zx|n7|2W|ETsxzq zj#mOSe`*EIJJfdd$Gsy3B36^xc`X)3tn^nXKX6L;k5H-<^Z!`Qxa$g`DqULQGTDoK zJ~?Zhvds|;_u}2D(c%`Q+sHCMr0Kd#Si#hkA1Tojxof)?&%K~p_-+Xkn`m&9O8Xqm z6@05EnY#ZJ$@C6<C$j28)AV1gp&Qx$h{^|~>zw!0N@6cre?nemla=Pi^Cl@q{+43f zW#(?oJtrR|p>=YmMv_P5!EZILo+*KXy|#A_8a@tDvTciB)T*QDrsTc$gJiPTQu_t& zfuAL22$|}pEKd=1-{R+TVk%3aYW;=_s~(<qEoiydKC529=~QH2OvSuUr+>!%V+3U) z?1@s3m_!+0l$w~5pO;fPnmR{QCp}ZAI{wr-nk+{P&4DO12_(zn{M=Mn6J)e5AFa!& zU6(U5i7?=5xvKz6Ob`II;Xwes9nZy}02XItkYL!5|8C>gzh@X>w1M9C*&u#^H^K(Y z);_Wg*jf*uwm-5h1>LM0K&Haz3BqA32-%{^0J8<;+5{j*_Xo%pto;RiR>Pct>_N<4 z1+vx4u~?1T$3V94z`N1~Ag`g*$o66OL}2!TqU<ql`yky5Wa|WGJzWg44xL7}4zu@y zY@Hk<X2>G-Wsog<a4hx|$TAoWOEeJ6us1GMq0z|5pak?+IDX3z{U2m&9S$Bm0J1hg z!TS(0jn7&=xV6eaYu^C7Ug)U@$&V0gQChfI?O*PH0&G8&#%I4e+<rx%{atK$?MH6I zV6*tcC!wPti(xcz7ApWPR^-HMF>)=1&Ef@>M>m5khS34utU#XtM+<<kf`x%$2R8$Q YI73NBX0ZYg<yL}w-3rP1xuBjq04-@*$N&HU diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/hidden_readonly.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/readonly.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt deleted file mode 100644 index 3c3ca551..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/New folder/somefile.txt +++ /dev/null @@ -1,17 +0,0 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/asd/New Text Document.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/attributes_test/blank file.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fast.zip deleted file mode 100644 index f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPu^^f#DxB1A{7ljTxCK zDXDoNXU7Jf?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)iF=(-fonmF@8a6u=O(1Aj^*S$ zTk-7o>`Q0FU+*myj^J;e>HC@Q`ObMwFOy!RCm;BFf$wXLnIQ}N*DrkG#?>(ezAN6Q zEH}P#Vb|;GmdS|@67PQ%tWIw}EPLhN?rYaN*ym<X@1E%-+p&K8;*TG6dDzUZCMSQc zRekAW>sIDu!hBwR$4!GBst0mvX5@NH7~WVZJH5}uX1;s%Mt-)a`EM&Z?3^wfUCew* z^6=5pZOivZ=EhD>+fvuDa5KwY9md)7X04r>!Cm{Oz_`M=Pf#i1%HFEK>+|L+zMR4P z$zJKxm7TorKHcp68o2+Aa8Qy)%Jsw)?Z@($*<M|!cz^8T-4ju-mz|rW{NK3C#O`YE z@9Z%B)wVNY99EWdmNbMO`MauL-TumB4&I{mjf(5%DrMQeU9fxUM@Ihq*MjTv;(qSC zRpa<?inHqXUnfM^107dBne9=*BpsHxxAUP!i59<9fzw8(`3~<IMb&?(cB!!a+a0oJ zmBT8JC#h-{-&{7H=IhjmOYE+0y)vOQCWGawP{#*GRf~6T6`yBKPdd3xN%)tDd-X!@ zLwCGcdAycwxgl$`Y=O;+pfH)2!Y#Tk8^cc=Dvo<0o^n*~gSpNEugGbFp-1>u#7(rj zaq`oWBiXAIr$!#yxbx|Xo?PR)<xau7dpd2}TAsd{dPQ?W$08-E-K(3EPpx#V;n_b| zY?Fetb!0|sYLDL3e-XA_UB?ehS)nmu@1#nZz&Se_l{uQKS@$mvxRUK4FMd#P6@SJr zP7cm=$)tysUH;Fjf3m|eF=pD-BPMOe7o{eq<mcs7jwaI4L^=S8R2_dJ9Zj91Md$z) zp#)NAaei(ptX(o%!H-t(G^*eknd}*Gwdz%X<tGS$+V>!U-UjDlPymZFGDt9l|M}3p z*6=JNjDGOyJ(wThjoSth24owsH7P*-0%TiM+99^UXyF71A7Trx-UG}QkZTiw7~LNr zTd?*ekgYE0X5H}h?-@pz)i4^_YRn!7venD6SdH5MK(_C|yV3<9`<N^tUWC!e0gBm6 zf!PO&vd6gXgLFNRtrM8_bTP;}({&K*U^KFI=>0xvl=zcl#0*)aeh#u_PJe%b69<fj zB^rcfm@Q6KxMfN}e}&_>4AD12w$|a`!2=*a8asUjTMwi0S*r)PRvBpRXJEGsJ@p{@ z5n?S$vlpBFtAf9Q?T69$>{o}|uL!h%1{+@cky|v_ELKeY4z?IZ6KAmk&|))AycQ!@ dR@f|tMKp{K@MZ=2gn@wz2rF0^7_M-GcmP+qZUz7V diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/fastest.zip deleted file mode 100644 index f4ed17b98c9d7bcd21efc4523ce75fbe2b071d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPu^^f#DxB1A{7ljTxCK zDXDoNXU7Jf?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)iF=(-fonmF@8a6u=O(1Aj^*S$ zTk-7o>`Q0FU+*myj^J;e>HC@Q`ObMwFOy!RCm;BFf$wXLnIQ}N*DrkG#?>(ezAN6Q zEH}P#Vb|;GmdS|@67PQ%tWIw}EPLhN?rYaN*ym<X@1E%-+p&K8;*TG6dDzUZCMSQc zRekAW>sIDu!hBwR$4!GBst0mvX5@NH7~WVZJH5}uX1;s%Mt-)a`EM&Z?3^wfUCew* z^6=5pZOivZ=EhD>+fvuDa5KwY9md)7X04r>!Cm{Oz_`M=Pf#i1%HFEK>+|L+zMR4P z$zJKxm7TorKHcp68o2+Aa8Qy)%Jsw)?Z@($*<M|!cz^8T-4ju-mz|rW{NK3C#O`YE z@9Z%B)wVNY99EWdmNbMO`MauL-TumB4&I{mjf(5%DrMQeU9fxUM@Ihq*MjTv;(qSC zRpa<?inHqXUnfM^107dBne9=*BpsHxxAUP!i59<9fzw8(`3~<IMb&?(cB!!a+a0oJ zmBT8JC#h-{-&{7H=IhjmOYE+0y)vOQCWGawP{#*GRf~6T6`yBKPdd3xN%)tDd-X!@ zLwCGcdAycwxgl$`Y=O;+pfH)2!Y#Tk8^cc=Dvo<0o^n*~gSpNEugGbFp-1>u#7(rj zaq`oWBiXAIr$!#yxbx|Xo?PR)<xau7dpd2}TAsd{dPQ?W$08-E-K(3EPpx#V;n_b| zY?Fetb!0|sYLDL3e-XA_UB?ehS)nmu@1#nZz&Se_l{uQKS@$mvxRUK4FMd#P6@SJr zP7cm=$)tysUH;Fjf3m|eF=pD-BPMOe7o{eq<mcs7jwaI4L^=S8R2_dJ9Zj91Md$z) zp#)NAaei(ptX(o%!H-t(G^*eknd}*Gwdz%X<tGS$+V>!U-UjDlPymZFGDt9l|M}3p z*6=JNjDGOyJ(wThjoSth24owsH7P*-0%TiM+99^UXyF71A7Trx-UG}QkZTiw7~LNr zTd?*ekgYE0X5H}h?-@pz)i4^_YRn!7venD6SdH5MK(_C|yV3<9`<N^tUWC!e0gBm6 zf!PO&vd6gXgLFNRtrM8_bTP;}({&K*U^KFI=>0xvl=zcl#0*)aeh#u_PJe%b69<fj zB^rcfm@Q6KxMfN}e}&_>4AD12w$|a`!2=*a8asUjTMwi0S*r)PRvBpRXJEGsJ@p{@ z5n?S$vlpBFtAf9Q?T69$>{o}|uL!h%1{+@cky|v_ELKeY4z?IZ6KAmk&|))AycQ!@ dR@f|tMKp{K@MZ=2gn@wz2rF0^7_M-GcmP+qZUz7V diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/linux_arc.zip deleted file mode 100644 index 188eccbe8bdb2b5b288857de8a397b77ff8e7414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmWIWW@Zs#U|`^2P@7ZZFx{>BaWati9*FrEWEe_Pi%axDgkExfURr1fCj+yAMzOy( z5SLbPGcdBeU}j(d6I0I|<ZLkDakyB$`~_1P^FiAq&Q}7Me3dg@3aUhxT$mmAzunx; zNHaw3`LPw7^8fM5uJNfXYM*p)&V}!93wvx9PusoumgEef6sbiXJ|`SBbq<M6)!}lx z)U@^AVV-W&bHe)s#RGs&<pMg4fk7PTR4@Zdu)>@QcA+THb;_774De=Tl4Hi@R|&9D zj6iZrBZ!Iab5@AY(R>Xt6PKePW->4cF#L5~4Kp(|1ZWh<i5Nz)vVkmS0>b$~`W1-7 F004HEX6gU{ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/maximum.zip deleted file mode 100644 index 86a8ec776107c075ce2c7f803472aa97dc25cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4086 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKug#8$f#DxB1A{7ljTxCK zDXDoNXNLrOXB{!%x%*orDNL7T*LzK_x2!VJeW5bi5k-gZ?Avsb=Zu!4|9kcN#M_=N zJD50Aa(3KH%-*MUj5Wxa#ZO>UzO>!~o_+To9#C_85NaE`O1grh=FZ&QEHlZ6OP1$n zoEF@}!TxC(`$Xsa8&_R_IDN%}1GCdwZht?zW3T_@j(rxZ3^uT{sAoP~cOhU)poA26 z0Pj-w(;r&6-<DYNR4vwBZ6W-&>GYYM2hL5r^yAT*(l1*lJYiMheYtftZz>OSSaPqN z{2hl4BI#T$OmpHcos|uc+iv*(wTqEj`m?`VIXk`ghHgG`vXke~<&Wacw^G)r>$RQ_ z)Gg>Wkvh4&*q-g@)c*x#Grum_6m>;1(eA*<nyc(8H>Wdc$FU#Iu+Qs}E4{VhzkYX4 zkaAn1#-8(<N7fv^<JdVh;>yMz9sgOW(_5XqZ~qRqG+=f<I9vVCzUA}h$J_t;eVe_e zw(k3$`s6rUd!dlX9Cy_RT&_=#H8RC)*tM@`!)Dh^wtvosw;4AvJY$ZtXcv63RpTnx zBIbNm!^+;zbD|#XIrL<o4qK<WS^KO8_IrUoTMwIEvfOo~Q~0(aA9wV-Gp-^6T&q6b z5z?Bn%vGzhrXc6po)yb4xZPYg@0IC-+1x7xgI@(Qn{_YRYd>SD%&BaXj!8_Fg-RYh z!HeWd`ApTH<hC?OuPfPgMAJ%TUpagAlDJouFY?W%y-BvPo4rfspv&9DyE`v&tcdyT zBsMiyW=UkZM|(;9vdKm3q~_@<RlN#($=KpBV@~MZKPCHK%foUiW&+eBCIQA5r6#82 z=jBw6ro_>dNUM~njz1-iCc)9dkk*AEfh1U*pPLG6MvT_SqxCT*^)VxpJp-<mwhFK$ z1OZT+8wAkX#as*uU~xtU35M`LAG+5Xo@Ip54_>_o^8>tb+aSV#Yy-9y0I02wY>P@e z#1<GWoB-iNY{Au{huH#hZ2}OZ`vYVP*7iNJ)dk(G8@~QM!w9n)Mk8B|*$Y6ndN~%W zQTqhQ_8oXvx&UM!lO@E9Fd8{PF?$X$`#@3l7`J_p?f|lN0<)ej23cpi4q_dQMz#*U zFD8u=e{zhNA&b=aK(@^3?@w^zfYGo-gRl&<fv5_%ObO_(aQv1b`YXuRIvhNB0OUtw zr>|h^VKhE#_2AYj1FgLQ>?)zB9wa|PtVL<1VzYl$@HepiFdCoz>TvrNf%Ye{;k6&R zZGz2W#nkU$i(xcz7ApWPe#(K@V&obLo5iq*hS34utU#YIFmM531q%a11~-TY0JSC= A-v9sr diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/normal.zip deleted file mode 100644 index b4602c94ee000ee54c71c9302b9db956b3fd9f0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4170 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKuPvB~f#DxB1A{7ljTxCK zDXDoNXQu|9?VD{Nu<x_T;yF>Ax$pN{9*kVW<aX?)i93_p4ke3CzKi$N9zW;5dzFZ0 zMcTgoGox;9F7ul$xurQUvUJbEliN0j*K#$7a-Ctgd*jw*uY=MV&!uCglyVrj-+vW( zUOi)>@$~4X$#pJL>1_46YY#n?i+b*}Jo-uVy^_<BXZL+|%)c<X=)=)|uCTMr8-Gc; zR$cY$oTvC@p6-q;`&mbuL(fIuW$hFBa>v)ZUoP&g=ls%;9f#N2_1;tU*kv)*ZNBCl z-}UVu)+enwT{LHlbnuJP1$KIJ-FhO{rpj7Rex&JGnEG-WWqgs{^slshzT@je^A-Oi zCUQ@GopEk{TH)oB8*WIdh93FC7A_`Qzw%tNY9D{vtTUpE7rxwiU2)>?c`8EDZ!i7{ zGxY9Z-~2JdG-8MRgHO9&ZGL*JY}SJna@@hTbt((L^dvX$`CL(P*RR0P?8RU4&%9rY zxp?oNvK17GVBY#bUT3l78jt4pp<LB!#rq~V2sed%VyNL>Vs(H&ELHQu{H+UonPXJe ztl@Uscx;vL#?ujB`Ld6M#yB1HQkxi3<Zw`3bg{33_R1SieyC)J8B}^q)}0*s;7$=E zOO}$#?KfOX3+{E!G8cJjyku>}R?!ts-ccvbLyk&a;IDC*Jb4jE5a-Q>)q;Nxwq0jG zc(0h#Qs1cSsHtmuO6&y%QRiH)L#ITHf+m$q1<FLaG$r$wZ#bW+!D`#Izc*#iAqkIo z&&Km2!CXI^-bFeGD>RuVDn=hXZE~=bjfG!@G5q2Qp>W>+aV+kSs;^%VS4^2Aa^kAO zkIO&r{bPV-U(8ggM@*`WFG@{J$<NEF98I31$&;?hQyqWu98H&_#pZw%n*`Ejaei(p ztQ9g^osU-MRIkn%nd}*Gwcb^LWhMxK+VLQO-qz+~PymZFGDt9l|M}3p*6=JNjDGOy zJ(wThjoSth24owsH6TFke`H%!+99^UXyF71A7TrxUINS(kZTiw7~LNrTd?*SkgYE0 zX5H}h?-@pz)i4^_YRsMmvenD6SdH4xK(_C|yV3<9`<N^tUWC!e0gBlhf!PO&vd6gX zgLE;FtrM8_bTP;}({&K*U^KFI=>0osl=zcl#0*)a{tU8ZPJe%b69<fjB^rcfnC(kd zxMfN}e}&_>4ABQdw$|a`!2=*a8asUjTMwi0S*r)PRvBpRTVVGKJ@p{@5n?S$BNv<f ztAf9Q?T69$>{o}|uL!iihYhd&$gLP`7AvNH2U`rIiL+P%Xt4?>UW<{dDQp(QA{s^q Vc(Ve1!oa`<gcU3d412giJOGZ1Gxh)g diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/store.zip deleted file mode 100644 index e2add30dc0e3129dc89e20a71abe7314052d0002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5878 zcmeI0PmkMF5Wv0tgTRNXf(jv3RMVxaQprk%5C^!hPU38=b!^La8Wst)PW-ZY;MgnM zVRvu90S^5Fh!YYABqS<6LMw5E?|?vDH~^P|Dz%82=Q!(Rlh8ZPt~2rToB7SmvqtZY zy?gfDC5b-ozISh1{Fr`SMCoT)!uykqrML0QZrUqnla0mMei{f3Sy+7bW4<kZOuufR zT&7{NL-5#92F-Xd8M7#>Wk(r-b2E=Vnm2Q0iJ5-rM<2kDhpf=eLwvlT`|@htI1E^_ zCf>_SRLS$<iDK^Wix~FzpIrF#pR<xg*VcN)5f1_u3Ab4?=4r~~2zUx3mazUY>?eMd zu|R=g!WhIu7>xX6pDB>V;77-Bz>*Xd;(q4yh)4V2!yrC5mT_h_LNjSR%ntp8;p71P zG>r$`M|%)VbM0ruqs*o7YBpl9=}t8^ZwN@h{7~i*T4PW=f<vB-;z<Sxz9R`AkPQWR zGzcdF`A|F#`Iu)pfz%VeKgv=WJ)fi)0r{!GI1c!bBokpBO!^^DM+yX-Ow+5VKuUuH z7LgXlaWhUJWnn0z1&)4;SWmnYb0|NU8{|(@l+wuIC?3y8!c%!TNg_mIQgB8PW6A{a zeKyEwggnPZ4&y@#Z4gHRr+Cx1WZA<<en0+@iC9E<5XBj~D$*?$Ksb@F>hw`M^1~4N zY??6S@<^tkA{>lv(oZv7c<zUA5GR7S7-kLmZ4F$j<@HoY1KkDNv2N*2tqGf|i}#xf z^mMOnbv?itj%s>)V6{Ls_h45yn+j;}*pBA9U^%khu?=0rG2Lt!-KK8tKppi=%L7C2 z=pGvNEFj?2l&+y(3p$$9XrpDdt{b|yr^qecGs$MlazF)Jbv(V%HB<-eu47xShWI9$ zHFdM)AVuqFrdLBMj)8UyZ@_J<hCwJ<?V|S%`3DWl-gESwwg+v?XlgiE*U&SyZfH3Q zgK8M6-cg{bcGMm6&H)RpI5JJky@Os`qaos{_}}n!%cL+GmgzZot6-FlH&gBDuBL$M z=q@Fs<yaj>rgWkPT1O+OXKJ|>O0`JPY(;PiC9I1<7rsDKQw_9*%VW+hU+tveEf$d4 z(-e@~3G;(E3XiKwQdN?wl2nxhi-xpVNv^N2BvlEiHY3$$q}q&VYc?bQQ9{yq%x1^1 z>O7-Bb)Eq_tySll|KE9L<ILOAs!r22+MeKtdQS9N><h^fi17{SC8_uL&%58g_Txq& zfBNkYac}RgCR~!rgk>iv>Q$8~*FMWBg?!;oexFlTb+if!d3y)1#W;wvw7*qGAKX3v z-NPq8Y!v81meHrXU}f~zOVIN@u`=)e?~^ZycjnDJ#6p%6db)E~@My_?S<TDaVP)LK zFMj=saBtkpafK}77JHGG=hpAa#_7zKdT(V|{mCQoaul+7Y09}=+!k-mV4E0MZ$0d! zUsuL%KX`DTVtl>+P~Z!>4qKaHUqS5W=hw!VW9Lr!%lO~8e+hme*YU5<_*aqt^K)zY w<+H&u@KyG=02lJ<z<}Vb3v0pU9mO(mvCxIIch5hARwWt#j?PKa=y|&P7yOI$IRF3v diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/assets/ultra.zip deleted file mode 100644 index 86a8ec776107c075ce2c7f803472aa97dc25cbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4086 zcmWIWW@Zs#0D-93bq-(#ln?;Yi6tdPnMtK3sm1X?T%sR<Q#Hs8bk&K)DPSF3U=ukS zGabMTD4_|YvFY$jEmsIhtte4&$xklLP0cIOE2$^}Sqw4eX9KD+a#)N>%1O-2R!Gat zNrmZ!c<~RKURm6F^K(*Ci}3hY8jDtt%hOObaxjPiy?vyKug#8$f#DxB1A{7ljTxCK zDXDoNXNLrOXB{!%x%*orDNL7T*LzK_x2!VJeW5bi5k-gZ?Avsb=Zu!4|9kcN#M_=N zJD50Aa(3KH%-*MUj5Wxa#ZO>UzO>!~o_+To9#C_85NaE`O1grh=FZ&QEHlZ6OP1$n zoEF@}!TxC(`$Xsa8&_R_IDN%}1GCdwZht?zW3T_@j(rxZ3^uT{sAoP~cOhU)poA26 z0Pj-w(;r&6-<DYNR4vwBZ6W-&>GYYM2hL5r^yAT*(l1*lJYiMheYtftZz>OSSaPqN z{2hl4BI#T$OmpHcos|uc+iv*(wTqEj`m?`VIXk`ghHgG`vXke~<&Wacw^G)r>$RQ_ z)Gg>Wkvh4&*q-g@)c*x#Grum_6m>;1(eA*<nyc(8H>Wdc$FU#Iu+Qs}E4{VhzkYX4 zkaAn1#-8(<N7fv^<JdVh;>yMz9sgOW(_5XqZ~qRqG+=f<I9vVCzUA}h$J_t;eVe_e zw(k3$`s6rUd!dlX9Cy_RT&_=#H8RC)*tM@`!)Dh^wtvosw;4AvJY$ZtXcv63RpTnx zBIbNm!^+;zbD|#XIrL<o4qK<WS^KO8_IrUoTMwIEvfOo~Q~0(aA9wV-Gp-^6T&q6b z5z?Bn%vGzhrXc6po)yb4xZPYg@0IC-+1x7xgI@(Qn{_YRYd>SD%&BaXj!8_Fg-RYh z!HeWd`ApTH<hC?OuPfPgMAJ%TUpagAlDJouFY?W%y-BvPo4rfspv&9DyE`v&tcdyT zBsMiyW=UkZM|(;9vdKm3q~_@<RlN#($=KpBV@~MZKPCHK%foUiW&+eBCIQA5r6#82 z=jBw6ro_>dNUM~njz1-iCc)9dkk*AEfh1U*pPLG6MvT_SqxCT*^)VxpJp-<mwhFK$ z1OZT+8wAkX#as*uU~xtU35M`LAG+5Xo@Ip54_>_o^8>tb+aSV#Yy-9y0I02wY>P@e z#1<GWoB-iNY{Au{huH#hZ2}OZ`vYVP*7iNJ)dk(G8@~QM!w9n)Mk8B|*$Y6ndN~%W zQTqhQ_8oXvx&UM!lO@E9Fd8{PF?$X$`#@3l7`J_p?f|lN0<)ej23cpi4q_dQMz#*U zFD8u=e{zhNA&b=aK(@^3?@w^zfYGo-gRl&<fv5_%ObO_(aQv1b`YXuRIvhNB0OUtw zr>|h^VKhE#_2AYj1FgLQ>?)zB9wa|PtVL<1VzYl$@HepiFdCoz>TvrNf%Ye{;k6&R zZGz2W#nkU$i(xcz7ApWPe#(K@V&obLo5iq*hS34utU#YIFmM531q%a11~-TY0JSC= A-v9sr diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js deleted file mode 100644 index 70acb517..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/test/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var Attr = require("../util").FileAttr, - Zip = require("../adm-zip"), - fs = require("fs"); - -//zip.addLocalFile("./test/readonly.txt"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js deleted file mode 100644 index 05480541..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/constants.js +++ /dev/null @@ -1,84 +0,0 @@ -module.exports = { - /* The local file header */ - LOCHDR : 30, // LOC header size - LOCSIG : 0x04034b50, // "PK\003\004" - LOCVER : 4, // version needed to extract - LOCFLG : 6, // general purpose bit flag - LOCHOW : 8, // compression method - LOCTIM : 10, // modification time (2 bytes time, 2 bytes date) - LOCCRC : 14, // uncompressed file crc-32 value - LOCSIZ : 18, // compressed size - LOCLEN : 22, // uncompressed size - LOCNAM : 26, // filename length - LOCEXT : 28, // extra field length - - /* The Data descriptor */ - EXTSIG : 0x08074b50, // "PK\007\008" - EXTHDR : 16, // EXT header size - EXTCRC : 4, // uncompressed file crc-32 value - EXTSIZ : 8, // compressed size - EXTLEN : 12, // uncompressed size - - /* The central directory file header */ - CENHDR : 46, // CEN header size - CENSIG : 0x02014b50, // "PK\001\002" - CENVEM : 4, // version made by - CENVER : 6, // version needed to extract - CENFLG : 8, // encrypt, decrypt flags - CENHOW : 10, // compression method - CENTIM : 12, // modification time (2 bytes time, 2 bytes date) - CENCRC : 16, // uncompressed file crc-32 value - CENSIZ : 20, // compressed size - CENLEN : 24, // uncompressed size - CENNAM : 28, // filename length - CENEXT : 30, // extra field length - CENCOM : 32, // file comment length - CENDSK : 34, // volume number start - CENATT : 36, // internal file attributes - CENATX : 38, // external file attributes (host system dependent) - CENOFF : 42, // LOC header offset - - /* The entries in the end of central directory */ - ENDHDR : 22, // END header size - ENDSIG : 0x06054b50, // "PK\005\006" - ENDSUB : 8, // number of entries on this disk - ENDTOT : 10, // total number of entries - ENDSIZ : 12, // central directory size in bytes - ENDOFF : 16, // offset of first CEN header - ENDCOM : 20, // zip file comment length - - /* Compression methods */ - STORED : 0, // no compression - SHRUNK : 1, // shrunk - REDUCED1 : 2, // reduced with compression factor 1 - REDUCED2 : 3, // reduced with compression factor 2 - REDUCED3 : 4, // reduced with compression factor 3 - REDUCED4 : 5, // reduced with compression factor 4 - IMPLODED : 6, // imploded - // 7 reserved - DEFLATED : 8, // deflated - ENHANCED_DEFLATED: 9, // enhanced deflated - PKWARE : 10,// PKWare DCL imploded - // 11 reserved - BZIP2 : 12, // compressed using BZIP2 - // 13 reserved - LZMA : 14, // LZMA - // 15-17 reserved - IBM_TERSE : 18, // compressed using IBM TERSE - IBM_LZ77 : 19, //IBM LZ77 z - - /* General purpose bit flag */ - FLG_ENC : 0, // encripted file - FLG_COMP1 : 1, // compression option - FLG_COMP2 : 2, // compression option - FLG_DESC : 4, // data descriptor - FLG_ENH : 8, // enhanced deflation - FLG_STR : 16, // strong encryption - FLG_LNG : 1024, // language encoding - FLG_MSK : 4096, // mask header values - - /* Load type */ - FILE : 0, - BUFFER : 1, - NONE : 2 -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js deleted file mode 100644 index db5d69e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/errors.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - /* Header error messages */ - "INVALID_LOC" : "Invalid LOC header (bad signature)", - "INVALID_CEN" : "Invalid CEN header (bad signature)", - "INVALID_END" : "Invalid END header (bad signature)", - - /* ZipEntry error messages*/ - "NO_DATA" : "Nothing to decompress", - "BAD_CRC" : "CRC32 checksum failed", - "FILE_IN_THE_WAY" : "There is a file in the way: %s", - "UNKNOWN_METHOD" : "Invalid/unsupported compression method", - - /* Inflater error messages */ - "AVAIL_DATA" : "inflate::Available inflate data did not terminate", - "INVALID_DISTANCE" : "inflate::Invalid literal/length or distance code in fixed or dynamic block", - "TO_MANY_CODES" : "inflate::Dynamic block code description: too many length or distance codes", - "INVALID_REPEAT_LEN" : "inflate::Dynamic block code description: repeat more than specified lengths", - "INVALID_REPEAT_FIRST" : "inflate::Dynamic block code description: repeat lengths with no first length", - "INCOMPLETE_CODES" : "inflate::Dynamic block code description: code lengths codes incomplete", - "INVALID_DYN_DISTANCE": "inflate::Dynamic block code description: invalid distance code lengths", - "INVALID_CODES_LEN": "inflate::Dynamic block code description: invalid literal/length code lengths", - "INVALID_STORE_BLOCK" : "inflate::Stored block length did not match one's complement", - "INVALID_BLOCK_TYPE" : "inflate::Invalid block type (type == 3)", - - /* ADM-ZIP error messages */ - "CANT_EXTRACT_FILE" : "Could not extract the file", - "CANT_OVERRIDE" : "Target file already exists", - "NO_ZIP" : "No zip file was loaded", - "NO_ENTRY" : "Entry doesn't exist", - "DIRECTORY_CONTENT_ERROR" : "A directory cannot have content", - "FILE_NOT_FOUND" : "File not found: %s", - "NOT_IMPLEMENTED" : "Not implemented", - "INVALID_FILENAME" : "Invalid filename", - "INVALID_FORMAT" : "Invalid or unsupported zip format. No END header found" -}; \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js deleted file mode 100644 index 2191ec1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/fattr.js +++ /dev/null @@ -1,84 +0,0 @@ -var fs = require("fs"), - pth = require("path"); - -fs.existsSync = fs.existsSync || pth.existsSync; - -module.exports = function(/*String*/path) { - - var _path = path || "", - _permissions = 0, - _obj = newAttr(), - _stat = null; - - function newAttr() { - return { - directory : false, - readonly : false, - hidden : false, - executable : false, - mtime : 0, - atime : 0 - } - } - - if (_path && fs.existsSync(_path)) { - _stat = fs.statSync(_path); - _obj.directory = _stat.isDirectory(); - _obj.mtime = _stat.mtime; - _obj.atime = _stat.atime; - _obj.executable = !!(1 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); - _obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); - _obj.hidden = pth.basename(_path)[0] === "."; - } else { - console.warn("Invalid path: " + _path) - } - - return { - - get directory () { - return _obj.directory; - }, - - get readOnly () { - return _obj.readonly; - }, - - get hidden () { - return _obj.hidden; - }, - - get mtime () { - return _obj.mtime; - }, - - get atime () { - return _obj.atime; - }, - - - get executable () { - return _obj.executable; - }, - - decodeAttributes : function(val) { - - }, - - encodeAttributes : function (val) { - - }, - - toString : function() { - return '{\n' + - '\t"path" : "' + _path + ",\n" + - '\t"isDirectory" : ' + _obj.directory + ",\n" + - '\t"isReadOnly" : ' + _obj.readonly + ",\n" + - '\t"isHidden" : ' + _obj.hidden + ",\n" + - '\t"isExecutable" : ' + _obj.executable + ",\n" + - '\t"mTime" : ' + _obj.mtime + "\n" + - '\t"aTime" : ' + _obj.atime + "\n" + - '}'; - } - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js deleted file mode 100644 index 935fc1a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/index.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = require("./utils"); -module.exports.Constants = require("./constants"); -module.exports.Errors = require("./errors"); -module.exports.FileAttr = require("./fattr"); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js deleted file mode 100644 index b14db8c1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/util/utils.js +++ /dev/null @@ -1,145 +0,0 @@ -var fs = require("fs"), - pth = require('path'); - -fs.existsSync = fs.existsSync || pth.existsSync; - -module.exports = (function() { - - var crcTable = [], - Constants = require('./constants'), - Errors = require('./errors'), - - PATH_SEPARATOR = pth.normalize("/"); - - - function mkdirSync(/*String*/path) { - var resolvedPath = path.split(PATH_SEPARATOR)[0]; - path.split(PATH_SEPARATOR).forEach(function(name) { - if (!name || name.substr(-1,1) == ":") return; - resolvedPath += PATH_SEPARATOR + name; - var stat; - try { - stat = fs.statSync(resolvedPath); - } catch (e) { - fs.mkdirSync(resolvedPath); - } - if (stat && stat.isFile()) - throw Errors.FILE_IN_THE_WAY.replace("%s", resolvedPath); - }); - } - - function findSync(/*String*/root, /*RegExp*/pattern, /*Boolean*/recoursive) { - if (typeof pattern === 'boolean') { - recoursive = pattern; - pattern = undefined; - } - var files = []; - fs.readdirSync(root).forEach(function(file) { - var path = pth.join(root, file); - - if (fs.statSync(path).isDirectory() && recoursive) - files = files.concat(findSync(path, pattern, recoursive)); - - if (!pattern || pattern.test(path)) { - files.push(pth.normalize(path) + (fs.statSync(path).isDirectory() ? PATH_SEPARATOR : "")); - } - - }); - return files; - } - - return { - makeDir : function(/*String*/path) { - mkdirSync(path); - }, - - crc32 : function(buf) { - var b = new Buffer(4); - if (!crcTable.length) { - for (var n = 0; n < 256; n++) { - var c = n; - for (var k = 8; --k >= 0;) // - if ((c & 1) != 0) { c = 0xedb88320 ^ (c >>> 1); } else { c = c >>> 1; } - if (c < 0) { - b.writeInt32LE(c, 0); - c = b.readUInt32LE(0); - } - crcTable[n] = c; - } - } - var crc = 0, off = 0, len = buf.length, c1 = ~crc; - while(--len >= 0) c1 = crcTable[(c1 ^ buf[off++]) & 0xff] ^ (c1 >>> 8); - crc = ~c1; - b.writeInt32LE(crc & 0xffffffff, 0); - return b.readUInt32LE(0); - }, - - methodToString : function(/*Number*/method) { - switch (method) { - case Constants.STORED: - return 'STORED (' + method + ')'; - case Constants.DEFLATED: - return 'DEFLATED (' + method + ')'; - default: - return 'UNSUPPORTED (' + method + ')' - } - - }, - - writeFileTo : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr) { - if (fs.existsSync(path)) { - if (!overwrite) - return false; // cannot overwite - - var stat = fs.statSync(path); - if (stat.isDirectory()) { - return false; - } - } - var folder = pth.dirname(path); - if (!fs.existsSync(folder)) { - mkdirSync(folder); - } - - var fd; - try { - fd = fs.openSync(path, 'w', 438); // 0666 - } catch(e) { - fs.chmodSync(path, 438); - fd = fs.openSync(path, 'w', 438); - } - if (fd) { - fs.writeSync(fd, content, 0, content.length, 0); - fs.closeSync(fd); - } - fs.chmodSync(path, attr || 438); - return true; - }, - - findFiles : function(/*String*/path) { - return findSync(path, true); - }, - - getAttributes : function(/*String*/path) { - - }, - - setAttributes : function(/*String*/path) { - - }, - - toBuffer : function(input) { - if (Buffer.isBuffer(input)) { - return input; - } else { - if (input.length == 0) { - return new Buffer(0) - } - return new Buffer(input, 'utf8'); - } - }, - - Constants : Constants, - Errors : Errors - } -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js deleted file mode 100644 index 02c31725..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipEntry.js +++ /dev/null @@ -1,224 +0,0 @@ -var Utils = require("./util"), - Headers = require("./headers"), - Constants = Utils.Constants, - Methods = require("./methods"); - -module.exports = function (/*Buffer*/input) { - - var _entryHeader = new Headers.EntryHeader(), - _entryName = new Buffer(0), - _comment = new Buffer(0), - _isDirectory = false, - uncompressedData = null, - _extra = new Buffer(0); - - function getCompressedDataFromZip() { - if (!input || !Buffer.isBuffer(input)) { - return new Buffer(0); - } - _entryHeader.loadDataHeaderFromBinary(input); - return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize) - } - - function crc32OK(data) { - // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written - if (_entryHeader.flags & 0x8 != 0x8) { - if (Utils.crc32(data) != _entryHeader.crc) { - return false; - } - } else { - // @TODO: load and check data descriptor header - // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure - // (optionally preceded by a 4-byte signature) immediately after the compressed data: - } - return true; - } - - function decompress(/*Boolean*/async, /*Function*/callback) { - if (_isDirectory) { - if (async && callback) { - callback(new Buffer(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error. - } - return new Buffer(0); - } - - var compressedData = getCompressedDataFromZip(); - if (compressedData.length == 0) { - if (async && callback) callback(compressedData, Utils.Errors.NO_DATA);//si added error. - return compressedData; - } - - var data = new Buffer(_entryHeader.size); - data.fill(0); - - switch (_entryHeader.method) { - case Utils.Constants.STORED: - compressedData.copy(data); - if (!crc32OK(data)) { - if (async && callback) callback(data, Utils.Errors.BAD_CRC);//si added error - return Utils.Errors.BAD_CRC; - } else {//si added otherwise did not seem to return data. - if (async && callback) callback(data); - return data; - } - break; - case Utils.Constants.DEFLATED: - var inflater = new Methods.Inflater(compressedData); - if (!async) { - inflater.inflate(data); - if (!crc32OK(data)) { - console.warn(Utils.Errors.BAD_CRC + " " + _entryName.toString()) - } - return data; - } else { - inflater.inflateAsync(function(result) { - result.copy(data, 0); - if (crc32OK(data)) { - if (callback) callback(data, Utils.Errors.BAD_CRC); //si added error - } else { //si added otherwise did not seem to return data. - if (callback) callback(data); - } - }) - } - break; - default: - if (async && callback) callback(new Buffer(0), Utils.Errors.UNKNOWN_METHOD); - return Utils.Errors.UNKNOWN_METHOD; - } - } - - function compress(/*Boolean*/async, /*Function*/callback) { - if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) { - // no data set or the data wasn't changed to require recompression - if (async && callback) callback(getCompressedDataFromZip()); - return getCompressedDataFromZip(); - } - - if (uncompressedData.length && !_isDirectory) { - var compressedData; - // Local file header - switch (_entryHeader.method) { - case Utils.Constants.STORED: - _entryHeader.compressedSize = _entryHeader.size; - - compressedData = new Buffer(uncompressedData.length); - uncompressedData.copy(compressedData); - - if (async && callback) callback(compressedData); - return compressedData; - - break; - default: - case Utils.Constants.DEFLATED: - - var deflater = new Methods.Deflater(uncompressedData); - if (!async) { - var deflated = deflater.deflate(); - _entryHeader.compressedSize = deflated.length; - return deflated; - } else { - deflater.deflateAsync(function(data) { - compressedData = new Buffer(data.length); - _entryHeader.compressedSize = data.length; - data.copy(compressedData); - callback && callback(compressedData); - }) - } - deflater = null; - break; - } - } else { - if (async && callback) { - callback(new Buffer(0)); - } else { - return new Buffer(0); - } - } - } - - return { - get entryName () { return _entryName.toString(); }, - get rawEntryName() { return _entryName; }, - set entryName (val) { - _entryName = Utils.toBuffer(val); - var lastChar = _entryName[_entryName.length - 1]; - _isDirectory = (lastChar == 47) || (lastChar == 92); - _entryHeader.fileNameLength = _entryName.length; - }, - - get extra () { return _extra; }, - set extra (val) { - _extra = val; - _entryHeader.extraLength = val.length; - }, - - get comment () { return _comment.toString(); }, - set comment (val) { - _comment = Utils.toBuffer(val); - _entryHeader.commentLength = _comment.length; - }, - - get name () { var n = _entryName.toString(); return _isDirectory ? n.substr(n.length - 1).split("/").pop() : n.split("/").pop(); }, - get isDirectory () { return _isDirectory }, - - getCompressedData : function() { - return compress(false, null) - }, - - getCompressedDataAsync : function(/*Function*/callback) { - compress(true, callback) - }, - - setData : function(value) { - uncompressedData = Utils.toBuffer(value); - if (!_isDirectory && uncompressedData.length) { - _entryHeader.size = uncompressedData.length; - _entryHeader.method = Utils.Constants.DEFLATED; - _entryHeader.crc = Utils.crc32(value); - } else { // folders and blank files should be stored - _entryHeader.method = Utils.Constants.STORED; - } - }, - - getData : function() { - return decompress(false, null); - }, - - getDataAsync : function(/*Function*/callback) { - decompress(true, callback) - }, - - set header(/*Buffer*/data) { - _entryHeader.loadFromBinary(data); - }, - - get header() { - return _entryHeader; - }, - - packHeader : function() { - var header = _entryHeader.entryHeaderToBinary(); - // add - _entryName.copy(header, Utils.Constants.CENHDR); - if (_entryHeader.extraLength) { - _extra.copy(header, Utils.Constants.CENHDR + _entryName.length) - } - if (_entryHeader.commentLength) { - _comment.copy(header, Utils.Constants.CENHDR + _entryName.length + _entryHeader.extraLength, _comment.length); - } - return header; - }, - - toString : function() { - return '{\n' + - '\t"entryName" : "' + _entryName.toString() + "\",\n" + - '\t"name" : "' + _entryName.toString().split("/").pop() + "\",\n" + - '\t"comment" : "' + _comment.toString() + "\",\n" + - '\t"isDirectory" : ' + _isDirectory + ",\n" + - '\t"header" : ' + _entryHeader.toString().replace(/\t/mg, "\t\t") + ",\n" + - '\t"compressedData" : <' + (input && input.length + " bytes buffer" || "null") + ">\n" + - '\t"data" : <' + (uncompressedData && uncompressedData.length + " bytes buffer" || "null") + ">\n" + - '}'; - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js deleted file mode 100644 index f066d7ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/adm-zip/zipFile.js +++ /dev/null @@ -1,311 +0,0 @@ -var ZipEntry = require("./zipEntry"), - Headers = require("./headers"), - Utils = require("./util"); - -module.exports = function(/*String|Buffer*/input, /*Number*/inputType) { - var entryList = [], - entryTable = {}, - _comment = new Buffer(0), - filename = "", - fs = require("fs"), - inBuffer = null, - mainHeader = new Headers.MainHeader(); - - if (inputType == Utils.Constants.FILE) { - // is a filename - filename = input; - inBuffer = fs.readFileSync(filename); - readMainHeader(); - } else if (inputType == Utils.Constants.BUFFER) { - // is a memory buffer - inBuffer = input; - readMainHeader(); - } else { - // none. is a new file - } - - function readEntries() { - entryTable = {}; - entryList = new Array(mainHeader.diskEntries); // total number of entries - var index = mainHeader.offset; // offset of first CEN header - for(var i = 0; i < entryList.length; i++) { - - var tmp = index, - entry = new ZipEntry(inBuffer); - entry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR); - - entry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength); - - if (entry.header.extraLength) { - entry.extra = inBuffer.slice(tmp, tmp += entry.header.extraLength); - } - - if (entry.header.commentLength) - entry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength); - - index += entry.header.entryHeaderSize; - - entryList[i] = entry; - entryTable[entry.entryName] = entry; - } - } - - function readMainHeader() { - var i = inBuffer.length - Utils.Constants.ENDHDR, // END header size - n = Math.max(0, i - 0xFFFF), // 0xFFFF is the max zip file comment length - endOffset = 0; // Start offset of the END header - - for (i; i >= n; i--) { - if (inBuffer[i] != 0x50) continue; // quick check that the byte is 'P' - if (inBuffer.readUInt32LE(i) == Utils.Constants.ENDSIG) { // "PK\005\006" - endOffset = i; - break; - } - } - if (!endOffset) - throw Utils.Errors.INVALID_FORMAT; - - mainHeader.loadFromBinary(inBuffer.slice(endOffset, endOffset + Utils.Constants.ENDHDR)); - if (mainHeader.commentLength) { - _comment = inBuffer.slice(endOffset + Utils.Constants.ENDHDR); - } - readEntries(); - } - - return { - /** - * Returns an array of ZipEntry objects existent in the current opened archive - * @return Array - */ - get entries () { - return entryList; - }, - - /** - * Archive comment - * @return {String} - */ - get comment () { return _comment.toString(); }, - set comment(val) { - mainHeader.commentLength = val.length; - _comment = val; - }, - - /** - * Returns a reference to the entry with the given name or null if entry is inexistent - * - * @param entryName - * @return ZipEntry - */ - getEntry : function(/*String*/entryName) { - return entryTable[entryName] || null; - }, - - /** - * Adds the given entry to the entry list - * - * @param entry - */ - setEntry : function(/*ZipEntry*/entry) { - entryList.push(entry); - entryTable[entry.entryName] = entry; - mainHeader.totalEntries = entryList.length; - }, - - /** - * Removes the entry with the given name from the entry list. - * - * If the entry is a directory, then all nested files and directories will be removed - * @param entryName - */ - deleteEntry : function(/*String*/entryName) { - var entry = entryTable[entryName]; - if (entry && entry.isDirectory) { - var _self = this; - this.getEntryChildren(entry).forEach(function(child) { - if (child.entryName != entryName) { - _self.deleteEntry(child.entryName) - } - }) - } - entryList.splice(entryList.indexOf(entry), 1); - delete(entryTable[entryName]); - mainHeader.totalEntries = entryList.length; - }, - - /** - * Iterates and returns all nested files and directories of the given entry - * - * @param entry - * @return Array - */ - getEntryChildren : function(/*ZipEntry*/entry) { - if (entry.isDirectory) { - var list = [], - name = entry.entryName, - len = name.length; - - entryList.forEach(function(zipEntry) { - if (zipEntry.entryName.substr(0, len) == name) { - list.push(zipEntry); - } - }); - return list; - } - return [] - }, - - /** - * Returns the zip file - * - * @return Buffer - */ - compressToBuffer : function() { - if (entryList.length > 1) { - entryList.sort(function(a, b) { - var nameA = a.entryName.toLowerCase(); - var nameB = b.entryName.toLowerCase(); - if (nameA < nameB) {return -1} - if (nameA > nameB) {return 1} - return 0; - }); - } - - var totalSize = 0, - dataBlock = [], - entryHeaders = [], - dindex = 0; - - mainHeader.size = 0; - mainHeader.offset = 0; - - entryList.forEach(function(entry) { - entry.header.offset = dindex; - - // compress data and set local and entry header accordingly. Reason why is called first - var compressedData = entry.getCompressedData(); - // data header - var dataHeader = entry.header.dataHeaderToBinary(); - var postHeader = new Buffer(entry.entryName + entry.extra.toString()); - var dataLength = dataHeader.length + postHeader.length + compressedData.length; - - dindex += dataLength; - - dataBlock.push(dataHeader); - dataBlock.push(postHeader); - dataBlock.push(compressedData); - - var entryHeader = entry.packHeader(); - entryHeaders.push(entryHeader); - mainHeader.size += entryHeader.length; - totalSize += (dataLength + entryHeader.length); - }); - - totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length - // point to end of data and begining of central directory first record - mainHeader.offset = dindex; - - dindex = 0; - var outBuffer = new Buffer(totalSize); - dataBlock.forEach(function(content) { - content.copy(outBuffer, dindex); // write data blocks - dindex += content.length; - }); - entryHeaders.forEach(function(content) { - content.copy(outBuffer, dindex); // write central directory entries - dindex += content.length; - }); - - var mh = mainHeader.toBinary(); - if (_comment) { - _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment - } - - mh.copy(outBuffer, dindex); // write main header - - return outBuffer - }, - - toAsyncBuffer : function(/*Function*/onSuccess,/*Function*/onFail,/*Function*/onItemStart,/*Function*/onItemEnd) { - if (entryList.length > 1) { - entryList.sort(function(a, b) { - var nameA = a.entryName.toLowerCase(); - var nameB = b.entryName.toLowerCase(); - if (nameA > nameB) {return -1} - if (nameA < nameB) {return 1} - return 0; - }); - } - - var totalSize = 0, - dataBlock = [], - entryHeaders = [], - dindex = 0; - - mainHeader.size = 0; - mainHeader.offset = 0; - - var compress=function(entryList){ - var self=arguments.callee; - var entry; - if(entryList.length){ - var entry=entryList.pop(); - var name=entry.entryName + entry.extra.toString(); - if(onItemStart)onItemStart(name); - entry.getCompressedDataAsync(function(compressedData){ - if(onItemEnd)onItemEnd(name); - - entry.header.offset = dindex; - // data header - var dataHeader = entry.header.dataHeaderToBinary(); - var postHeader = new Buffer(name); - var dataLength = dataHeader.length + postHeader.length + compressedData.length; - - dindex += dataLength; - - dataBlock.push(dataHeader); - dataBlock.push(postHeader); - dataBlock.push(compressedData); - - var entryHeader = entry.packHeader(); - entryHeaders.push(entryHeader); - mainHeader.size += entryHeader.length; - totalSize += (dataLength + entryHeader.length); - - if(entryList.length){ - self(entryList); - }else{ - - - totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length - // point to end of data and begining of central directory first record - mainHeader.offset = dindex; - - dindex = 0; - var outBuffer = new Buffer(totalSize); - dataBlock.forEach(function(content) { - content.copy(outBuffer, dindex); // write data blocks - dindex += content.length; - }); - entryHeaders.forEach(function(content) { - content.copy(outBuffer, dindex); // write central directory entries - dindex += content.length; - }); - - var mh = mainHeader.toBinary(); - if (_comment) { - _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment - } - - mh.copy(outBuffer, dindex); // write main header - - onSuccess(outBuffer); - } - }); - } - }; - - compress(entryList); - } - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS deleted file mode 100644 index 247b7543..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -# 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md deleted file mode 100644 index cd123b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/README.md +++ /dev/null @@ -1,30 +0,0 @@ -`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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js deleted file mode 100755 index 29bfa8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/bin.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json deleted file mode 100644 index 13d6751e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "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" - } - ], - "readme": "`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.\n* `ENOENT` - If the file doesn't exist, rimraf will return\n successfully, since your desired outcome is already the case.\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", - "bugs": { - "url": "https://github.com/isaacs/rimraf/issues" - }, - "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.2.6", - "_from": "rimraf@~2.2.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js deleted file mode 100644 index ce62051f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/rimraf.js +++ /dev/null @@ -1,178 +0,0 @@ -module.exports = rimraf -rimraf.sync = rimrafSync - -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 rimraf (p, cb) { - if (!cb) throw new Error("No callback passed to rimraf()") - - var busyTries = 0 - rimraf_(p, 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, 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, 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, cb) { - fs.unlink(p, function (er) { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb) - if (er.code === "EISDIR") - return rmdir(p, er, cb) - } - return cb(er) - }) -} - -function fixWinEPERM (p, er, cb) { - fs.chmod(p, 666, function (er2) { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - fs.stat(p, function(er3, stats) { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, er, cb) - else - fs.unlink(p, cb) - }) - }) -} - -function fixWinEPERMSync (p, er, cb) { - try { - fs.chmodSync(p, 666) - } catch (er2) { - if (er2.code !== "ENOENT") - throw er - } - - try { - var stats = fs.statSync(p) - } catch (er3) { - if (er3 !== "ENOENT") - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, er) - else - fs.unlinkSync(p) -} - -function rmdir (p, originalEr, cb) { - // 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. - fs.rmdir(p, function (er) { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -function rmkids(p, cb) { - fs.readdir(p, function (er, files) { - if (er) - return cb(er) - var n = files.length - if (n === 0) - return fs.rmdir(p, cb) - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), function (er) { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - fs.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) { - try { - fs.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er) - if (er.code !== "EISDIR") - throw er - rmdirSync(p, er) - } -} - -function rmdirSync (p, originalEr) { - try { - fs.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) - } -} - -function rmkidsSync (p) { - fs.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f)) - }) - fs.rmdirSync(p) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh deleted file mode 100644 index 598f0163..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -set -e -for i in test-*.js; do - echo -n $i ... - bash setup.sh - node $i - ! [ -d target ] - echo "pass" -done -rm -rf target diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh deleted file mode 100644 index 2602e631..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js deleted file mode 100644 index 9c2e0b7b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-async.js +++ /dev/null @@ -1,5 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf(path.join(__dirname, "target"), function (er) { - if (er) throw er -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js deleted file mode 100644 index eb71f104..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/rimraf/test/test-sync.js +++ /dev/null @@ -1,3 +0,0 @@ -var rimraf = require("../rimraf") - , path = require("path") -rimraf.sync(path.join(__dirname, "target")) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE deleted file mode 100644 index 6d03581f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 'Dominic Tarr' - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md deleted file mode 100644 index 565e0e26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# stream-combiner - -<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master> - -## Combine (stream1,...,streamN) - -Turn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream -and reads from the last stream. - -Listening for 'error' will recieve errors from all streams inside the pipe. - -``` js - var Combine = require('stream-combiner') - var es = require('event-stream') - - Combine( //connect streams together with `pipe` - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - callback(null - , inspect(JSON.parse(data))) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) -``` - -## License - -MIT diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js deleted file mode 100644 index 99cf5b61..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var duplexer = require('duplexer') - -module.exports = function () { - - var streams = [].slice.call(arguments) - , first = streams[0] - , last = streams[streams.length - 1] - , thepipe = duplexer(first, last) - - if(streams.length == 1) - return streams[0] - else if (!streams.length) - throw new Error('connect called with empty args') - - //pipe all the streams together - - function recurse (streams) { - if(streams.length < 2) - return - streams[0].pipe(streams[1]) - recurse(streams.slice(1)) - } - - recurse(streams) - - function onerror () { - var args = [].slice.call(arguments) - args.unshift('error') - thepipe.emit.apply(thepipe, args) - } - - //es.duplex already reemits the error from the first and last stream. - //add a listener for the inner streams in the pipeline. - for(var i = 1; i < streams.length - 1; i ++) - streams[i].on('error', onerror) - - return thepipe -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore deleted file mode 100644 index 062c11e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -*.err \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml deleted file mode 100644 index ed05f88d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md deleted file mode 100644 index 61ff71aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# duplexer - -[![build status][1]][2] [![dependency status][3]][4] - -[![browser support][5]][6] - -Creates a duplex stream - -Taken from [event-stream][7] - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -## Example - -```js -var grep = cp.exec('grep Stream') - -duplex(grep.stdin, grep.stdout) -``` - -## Installation - -`npm install duplexer` - -## Tests - -`npm test` - -## Contributors - - - Dominictarr - - Raynos - - samccone - -## MIT Licenced - - [1]: https://secure.travis-ci.org/Raynos/duplexer.png - [2]: https://travis-ci.org/Raynos/duplexer - [3]: https://david-dm.org/Raynos/duplexer.png - [4]: https://david-dm.org/Raynos/duplexer - [5]: https://ci.testling.com/Raynos/duplexer.png - [6]: https://ci.testling.com/Raynos/duplexer - [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js deleted file mode 100644 index a188a210..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/index.js +++ /dev/null @@ -1,87 +0,0 @@ -var Stream = require("stream") -var writeMethods = ["write", "end", "destroy"] -var readMethods = ["resume", "pause"] -var readEvents = ["data", "close"] -var slice = Array.prototype.slice - -module.exports = duplex - -function forEach (arr, fn) { - if (arr.forEach) { - return arr.forEach(fn) - } - - for (var i = 0; i < arr.length; i++) { - fn(arr[i], i) - } -} - -function duplex(writer, reader) { - var stream = new Stream() - var ended = false - - forEach(writeMethods, proxyWriter) - - forEach(readMethods, proxyReader) - - forEach(readEvents, proxyStream) - - reader.on("end", handleEnd) - - writer.on("drain", function() { - stream.emit("drain") - }) - - writer.on("error", reemit) - reader.on("error", reemit) - - stream.writable = writer.writable - stream.readable = reader.readable - - return stream - - function proxyWriter(methodName) { - stream[methodName] = method - - function method() { - return writer[methodName].apply(writer, arguments) - } - } - - function proxyReader(methodName) { - stream[methodName] = method - - function method() { - stream.emit(methodName) - var func = reader[methodName] - if (func) { - return func.apply(reader, arguments) - } - reader.emit(methodName) - } - } - - function proxyStream(methodName) { - reader.on(methodName, reemit) - - function reemit() { - var args = slice.call(arguments) - args.unshift(methodName) - stream.emit.apply(stream, args) - } - } - - function handleEnd() { - if (ended) { - return - } - ended = true - var args = slice.call(arguments) - args.unshift("end") - stream.emit.apply(stream, args) - } - - function reemit(err) { - stream.emit("error", err) - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json deleted file mode 100644 index 86ab2145..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "duplexer", - "version": "0.1.1", - "description": "Creates a duplex stream", - "keywords": [], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/duplexer.git" - }, - "main": "index", - "homepage": "https://github.com/Raynos/duplexer", - "contributors": [ - { - "name": "Jake Verbaten" - } - ], - "bugs": { - "url": "https://github.com/Raynos/duplexer/issues", - "email": "raynos2@gmail.com" - }, - "devDependencies": { - "tape": "0.3.3", - "through": "~0.1.4" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/Raynos/duplexer/raw/master/LICENSE" - } - ], - "scripts": { - "test": "node test" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "ie/8..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ] - }, - "readme": "# duplexer\n\n[![build status][1]][2] [![dependency status][3]][4]\n\n[![browser support][5]][6]\n\nCreates a duplex stream\n\nTaken from [event-stream][7]\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way.\n\n## Example\n\n```js\nvar grep = cp.exec('grep Stream')\n\nduplex(grep.stdin, grep.stdout)\n```\n\n## Installation\n\n`npm install duplexer`\n\n## Tests\n\n`npm test`\n\n## Contributors\n\n - Dominictarr\n - Raynos\n - samccone\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/duplexer.png\n [2]: https://travis-ci.org/Raynos/duplexer\n [3]: https://david-dm.org/Raynos/duplexer.png\n [4]: https://david-dm.org/Raynos/duplexer\n [5]: https://ci.testling.com/Raynos/duplexer.png\n [6]: https://ci.testling.com/Raynos/duplexer\n [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream\n", - "readmeFilename": "README.md", - "_id": "duplexer@0.1.1", - "_from": "duplexer@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js deleted file mode 100644 index 4988e0d9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/node_modules/duplexer/test/index.js +++ /dev/null @@ -1,31 +0,0 @@ -var through = require("through") -var test = require("tape") - -var duplex = require("../index") - -var readable = through() -var writable = through(write) -var written = 0 -var data = 0 - -var stream = duplex(writable, readable) - -function write() { - written++ -} - -stream.on("data", ondata) - -function ondata() { - data++ -} - -test("emit and write", function(t) { - t.plan(2) - - stream.write() - readable.emit("data") - - t.equal(written, 1, "should have written once") - t.equal(data, 1, "should have recived once") -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json deleted file mode 100644 index 5b10d918..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "stream-combiner", - "version": "0.0.4", - "homepage": "https://github.com/dominictarr/stream-combiner", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/stream-combiner.git" - }, - "dependencies": { - "duplexer": "~0.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "event-stream": "~3.0.7" - }, - "scripts": { - "test": "set -e; for t in test/*.js; do node $t; done" - }, - "author": { - "name": "'Dominic Tarr'", - "email": "dominic.tarr@gmail.com", - "url": "http://dominictarr.com" - }, - "license": "MIT", - "readme": "# stream-combiner\n\n<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master>\n\n## Combine (stream1,...,streamN)\n\nTurn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream\nand reads from the last stream. \n\nListening for 'error' will recieve errors from all streams inside the pipe.\n\n``` js\n var Combine = require('stream-combiner')\n var es = require('event-stream')\n\n Combine( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n```\n\n## License\n\nMIT\n", - "readmeFilename": "README.md", - "description": "<img src=https://secure.travis-ci.org/dominictarr/stream-combiner.png?branch=master>", - "bugs": { - "url": "https://github.com/dominictarr/stream-combiner/issues" - }, - "_id": "stream-combiner@0.0.4", - "_from": "stream-combiner@~0.0.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js deleted file mode 100644 index d17ddada..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/stream-combiner/test/index.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('event-stream') -var combine = require('..') -var test = require('tape') - -test('do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); -}) - -test('3 pipe do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); - -}) - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore deleted file mode 100644 index c167ad5b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules -examples/extract/ -test/tmp/ -test/fixtures/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml deleted file mode 100644 index 2d26206d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE deleted file mode 100644 index 74489e2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md deleted file mode 100644 index 5bcc82cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# node-tar - -Tar for Node.js. - -[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/) - -## API - -See `examples/` for usage examples. - -### var tar = require('tar') - -Returns an object with `.Pack`, `.Extract` and `.Parse` methods. - -### tar.Pack([properties]) - -Returns a through stream. Use -[fstream](https://npmjs.org/package/fstream) to write files into the -pack stream and you will receive tar archive data from the pack -stream. - -The optional `properties` object are used to set properties in the tar -'Global Extended Header'. - -### tar.Extract([options]) - -Returns a through stream. Write tar data to the stream and the files -in the tarball will be extracted onto the filesystem. - -`options` can be: - -```js -{ - path: '/path/to/extract/tar/into', - strip: 0, // how many path segments to strip from the root when extracting -} -``` - -`options` also get passed to the `fstream.Writer` instance that `tar` -uses internally. - -### tar.Parse() - -Returns a writable stream. Write tar data to it and it will emit -`entry` events for each entry parsed from the tarball. This is used by -`tar.Extract`. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js deleted file mode 100644 index e150abf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/extracter.js +++ /dev/null @@ -1,11 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Extract({ path: __dirname + "/extract" })) - .on("error", function (er) { - console.error("error here") - }) - .on("end", function () { - console.error("done") - }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js deleted file mode 100644 index 39f3f088..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/examples/reader.js +++ /dev/null @@ -1,36 +0,0 @@ -var tar = require("../tar.js") - , fs = require("fs") - -fs.createReadStream(__dirname + "/../test/fixtures/c.tar") - .pipe(tar.Parse()) - .on("extendedHeader", function (e) { - console.error("extended pax header", e.props) - e.on("end", function () { - console.error("extended pax fields:", e.fields) - }) - }) - .on("ignoredEntry", function (e) { - console.error("ignoredEntry?!?", e.props) - }) - .on("longLinkpath", function (e) { - console.error("longLinkpath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("longPath", function (e) { - console.error("longPath entry", e.props) - e.on("end", function () { - console.error("value=%j", e.body.toString()) - }) - }) - .on("entry", function (e) { - console.error("entry", e.props) - e.on("data", function (c) { - console.error(" >>>" + c.toString().replace(/\n/g, "\\n")) - }) - e.on("end", function () { - console.error(" <<<EOF") - }) - }) - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js deleted file mode 100644 index 6c1da237..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/buffer-entry.js +++ /dev/null @@ -1,30 +0,0 @@ -// just like the Entry class, but it buffers the contents -// -// XXX It would be good to set a maximum BufferEntry filesize, -// since it eats up memory. In normal operation, -// these are only for long filenames or link names, which are -// rarely very big. - -module.exports = BufferEntry - -var inherits = require("inherits") - , Entry = require("./entry.js") - -function BufferEntry () { - Entry.apply(this, arguments) - this._buffer = new Buffer(this.props.size) - this._offset = 0 - this.body = "" - this.on("end", function () { - this.body = this._buffer.toString().slice(0, -1) - }) -} - -inherits(BufferEntry, Entry) - -// collect the bytes as they come in. -BufferEntry.prototype.write = function (c) { - c.copy(this._buffer, this._offset) - this._offset += c.length - Entry.prototype.write.call(this, c) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js deleted file mode 100644 index 8e09042d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry-writer.js +++ /dev/null @@ -1,169 +0,0 @@ -module.exports = EntryWriter - -var tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , inherits = require("inherits") - , BlockStream = require("block-stream") - , ExtendedHeaderWriter - , Stream = require("stream").Stream - , EOF = {} - -inherits(EntryWriter, Stream) - -function EntryWriter (props) { - var me = this - - if (!(me instanceof EntryWriter)) { - return new EntryWriter(props) - } - - Stream.apply(this) - - me.writable = true - me.readable = true - - me._stream = new BlockStream(512) - - me._stream.on("data", function (c) { - me.emit("data", c) - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) - - me._stream.on("end", function () { - me.emit("end") - me.emit("close") - }) - - me.props = props - if (props.type === "Directory") { - props.size = 0 - } - props.ustar = "ustar\0" - props.ustarver = "00" - me.path = props.path - - me._buffer = [] - me._didHeader = false - me._meta = false - - me.on("pipe", function () { - me._process() - }) -} - -EntryWriter.prototype.write = function (c) { - // console.error(".. ew write") - if (this._ended) return this.emit("error", new Error("write after end")) - this._buffer.push(c) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -EntryWriter.prototype.end = function (c) { - // console.error(".. ew end") - if (c) this._buffer.push(c) - this._buffer.push(EOF) - this._ended = true - this._process() - this._needDrain = this._buffer.length > 0 -} - -EntryWriter.prototype.pause = function () { - // console.error(".. ew pause") - this._paused = true - this.emit("pause") -} - -EntryWriter.prototype.resume = function () { - // console.error(".. ew resume") - this._paused = false - this.emit("resume") - this._process() -} - -EntryWriter.prototype.add = function (entry) { - // console.error(".. ew add") - if (!this.parent) return this.emit("error", new Error("no parent")) - - // make sure that the _header and such is emitted, and clear out - // the _currentEntry link on the parent. - if (!this._ended) this.end() - - return this.parent.add(entry) -} - -EntryWriter.prototype._header = function () { - // console.error(".. ew header") - if (this._didHeader) return - this._didHeader = true - - var headerBlock = TarHeader.encode(this.props) - - if (this.props.needExtended && !this._meta) { - var me = this - - ExtendedHeaderWriter = ExtendedHeaderWriter || - require("./extended-header-writer.js") - - ExtendedHeaderWriter(this.props) - .on("data", function (c) { - me.emit("data", c) - }) - .on("error", function (er) { - me.emit("error", er) - }) - .end() - } - - // console.error(".. .. ew headerBlock emitting") - this.emit("data", headerBlock) - this.emit("header") -} - -EntryWriter.prototype._process = function () { - // console.error(".. .. ew process") - if (!this._didHeader && !this._meta) { - this._header() - } - - if (this._paused || this._processing) { - // console.error(".. .. .. paused=%j, processing=%j", this._paused, this._processing) - return - } - - this._processing = true - - var buf = this._buffer - for (var i = 0; i < buf.length; i ++) { - // console.error(".. .. .. i=%d", i) - - var c = buf[i] - - if (c === EOF) this._stream.end() - else this._stream.write(c) - - if (this._paused) { - // console.error(".. .. .. paused mid-emission") - this._processing = false - if (i < buf.length) { - this._needDrain = true - this._buffer = buf.slice(i + 1) - } - return - } - } - - // console.error(".. .. .. emitted") - this._buffer.length = 0 - this._processing = false - - // console.error(".. .. .. emitting drain") - this.emit("drain") -} - -EntryWriter.prototype.destroy = function () {} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js deleted file mode 100644 index 4af5c410..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/entry.js +++ /dev/null @@ -1,213 +0,0 @@ -// A passthrough read/write stream that sets its properties -// based on a header, extendedHeader, and globalHeader -// -// Can be either a file system object of some sort, or -// a pax/ustar metadata entry. - -module.exports = Entry - -var TarHeader = require("./header.js") - , tar = require("../tar") - , assert = require("assert").ok - , Stream = require("stream").Stream - , inherits = require("inherits") - , fstream = require("fstream").Abstract - -function Entry (header, extended, global) { - Stream.call(this) - this.readable = true - this.writable = true - - this._needDrain = false - this._paused = false - this._reading = false - this._ending = false - this._ended = false - this._remaining = 0 - this._queue = [] - this._index = 0 - this._queueLen = 0 - - this._read = this._read.bind(this) - - this.props = {} - this._header = header - this._extended = extended || {} - - // globals can change throughout the course of - // a file parse operation. Freeze it at its current state. - this._global = {} - var me = this - Object.keys(global || {}).forEach(function (g) { - me._global[g] = global[g] - }) - - this._setProps() -} - -inherits(Entry, Stream) - -Entry.prototype.write = function (c) { - if (this._ending) this.error("write() after end()", null, true) - if (this._remaining === 0) { - this.error("invalid bytes past eof") - } - - // often we'll get a bunch of \0 at the end of the last write, - // since chunks will always be 512 bytes when reading a tarball. - if (c.length > this._remaining) { - c = c.slice(0, this._remaining) - } - this._remaining -= c.length - - // put it on the stack. - var ql = this._queueLen - this._queue.push(c) - this._queueLen ++ - - this._read() - - // either paused, or buffered - if (this._paused || ql > 0) { - this._needDrain = true - return false - } - - return true -} - -Entry.prototype.end = function (c) { - if (c) this.write(c) - this._ending = true - this._read() -} - -Entry.prototype.pause = function () { - this._paused = true - this.emit("pause") -} - -Entry.prototype.resume = function () { - // console.error(" Tar Entry resume", this.path) - this.emit("resume") - this._paused = false - this._read() - return this._queueLen - this._index > 1 -} - - // This is bound to the instance -Entry.prototype._read = function () { - // console.error(" Tar Entry _read", this.path) - - if (this._paused || this._reading || this._ended) return - - // set this flag so that event handlers don't inadvertently - // get multiple _read() calls running. - this._reading = true - - // have any data to emit? - while (this._index < this._queueLen && !this._paused) { - var chunk = this._queue[this._index ++] - this.emit("data", chunk) - } - - // check if we're drained - if (this._index >= this._queueLen) { - this._queue.length = this._queueLen = this._index = 0 - if (this._needDrain) { - this._needDrain = false - this.emit("drain") - } - if (this._ending) { - this._ended = true - this.emit("end") - } - } - - // if the queue gets too big, then pluck off whatever we can. - // this should be fairly rare. - var mql = this._maxQueueLen - if (this._queueLen > mql && this._index > 0) { - mql = Math.min(this._index, mql) - this._index -= mql - this._queueLen -= mql - this._queue = this._queue.slice(mql) - } - - this._reading = false -} - -Entry.prototype._setProps = function () { - // props = extended->global->header->{} - var header = this._header - , extended = this._extended - , global = this._global - , props = this.props - - // first get the values from the normal header. - var fields = tar.fields - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = header[field] - if (typeof val !== "undefined") props[field] = val - } - - // next, the global header for this file. - // numeric values, etc, will have already been parsed. - ;[global, extended].forEach(function (p) { - Object.keys(p).forEach(function (f) { - if (typeof p[f] !== "undefined") props[f] = p[f] - }) - }) - - // no nulls allowed in path or linkpath - ;["path", "linkpath"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = props[p].split("\0")[0] - } - }) - - - // set date fields to be a proper date - ;["mtime", "ctime", "atime"].forEach(function (p) { - if (props.hasOwnProperty(p)) { - props[p] = new Date(props[p] * 1000) - } - }) - - // set the type so that we know what kind of file to create - var type - switch (tar.types[props.type]) { - case "OldFile": - case "ContiguousFile": - type = "File" - break - - case "GNUDumpDir": - type = "Directory" - break - - case undefined: - type = "Unknown" - break - - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - default: - type = tar.types[props.type] - } - - this.type = type - this.path = props.path - this.size = props.size - - // size is special, since it signals when the file needs to end. - this._remaining = props.size -} - -Entry.prototype.warn = fstream.warn -Entry.prototype.error = fstream.error diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js deleted file mode 100644 index 1728c458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header-writer.js +++ /dev/null @@ -1,191 +0,0 @@ - -module.exports = ExtendedHeaderWriter - -var inherits = require("inherits") - , EntryWriter = require("./entry-writer.js") - -inherits(ExtendedHeaderWriter, EntryWriter) - -var tar = require("../tar.js") - , path = require("path") - , TarHeader = require("./header.js") - -// props is the props of the thing we need to write an -// extended header for. -// Don't be shy with it. Just encode everything. -function ExtendedHeaderWriter (props) { - // console.error(">> ehw ctor") - var me = this - - if (!(me instanceof ExtendedHeaderWriter)) { - return new ExtendedHeaderWriter(props) - } - - me.fields = props - - var p = - { path : ("PaxHeader" + path.join("/", props.path || "")) - .replace(/\\/g, "/").substr(0, 100) - , mode : props.mode || 0666 - , uid : props.uid || 0 - , gid : props.gid || 0 - , size : 0 // will be set later - , mtime : props.mtime || Date.now() / 1000 - , type : "x" - , linkpath : "" - , ustar : "ustar\0" - , ustarver : "00" - , uname : props.uname || "" - , gname : props.gname || "" - , devmaj : props.devmaj || 0 - , devmin : props.devmin || 0 - } - - - EntryWriter.call(me, p) - // console.error(">> ehw props", me.props) - me.props = p - - me._meta = true -} - -ExtendedHeaderWriter.prototype.end = function () { - // console.error(">> ehw end") - var me = this - - if (me._ended) return - me._ended = true - - me._encodeFields() - - if (me.props.size === 0) { - // nothing to write! - me._ready = true - me._stream.end() - return - } - - me._stream.write(TarHeader.encode(me.props)) - me.body.forEach(function (l) { - me._stream.write(l) - }) - me._ready = true - - // console.error(">> ehw _process calling end()", me.props) - this._stream.end() -} - -ExtendedHeaderWriter.prototype._encodeFields = function () { - // console.error(">> ehw _encodeFields") - this.body = [] - if (this.fields.prefix) { - this.fields.path = this.fields.prefix + "/" + this.fields.path - this.fields.prefix = "" - } - encodeFields(this.fields, "", this.body, this.fields.noProprietary) - var me = this - this.body.forEach(function (l) { - me.props.size += l.length - }) -} - -function encodeFields (fields, prefix, body, nop) { - // console.error(">> >> ehw encodeFields") - // "%d %s=%s\n", <length>, <keyword>, <value> - // The length is a decimal number, and includes itself and the \n - // Numeric values are decimal strings. - - Object.keys(fields).forEach(function (k) { - var val = fields[k] - , numeric = tar.numeric[k] - - if (prefix) k = prefix + "." + k - - // already including NODETAR.type, don't need File=true also - if (k === fields.type && val === true) return - - switch (k) { - // don't include anything that's always handled just fine - // in the normal header, or only meaningful in the context - // of nodetar - case "mode": - case "cksum": - case "ustar": - case "ustarver": - case "prefix": - case "basename": - case "dirname": - case "needExtended": - case "block": - case "filter": - return - - case "rdev": - if (val === 0) return - break - - case "nlink": - case "dev": // Truly a hero among men, Creator of Star! - case "ino": // Speak his name with reverent awe! It is: - k = "SCHILY." + k - break - - default: break - } - - if (val && typeof val === "object" && - !Buffer.isBuffer(val)) encodeFields(val, k, body, nop) - else if (val === null || val === undefined) return - else body.push.apply(body, encodeField(k, val, nop)) - }) - - return body -} - -function encodeField (k, v, nop) { - // lowercase keys must be valid, otherwise prefix with - // "NODETAR." - if (k.charAt(0) === k.charAt(0).toLowerCase()) { - var m = k.split(".")[0] - if (!tar.knownExtended[m]) k = "NODETAR." + k - } - - // no proprietary - if (nop && k.charAt(0) !== k.charAt(0).toLowerCase()) { - return [] - } - - if (typeof val === "number") val = val.toString(10) - - var s = new Buffer(" " + k + "=" + v + "\n") - , digits = Math.floor(Math.log(s.length) / Math.log(10)) + 1 - - // console.error("1 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - // if adding that many digits will make it go over that length, - // then add one to it. For example, if the string is: - // " foo=bar\n" - // then that's 9 characters. With the "9", that bumps the length - // up to 10. However, this is invalid: - // "10 foo=bar\n" - // but, since that's actually 11 characters, since 10 adds another - // character to the length, and the length includes the number - // itself. In that case, just bump it up again. - if (s.length + digits >= Math.pow(10, digits)) digits += 1 - // console.error("2 s=%j digits=%j s.length=%d", s.toString(), digits, s.length) - - var len = digits + s.length - // console.error("3 s=%j digits=%j s.length=%d len=%d", s.toString(), digits, s.length, len) - var lenBuf = new Buffer("" + len) - if (lenBuf.length + s.length !== len) { - throw new Error("Bad length calculation\n"+ - "len="+len+"\n"+ - "lenBuf="+JSON.stringify(lenBuf.toString())+"\n"+ - "lenBuf.length="+lenBuf.length+"\n"+ - "digits="+digits+"\n"+ - "s="+JSON.stringify(s.toString())+"\n"+ - "s.length="+s.length) - } - - return [lenBuf, s] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js deleted file mode 100644 index 74f432ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extended-header.js +++ /dev/null @@ -1,140 +0,0 @@ -// An Entry consisting of: -// -// "%d %s=%s\n", <length>, <keyword>, <value> -// -// The length is a decimal number, and includes itself and the \n -// \0 does not terminate anything. Only the length terminates the string. -// Numeric values are decimal strings. - -module.exports = ExtendedHeader - -var Entry = require("./entry.js") - , inherits = require("inherits") - , tar = require("../tar.js") - , numeric = tar.numeric - , keyTrans = { "SCHILY.dev": "dev" - , "SCHILY.ino": "ino" - , "SCHILY.nlink": "nlink" } - -function ExtendedHeader () { - Entry.apply(this, arguments) - this.on("data", this._parse) - this.fields = {} - this._position = 0 - this._fieldPos = 0 - this._state = SIZE - this._sizeBuf = [] - this._keyBuf = [] - this._valBuf = [] - this._size = -1 - this._key = "" -} - -inherits(ExtendedHeader, Entry) -ExtendedHeader.prototype._parse = parse - -var s = 0 - , states = ExtendedHeader.states = {} - , SIZE = states.SIZE = s++ - , KEY = states.KEY = s++ - , VAL = states.VAL = s++ - , ERR = states.ERR = s++ - -Object.keys(states).forEach(function (s) { - states[states[s]] = states[s] -}) - -states[s] = null - -// char code values for comparison -var _0 = "0".charCodeAt(0) - , _9 = "9".charCodeAt(0) - , point = ".".charCodeAt(0) - , a = "a".charCodeAt(0) - , Z = "Z".charCodeAt(0) - , a = "a".charCodeAt(0) - , z = "z".charCodeAt(0) - , space = " ".charCodeAt(0) - , eq = "=".charCodeAt(0) - , cr = "\n".charCodeAt(0) - -function parse (c) { - if (this._state === ERR) return - - for ( var i = 0, l = c.length - ; i < l - ; this._position++, this._fieldPos++, i++) { - // console.error("top of loop, size="+this._size) - - var b = c[i] - - if (this._size >= 0 && this._fieldPos > this._size) { - error(this, "field exceeds length="+this._size) - return - } - - switch (this._state) { - case ERR: return - - case SIZE: - // console.error("parsing size, b=%d, rest=%j", b, c.slice(i).toString()) - if (b === space) { - this._state = KEY - // this._fieldPos = this._sizeBuf.length - this._size = parseInt(new Buffer(this._sizeBuf).toString(), 10) - this._sizeBuf.length = 0 - continue - } - if (b < _0 || b > _9) { - error(this, "expected [" + _0 + ".." + _9 + "], got " + b) - return - } - this._sizeBuf.push(b) - continue - - case KEY: - // can be any char except =, not > size. - if (b === eq) { - this._state = VAL - this._key = new Buffer(this._keyBuf).toString() - if (keyTrans[this._key]) this._key = keyTrans[this._key] - this._keyBuf.length = 0 - continue - } - this._keyBuf.push(b) - continue - - case VAL: - // field must end with cr - if (this._fieldPos === this._size - 1) { - // console.error("finished with "+this._key) - if (b !== cr) { - error(this, "expected \\n at end of field") - return - } - var val = new Buffer(this._valBuf).toString() - if (numeric[this._key]) { - val = parseFloat(val) - } - this.fields[this._key] = val - - this._valBuf.length = 0 - this._state = SIZE - this._size = -1 - this._fieldPos = -1 - continue - } - this._valBuf.push(b) - continue - } - } -} - -function error (me, msg) { - msg = "invalid header: " + msg - + "\nposition=" + me._position - + "\nfield position=" + me._fieldPos - - me.error(msg) - me.state = ERR -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js deleted file mode 100644 index c34a81e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/extract.js +++ /dev/null @@ -1,78 +0,0 @@ -// give it a tarball and a path, and it'll dump the contents - -module.exports = Extract - -var tar = require("../tar.js") - , fstream = require("fstream") - , inherits = require("inherits") - , path = require("path") - -function Extract (opts) { - if (!(this instanceof Extract)) return new Extract(opts) - tar.Parse.apply(this) - - // have to dump into a directory - opts.type = "Directory" - opts.Directory = true - - if (typeof opts !== "object") { - opts = { path: opts } - } - - // better to drop in cwd? seems more standard. - opts.path = opts.path || path.resolve("node-tar-extract") - opts.type = "Directory" - opts.Directory = true - - // similar to --strip or --strip-components - opts.strip = +opts.strip - if (!opts.strip || opts.strip <= 0) opts.strip = 0 - - this._fst = fstream.Writer(opts) - - this.pause() - var me = this - - // Hardlinks in tarballs are relative to the root - // of the tarball. So, they need to be resolved against - // the target directory in order to be created properly. - me.on("entry", function (entry) { - // if there's a "strip" argument, then strip off that many - // path components. - if (opts.strip) { - var p = entry.path.split("/").slice(opts.strip).join("/") - entry.path = entry.props.path = p - if (entry.linkpath) { - var lp = entry.linkpath.split("/").slice(opts.strip).join("/") - entry.linkpath = entry.props.linkpath = lp - } - } - if (entry.type !== "Link") return - entry.linkpath = entry.props.linkpath = - path.join(opts.path, path.join("/", entry.props.linkpath)) - }) - - this._fst.on("ready", function () { - me.pipe(me._fst, { end: false }) - me.resume() - }) - - // this._fst.on("end", function () { - // console.error("\nEEEE Extract End", me._fst.path) - // }) - - this._fst.on("close", function () { - // console.error("\nEEEE Extract End", me._fst.path) - me.emit("end") - me.emit("close") - }) -} - -inherits(Extract, tar.Parse) - -Extract.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me._fst.end() - // my .end() is coming later. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js deleted file mode 100644 index 0bfc7b80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/global-header-writer.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = GlobalHeaderWriter - -var ExtendedHeaderWriter = require("./extended-header-writer.js") - , inherits = require("inherits") - -inherits(GlobalHeaderWriter, ExtendedHeaderWriter) - -function GlobalHeaderWriter (props) { - if (!(this instanceof GlobalHeaderWriter)) { - return new GlobalHeaderWriter(props) - } - ExtendedHeaderWriter.call(this, props) - this.props.type = "g" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js deleted file mode 100644 index 05b237c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/header.js +++ /dev/null @@ -1,385 +0,0 @@ -// parse a 512-byte header block to a data object, or vice-versa -// If the data won't fit nicely in a simple header, then generate -// the appropriate extended header file, and return that. - -module.exports = TarHeader - -var tar = require("../tar.js") - , fields = tar.fields - , fieldOffs = tar.fieldOffs - , fieldEnds = tar.fieldEnds - , fieldSize = tar.fieldSize - , numeric = tar.numeric - , assert = require("assert").ok - , space = " ".charCodeAt(0) - , slash = "/".charCodeAt(0) - , bslash = process.platform === "win32" ? "\\".charCodeAt(0) : null - -function TarHeader (block) { - if (!(this instanceof TarHeader)) return new TarHeader(block) - if (block) this.decode(block) -} - -TarHeader.prototype = - { decode : decode - , encode: encode - , calcSum: calcSum - , checkSum: checkSum - } - -TarHeader.parseNumeric = parseNumeric -TarHeader.encode = encode -TarHeader.decode = decode - -// note that this will only do the normal ustar header, not any kind -// of extended posix header file. If something doesn't fit comfortably, -// then it will set obj.needExtended = true, and set the block to -// the closest approximation. -function encode (obj) { - if (!obj && !(this instanceof TarHeader)) throw new Error( - "encode must be called on a TarHeader, or supplied an object") - - obj = obj || this - var block = obj.block = new Buffer(512) - - // if the object has a "prefix", then that's actually an extension of - // the path field. - if (obj.prefix) { - // console.error("%% header encoding, got a prefix", obj.prefix) - obj.path = obj.prefix + "/" + obj.path - // console.error("%% header encoding, prefixed path", obj.path) - obj.prefix = "" - } - - obj.needExtended = false - - if (obj.mode) { - if (typeof obj.mode === "string") obj.mode = parseInt(obj.mode, 8) - obj.mode = obj.mode & 0777 - } - - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , off = fieldOffs[f] - , end = fieldEnds[f] - , ret - - switch (field) { - case "cksum": - // special, done below, after all the others - break - - case "prefix": - // special, this is an extension of the "path" field. - // console.error("%% header encoding, skip prefix later") - break - - case "type": - // convert from long name to a single char. - var type = obj.type || "0" - if (type.length > 1) { - type = tar.types[obj.type] - if (!type) type = "0" - } - writeText(block, off, end, type) - break - - case "path": - // uses the "prefix" field if > 100 bytes, but <= 255 - var pathLen = Buffer.byteLength(obj.path) - , pathFSize = fieldSize[fields.path] - , prefFSize = fieldSize[fields.prefix] - - // paths between 100 and 255 should use the prefix field. - // longer than 255 - if (pathLen > pathFSize && - pathLen <= pathFSize + prefFSize) { - // need to find a slash somewhere in the middle so that - // path and prefix both fit in their respective fields - var searchStart = pathLen - 1 - pathFSize - , searchEnd = prefFSize - , found = false - , pathBuf = new Buffer(obj.path) - - for ( var s = searchStart - ; (s <= searchEnd) - ; s ++ ) { - if (pathBuf[s] === slash || pathBuf[s] === bslash) { - found = s - break - } - } - - if (found !== false) { - prefix = pathBuf.slice(0, found).toString("utf8") - path = pathBuf.slice(found + 1).toString("utf8") - - ret = writeText(block, off, end, path) - off = fieldOffs[fields.prefix] - end = fieldEnds[fields.prefix] - // console.error("%% header writing prefix", off, end, prefix) - ret = writeText(block, off, end, prefix) || ret - break - } - } - - // paths less than 100 chars don't need a prefix - // and paths longer than 255 need an extended header and will fail - // on old implementations no matter what we do here. - // Null out the prefix, and fallthrough to default. - // console.error("%% header writing no prefix") - var poff = fieldOffs[fields.prefix] - , pend = fieldEnds[fields.prefix] - writeText(block, poff, pend, "") - // fallthrough - - // all other fields are numeric or text - default: - ret = numeric[field] - ? writeNumeric(block, off, end, obj[field]) - : writeText(block, off, end, obj[field] || "") - break - } - obj.needExtended = obj.needExtended || ret - } - - var off = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - writeNumeric(block, off, end, calcSum.call(this, block)) - - return block -} - -// if it's a negative number, or greater than will fit, -// then use write256. -var MAXNUM = { 12: 077777777777 - , 11: 07777777777 - , 8 : 07777777 - , 7 : 0777777 } -function writeNumeric (block, off, end, num) { - var writeLen = end - off - , maxNum = MAXNUM[writeLen] || 0 - - num = num || 0 - // console.error(" numeric", num) - - if (num instanceof Date || - Object.prototype.toString.call(num) === "[object Date]") { - num = num.getTime() / 1000 - } - - if (num > maxNum || num < 0) { - write256(block, off, end, num) - // need an extended header if negative or too big. - return true - } - - // god, tar is so annoying - // if the string is small enough, you should put a space - // between the octal string and the \0, but if it doesn't - // fit, then don't. - var numStr = Math.floor(num).toString(8) - if (num < MAXNUM[writeLen - 1]) numStr += " " - - // pad with "0" chars - if (numStr.length < writeLen) { - numStr = (new Array(writeLen - numStr.length).join("0")) + numStr - } - - if (numStr.length !== writeLen - 1) { - throw new Error("invalid length: " + JSON.stringify(numStr) + "\n" + - "expected: "+writeLen) - } - block.write(numStr, off, writeLen, "utf8") - block[end - 1] = 0 -} - -function write256 (block, off, end, num) { - var buf = block.slice(off, end) - var positive = num >= 0 - buf[0] = positive ? 0x80 : 0xFF - - // get the number as a base-256 tuple - if (!positive) num *= -1 - var tuple = [] - do { - var n = num % 256 - tuple.push(n) - num = (num - n) / 256 - } while (num) - - var bytes = tuple.length - - var fill = buf.length - bytes - for (var i = 1; i < fill; i ++) { - buf[i] = positive ? 0 : 0xFF - } - - // tuple is a base256 number, with [0] as the *least* significant byte - // if it's negative, then we need to flip all the bits once we hit the - // first non-zero bit. The 2's-complement is (0x100 - n), and the 1's- - // complement is (0xFF - n). - var zero = true - for (i = bytes; i > 0; i --) { - var byte = tuple[bytes - i] - if (positive) buf[fill + i] = byte - else if (zero && byte === 0) buf[fill + i] = 0 - else if (zero) { - zero = false - buf[fill + i] = 0x100 - byte - } else buf[fill + i] = 0xFF - byte - } -} - -function writeText (block, off, end, str) { - // strings are written as utf8, then padded with \0 - var strLen = Buffer.byteLength(str) - , writeLen = Math.min(strLen, end - off) - // non-ascii fields need extended headers - // long fields get truncated - , needExtended = strLen !== str.length || strLen > writeLen - - // write the string, and null-pad - if (writeLen > 0) block.write(str, off, writeLen, "utf8") - for (var i = off + writeLen; i < end; i ++) block[i] = 0 - - return needExtended -} - -function calcSum (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - if (!block) throw new Error("Need block to checksum") - - // now figure out what it would be if the cksum was " " - var sum = 0 - , start = fieldOffs[fields.cksum] - , end = fieldEnds[fields.cksum] - - for (var i = 0; i < fieldOffs[fields.cksum]; i ++) { - sum += block[i] - } - - for (var i = start; i < end; i ++) { - sum += space - } - - for (var i = end; i < 512; i ++) { - sum += block[i] - } - - return sum -} - - -function checkSum (block) { - var sum = calcSum.call(this, block) - block = block || this.block - - var cksum = block.slice(fieldOffs[fields.cksum], fieldEnds[fields.cksum]) - cksum = parseNumeric(cksum) - - return cksum === sum -} - -function decode (block) { - block = block || this.block - assert(Buffer.isBuffer(block) && block.length === 512) - - this.block = block - this.cksumValid = this.checkSum() - - var prefix = null - - // slice off each field. - for (var f = 0; fields[f] !== null; f ++) { - var field = fields[f] - , val = block.slice(fieldOffs[f], fieldEnds[f]) - - switch (field) { - case "ustar": - // if not ustar, then everything after that is just padding. - if (val.toString() !== "ustar\0") { - this.ustar = false - return - } else { - // console.error("ustar:", val, val.toString()) - this.ustar = val.toString() - } - break - - // prefix is special, since it might signal the xstar header - case "prefix": - var atime = parseNumeric(val.slice(131, 131 + 12)) - , ctime = parseNumeric(val.slice(131 + 12, 131 + 12 + 12)) - if ((val[130] === 0 || val[130] === space) && - typeof atime === "number" && - typeof ctime === "number" && - val[131 + 12] === space && - val[131 + 12 + 12] === space) { - this.atime = atime - this.ctime = ctime - val = val.slice(0, 130) - } - prefix = val.toString("utf8").replace(/\0+$/, "") - // console.error("%% header reading prefix", prefix) - break - - // all other fields are null-padding text - // or a number. - default: - if (numeric[field]) { - this[field] = parseNumeric(val) - } else { - this[field] = val.toString("utf8").replace(/\0+$/, "") - } - break - } - } - - // if we got a prefix, then prepend it to the path. - if (prefix) { - this.path = prefix + "/" + this.path - // console.error("%% header got a prefix", this.path) - } -} - -function parse256 (buf) { - // first byte MUST be either 80 or FF - // 80 for positive, FF for 2's comp - var positive - if (buf[0] === 0x80) positive = true - else if (buf[0] === 0xFF) positive = false - else return null - - // build up a base-256 tuple from the least sig to the highest - var zero = false - , tuple = [] - for (var i = buf.length - 1; i > 0; i --) { - var byte = buf[i] - if (positive) tuple.push(byte) - else if (zero && byte === 0) tuple.push(0) - else if (zero) { - zero = false - tuple.push(0x100 - byte) - } else tuple.push(0xFF - byte) - } - - for (var sum = 0, i = 0, l = tuple.length; i < l; i ++) { - sum += tuple[i] * Math.pow(256, i) - } - - return positive ? sum : -1 * sum -} - -function parseNumeric (f) { - if (f[0] & 0x80) return parse256(f) - - var str = f.toString("utf8").split("\0")[0].trim() - , res = parseInt(str, 8) - - return isNaN(res) ? null : res -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js deleted file mode 100644 index 3ff14dd6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/pack.js +++ /dev/null @@ -1,231 +0,0 @@ -// pipe in an fstream, and it'll make a tarball. -// key-value pair argument is global extended header props. - -module.exports = Pack - -var EntryWriter = require("./entry-writer.js") - , Stream = require("stream").Stream - , path = require("path") - , inherits = require("inherits") - , GlobalHeaderWriter = require("./global-header-writer.js") - , collect = require("fstream").collect - , eof = new Buffer(512) - -for (var i = 0; i < 512; i ++) eof[i] = 0 - -inherits(Pack, Stream) - -function Pack (props) { - // console.error("-- p ctor") - var me = this - if (!(me instanceof Pack)) return new Pack(props) - - if (props) me._noProprietary = props.noProprietary - else me._noProprietary = false - - me._global = props - - me.readable = true - me.writable = true - me._buffer = [] - // console.error("-- -- set current to null in ctor") - me._currentEntry = null - me._processing = false - - me._pipeRoot = null - me.on("pipe", function (src) { - if (src.root === me._pipeRoot) return - me._pipeRoot = src - src.on("end", function () { - me._pipeRoot = null - }) - me.add(src) - }) -} - -Pack.prototype.addGlobal = function (props) { - // console.error("-- p addGlobal") - if (this._didGlobal) return - this._didGlobal = true - - var me = this - GlobalHeaderWriter(props) - .on("data", function (c) { - me.emit("data", c) - }) - .end() -} - -Pack.prototype.add = function (stream) { - if (this._global && !this._didGlobal) this.addGlobal(this._global) - - if (this._ended) return this.emit("error", new Error("add after end")) - - collect(stream) - this._buffer.push(stream) - this._process() - this._needDrain = this._buffer.length > 0 - return !this._needDrain -} - -Pack.prototype.pause = function () { - this._paused = true - if (this._currentEntry) this._currentEntry.pause() - this.emit("pause") -} - -Pack.prototype.resume = function () { - this._paused = false - if (this._currentEntry) this._currentEntry.resume() - this.emit("resume") - this._process() -} - -Pack.prototype.end = function () { - this._ended = true - this._buffer.push(eof) - this._process() -} - -Pack.prototype._process = function () { - var me = this - if (me._paused || me._processing) { - return - } - - var entry = me._buffer.shift() - - if (!entry) { - if (me._needDrain) { - me.emit("drain") - } - return - } - - if (entry.ready === false) { - // console.error("-- entry is not ready", entry) - me._buffer.unshift(entry) - entry.on("ready", function () { - // console.error("-- -- ready!", entry) - me._process() - }) - return - } - - me._processing = true - - if (entry === eof) { - // need 2 ending null blocks. - me.emit("data", eof) - me.emit("data", eof) - me.emit("end") - me.emit("close") - return - } - - // Change the path to be relative to the root dir that was - // added to the tarball. - // - // XXX This should be more like how -C works, so you can - // explicitly set a root dir, and also explicitly set a pathname - // in the tarball to use. That way we can skip a lot of extra - // work when resolving symlinks for bundled dependencies in npm. - - var root = path.dirname((entry.root || entry).path) - var wprops = {} - - Object.keys(entry.props || {}).forEach(function (k) { - wprops[k] = entry.props[k] - }) - - if (me._noProprietary) wprops.noProprietary = true - - wprops.path = path.relative(root, entry.path || '') - - // actually not a matter of opinion or taste. - if (process.platform === "win32") { - wprops.path = wprops.path.replace(/\\/g, "/") - } - - if (!wprops.type) - wprops.type = 'Directory' - - switch (wprops.type) { - // sockets not supported - case "Socket": - return - - case "Directory": - wprops.path += "/" - wprops.size = 0 - break - - case "Link": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(root, lp) || "." - wprops.size = 0 - break - - case "SymbolicLink": - var lp = path.resolve(path.dirname(entry.path), entry.linkpath) - wprops.linkpath = path.relative(path.dirname(entry.path), lp) || "." - wprops.size = 0 - break - } - - // console.error("-- new writer", wprops) - // if (!wprops.type) { - // // console.error("-- no type?", entry.constructor.name, entry) - // } - - // console.error("-- -- set current to new writer", wprops.path) - var writer = me._currentEntry = EntryWriter(wprops) - - writer.parent = me - - // writer.on("end", function () { - // // console.error("-- -- writer end", writer.path) - // }) - - writer.on("data", function (c) { - me.emit("data", c) - }) - - writer.on("header", function () { - Buffer.prototype.toJSON = function () { - return this.toString().split(/\0/).join(".") - } - // console.error("-- -- writer header %j", writer.props) - if (writer.props.size === 0) nextEntry() - }) - writer.on("close", nextEntry) - - var ended = false - function nextEntry () { - if (ended) return - ended = true - - // console.error("-- -- writer close", writer.path) - // console.error("-- -- set current to null", wprops.path) - me._currentEntry = null - me._processing = false - me._process() - } - - writer.on("error", function (er) { - // console.error("-- -- writer error", writer.path) - me.emit("error", er) - }) - - // if it's the root, then there's no need to add its entries, - // or data, since they'll be added directly. - if (entry === me._pipeRoot) { - // console.error("-- is the root, don't auto-add") - writer.add = null - } - - entry.pipe(writer) -} - -Pack.prototype.destroy = function () {} -Pack.prototype.write = function () {} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js deleted file mode 100644 index 884e73db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/lib/parse.js +++ /dev/null @@ -1,270 +0,0 @@ - -// A writable stream. -// It emits "entry" events, which provide a readable stream that has -// header info attached. - -module.exports = Parse.create = Parse - -var stream = require("stream") - , Stream = stream.Stream - , BlockStream = require("block-stream") - , tar = require("../tar.js") - , TarHeader = require("./header.js") - , Entry = require("./entry.js") - , BufferEntry = require("./buffer-entry.js") - , ExtendedHeader = require("./extended-header.js") - , assert = require("assert").ok - , inherits = require("inherits") - , fstream = require("fstream") - -// reading a tar is a lot like reading a directory -// However, we're actually not going to run the ctor, -// since it does a stat and various other stuff. -// This inheritance gives us the pause/resume/pipe -// behavior that is desired. -inherits(Parse, fstream.Reader) - -function Parse () { - var me = this - if (!(me instanceof Parse)) return new Parse() - - // doesn't apply fstream.Reader ctor? - // no, becasue we don't want to stat/etc, we just - // want to get the entry/add logic from .pipe() - Stream.apply(me) - - me.writable = true - me.readable = true - me._stream = new BlockStream(512) - me.position = 0 - - me._stream.on("error", function (e) { - me.emit("error", e) - }) - - me._stream.on("data", function (c) { - me._process(c) - }) - - me._stream.on("end", function () { - me._streamEnd() - }) - - me._stream.on("drain", function () { - me.emit("drain") - }) -} - -// overridden in Extract class, since it needs to -// wait for its DirWriter part to finish before -// emitting "end" -Parse.prototype._streamEnd = function () { - var me = this - if (!me._ended) me.error("unexpected eof") - me.emit("end") -} - -// a tar reader is actually a filter, not just a readable stream. -// So, you should pipe a tarball stream into it, and it needs these -// write/end methods to do that. -Parse.prototype.write = function (c) { - if (this._ended) { - // gnutar puts a LOT of nulls at the end. - // you can keep writing these things forever. - // Just ignore them. - for (var i = 0, l = c.length; i > l; i ++) { - if (c[i] !== 0) return this.error("write() after end()") - } - return - } - return this._stream.write(c) -} - -Parse.prototype.end = function (c) { - this._ended = true - return this._stream.end(c) -} - -// don't need to do anything, since we're just -// proxying the data up from the _stream. -// Just need to override the parent's "Not Implemented" -// error-thrower. -Parse.prototype._read = function () {} - -Parse.prototype._process = function (c) { - assert(c && c.length === 512, "block size should be 512") - - // one of three cases. - // 1. A new header - // 2. A part of a file/extended header - // 3. One of two or more EOF null blocks - - if (this._entry) { - var entry = this._entry - entry.write(c) - if (entry._remaining === 0) { - entry.end() - this._entry = null - } - } else { - // either zeroes or a header - var zero = true - for (var i = 0; i < 512 && zero; i ++) { - zero = c[i] === 0 - } - - // eof is *at least* 2 blocks of nulls, and then the end of the - // file. you can put blocks of nulls between entries anywhere, - // so appending one tarball to another is technically valid. - // ending without the eof null blocks is not allowed, however. - if (zero) { - this._ended = this._eofStarted - this._eofStarted = true - } else { - this._ended = this._eofStarted = false - this._startEntry(c) - } - - } - - this.position += 512 -} - -// take a header chunk, start the right kind of entry. -Parse.prototype._startEntry = function (c) { - var header = new TarHeader(c) - , self = this - , entry - , ev - , EntryType - , onend - , meta = false - - if (null === header.size || !header.cksumValid) { - var e = new Error("invalid tar file") - e.header = header - e.tar_file_offset = this.position - e.tar_block = this.position / 512 - this.emit("error", e) - } - - switch (tar.types[header.type]) { - case "File": - case "OldFile": - case "Link": - case "SymbolicLink": - case "CharacterDevice": - case "BlockDevice": - case "Directory": - case "FIFO": - case "ContiguousFile": - case "GNUDumpDir": - // start a file. - // pass in any extended headers - // These ones consumers are typically most interested in. - EntryType = Entry - ev = "entry" - break - - case "GlobalExtendedHeader": - // extended headers that apply to the rest of the tarball - EntryType = ExtendedHeader - onend = function () { - self._global = self._global || {} - Object.keys(entry.fields).forEach(function (k) { - self._global[k] = entry.fields[k] - }) - } - ev = "globalExtendedHeader" - meta = true - break - - case "ExtendedHeader": - case "OldExtendedHeader": - // extended headers that apply to the next entry - EntryType = ExtendedHeader - onend = function () { - self._extended = entry.fields - } - ev = "extendedHeader" - meta = true - break - - case "NextFileHasLongLinkpath": - // set linkpath=<contents> in extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.linkpath = entry.body - } - ev = "longLinkpath" - meta = true - break - - case "NextFileHasLongPath": - case "OldGnuLongPath": - // set path=<contents> in file-extended header - EntryType = BufferEntry - onend = function () { - self._extended = self._extended || {} - self._extended.path = entry.body - } - ev = "longPath" - meta = true - break - - default: - // all the rest we skip, but still set the _entry - // member, so that we can skip over their data appropriately. - // emit an event to say that this is an ignored entry type? - EntryType = Entry - ev = "ignoredEntry" - break - } - - var global, extended - if (meta) { - global = extended = null - } else { - var global = this._global - var extended = this._extended - - // extendedHeader only applies to one entry, so once we start - // an entry, it's over. - this._extended = null - } - entry = new EntryType(header, extended, global) - entry.meta = meta - - // only proxy data events of normal files. - if (!meta) { - entry.on("data", function (c) { - me.emit("data", c) - }) - } - - if (onend) entry.on("end", onend) - - this._entry = entry - var me = this - - entry.on("pause", function () { - me.pause() - }) - - entry.on("resume", function () { - me.resume() - }) - - if (this.listeners("*").length) { - this.emit("*", ev, entry) - } - - this.emit(ev, entry) - - // Zero-byte entry. End immediately. - if (entry.props.size === 0) { - entry.end() - this._entry = null - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE deleted file mode 100644 index 74489e2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/LICENCE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) Isaac Z. Schlueter -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md deleted file mode 100644 index c16e9c46..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# block-stream - -A stream of blocks. - -Write data into it, and it'll output data in buffer blocks the size you -specify, padding with zeroes if necessary. - -```javascript -var block = new BlockStream(512) -fs.createReadStream("some-file").pipe(block) -block.pipe(fs.createWriteStream("block-file")) -``` - -When `.end()` or `.flush()` is called, it'll pad the block with zeroes. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js deleted file mode 100644 index 9328844a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js deleted file mode 100644 index 1141f3a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/block-stream.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js deleted file mode 100644 index 93e4068e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js +++ /dev/null @@ -1,70 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - f.pause() - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - f.resume() - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js deleted file mode 100644 index 55fa1330..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/bench/dropper.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("dropper") - -var blockSizes = [16, 25, 1024] - , writeSizes = [4, 8, 15, 16, 17, 64, 100] - , writeCounts = [1, 10, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js deleted file mode 100644 index 008de035..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/block-stream.js +++ /dev/null @@ -1,209 +0,0 @@ -// write data to it, and it'll emit data in 512 byte blocks. -// if you .end() or .flush(), it'll emit whatever it's got, -// padded with nulls to 512 bytes. - -module.exports = BlockStream - -var Stream = require("stream").Stream - , inherits = require("inherits") - , assert = require("assert").ok - , debug = process.env.DEBUG ? console.error : function () {} - -function BlockStream (size, opt) { - this.writable = this.readable = true - this._opt = opt || {} - this._chunkSize = size || 512 - this._offset = 0 - this._buffer = [] - this._bufferLength = 0 - if (this._opt.nopad) this._zeroes = false - else { - this._zeroes = new Buffer(this._chunkSize) - for (var i = 0; i < this._chunkSize; i ++) { - this._zeroes[i] = 0 - } - } -} - -inherits(BlockStream, Stream) - -BlockStream.prototype.write = function (c) { - // debug(" BS write", c) - if (this._ended) throw new Error("BlockStream: write after end") - if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "") - if (c.length) { - this._buffer.push(c) - this._bufferLength += c.length - } - // debug("pushed onto buffer", this._bufferLength) - if (this._bufferLength >= this._chunkSize) { - if (this._paused) { - // debug(" BS paused, return false, need drain") - this._needDrain = true - return false - } - this._emitChunk() - } - return true -} - -BlockStream.prototype.pause = function () { - // debug(" BS pausing") - this._paused = true -} - -BlockStream.prototype.resume = function () { - // debug(" BS resume") - this._paused = false - return this._emitChunk() -} - -BlockStream.prototype.end = function (chunk) { - // debug("end", chunk) - if (typeof chunk === "function") cb = chunk, chunk = null - if (chunk) this.write(chunk) - this._ended = true - this.flush() -} - -BlockStream.prototype.flush = function () { - this._emitChunk(true) -} - -BlockStream.prototype._emitChunk = function (flush) { - // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused) - - // emit a <chunkSize> chunk - if (flush && this._zeroes) { - // debug(" BS push zeroes", this._bufferLength) - // push a chunk of zeroes - var padBytes = (this._bufferLength % this._chunkSize) - if (padBytes !== 0) padBytes = this._chunkSize - padBytes - if (padBytes > 0) { - // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes)) - this._buffer.push(this._zeroes.slice(0, padBytes)) - this._bufferLength += padBytes - // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength) - } - } - - if (this._emitting || this._paused) return - this._emitting = true - - // debug(" BS entering loops") - var bufferIndex = 0 - while (this._bufferLength >= this._chunkSize && - (flush || !this._paused)) { - // debug(" BS data emission loop", this._bufferLength) - - var out - , outOffset = 0 - , outHas = this._chunkSize - - while (outHas > 0 && (flush || !this._paused) ) { - // debug(" BS data inner emit loop", this._bufferLength) - var cur = this._buffer[bufferIndex] - , curHas = cur.length - this._offset - // debug("cur=", cur) - // debug("curHas=%j", curHas) - // If it's not big enough to fill the whole thing, then we'll need - // to copy multiple buffers into one. However, if it is big enough, - // then just slice out the part we want, to save unnecessary copying. - // Also, need to copy if we've already done some copying, since buffers - // can't be joined like cons strings. - if (out || curHas < outHas) { - out = out || new Buffer(this._chunkSize) - cur.copy(out, outOffset, - this._offset, this._offset + Math.min(curHas, outHas)) - } else if (cur.length === outHas && this._offset === 0) { - // shortcut -- cur is exactly long enough, and no offset. - out = cur - } else { - // slice out the piece of cur that we need. - out = cur.slice(this._offset, this._offset + outHas) - } - - if (curHas > outHas) { - // means that the current buffer couldn't be completely output - // update this._offset to reflect how much WAS written - this._offset += outHas - outHas = 0 - } else { - // output the entire current chunk. - // toss it away - outHas -= curHas - outOffset += curHas - bufferIndex ++ - this._offset = 0 - } - } - - this._bufferLength -= this._chunkSize - assert(out.length === this._chunkSize) - // debug("emitting data", out) - // debug(" BS emitting, paused=%j", this._paused, this._bufferLength) - this.emit("data", out) - out = null - } - // debug(" BS out of loops", this._bufferLength) - - // whatever is left, it's not enough to fill up a block, or we're paused - this._buffer = this._buffer.slice(bufferIndex) - if (this._paused) { - // debug(" BS paused, leaving", this._bufferLength) - this._needsDrain = true - this._emitting = false - return - } - - // if flushing, and not using null-padding, then need to emit the last - // chunk(s) sitting in the queue. We know that it's not enough to - // fill up a whole block, because otherwise it would have been emitted - // above, but there may be some offset. - var l = this._buffer.length - if (flush && !this._zeroes && l) { - if (l === 1) { - if (this._offset) { - this.emit("data", this._buffer[0].slice(this._offset)) - } else { - this.emit("data", this._buffer[0]) - } - } else { - var outHas = this._bufferLength - , out = new Buffer(outHas) - , outOffset = 0 - for (var i = 0; i < l; i ++) { - var cur = this._buffer[i] - , curHas = cur.length - this._offset - cur.copy(out, outOffset, this._offset) - this._offset = 0 - outOffset += curHas - this._bufferLength -= curHas - } - this.emit("data", out) - } - // truncate - this._buffer.length = 0 - this._bufferLength = 0 - this._offset = 0 - } - - // now either drained or ended - // debug("either draining, or ended", this._bufferLength, this._ended) - // means that we've flushed out all that we can so far. - if (this._needDrain) { - // debug("emitting drain", this._bufferLength) - this._needDrain = false - this.emit("drain") - } - - if ((this._bufferLength === 0) && this._ended && !this._endEmitted) { - // debug("emitting end", this._bufferLength) - this._endEmitted = true - this.emit("end") - } - - this._emitting = false - - // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json deleted file mode 100644 index 48840aa1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "block-stream", - "description": "a stream of blocks", - "version": "0.0.7", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/block-stream.git" - }, - "engines": { - "node": "0.4 || >=0.5.8" - }, - "main": "block-stream.js", - "dependencies": { - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "0.x" - }, - "scripts": { - "test": "tap test/" - }, - "license": "BSD", - "readme": "# block-stream\n\nA stream of blocks.\n\nWrite data into it, and it'll output data in buffer blocks the size you\nspecify, padding with zeroes if necessary.\n\n```javascript\nvar block = new BlockStream(512)\nfs.createReadStream(\"some-file\").pipe(block)\nblock.pipe(fs.createWriteStream(\"block-file\"))\n```\n\nWhen `.end()` or `.flush()` is called, it'll pad the block with zeroes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/block-stream/issues" - }, - "homepage": "https://github.com/isaacs/block-stream", - "_id": "block-stream@0.0.7", - "_from": "block-stream@*" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js deleted file mode 100644 index b4b93051..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/basic.js +++ /dev/null @@ -1,27 +0,0 @@ -var tap = require("tap") - , BlockStream = require("../block-stream.js") - -tap.test("basic test", function (t) { - var b = new BlockStream(16) - var fs = require("fs") - var fstr = fs.createReadStream(__filename, {encoding: "utf8"}) - fstr.pipe(b) - - var stat - t.doesNotThrow(function () { - stat = fs.statSync(__filename) - }, "stat should not throw") - - var totalBytes = 0 - b.on("data", function (c) { - t.equal(c.length, 16, "chunks should be 16 bytes long") - t.type(c, Buffer, "chunks should be buffer objects") - totalBytes += c.length - }) - b.on("end", function () { - var expectedBytes = stat.size + (16 - stat.size % 16) - t.equal(totalBytes, expectedBytes, "Should be multiple of 16") - t.end() - }) - -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js deleted file mode 100644 index 7a8de88b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize, {nopad: true }) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = writeSize * writeCount * 2 - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js deleted file mode 100644 index 6d38429f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/nopad.js +++ /dev/null @@ -1,57 +0,0 @@ -var BlockStream = require("../") -var tap = require("tap") - - -tap.test("don't pad, small writes", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - f.on("data", function (c) { - t.equal(c.toString(), "abc", "should get 'abc'") - }) - - f.on("end", function () { t.end() }) - - f.write(new Buffer("a")) - f.write(new Buffer("b")) - f.write(new Buffer("c")) - f.end() -}) - -tap.test("don't pad, exact write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(1) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.fail("should only get one") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnop")) -}) - -tap.test("don't pad, big write", function (t) { - var f = new BlockStream(16, { nopad: true }) - t.plan(2) - - var first = true - f.on("data", function (c) { - if (first) { - first = false - t.equal(c.toString(), "abcdefghijklmnop", "first chunk") - } else { - t.equal(c.toString(), "q") - } - }) - - f.on("end", function () { t.end() }) - - f.end(new Buffer("abcdefghijklmnopq")) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js deleted file mode 100644 index 64d0d091..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16] - , writeSizes = [15, 16, 17] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - var paused = false - - f.on("data", function (c) { - timeouts ++ - t.notOk(paused, "should not be paused when emitting data") - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - paused = true - f.pause() - process.nextTick(function () { - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - paused = false - f.resume() - timeouts -- - }) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 200) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js deleted file mode 100644 index 1cc9ea08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/thorough.js +++ /dev/null @@ -1,68 +0,0 @@ -var BlockStream = require("../block-stream.js") - -var blockSizes = [16]//, 25]//, 1024] - , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100] - , writeCounts = [1, 10]//, 100] - , tap = require("tap") - -writeCounts.forEach(function (writeCount) { -blockSizes.forEach(function (blockSize) { -writeSizes.forEach(function (writeSize) { - tap.test("writeSize=" + writeSize + - " blockSize="+blockSize + - " writeCount="+writeCount, function (t) { - var f = new BlockStream(blockSize) - - var actualChunks = 0 - var actualBytes = 0 - var timeouts = 0 - - f.on("data", function (c) { - timeouts ++ - - actualChunks ++ - actualBytes += c.length - - // make sure that no data gets corrupted, and basic sanity - var before = c.toString() - // simulate a slow write operation - setTimeout(function () { - timeouts -- - - var after = c.toString() - t.equal(after, before, "should not change data") - - // now corrupt it, to find leaks. - for (var i = 0; i < c.length; i ++) { - c[i] = "x".charCodeAt(0) - } - }, 100) - }) - - f.on("end", function () { - // round up to the nearest block size - var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize) - var expectBytes = expectChunks * blockSize - t.equal(actualBytes, expectBytes, - "bytes=" + expectBytes + " writeSize=" + writeSize) - t.equal(actualChunks, expectChunks, - "chunks=" + expectChunks + " writeSize=" + writeSize) - - // wait for all the timeout checks to finish, then end the test - setTimeout(function WAIT () { - if (timeouts > 0) return setTimeout(WAIT) - t.end() - }, 100) - }) - - for (var i = 0; i < writeCount; i ++) { - var a = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0) - var b = new Buffer(writeSize); - for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0) - f.write(a) - f.write(b) - } - f.end() - }) -}) }) }) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js deleted file mode 100644 index c6db79a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/block-stream/test/two-stream.js +++ /dev/null @@ -1,59 +0,0 @@ -var log = console.log, - assert = require( 'assert' ), - BlockStream = require("../block-stream.js"), - isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0, - filter = null, paper = null, stack = null, - -// a source data buffer -tsize = 1 * 1024; // <- 1K -stack = new Buffer( tsize ); -for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0); - -isize = 1 * 1024; // <- initial packet size with 4K no bug! -fsize = 2 * 1024 ; // <- first block-stream size -psize = Math.ceil( isize / 6 ); // <- second block-stream size - -fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first -pexpected = Math.ceil( tsize / psize ); // <- packets expected for second - - -filter = new BlockStream( fsize, { nopad : true } ); -paper = new BlockStream( psize, { nopad : true } ); - - -var fcounter = 0; -filter.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++fcounter; -} ); - -var pcounter = 0; -paper.on( 'data', function (c) { - // verify that they're not null-padded - for (var i = 0; i < c.length; i ++) { - assert.strictEqual(c[i], "x".charCodeAt(0)) - } - ++pcounter; -} ); - -filter.pipe( paper ); - -filter.on( 'end', function () { - log("fcounter: %s === %s", fcounter, fexpected) - assert.strictEqual( fcounter, fexpected ); -} ); - -paper.on( 'end', function () { - log("pcounter: %s === %s", pcounter, pexpected); - assert.strictEqual( pcounter, pexpected ); -} ); - - -for ( i = 0, j = isize; j <= tsize; j += isize ) { - filter.write( stack.slice( j - isize, j ) ); -} - -filter.end(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore deleted file mode 100644 index 494272a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.*.swp -node_modules/ -examples/deep-copy/ -examples/path/ -examples/filter-copy/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml deleted file mode 100644 index 2d26206d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md deleted file mode 100644 index 9d8cb77e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/README.md +++ /dev/null @@ -1,76 +0,0 @@ -Like FS streams, but with stat on them, and supporting directories and -symbolic links, as well as normal files. Also, you can use this to set -the stats on a file, even if you don't change its contents, or to create -a symlink, etc. - -So, for example, you can "write" a directory, and it'll call `mkdir`. You -can specify a uid and gid, and it'll call `chown`. You can specify a -`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink -and provide a `linkpath` and it'll call `symlink`. - -Note that it won't automatically resolve symbolic links. So, if you -call `fstream.Reader('/some/symlink')` then you'll get an object -that stats and then ends immediately (since it has no data). To follow -symbolic links, do this: `fstream.Reader({path:'/some/symlink', follow: -true })`. - -There are various checks to make sure that the bytes emitted are the -same as the intended size, if the size is set. - -## Examples - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - }) - .write("hello\n") - .end() -``` - -This will create the directories if they're missing, and then write -`hello\n` into the file, chmod it to 0755, and assert that 6 bytes have -been written when it's done. - -```javascript -fstream - .Writer({ path: "path/to/file" - , mode: 0755 - , size: 6 - , flags: "a" - }) - .write("hello\n") - .end() -``` - -You can pass flags in, if you want to append to a file. - -```javascript -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , SymbolicLink: true - , mode: "0755" // octal strings supported - }) - .end() -``` - -If isSymbolicLink is a function, it'll be called, and if it returns -true, then it'll treat it as a symlink. If it's not a function, then -any truish value will make a symlink, or you can set `type: -'SymbolicLink'`, which does the same thing. - -Note that the linkpath is relative to the symbolic link location, not -the parent dir or cwd. - -```javascript -fstream - .Reader("path/to/dir") - .pipe(fstream.Writer("path/to/other/dir")) -``` - -This will do like `cp -Rp path/to/dir path/to/other/dir`. If the other -dir exists and isn't a directory, then it'll emit an error. It'll also -set the uid, gid, mode, etc. to be identical. In this way, it's more -like `rsync -a` than simply a copy. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js deleted file mode 100644 index c6b55b3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/filter-pipe.js +++ /dev/null @@ -1,131 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - !this.basename.match(/^filter-copy$/) - } - }) - -// this writer will only write directories -var w = fstream.Writer({ path: path.resolve(__dirname, "filter-copy") - , type: "Directory" - , filter: function () { - return this.type === "Directory" - } - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 1000) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -var i = 1 -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok " + (i ++) + " A WINNAR IS YOU") - ended = true - // now go through and verify that everything in there is a dir. - var p = path.resolve(__dirname, "filter-copy") - var checker = fstream.Reader({ path: p }) - checker.checker = true - checker.on("child", function (e) { - var ok = e.type === "Directory" - console.log((ok ? "" : "not ") + "ok " + (i ++) + - " should be a dir: " + - e.path.substr(checker.path.length + 1)) - }) -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok " + (i ++) + " ended") -}) - -r.pipe(w) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js deleted file mode 100644 index 648ec849..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/pipe.js +++ /dev/null @@ -1,115 +0,0 @@ -var fstream = require("../fstream.js") -var path = require("path") - -var r = fstream.Reader({ path: path.dirname(__dirname) - , filter: function () { - return !this.basename.match(/^\./) && - !this.basename.match(/^node_modules$/) - !this.basename.match(/^deep-copy$/) - } - }) - -var w = fstream.Writer({ path: path.resolve(__dirname, "deep-copy") - , type: "Directory" - }) - -var indent = "" -var escape = {} - -r.on("entry", appears) -r.on("ready", function () { - console.error("ready to begin!", r.path) -}) - -function appears (entry) { - console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename, entry) - if (foggy) { - console.error("FOGGY!") - var p = entry - do { - console.error(p.depth, p.path, p._paused) - } while (p = p.parent) - - throw new Error("\033[mshould not have entries while foggy") - } - indent += "\t" - entry.on("data", missile(entry)) - entry.on("end", runaway(entry)) - entry.on("entry", appears) -} - -var foggy -function missile (entry) { - if (entry.type === "Directory") { - var ended = false - entry.once("end", function () { ended = true }) - return function (c) { - // throw in some pathological pause()/resume() behavior - // just for extra fun. - process.nextTick(function () { - if (!foggy && !ended) { // && Math.random() < 0.3) { - console.error(indent +"%s casts a spell", entry.basename) - console.error("\na slowing fog comes over the battlefield...\n\033[32m") - entry.pause() - entry.once("resume", liftFog) - foggy = setTimeout(liftFog, 10) - - function liftFog (who) { - if (!foggy) return - if (who) { - console.error("%s breaks the spell!", who && who.path) - } else { - console.error("the spell expires!") - } - console.error("\033[mthe fog lifts!\n") - clearTimeout(foggy) - foggy = null - if (entry._paused) entry.resume() - } - - } - }) - } - } - - return function (c) { - var e = Math.random() < 0.5 - console.error(indent + "%s %s for %d damage!", - entry.basename, - e ? "is struck" : "fires a chunk", - c.length) - } -} - -function runaway (entry) { return function () { - var e = Math.random() < 0.5 - console.error(indent + "%s %s", - entry.basename, - e ? "turns to flee" : "is vanquished!") - indent = indent.slice(0, -1) -}} - - -w.on("entry", attacks) -//w.on("ready", function () { attacks(w) }) -function attacks (entry) { - console.error(indent + "%s %s!", entry.basename, - entry.type === "Directory" ? "calls for backup" : "attacks") - entry.on("entry", attacks) -} - -ended = false -r.on("end", function () { - if (foggy) clearTimeout(foggy) - console.error("\033[mIT'S OVER!!") - console.error("A WINNAR IS YOU!") - - console.log("ok 1 A WINNAR IS YOU") - ended = true -}) - -process.on("exit", function () { - console.log((ended ? "" : "not ") + "ok 2 ended") -}) - -r.pipe(w) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js deleted file mode 100644 index 9aa1a953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/reader.js +++ /dev/null @@ -1,54 +0,0 @@ -var fstream = require("../fstream.js") -var tap = require("tap") -var fs = require("fs") -var path = require("path") -var children = -1 -var dir = path.dirname(__dirname) - -var gotReady = false -var ended = false - -tap.test("reader test", function (t) { - - var r = fstream.Reader({ path: dir - , filter: function () { - // return this.parent === r - return this.parent === r || this === r - } - }) - - r.on("ready", function () { - gotReady = true - children = fs.readdirSync(dir).length - console.error("Setting expected children to "+children) - t.equal(r.type, "Directory", "should be a directory") - }) - - r.on("entry", function (entry) { - children -- - if (!gotReady) { - t.fail("children before ready!") - } - t.equal(entry.dirname, r.path, "basename is parent dir") - }) - - r.on("error", function (er) { - t.fail(er) - t.end() - process.exit(1) - }) - - r.on("end", function () { - t.equal(children, 0, "should have seen all children") - ended = true - }) - - var closed = false - r.on("close", function () { - t.ok(ended, "saw end before close") - t.notOk(closed, "close should only happen once") - closed = true - t.end() - }) - -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js deleted file mode 100644 index d7816d24..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/examples/symlink-write.js +++ /dev/null @@ -1,24 +0,0 @@ -var fstream = require("../fstream.js") - , closed = false - -fstream - .Writer({ path: "path/to/symlink" - , linkpath: "./file" - , isSymbolicLink: true - , mode: "0755" // octal strings supported - }) - .on("close", function () { - closed = true - var fs = require("fs") - var s = fs.lstatSync("path/to/symlink") - var isSym = s.isSymbolicLink() - console.log((isSym?"":"not ") +"ok 1 should be symlink") - var t = fs.readlinkSync("path/to/symlink") - var isTarget = t === "./file" - console.log((isTarget?"":"not ") +"ok 2 should link to ./file") - }) - .end() - -process.on("exit", function () { - console.log((closed?"":"not ")+"ok 3 should be closed") -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js deleted file mode 100644 index c66d26f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/fstream.js +++ /dev/null @@ -1,31 +0,0 @@ -exports.Abstract = require("./lib/abstract.js") -exports.Reader = require("./lib/reader.js") -exports.Writer = require("./lib/writer.js") - -exports.File = - { Reader: require("./lib/file-reader.js") - , Writer: require("./lib/file-writer.js") } - -exports.Dir = - { Reader : require("./lib/dir-reader.js") - , Writer : require("./lib/dir-writer.js") } - -exports.Link = - { Reader : require("./lib/link-reader.js") - , Writer : require("./lib/link-writer.js") } - -exports.Proxy = - { Reader : require("./lib/proxy-reader.js") - , Writer : require("./lib/proxy-writer.js") } - -exports.Reader.Dir = exports.DirReader = exports.Dir.Reader -exports.Reader.File = exports.FileReader = exports.File.Reader -exports.Reader.Link = exports.LinkReader = exports.Link.Reader -exports.Reader.Proxy = exports.ProxyReader = exports.Proxy.Reader - -exports.Writer.Dir = exports.DirWriter = exports.Dir.Writer -exports.Writer.File = exports.FileWriter = exports.File.Writer -exports.Writer.Link = exports.LinkWriter = exports.Link.Writer -exports.Writer.Proxy = exports.ProxyWriter = exports.Proxy.Writer - -exports.collect = require("./lib/collect.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js deleted file mode 100644 index 11ef0e28..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/abstract.js +++ /dev/null @@ -1,85 +0,0 @@ -// the parent class for all fstreams. - -module.exports = Abstract - -var Stream = require("stream").Stream - , inherits = require("inherits") - -function Abstract () { - Stream.call(this) -} - -inherits(Abstract, Stream) - -Abstract.prototype.on = function (ev, fn) { - if (ev === "ready" && this.ready) { - process.nextTick(fn.bind(this)) - } else { - Stream.prototype.on.call(this, ev, fn) - } - return this -} - -Abstract.prototype.abort = function () { - this._aborted = true - this.emit("abort") -} - -Abstract.prototype.destroy = function () {} - -Abstract.prototype.warn = function (msg, code) { - var me = this - , er = decorate(msg, code, me) - if (!me.listeners("warn")) { - console.error("%s %s\n" + - "path = %s\n" + - "syscall = %s\n" + - "fstream_type = %s\n" + - "fstream_path = %s\n" + - "fstream_unc_path = %s\n" + - "fstream_class = %s\n" + - "fstream_stack =\n%s\n", - code || "UNKNOWN", - er.stack, - er.path, - er.syscall, - er.fstream_type, - er.fstream_path, - er.fstream_unc_path, - er.fstream_class, - er.fstream_stack.join("\n")) - } else { - me.emit("warn", er) - } -} - -Abstract.prototype.info = function (msg, code) { - this.emit("info", msg, code) -} - -Abstract.prototype.error = function (msg, code, th) { - var er = decorate(msg, code, this) - if (th) throw er - else this.emit("error", er) -} - -function decorate (er, code, me) { - if (!(er instanceof Error)) er = new Error(er) - er.code = er.code || code - er.path = er.path || me.path - er.fstream_type = er.fstream_type || me.type - er.fstream_path = er.fstream_path || me.path - if (me._path !== me.path) { - er.fstream_unc_path = er.fstream_unc_path || me._path - } - if (me.linkpath) { - er.fstream_linkpath = er.fstream_linkpath || me.linkpath - } - er.fstream_class = er.fstream_class || me.constructor.name - er.fstream_stack = er.fstream_stack || - new Error().stack.split(/\n/).slice(3).map(function (s) { - return s.replace(/^ at /, "") - }) - - return er -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js deleted file mode 100644 index a36f780e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/collect.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = collect - -function collect (stream) { - if (stream._collected) return - - stream._collected = true - stream.pause() - - stream.on("data", save) - stream.on("end", save) - var buf = [] - function save (b) { - if (typeof b === "string") b = new Buffer(b) - if (Buffer.isBuffer(b) && !b.length) return - buf.push(b) - } - - stream.on("entry", saveEntry) - var entryBuffer = [] - function saveEntry (e) { - collect(e) - entryBuffer.push(e) - } - - stream.on("proxy", proxyPause) - function proxyPause (p) { - p.pause() - } - - - // replace the pipe method with a new version that will - // unlock the buffered stuff. if you just call .pipe() - // without a destination, then it'll re-play the events. - stream.pipe = (function (orig) { return function (dest) { - // console.error(" === open the pipes", dest && dest.path) - - // let the entries flow through one at a time. - // Once they're all done, then we can resume completely. - var e = 0 - ;(function unblockEntry () { - var entry = entryBuffer[e++] - // console.error(" ==== unblock entry", entry && entry.path) - if (!entry) return resume() - entry.on("end", unblockEntry) - if (dest) dest.add(entry) - else stream.emit("entry", entry) - })() - - function resume () { - stream.removeListener("entry", saveEntry) - stream.removeListener("data", save) - stream.removeListener("end", save) - - stream.pipe = orig - if (dest) stream.pipe(dest) - - buf.forEach(function (b) { - if (b) stream.emit("data", b) - else stream.emit("end") - }) - - stream.resume() - } - - return dest - }})(stream.pipe) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js deleted file mode 100644 index 346ac2b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-reader.js +++ /dev/null @@ -1,251 +0,0 @@ -// A thing that emits "entry" events with Reader objects -// Pausing it causes it to stop emitting entry events, and also -// pauses the current entry if there is one. - -module.exports = DirReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , Reader = require("./reader.js") - , assert = require("assert").ok - -inherits(DirReader, Reader) - -function DirReader (props) { - var me = this - if (!(me instanceof DirReader)) throw new Error( - "DirReader must be called as constructor.") - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - throw new Error("Non-directory type "+ props.type) - } - - me.entries = null - me._index = -1 - me._paused = false - me._length = -1 - - if (props.sort) { - this.sort = props.sort - } - - Reader.call(this, props) -} - -DirReader.prototype._getEntries = function () { - var me = this - - // race condition. might pause() before calling _getEntries, - // and then resume, and try to get them a second time. - if (me._gotEntries) return - me._gotEntries = true - - fs.readdir(me._path, function (er, entries) { - if (er) return me.error(er) - - me.entries = entries - - me.emit("entries", entries) - if (me._paused) me.once("resume", processEntries) - else processEntries() - - function processEntries () { - me._length = me.entries.length - if (typeof me.sort === "function") { - me.entries = me.entries.sort(me.sort.bind(me)) - } - me._read() - } - }) -} - -// start walking the dir, and emit an "entry" event for each one. -DirReader.prototype._read = function () { - var me = this - - if (!me.entries) return me._getEntries() - - if (me._paused || me._currentEntry || me._aborted) { - // console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted) - return - } - - me._index ++ - if (me._index >= me.entries.length) { - if (!me._ended) { - me._ended = true - me.emit("end") - me.emit("close") - } - return - } - - // ok, handle this one, then. - - // save creating a proxy, by stat'ing the thing now. - var p = path.resolve(me._path, me.entries[me._index]) - assert(p !== me._path) - assert(me.entries[me._index]) - - // set this to prevent trying to _read() again in the stat time. - me._currentEntry = p - fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) { - if (er) return me.error(er) - - var who = me._proxy || me - - stat.path = p - stat.basename = path.basename(p) - stat.dirname = path.dirname(p) - var childProps = me.getChildProps.call(who, stat) - childProps.path = p - childProps.basename = path.basename(p) - childProps.dirname = path.dirname(p) - - var entry = Reader(childProps, stat) - - // console.error("DR Entry", p, stat.size) - - me._currentEntry = entry - - // "entry" events are for direct entries in a specific dir. - // "child" events are for any and all children at all levels. - // This nomenclature is not completely final. - - entry.on("pause", function (who) { - if (!me._paused && !entry._disowned) { - me.pause(who) - } - }) - - entry.on("resume", function (who) { - if (me._paused && !entry._disowned) { - me.resume(who) - } - }) - - entry.on("stat", function (props) { - me.emit("_entryStat", entry, props) - if (entry._aborted) return - if (entry._paused) entry.once("resume", function () { - me.emit("entryStat", entry, props) - }) - else me.emit("entryStat", entry, props) - }) - - entry.on("ready", function EMITCHILD () { - // console.error("DR emit child", entry._path) - if (me._paused) { - // console.error(" DR emit child - try again later") - // pause the child, and emit the "entry" event once we drain. - // console.error("DR pausing child entry") - entry.pause(me) - return me.once("resume", EMITCHILD) - } - - // skip over sockets. they can't be piped around properly, - // so there's really no sense even acknowledging them. - // if someone really wants to see them, they can listen to - // the "socket" events. - if (entry.type === "Socket") { - me.emit("socket", entry) - } else { - me.emitEntry(entry) - } - }) - - var ended = false - entry.on("close", onend) - entry.on("disown", onend) - function onend () { - if (ended) return - ended = true - me.emit("childEnd", entry) - me.emit("entryEnd", entry) - me._currentEntry = null - if (!me._paused) { - me._read() - } - } - - // XXX Remove this. Works in node as of 0.6.2 or so. - // Long filenames should not break stuff. - entry.on("error", function (er) { - if (entry._swallowErrors) { - me.warn(er) - entry.emit("end") - entry.emit("close") - } else { - me.emit("error", er) - } - }) - - // proxy up some events. - ; [ "child" - , "childEnd" - , "warn" - ].forEach(function (ev) { - entry.on(ev, me.emit.bind(me, ev)) - }) - }) -} - -DirReader.prototype.disown = function (entry) { - entry.emit("beforeDisown") - entry._disowned = true - entry.parent = entry.root = null - if (entry === this._currentEntry) { - this._currentEntry = null - } - entry.emit("disown") -} - -DirReader.prototype.getChildProps = function (stat) { - return { depth: this.depth + 1 - , root: this.root || this - , parent: this - , follow: this.follow - , filter: this.filter - , sort: this.props.sort - , hardlinks: this.props.hardlinks - } -} - -DirReader.prototype.pause = function (who) { - var me = this - if (me._paused) return - who = who || me - me._paused = true - if (me._currentEntry && me._currentEntry.pause) { - me._currentEntry.pause(who) - } - me.emit("pause", who) -} - -DirReader.prototype.resume = function (who) { - var me = this - if (!me._paused) return - who = who || me - - me._paused = false - // console.error("DR Emit Resume", me._path) - me.emit("resume", who) - if (me._paused) { - // console.error("DR Re-paused", me._path) - return - } - - if (me._currentEntry) { - if (me._currentEntry.resume) me._currentEntry.resume(who) - } else me._read() -} - -DirReader.prototype.emitEntry = function (entry) { - this.emit("entry", entry) - this.emit("child", entry) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js deleted file mode 100644 index 7073b883..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/dir-writer.js +++ /dev/null @@ -1,171 +0,0 @@ -// It is expected that, when .add() returns false, the consumer -// of the DirWriter will pause until a "drain" event occurs. Note -// that this is *almost always going to be the case*, unless the -// thing being written is some sort of unsupported type, and thus -// skipped over. - -module.exports = DirWriter - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Writer = require("./writer.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , path = require("path") - , collect = require("./collect.js") - -inherits(DirWriter, Writer) - -function DirWriter (props) { - var me = this - if (!(me instanceof DirWriter)) me.error( - "DirWriter must be called as constructor.", null, true) - - // should already be established as a Directory type - if (props.type !== "Directory" || !props.Directory) { - me.error("Non-directory type "+ props.type + " " + - JSON.stringify(props), null, true) - } - - Writer.call(this, props) -} - -DirWriter.prototype._create = function () { - var me = this - mkdir(me._path, Writer.dirmode, function (er) { - if (er) return me.error(er) - // ready to start getting entries! - me.ready = true - me.emit("ready") - me._process() - }) -} - -// a DirWriter has an add(entry) method, but its .write() doesn't -// do anything. Why a no-op rather than a throw? Because this -// leaves open the door for writing directory metadata for -// gnu/solaris style dumpdirs. -DirWriter.prototype.write = function () { - return true -} - -DirWriter.prototype.end = function () { - this._ended = true - this._process() -} - -DirWriter.prototype.add = function (entry) { - var me = this - - // console.error("\tadd", entry._path, "->", me._path) - collect(entry) - if (!me.ready || me._currentEntry) { - me._buffer.push(entry) - return false - } - - // create a new writer, and pipe the incoming entry into it. - if (me._ended) { - return me.error("add after end") - } - - me._buffer.push(entry) - me._process() - - return 0 === this._buffer.length -} - -DirWriter.prototype._process = function () { - var me = this - - // console.error("DW Process p=%j", me._processing, me.basename) - - if (me._processing) return - - var entry = me._buffer.shift() - if (!entry) { - // console.error("DW Drain") - me.emit("drain") - if (me._ended) me._finish() - return - } - - me._processing = true - // console.error("DW Entry", entry._path) - - me.emit("entry", entry) - - // ok, add this entry - // - // don't allow recursive copying - var p = entry - do { - var pp = p._path || p.path - if (pp === me.root._path || pp === me._path || - (pp && pp.indexOf(me._path) === 0)) { - // console.error("DW Exit (recursive)", entry.basename, me._path) - me._processing = false - if (entry._collected) entry.pipe() - return me._process() - } - } while (p = p.parent) - - // console.error("DW not recursive") - - // chop off the entry's root dir, replace with ours - var props = { parent: me - , root: me.root || me - , type: entry.type - , depth: me.depth + 1 } - - var p = entry._path || entry.path || entry.props.path - if (entry.parent) { - p = p.substr(entry.parent._path.length + 1) - } - // get rid of any ../../ shenanigans - props.path = path.join(me.path, path.join("/", p)) - - // if i have a filter, the child should inherit it. - props.filter = me.filter - - // all the rest of the stuff, copy over from the source. - Object.keys(entry.props).forEach(function (k) { - if (!props.hasOwnProperty(k)) { - props[k] = entry.props[k] - } - }) - - // not sure at this point what kind of writer this is. - var child = me._currentChild = new Writer(props) - child.on("ready", function () { - // console.error("DW Child Ready", child.type, child._path) - // console.error(" resuming", entry._path) - entry.pipe(child) - entry.resume() - }) - - // XXX Make this work in node. - // Long filenames should not break stuff. - child.on("error", function (er) { - if (child._swallowErrors) { - me.warn(er) - child.emit("end") - child.emit("close") - } else { - me.emit("error", er) - } - }) - - // we fire _end internally *after* end, so that we don't move on - // until any "end" listeners have had their chance to do stuff. - child.on("close", onend) - var ended = false - function onend () { - if (ended) return - ended = true - // console.error("* DW Child end", child.basename) - me._currentChild = null - me._processing = false - me._process() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js deleted file mode 100644 index b1f98618..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-reader.js +++ /dev/null @@ -1,147 +0,0 @@ -// Basically just a wrapper around an fs.ReadStream - -module.exports = FileReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , Reader = fstream.Reader - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - , EOF = {EOF: true} - , CLOSE = {CLOSE: true} - -inherits(FileReader, Reader) - -function FileReader (props) { - // console.error(" FR create", props.path, props.size, new Error().stack) - var me = this - if (!(me instanceof FileReader)) throw new Error( - "FileReader must be called as constructor.") - - // should already be established as a File type - // XXX Todo: preserve hardlinks by tracking dev+inode+nlink, - // with a HardLinkReader class. - if (!((props.type === "Link" && props.Link) || - (props.type === "File" && props.File))) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesEmitted = 0 - Reader.call(me, props) -} - -FileReader.prototype._getStream = function () { - var me = this - , stream = me._stream = fs.createReadStream(me._path, me.props) - - if (me.props.blksize) { - stream.bufferSize = me.props.blksize - } - - stream.on("open", me.emit.bind(me, "open")) - - stream.on("data", function (c) { - // console.error("\t\t%d %s", c.length, me.basename) - me._bytesEmitted += c.length - // no point saving empty chunks - if (!c.length) return - else if (me._paused || me._buffer.length) { - me._buffer.push(c) - me._read() - } else me.emit("data", c) - }) - - stream.on("end", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering End", me._path) - me._buffer.push(EOF) - me._read() - } else { - me.emit("end") - } - - if (me._bytesEmitted !== me.props.size) { - me.error("Didn't get expected byte count\n"+ - "expect: "+me.props.size + "\n" + - "actual: "+me._bytesEmitted) - } - }) - - stream.on("close", function () { - if (me._paused || me._buffer.length) { - // console.error("FR Buffering Close", me._path) - me._buffer.push(CLOSE) - me._read() - } else { - // console.error("FR close 1", me._path) - me.emit("close") - } - }) - - me._read() -} - -FileReader.prototype._read = function () { - var me = this - // console.error("FR _read", me._path) - if (me._paused) { - // console.error("FR _read paused", me._path) - return - } - - if (!me._stream) { - // console.error("FR _getStream calling", me._path) - return me._getStream() - } - - // clear out the buffer, if there is one. - if (me._buffer.length) { - // console.error("FR _read has buffer", me._buffer.length, me._path) - var buf = me._buffer - for (var i = 0, l = buf.length; i < l; i ++) { - var c = buf[i] - if (c === EOF) { - // console.error("FR Read emitting buffered end", me._path) - me.emit("end") - } else if (c === CLOSE) { - // console.error("FR Read emitting buffered close", me._path) - me.emit("close") - } else { - // console.error("FR Read emitting buffered data", me._path) - me.emit("data", c) - } - - if (me._paused) { - // console.error("FR Read Re-pausing at "+i, me._path) - me._buffer = buf.slice(i) - return - } - } - me._buffer.length = 0 - } - // console.error("FR _read done") - // that's about all there is to it. -} - -FileReader.prototype.pause = function (who) { - var me = this - // console.error("FR Pause", me._path) - if (me._paused) return - who = who || me - me._paused = true - if (me._stream) me._stream.pause() - me.emit("pause", who) -} - -FileReader.prototype.resume = function (who) { - var me = this - // console.error("FR Resume", me._path) - if (!me._paused) return - who = who || me - me.emit("resume", who) - me._paused = false - if (me._stream) me._stream.resume() - me._read() -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js deleted file mode 100644 index 68114625..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/file-writer.js +++ /dev/null @@ -1,100 +0,0 @@ -module.exports = FileWriter - -var fs = require("graceful-fs") - , mkdir = require("mkdirp") - , Writer = require("./writer.js") - , inherits = require("inherits") - , EOF = {} - -inherits(FileWriter, Writer) - -function FileWriter (props) { - var me = this - if (!(me instanceof FileWriter)) throw new Error( - "FileWriter must be called as constructor.") - - // should already be established as a File type - if (props.type !== "File" || !props.File) { - throw new Error("Non-file type "+ props.type) - } - - me._buffer = [] - me._bytesWritten = 0 - - Writer.call(this, props) -} - -FileWriter.prototype._create = function () { - var me = this - if (me._stream) return - - var so = {} - if (me.props.flags) so.flags = me.props.flags - so.mode = Writer.filemode - if (me._old && me._old.blksize) so.bufferSize = me._old.blksize - - me._stream = fs.createWriteStream(me._path, so) - - me._stream.on("open", function (fd) { - // console.error("FW open", me._buffer, me._path) - me.ready = true - me._buffer.forEach(function (c) { - if (c === EOF) me._stream.end() - else me._stream.write(c) - }) - me.emit("ready") - // give this a kick just in case it needs it. - me.emit("drain") - }) - - me._stream.on("drain", function () { me.emit("drain") }) - - me._stream.on("close", function () { - // console.error("\n\nFW Stream Close", me._path, me.size) - me._finish() - }) -} - -FileWriter.prototype.write = function (c) { - var me = this - - me._bytesWritten += c.length - - if (!me.ready) { - if (!Buffer.isBuffer(c) && typeof c !== 'string') - throw new Error('invalid write data') - me._buffer.push(c) - return false - } - - var ret = me._stream.write(c) - // console.error("\t-- fw wrote, _stream says", ret, me._stream._queue.length) - - // allow 2 buffered writes, because otherwise there's just too - // much stop and go bs. - return ret || (me._stream._queue && me._stream._queue.length <= 2) -} - -FileWriter.prototype.end = function (c) { - var me = this - - if (c) me.write(c) - - if (!me.ready) { - me._buffer.push(EOF) - return false - } - - return me._stream.end() -} - -FileWriter.prototype._finish = function () { - var me = this - if (typeof me.size === "number" && me._bytesWritten != me.size) { - me.error( - "Did not get expected byte count.\n" + - "expect: " + me.size + "\n" + - "actual: " + me._bytesWritten) - } - Writer.prototype._finish.call(me) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js deleted file mode 100644 index cd65c41d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/get-type.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = getType - -function getType (st) { - var types = - [ "Directory" - , "File" - , "SymbolicLink" - , "Link" // special for hardlinks from tarballs - , "BlockDevice" - , "CharacterDevice" - , "FIFO" - , "Socket" ] - , type - - if (st.type && -1 !== types.indexOf(st.type)) { - st[st.type] = true - return st.type - } - - for (var i = 0, l = types.length; i < l; i ++) { - type = types[i] - var is = st[type] || st["is" + type] - if (typeof is === "function") is = is.call(st) - if (is) { - st[type] = true - st.type = type - return type - } - } - - return null -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js deleted file mode 100644 index 7e7ab6ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-reader.js +++ /dev/null @@ -1,54 +0,0 @@ -// Basically just a wrapper around an fs.readlink -// -// XXX: Enhance this to support the Link type, by keeping -// a lookup table of {<dev+inode>:<path>}, so that hardlinks -// can be preserved in tarballs. - -module.exports = LinkReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(LinkReader, Reader) - -function LinkReader (props) { - var me = this - if (!(me instanceof LinkReader)) throw new Error( - "LinkReader must be called as constructor.") - - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - Reader.call(me, props) -} - -// When piping a LinkReader into a LinkWriter, we have to -// already have the linkpath property set, so that has to -// happen *before* the "ready" event, which means we need to -// override the _stat method. -LinkReader.prototype._stat = function (currentStat) { - var me = this - fs.readlink(me._path, function (er, linkpath) { - if (er) return me.error(er) - me.linkpath = me.props.linkpath = linkpath - me.emit("linkpath", linkpath) - Reader.prototype._stat.call(me, currentStat) - }) -} - -LinkReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we need - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js deleted file mode 100644 index 5c8f1e70..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/link-writer.js +++ /dev/null @@ -1,95 +0,0 @@ - -module.exports = LinkWriter - -var fs = require("graceful-fs") - , Writer = require("./writer.js") - , inherits = require("inherits") - , path = require("path") - , rimraf = require("rimraf") - -inherits(LinkWriter, Writer) - -function LinkWriter (props) { - var me = this - if (!(me instanceof LinkWriter)) throw new Error( - "LinkWriter must be called as constructor.") - - // should already be established as a Link type - if (!((props.type === "Link" && props.Link) || - (props.type === "SymbolicLink" && props.SymbolicLink))) { - throw new Error("Non-link type "+ props.type) - } - - if (props.linkpath === "") props.linkpath = "." - if (!props.linkpath) { - me.error("Need linkpath property to create " + props.type) - } - - Writer.call(this, props) -} - -LinkWriter.prototype._create = function () { - // console.error(" LW _create") - var me = this - , hard = me.type === "Link" || process.platform === "win32" - , link = hard ? "link" : "symlink" - , lp = hard ? path.resolve(me.dirname, me.linkpath) : me.linkpath - - // can only change the link path by clobbering - // For hard links, let's just assume that's always the case, since - // there's no good way to read them if we don't already know. - if (hard) return clobber(me, lp, link) - - fs.readlink(me._path, function (er, p) { - // only skip creation if it's exactly the same link - if (p && p === lp) return finish(me) - clobber(me, lp, link) - }) -} - -function clobber (me, lp, link) { - rimraf(me._path, function (er) { - if (er) return me.error(er) - create(me, lp, link) - }) -} - -function create (me, lp, link) { - fs[link](lp, me._path, function (er) { - // if this is a hard link, and we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier in. - // Additionally, an EPERM or EACCES can happen on win32 if it's trying - // to make a link to a directory. Again, just skip it. - // A better solution would be to have fs.symlink be supported on - // windows in some nice fashion. - if (er) { - if ((er.code === "ENOENT" || - er.code === "EACCES" || - er.code === "EPERM" ) && process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - } else return me.error(er) - } - finish(me) - }) -} - -function finish (me) { - me.ready = true - me.emit("ready") - if (me._ended && !me._finished) me._finish() -} - -LinkWriter.prototype.end = function () { - // console.error("LW finish in end") - this._ended = true - if (this.ready) { - this._finished = true - this._finish() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js deleted file mode 100644 index a0ece34a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-reader.js +++ /dev/null @@ -1,93 +0,0 @@ -// A reader for when we don't yet know what kind of thing -// the thing is. - -module.exports = ProxyReader - -var Reader = require("./reader.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , fs = require("graceful-fs") - -inherits(ProxyReader, Reader) - -function ProxyReader (props) { - var me = this - if (!(me instanceof ProxyReader)) throw new Error( - "ProxyReader must be called as constructor.") - - me.props = props - me._buffer = [] - me.ready = false - - Reader.call(me, props) -} - -ProxyReader.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Reader(props, current)) - }) -} - -ProxyReader.prototype._addProxy = function (proxy) { - var me = this - if (me._proxyTarget) { - return me.error("proxy already set") - } - - me._proxyTarget = proxy - proxy._proxy = me - - ; [ "error" - , "data" - , "end" - , "close" - , "linkpath" - , "entry" - , "entryEnd" - , "child" - , "childEnd" - , "warn" - , "stat" - ].forEach(function (ev) { - // console.error("~~ proxy event", ev, me.path) - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - proxy.on("ready", function () { - // console.error("~~ proxy is ready!", me.path) - me.ready = true - me.emit("ready") - }) - - var calls = me._buffer - me._buffer.length = 0 - calls.forEach(function (c) { - proxy[c[0]].apply(proxy, c[1]) - }) -} - -ProxyReader.prototype.pause = function () { - return this._proxyTarget ? this._proxyTarget.pause() : false -} - -ProxyReader.prototype.resume = function () { - return this._proxyTarget ? this._proxyTarget.resume() : false -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js deleted file mode 100644 index b0476633..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/proxy-writer.js +++ /dev/null @@ -1,109 +0,0 @@ -// A writer for when we don't know what kind of thing -// the thing is. That is, it's not explicitly set, -// so we're going to make it whatever the thing already -// is, or "File" -// -// Until then, collect all events. - -module.exports = ProxyWriter - -var Writer = require("./writer.js") - , getType = require("./get-type.js") - , inherits = require("inherits") - , collect = require("./collect.js") - , fs = require("fs") - -inherits(ProxyWriter, Writer) - -function ProxyWriter (props) { - var me = this - if (!(me instanceof ProxyWriter)) throw new Error( - "ProxyWriter must be called as constructor.") - - me.props = props - me._needDrain = false - - Writer.call(me, props) -} - -ProxyWriter.prototype._stat = function () { - var me = this - , props = me.props - // stat the thing to see what the proxy should be. - , stat = props.follow ? "stat" : "lstat" - - fs[stat](props.path, function (er, current) { - var type - if (er || !current) { - type = "File" - } else { - type = getType(current) - } - - props[type] = true - props.type = me.type = type - - me._old = current - me._addProxy(Writer(props, current)) - }) -} - -ProxyWriter.prototype._addProxy = function (proxy) { - // console.error("~~ set proxy", this.path) - var me = this - if (me._proxy) { - return me.error("proxy already set") - } - - me._proxy = proxy - ; [ "ready" - , "error" - , "close" - , "pipe" - , "drain" - , "warn" - ].forEach(function (ev) { - proxy.on(ev, me.emit.bind(me, ev)) - }) - - me.emit("proxy", proxy) - - var calls = me._buffer - calls.forEach(function (c) { - // console.error("~~ ~~ proxy buffered call", c[0], c[1]) - proxy[c[0]].apply(proxy, c[1]) - }) - me._buffer.length = 0 - if (me._needsDrain) me.emit("drain") -} - -ProxyWriter.prototype.add = function (entry) { - // console.error("~~ proxy add") - collect(entry) - - if (!this._proxy) { - this._buffer.push(["add", [entry]]) - this._needDrain = true - return false - } - return this._proxy.add(entry) -} - -ProxyWriter.prototype.write = function (c) { - // console.error("~~ proxy write") - if (!this._proxy) { - this._buffer.push(["write", [c]]) - this._needDrain = true - return false - } - return this._proxy.write(c) -} - -ProxyWriter.prototype.end = function (c) { - // console.error("~~ proxy end") - if (!this._proxy) { - this._buffer.push(["end", [c]]) - return false - } - return this._proxy.end(c) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js deleted file mode 100644 index eaf921cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/reader.js +++ /dev/null @@ -1,260 +0,0 @@ - -module.exports = Reader - -var fs = require("graceful-fs") - , Stream = require("stream").Stream - , inherits = require("inherits") - , path = require("path") - , getType = require("./get-type.js") - , hardLinks = Reader.hardLinks = {} - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Reader, Abstract) - -var DirReader = require("./dir-reader.js") - , FileReader = require("./file-reader.js") - , LinkReader = require("./link-reader.js") - , SocketReader = require("./socket-reader.js") - , ProxyReader = require("./proxy-reader.js") - -function Reader (props, currentStat) { - var me = this - if (!(me instanceof Reader)) return new Reader(props, currentStat) - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) { - me.error("Must provide a path", null, true) - } - - // polymorphism. - // call fstream.Reader(dir) to get a DirReader object, etc. - // Note that, unlike in the Writer case, ProxyReader is going - // to be the *normal* state of affairs, since we rarely know - // the type of a file prior to reading it. - - - var type - , ClassType - - if (props.type && typeof props.type === "function") { - type = props.type - ClassType = type - } else { - type = getType(props) - ClassType = Reader - } - - if (currentStat && !type) { - type = getType(currentStat) - props[type] = true - props.type = type - } - - switch (type) { - case "Directory": - ClassType = DirReader - break - - case "Link": - // XXX hard links are just files. - // However, it would be good to keep track of files' dev+inode - // and nlink values, and create a HardLinkReader that emits - // a linkpath value of the original copy, so that the tar - // writer can preserve them. - // ClassType = HardLinkReader - // break - - case "File": - ClassType = FileReader - break - - case "SymbolicLink": - ClassType = LinkReader - break - - case "Socket": - ClassType = SocketReader - break - - case null: - ClassType = ProxyReader - break - } - - if (!(me instanceof ClassType)) { - return new ClassType(props) - } - - Abstract.call(me) - - me.readable = true - me.writable = false - - me.type = type - me.props = props - me.depth = props.depth = props.depth || 0 - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - // how DOES one create files on the moon? - // if the path has spaces in it, then UNC will fail. - me._swallowErrors = true - //if (me._path.indexOf(" ") === -1) { - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - //} - } - } - me.basename = props.basename = path.basename(me.path) - me.dirname = props.dirname = path.dirname(me.path) - - // these have served their purpose, and are now just noisy clutter - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - me.filter = typeof props.filter === "function" ? props.filter : null - if (props.sort === "alpha") props.sort = alphasort - - // start the ball rolling. - // this will stat the thing, and then call me._read() - // to start reading whatever it is. - // console.error("calling stat", props.path, currentStat) - me._stat(currentStat) -} - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - -Reader.prototype._stat = function (currentStat) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - // console.error("Reader._stat", me._path, currentStat) - if (currentStat) process.nextTick(statCb.bind(null, null, currentStat)) - else fs[stat](me._path, statCb) - - - function statCb (er, props_) { - // console.error("Reader._stat, statCb", me._path, props_, props_.nlink) - if (er) return me.error(er) - - Object.keys(props_).forEach(function (k) { - props[k] = props_[k] - }) - - // if it's not the expected size, then abort here. - if (undefined !== me.size && props.size !== me.size) { - return me.error("incorrect size") - } - me.size = props.size - - var type = getType(props) - var handleHardlinks = props.hardlinks !== false - - // special little thing for handling hardlinks. - if (handleHardlinks && type !== "Directory" && props.nlink && props.nlink > 1) { - var k = props.dev + ":" + props.ino - // console.error("Reader has nlink", me._path, k) - if (hardLinks[k] === me._path || !hardLinks[k]) hardLinks[k] = me._path - else { - // switch into hardlink mode. - type = me.type = me.props.type = "Link" - me.Link = me.props.Link = true - me.linkpath = me.props.linkpath = hardLinks[k] - // console.error("Hardlink detected, switching mode", me._path, me.linkpath) - // Setting __proto__ would arguably be the "correct" - // approach here, but that just seems too wrong. - me._stat = me._read = LinkReader.prototype._read - } - } - - if (me.type && me.type !== type) { - me.error("Unexpected type: " + type) - } - - // if the filter doesn't pass, then just skip over this one. - // still have to emit end so that dir-walking can move on. - if (me.filter) { - var who = me._proxy || me - // special handling for ProxyReaders - if (!me.filter.call(who, who, props)) { - if (!me._disowned) { - me.abort() - me.emit("end") - me.emit("close") - } - return - } - } - - // last chance to abort or disown before the flow starts! - var events = ["_stat", "stat", "ready"] - var e = 0 - ;(function go () { - if (me._aborted) { - me.emit("end") - me.emit("close") - return - } - - if (me._paused) { - me.once("resume", go) - return - } - - var ev = events[e ++] - if (!ev) return me._read() - me.emit(ev, props) - go() - })() - } -} - -Reader.prototype.pipe = function (dest, opts) { - var me = this - if (typeof dest.add === "function") { - // piping to a multi-compatible, and we've got directory entries. - me.on("entry", function (entry) { - var ret = dest.add(entry) - if (false === ret) { - me.pause() - } - }) - } - - // console.error("R Pipe apply Stream Pipe") - return Stream.prototype.pipe.apply(this, arguments) -} - -Reader.prototype.pause = function (who) { - this._paused = true - who = who || this - this.emit("pause", who) - if (this._stream) this._stream.pause(who) -} - -Reader.prototype.resume = function (who) { - this._paused = false - who = who || this - this.emit("resume", who) - if (this._stream) this._stream.resume(who) - this._read() -} - -Reader.prototype._read = function () { - this.error("Cannot read unknown type: "+this.type) -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js deleted file mode 100644 index e89c1731..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/socket-reader.js +++ /dev/null @@ -1,38 +0,0 @@ -// Just get the stats, and then don't do anything. -// You can't really "read" from a socket. You "connect" to it. -// Mostly, this is here so that reading a dir with a socket in it -// doesn't blow up. - -module.exports = SocketReader - -var fs = require("graceful-fs") - , fstream = require("../fstream.js") - , inherits = require("inherits") - , mkdir = require("mkdirp") - , Reader = require("./reader.js") - -inherits(SocketReader, Reader) - -function SocketReader (props) { - var me = this - if (!(me instanceof SocketReader)) throw new Error( - "SocketReader must be called as constructor.") - - if (!(props.type === "Socket" && props.Socket)) { - throw new Error("Non-socket type "+ props.type) - } - - Reader.call(me, props) -} - -SocketReader.prototype._read = function () { - var me = this - if (me._paused) return - // basically just a no-op, since we got all the info we have - // from the _stat method - if (!me._ended) { - me.emit("end") - me.emit("close") - me._ended = true - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js deleted file mode 100644 index 5599fb22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/lib/writer.js +++ /dev/null @@ -1,389 +0,0 @@ - -module.exports = Writer - -var fs = require("graceful-fs") - , inherits = require("inherits") - , rimraf = require("rimraf") - , mkdir = require("mkdirp") - , path = require("path") - , umask = process.platform === "win32" ? 0 : process.umask() - , getType = require("./get-type.js") - , Abstract = require("./abstract.js") - -// Must do this *before* loading the child classes -inherits(Writer, Abstract) - -Writer.dirmode = 0777 & (~umask) -Writer.filemode = 0666 & (~umask) - -var DirWriter = require("./dir-writer.js") - , LinkWriter = require("./link-writer.js") - , FileWriter = require("./file-writer.js") - , ProxyWriter = require("./proxy-writer.js") - -// props is the desired state. current is optionally the current stat, -// provided here so that subclasses can avoid statting the target -// more than necessary. -function Writer (props, current) { - var me = this - - if (typeof props === "string") { - props = { path: props } - } - - if (!props.path) me.error("Must provide a path", null, true) - - // polymorphism. - // call fstream.Writer(dir) to get a DirWriter object, etc. - var type = getType(props) - , ClassType = Writer - - switch (type) { - case "Directory": - ClassType = DirWriter - break - case "File": - ClassType = FileWriter - break - case "Link": - case "SymbolicLink": - ClassType = LinkWriter - break - case null: - // Don't know yet what type to create, so we wrap in a proxy. - ClassType = ProxyWriter - break - } - - if (!(me instanceof ClassType)) return new ClassType(props) - - // now get down to business. - - Abstract.call(me) - - // props is what we want to set. - // set some convenience properties as well. - me.type = props.type - me.props = props - me.depth = props.depth || 0 - me.clobber = false === props.clobber ? props.clobber : true - me.parent = props.parent || null - me.root = props.root || (props.parent && props.parent.root) || me - - me._path = me.path = path.resolve(props.path) - if (process.platform === "win32") { - me.path = me._path = me.path.replace(/\?/g, "_") - if (me._path.length >= 260) { - me._swallowErrors = true - me._path = "\\\\?\\" + me.path.replace(/\//g, "\\") - } - } - me.basename = path.basename(props.path) - me.dirname = path.dirname(props.path) - me.linkpath = props.linkpath || null - - props.parent = props.root = null - - // console.error("\n\n\n%s setting size to", props.path, props.size) - me.size = props.size - - if (typeof props.mode === "string") { - props.mode = parseInt(props.mode, 8) - } - - me.readable = false - me.writable = true - - // buffer until ready, or while handling another entry - me._buffer = [] - me.ready = false - - me.filter = typeof props.filter === "function" ? props.filter: null - - // start the ball rolling. - // this checks what's there already, and then calls - // me._create() to call the impl-specific creation stuff. - me._stat(current) -} - -// Calling this means that it's something we can't create. -// Just assert that it's already there, otherwise raise a warning. -Writer.prototype._create = function () { - var me = this - fs[me.props.follow ? "stat" : "lstat"](me._path, function (er, current) { - if (er) { - return me.warn("Cannot create " + me._path + "\n" + - "Unsupported type: "+me.type, "ENOTSUP") - } - me._finish() - }) -} - -Writer.prototype._stat = function (current) { - var me = this - , props = me.props - , stat = props.follow ? "stat" : "lstat" - , who = me._proxy || me - - if (current) statCb(null, current) - else fs[stat](me._path, statCb) - - function statCb (er, current) { - if (me.filter && !me.filter.call(who, who, current)) { - me._aborted = true - me.emit("end") - me.emit("close") - return - } - - // if it's not there, great. We'll just create it. - // if it is there, then we'll need to change whatever differs - if (er || !current) { - return create(me) - } - - me._old = current - var currentType = getType(current) - - // if it's a type change, then we need to clobber or error. - // if it's not a type change, then let the impl take care of it. - if (currentType !== me.type) { - return rimraf(me._path, function (er) { - if (er) return me.error(er) - me._old = null - create(me) - }) - } - - // otherwise, just handle in the app-specific way - // this creates a fs.WriteStream, or mkdir's, or whatever - create(me) - } -} - -function create (me) { - // console.error("W create", me._path, Writer.dirmode) - - // XXX Need to clobber non-dirs that are in the way, - // unless { clobber: false } in the props. - mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) { - // console.error("W created", path.dirname(me._path), er) - if (er) return me.error(er) - - // later on, we have to set the mode and owner for these - me._madeDir = made - return me._create() - }) -} - -function endChmod (me, want, current, path, cb) { - var wantMode = want.mode - , chmod = want.follow || me.type !== "SymbolicLink" - ? "chmod" : "lchmod" - - if (!fs[chmod]) return cb() - if (typeof wantMode !== "number") return cb() - - var curMode = current.mode & 0777 - wantMode = wantMode & 0777 - if (wantMode === curMode) return cb() - - fs[chmod](path, wantMode, cb) -} - - -function endChown (me, want, current, path, cb) { - // Don't even try it unless root. Too easy to EPERM. - if (process.platform === "win32") return cb() - if (!process.getuid || !process.getuid() === 0) return cb() - if (typeof want.uid !== "number" && - typeof want.gid !== "number" ) return cb() - - if (current.uid === want.uid && - current.gid === want.gid) return cb() - - var chown = (me.props.follow || me.type !== "SymbolicLink") - ? "chown" : "lchown" - if (!fs[chown]) return cb() - - if (typeof want.uid !== "number") want.uid = current.uid - if (typeof want.gid !== "number") want.gid = current.gid - - fs[chown](path, want.uid, want.gid, cb) -} - -function endUtimes (me, want, current, path, cb) { - if (!fs.utimes || process.platform === "win32") return cb() - - var utimes = (want.follow || me.type !== "SymbolicLink") - ? "utimes" : "lutimes" - - if (utimes === "lutimes" && !fs[utimes]) { - utimes = "utimes" - } - - if (!fs[utimes]) return cb() - - var curA = current.atime - , curM = current.mtime - , meA = want.atime - , meM = want.mtime - - if (meA === undefined) meA = curA - if (meM === undefined) meM = curM - - if (!isDate(meA)) meA = new Date(meA) - if (!isDate(meM)) meA = new Date(meM) - - if (meA.getTime() === curA.getTime() && - meM.getTime() === curM.getTime()) return cb() - - fs[utimes](path, meA, meM, cb) -} - - -// XXX This function is beastly. Break it up! -Writer.prototype._finish = function () { - var me = this - - // console.error(" W Finish", me._path, me.size) - - // set up all the things. - // At this point, we're already done writing whatever we've gotta write, - // adding files to the dir, etc. - var todo = 0 - var errState = null - var done = false - - if (me._old) { - // the times will almost *certainly* have changed. - // adds the utimes syscall, but remove another stat. - me._old.atime = new Date(0) - me._old.mtime = new Date(0) - // console.error(" W Finish Stale Stat", me._path, me.size) - setProps(me._old) - } else { - var stat = me.props.follow ? "stat" : "lstat" - // console.error(" W Finish Stating", me._path, me.size) - fs[stat](me._path, function (er, current) { - // console.error(" W Finish Stated", me._path, me.size, current) - if (er) { - // if we're in the process of writing out a - // directory, it's very possible that the thing we're linking to - // doesn't exist yet (especially if it was intended as a symlink), - // so swallow ENOENT errors here and just soldier on. - if (er.code === "ENOENT" && - (me.type === "Link" || me.type === "SymbolicLink") && - process.platform === "win32") { - me.ready = true - me.emit("ready") - me.emit("end") - me.emit("close") - me.end = me._finish = function () {} - return - } else return me.error(er) - } - setProps(me._old = current) - }) - } - - return - - function setProps (current) { - todo += 3 - endChmod(me, me.props, current, me._path, next("chmod")) - endChown(me, me.props, current, me._path, next("chown")) - endUtimes(me, me.props, current, me._path, next("utimes")) - } - - function next (what) { - return function (er) { - // console.error(" W Finish", what, todo) - if (errState) return - if (er) { - er.fstream_finish_call = what - return me.error(errState = er) - } - if (--todo > 0) return - if (done) return - done = true - - // we may still need to set the mode/etc. on some parent dirs - // that were created previously. delay end/close until then. - if (!me._madeDir) return end() - else endMadeDir(me, me._path, end) - - function end (er) { - if (er) { - er.fstream_finish_call = "setupMadeDir" - return me.error(er) - } - // all the props have been set, so we're completely done. - me.emit("end") - me.emit("close") - } - } - } -} - -function endMadeDir (me, p, cb) { - var made = me._madeDir - // everything *between* made and path.dirname(me._path) - // needs to be set up. Note that this may just be one dir. - var d = path.dirname(p) - - endMadeDir_(me, d, function (er) { - if (er) return cb(er) - if (d === made) { - return cb() - } - endMadeDir(me, d, cb) - }) -} - -function endMadeDir_ (me, p, cb) { - var dirProps = {} - Object.keys(me.props).forEach(function (k) { - dirProps[k] = me.props[k] - - // only make non-readable dirs if explicitly requested. - if (k === "mode" && me.type !== "Directory") { - dirProps[k] = dirProps[k] | 0111 - } - }) - - var todo = 3 - , errState = null - fs.stat(p, function (er, current) { - if (er) return cb(errState = er) - endChmod(me, dirProps, current, p, next) - endChown(me, dirProps, current, p, next) - endUtimes(me, dirProps, current, p, next) - }) - - function next (er) { - if (errState) return - if (er) return cb(errState = er) - if (-- todo === 0) return cb() - } -} - -Writer.prototype.pipe = function () { - this.error("Can't pipe from writable stream") -} - -Writer.prototype.add = function () { - this.error("Cannot add to non-Directory type") -} - -Writer.prototype.write = function () { - return true -} - -function objectToString (d) { - return Object.prototype.toString.call(d) -} - -function isDate(d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md deleted file mode 100644 index eb1a1093..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over fs module - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index baf957d8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,161 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('fs') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -// The EMFILE enqueuing stuff - -var util = require('util') - -function noop () {} - -var debug = noop -var util = require('util') -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json deleted file mode 100644 index d882e6ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "2.0.2", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "readme": "# graceful-fs\n\ngraceful-fs functions as a drop-in replacement for the fs module,\nmaking various improvements.\n\nThe improvements are meant to normalize behavior across different\nplatforms and environments, and to make filesystem access more\nresilient to errors.\n\n## Improvements over fs module\n\ngraceful-fs:\n\n* Queues up `open` and `readdir` calls, and retries them once\n something closes if there is an EMFILE error from too many file\n descriptors.\n* fixes `lchmod` for Node versions prior to 0.6.2.\n* implements `fs.lutimes` if possible. Otherwise it becomes a noop.\n* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or\n `lchown` if the user isn't root.\n* makes `lchmod` and `lchown` become noops, if not available.\n* retries reading a file if `read` results in EAGAIN error.\n\nOn Windows, it retries renaming a file for up to one second if `EACCESS`\nor `EPERM` error occurs, likely because antivirus software has locked\nthe directory.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs", - "_id": "graceful-fs@2.0.2", - "_from": "graceful-fs@~2.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index afc83b3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,228 +0,0 @@ -var fs = require('fs') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -function chownErOk (er) { - // if there's no getuid, or if getuid() is something other than 0, - // and the error is EINVAL or EPERM, then just ignore it. - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // When running as root, or if other types of errors are encountered, - // then it's strict. - if (!er || (!process.getuid || process.getuid() !== 0) - && (er.code === "EINVAL" || er.code === "EPERM")) return true -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 104f36b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('fs')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index aeaedf1c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,21 +0,0 @@ -var test = require("tap").test -var fs = require("fs") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - console.error(files) - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json deleted file mode 100644 index 2afd6d51..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/fstream/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "fstream", - "description": "Advanced file system stream things", - "version": "0.1.25", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/fstream.git" - }, - "main": "fstream.js", - "engines": { - "node": ">=0.6" - }, - "dependencies": { - "rimraf": "2", - "mkdirp": "0.3", - "graceful-fs": "~2.0.0", - "inherits": "~2.0.0" - }, - "devDependencies": { - "tap": "" - }, - "scripts": { - "test": "tap examples/*.js" - }, - "license": "BSD", - "readme": "Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don't change its contents, or to create\na symlink, etc.\n\nSo, for example, you can \"write\" a directory, and it'll call `mkdir`. You\ncan specify a uid and gid, and it'll call `chown`. You can specify a\n`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it'll call `symlink`.\n\nNote that it won't automatically resolve symbolic links. So, if you\ncall `fstream.Reader('/some/symlink')` then you'll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:'/some/symlink', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n })\n .write(\"hello\\n\")\n .end()\n```\n\nThis will create the directories if they're missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it's done.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n , flags: \"a\"\n })\n .write(\"hello\\n\")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/symlink\"\n , linkpath: \"./file\"\n , SymbolicLink: true\n , mode: \"0755\" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it'll be called, and if it returns\ntrue, then it'll treat it as a symlink. If it's not a function, then\nany truish value will make a symlink, or you can set `type:\n'SymbolicLink'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader(\"path/to/dir\")\n .pipe(fstream.Writer(\"path/to/other/dir\"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn't a directory, then it'll emit an error. It'll also\nset the uid, gid, mode, etc. to be identical. In this way, it's more\nlike `rsync -a` than simply a copy.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/fstream/issues" - }, - "homepage": "https://github.com/isaacs/fstream", - "_id": "fstream@0.1.25", - "_from": "fstream@~0.1.8" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json deleted file mode 100644 index 5bf0db56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json deleted file mode 100644 index 978bb769..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "tar", - "description": "tar for node", - "version": "0.1.19", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-tar.git" - }, - "main": "tar.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "inherits": "2", - "block-stream": "*", - "fstream": "~0.1.8" - }, - "devDependencies": { - "tap": "0.x", - "rimraf": "1.x" - }, - "license": "BSD", - "readme": "# node-tar\n\nTar for Node.js.\n\n[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/)\n\n## API\n\nSee `examples/` for usage examples.\n\n### var tar = require('tar')\n\nReturns an object with `.Pack`, `.Extract` and `.Parse` methods.\n\n### tar.Pack([properties])\n\nReturns a through stream. Use\n[fstream](https://npmjs.org/package/fstream) to write files into the\npack stream and you will receive tar archive data from the pack\nstream.\n\nThe optional `properties` object are used to set properties in the tar\n'Global Extended Header'.\n\n### tar.Extract([options])\n\nReturns a through stream. Write tar data to the stream and the files\nin the tarball will be extracted onto the filesystem.\n\n`options` can be:\n\n```js\n{\n path: '/path/to/extract/tar/into',\n strip: 0, // how many path segments to strip from the root when extracting\n}\n```\n\n`options` also get passed to the `fstream.Writer` instance that `tar`\nuses internally.\n\n### tar.Parse()\n\nReturns a writable stream. Write tar data to it and it will emit\n`entry` events for each entry parsed from the tarball. This is used by\n`tar.Extract`.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-tar/issues" - }, - "homepage": "https://github.com/isaacs/node-tar", - "_id": "tar@0.1.19", - "_from": "tar@~0.1.18" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js deleted file mode 100644 index a81298b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/tar.js +++ /dev/null @@ -1,173 +0,0 @@ -// field paths that every tar file must have. -// header is padded to 512 bytes. -var f = 0 - , fields = {} - , path = fields.path = f++ - , mode = fields.mode = f++ - , uid = fields.uid = f++ - , gid = fields.gid = f++ - , size = fields.size = f++ - , mtime = fields.mtime = f++ - , cksum = fields.cksum = f++ - , type = fields.type = f++ - , linkpath = fields.linkpath = f++ - , headerSize = 512 - , blockSize = 512 - , fieldSize = [] - -fieldSize[path] = 100 -fieldSize[mode] = 8 -fieldSize[uid] = 8 -fieldSize[gid] = 8 -fieldSize[size] = 12 -fieldSize[mtime] = 12 -fieldSize[cksum] = 8 -fieldSize[type] = 1 -fieldSize[linkpath] = 100 - -// "ustar\0" may introduce another bunch of headers. -// these are optional, and will be nulled out if not present. - -var ustar = fields.ustar = f++ - , ustarver = fields.ustarver = f++ - , uname = fields.uname = f++ - , gname = fields.gname = f++ - , devmaj = fields.devmaj = f++ - , devmin = fields.devmin = f++ - , prefix = fields.prefix = f++ - , fill = fields.fill = f++ - -// terminate fields. -fields[f] = null - -fieldSize[ustar] = 6 -fieldSize[ustarver] = 2 -fieldSize[uname] = 32 -fieldSize[gname] = 32 -fieldSize[devmaj] = 8 -fieldSize[devmin] = 8 -fieldSize[prefix] = 155 -fieldSize[fill] = 12 - -// nb: prefix field may in fact be 130 bytes of prefix, -// a null char, 12 bytes for atime, 12 bytes for ctime. -// -// To recognize this format: -// 1. prefix[130] === ' ' or '\0' -// 2. atime and ctime are octal numeric values -// 3. atime and ctime have ' ' in their last byte - -var fieldEnds = {} - , fieldOffs = {} - , fe = 0 -for (var i = 0; i < f; i ++) { - fieldOffs[i] = fe - fieldEnds[i] = (fe += fieldSize[i]) -} - -// build a translation table of field paths. -Object.keys(fields).forEach(function (f) { - if (fields[f] !== null) fields[fields[f]] = f -}) - -// different values of the 'type' field -// paths match the values of Stats.isX() functions, where appropriate -var types = - { 0: "File" - , "\0": "OldFile" // like 0 - , "": "OldFile" - , 1: "Link" - , 2: "SymbolicLink" - , 3: "CharacterDevice" - , 4: "BlockDevice" - , 5: "Directory" - , 6: "FIFO" - , 7: "ContiguousFile" // like 0 - // posix headers - , g: "GlobalExtendedHeader" // k=v for the rest of the archive - , x: "ExtendedHeader" // k=v for the next file - // vendor-specific stuff - , A: "SolarisACL" // skip - , D: "GNUDumpDir" // like 5, but with data, which should be skipped - , I: "Inode" // metadata only, skip - , K: "NextFileHasLongLinkpath" // data = link path of next file - , L: "NextFileHasLongPath" // data = path of next file - , M: "ContinuationFile" // skip - , N: "OldGnuLongPath" // like L - , S: "SparseFile" // skip - , V: "TapeVolumeHeader" // skip - , X: "OldExtendedHeader" // like x - } - -Object.keys(types).forEach(function (t) { - types[types[t]] = types[types[t]] || t -}) - -// values for the mode field -var modes = - { suid: 04000 // set uid on extraction - , sgid: 02000 // set gid on extraction - , svtx: 01000 // set restricted deletion flag on dirs on extraction - , uread: 0400 - , uwrite: 0200 - , uexec: 0100 - , gread: 040 - , gwrite: 020 - , gexec: 010 - , oread: 4 - , owrite: 2 - , oexec: 1 - , all: 07777 - } - -var numeric = - { mode: true - , uid: true - , gid: true - , size: true - , mtime: true - , devmaj: true - , devmin: true - , cksum: true - , atime: true - , ctime: true - , dev: true - , ino: true - , nlink: true - } - -Object.keys(modes).forEach(function (t) { - modes[modes[t]] = modes[modes[t]] || t -}) - -var knownExtended = - { atime: true - , charset: true - , comment: true - , ctime: true - , gid: true - , gname: true - , linkpath: true - , mtime: true - , path: true - , realtime: true - , security: true - , size: true - , uid: true - , uname: true } - - -exports.fields = fields -exports.fieldSize = fieldSize -exports.fieldOffs = fieldOffs -exports.fieldEnds = fieldEnds -exports.types = types -exports.modes = modes -exports.numeric = numeric -exports.headerSize = headerSize -exports.blockSize = blockSize -exports.knownExtended = knownExtended - -exports.Pack = require("./lib/pack.js") -exports.Parse = require("./lib/parse.js") -exports.Extract = require("./lib/extract.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js deleted file mode 100644 index 1524ff7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/00-setup-fixtures.js +++ /dev/null @@ -1,53 +0,0 @@ -// the fixtures have some weird stuff that is painful -// to include directly in the repo for various reasons. -// -// So, unpack the fixtures with the system tar first. -// -// This means, of course, that it'll only work if you -// already have a tar implementation, and some of them -// will not properly unpack the fixtures anyway. -// -// But, since usually those tests will fail on Windows -// and other systems with less capable filesystems anyway, -// at least this way we don't cause inconveniences by -// merely cloning the repo or installing the package. - -var tap = require("tap") -, child_process = require("child_process") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) - -test("extract fixtures", function (t) { - var c = child_process.spawn("tar" - ,["xzvf", "fixtures.tgz"] - ,{ cwd: __dirname }) - - c.stdout.on("data", errwrite) - c.stderr.on("data", errwrite) - function errwrite (chunk) { - process.stderr.write(chunk) - } - - c.on("exit", function (code) { - t.equal(code, 0, "extract fixtures should exit with 0") - if (code) { - t.comment("Note, all tests from here on out will fail because of this.") - } - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js deleted file mode 100644 index fff48181..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/extract.js +++ /dev/null @@ -1,358 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , target = path.resolve(__dirname, "tmp/extract-test") - , index = 0 - , fstream = require("fstream") - - , ee = 0 - , expectEntries = -[ { path: 'c.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'cc.txt', - mode: '644', - type: '0', - depth: undefined, - size: 513, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 100, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: 'Ω.txt', - mode: '644', - type: '0', - depth: undefined, - size: 2, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51693379 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 1, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '0', - depth: undefined, - size: 201, - linkpath: '', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '777', - type: '2', - depth: undefined, - size: 0, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: undefined, - dev: undefined, - ino: undefined }, - { path: '200-hard', - mode: '644', - type: '0', - depth: undefined, - size: 200, - linkpath: '', - nlink: 2, - dev: 234881026, - ino: 51681874 }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '644', - type: '1', - depth: undefined, - size: 0, - linkpath: path.resolve(target, '200-hard'), - nlink: 2, - dev: 234881026, - ino: 51681874 } ] - - , ef = 0 - , expectFiles = -[ { path: '', - mode: '40755', - type: 'Directory', - depth: 0, - linkpath: undefined }, - { path: '/200-hard', - mode: '100644', - type: 'File', - depth: 1, - size: 200, - linkpath: undefined, - nlink: 2 }, - { path: '/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'Link', - depth: 1, - size: 200, - linkpath: path.join(target, '200-hard'), - nlink: 2 }, - { path: '/200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: '120777', - type: 'SymbolicLink', - depth: 1, - size: 200, - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - nlink: 1 }, - { path: '/c.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/cc.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 513, - linkpath: undefined, - nlink: 1 }, - { path: '/r', - mode: '40755', - type: 'Directory', - depth: 1, - linkpath: undefined }, - { path: '/r/e', - mode: '40755', - type: 'Directory', - depth: 2, - linkpath: undefined }, - { path: '/r/e/a', - mode: '40755', - type: 'Directory', - depth: 3, - linkpath: undefined }, - { path: '/r/e/a/l', - mode: '40755', - type: 'Directory', - depth: 4, - linkpath: undefined }, - { path: '/r/e/a/l/l', - mode: '40755', - type: 'Directory', - depth: 5, - linkpath: undefined }, - { path: '/r/e/a/l/l/y', - mode: '40755', - type: 'Directory', - depth: 6, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-', - mode: '40755', - type: 'Directory', - depth: 7, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d', - mode: '40755', - type: 'Directory', - depth: 8, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e', - mode: '40755', - type: 'Directory', - depth: 9, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e', - mode: '40755', - type: 'Directory', - depth: 10, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p', - mode: '40755', - type: 'Directory', - depth: 11, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-', - mode: '40755', - type: 'Directory', - depth: 12, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f', - mode: '40755', - type: 'Directory', - depth: 13, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o', - mode: '40755', - type: 'Directory', - depth: 14, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l', - mode: '40755', - type: 'Directory', - depth: 15, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d', - mode: '40755', - type: 'Directory', - depth: 16, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e', - mode: '40755', - type: 'Directory', - depth: 17, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r', - mode: '40755', - type: 'Directory', - depth: 18, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-', - mode: '40755', - type: 'Directory', - depth: 19, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p', - mode: '40755', - type: 'Directory', - depth: 20, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a', - mode: '40755', - type: 'Directory', - depth: 21, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t', - mode: '40755', - type: 'Directory', - depth: 22, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h', - mode: '40755', - type: 'Directory', - depth: 23, - linkpath: undefined }, - { path: '/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: '100644', - type: 'File', - depth: 24, - size: 100, - linkpath: undefined, - nlink: 1 }, - { path: '/Ω.txt', - mode: '100644', - type: 'File', - depth: 1, - size: 2, - linkpath: undefined, - nlink: 1 } ] - - - -// The extract class basically just pipes the input -// to a Reader, and then to a fstream.DirWriter - -// So, this is as much a test of fstream.Reader and fstream.Writer -// as it is of tar.Extract, but it sort of makes sense. - -tap.test("extract test", function (t) { - var extract = tar.Extract(target) - var inp = fs.createReadStream(file) - - // give it a weird buffer size to try to break in odd places - inp.bufferSize = 1234 - - inp.pipe(extract) - - extract.on("end", function () { - t.equal(ee, expectEntries.length, "should see "+ee+" entries") - - // should get no more entries after end - extract.removeAllListeners("entry") - extract.on("entry", function (e) { - t.fail("Should not get entries after end!") - }) - - next() - }) - - extract.on("entry", function (entry) { - var found = - { path: entry.path - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - , dev: entry.props.dev - , ino: entry.props.ino - } - - var wanted = expectEntries[ee ++] - - t.equivalent(found, wanted, "tar entry " + ee + " " + wanted.path) - }) - - function next () { - var r = fstream.Reader({ path: target - , type: "Directory" - // this is just to encourage consistency - , sort: "alpha" }) - - r.on("ready", function () { - foundEntry(r) - }) - - r.on("end", finish) - - function foundEntry (entry) { - var p = entry.path.substr(target.length) - var found = - { path: p - , mode: entry.props.mode.toString(8) - , type: entry.props.type - , depth: entry.props.depth - , size: entry.props.size - , linkpath: entry.props.linkpath - , nlink: entry.props.nlink - } - - var wanted = expectFiles[ef ++] - - t.has(found, wanted, "unpacked file " + ef + " " + wanted.path) - - entry.on("entry", foundEntry) - } - - function finish () { - t.equal(ef, expectFiles.length, "should have "+ef+" items") - t.end() - } - } -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/fixtures.tgz deleted file mode 100644 index 4501bcf22695435b84edb3d4076cd9a70687b035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19205 zcmdS9Wm8^F&@GI+1$UC5!6CR4+}#Q8?(Xgo+@0X=mJ8S5F2UX1x%SKbJYU{Zb^gHl zva4qI-ZR}(-D|C$8nS2v2z6Tw1qkSK-!(TZsZ^RNa1__yOh~V~Z1>TH9ztlwtK>lK zWmOG@dzb2_<c5V2=~!i`&Z$g)?%Mb7?{en)U%!&Gs-)T{vP7M$g)*29xo#R?lDzk> zxNwX{Rl|=%Pu;FM(vx~PcIG@m0S`eDK+0zy(D}3DRx_4@habN94D=@^M_EF%LAIP8 zML4lcx9I1oUgLK#?D>f2k^d#)-2xascd0K$6RO9HLW#{Cz}f&P(E2{3^y5DWBJDl} zUZt|6(^fr$f$ZGwiCH}kVVEOEXxs}Bo`k?9i0t)?&vvL1h8Oz43N5a|#G~L9KZ|@R z^;BB(du3Q`57xiqEjI6qaIo8KFWDRYLS8fZCVFCQ9r?qf-i43Pz1wBlKXv!SUaaR4 zukUCa5G3eZk?(@7UMp#b!uYN{f8g!m3toJf$MS~#X0LhAE&4CZ;wAcfk8Yj)cWXF3 zAgc`4@MiswywzUNcYCe@wVuZx5ANM@XvAC&4x3w9(?ECrR{(3ue$)9~pJ1_7U~4V3 zXVdI`(*=ee7F`|n_ZJM9UN>qKzBvqp9eI4pnFk-7O-{A9f$(_VM}=N}h|S;Nyr(0e zbLj=}EdVY<RxiCsF6q*3{6VgX3?c`5vcNe_%&IIPHUHpC_73VnxZr-@#CpPG`71G8 z1{r}h3(Xlsf3)lW3(qylFOkyr$(;zye{+EovN)v%gyk{c39~K;GUbI|_H)Tz)k3JB z%9naue-^c_Y`!OZ4ZwZP-)>5UZfNub`c_{Uj1?KC9(M<<n;+8HNU=Dsx*AAYiU#cA zA#E7mNFcu5t<AXN-T%Ji)ue<#OwfeTP2YRI`>LyT_s$<0iz>o=H*4AP32x*ear)hd zNU*Xr@^VnMjYF==Ym~%C2g1m3q8AhSy_Xp)%P3jlJ4?=A@qaFv_ahlk{}7O?FR8z1 zmapPo^>ZA(Z>)n(IbgJr5cxzP<vqGk?I}nFKlN=M-N1=C@9X+X)e#y7@>42>xCL#- z@!#r0HGSc#p^w{fn++O_>w>X~S5uV!7be+aIOY2k*bSO2+_>|FuY~CjGgzAS`Co54 z>W&VIEIBf9H)DOC^!&P976!Is5aF#+C)0(VA)u5^JU5m4y@JW%Bp|KP;$VmotGKx^ z9VqG!wj_Ig^<)N<LrOsXzhN*i-mR(C0-N=A0Yprv1Uo4p5Ap|wAouO}O+6w<)qem< zNd48@0Qy&V;E}ec<J42icf>dMk!fS@w}0uBuVCC7`hbEAVLWUT@Pn@>+K0)@Zsze3 z`%jv8`o({l>Qi}_=Yc)|P8>20ECSvyA^+!Xl@TB{YTf#4=-N;HR$uP63J4X(9?qwR z^TQUv=%o!wDg?w{HVZFFxE!{&a)lSbWF@65QRl!w6Cli-@QzMf&<JQi$OHP`@BYWM zi?mxcOV@w;XdgC>A(=G*i5F@x*^tt@JgJ8vzUL_IGw^Z(Y$CsRVv)js6lNQt#VeC- zj*0pB@vhP9RJ@Pi=hrE8tm#*gI-n5aFN8Tz4Z*=VD3$uq5V^d*F8TJ^TH;)u_vV5< z<Si*g2_N>&ow#M28u2~<Z37wlz55;dDO@2;;Em#{hAixg>8Jz&Qeb<x^9ePd_3hm^ z0K?MSi{qygTb#rh1enrI$RC<_%m35YDSIim0J@Evx6e`6?UeDzhW)pzEC$laPv-%j z$XDRHuD9W@4tb)-swp9s*08ZyDn|%)Yo*|wg(GmKLQ)eEZXH7@`e54zP*Z^otmS2h zjA=5I?=uq;b2e-Ynrv-(u3*TSx&sIb2X~v%-ha?m5~rvXgwsDW_kFRE+`GxqE^u|t z0?7l};U%ErU>1pq5xFomogFB)l<6<2@elo5iSM<7+#TPjNjVVDuN0v80OZv`UO)$S zI&doSRkIH8*dmXCChLV4umdz8-Ots!o!d@P9kzM`gL$D;0G-sY4zAB+p@DONI+Qzu z-zD*d7xV=_+dJ7m!#8tY#$Ca+L~srmgt@$qUF74Gi8jGJ-4hz998nrmUl|%`L}Rdq z04?{Ym3g|T6CHZcfQSSxvuO<*F0+kU5f82d$-yvR&M^NguT1CMc6-FT5OIz|<IXop zbe2riaHH%8uizP$arDQ=Nx{#8|HW4I98V5Or+#OV?k<SOXfhudo&0~PR^5>!PKcrB zP0mli%EQ+<0OjBFChgYI#jc>QGmzw_b0rnO_JQy}J0pqL8P?gs+#kt#(K8QR(106- z!4if?JAxV?!TNt#EnY4+)II`z@bv^lmg9Qx_g?ZQ!8(XGc2SH@egxq5Um=VSD#L!O zltNfmkkP?#>WI^OuTk%3epvN+4KNm%t=%+RnE8>>?=JOubP#y2QuVy_xL(I>umxLw zi_h>OeIFnb$PPGC)NPlzQzwzE^S4F7;x#pXAW(o@aMbwGs{<j!f@!iv+9!H-e1CJs zBAlm~F1q#@Ocw%5;WJ(FNz*1M2S#!gMy|YHua0nyw*=L%ADeXeUEA5=e?}jO_Ib^q zA;q>tN92inb9McsSAS&@-|y6Z|B3+29|#({`s;FPf@}i+$Fd{+Pk0`YzU<j;*6JX3 z4~XTxl#wd#D9*^^!rPgJfvgJ_59{@ca`4+rJ=yNyK;5F>p02F3uI%~eqkf}%EHd!v zjsN+1KH1&Yqof}^(9Hj=1qIyiH{N*LK!f_t>vA~!Hrh8lE;;FE23;r@eNNMTE!zU| zl_<~t5D7cEdw75h*@N~jEKFFqyiF#0SI8+OZ|2UpQXXK{SV&6EiT=_5bCXy(;T@ku z7#-{3F!oH2T|{Ym_FW+W-iC9?On3Ed%tQRnC>_UdMQZ=KxrOnL=|Q#?*@*C2bV9=R z|2vNi?u5fc`M`g>k0Nn{MucO=+LPmc_vte-f^K31{fp$0Lh+JM9yn_5ivK;pK&;SI zjqIHHH!NMdr1<#3eP<MB=kV@~!EkW#1_i->=2~>EG99%(Tx!mI9A6eTd*y>U{)R=l zB>e7&bK=`_q4`o+jP*d@o&XgNV<L;O(3+%&8P4xi^|Z~QD2D*pLU-7m9=>r;*<yv? zA9HX0WnsONZz6FuK8mJLhO+<68P|vQ_B7Cs<t0$X56Ur-BFjBQ3A5!<w40-Ot5fmj zk?FV_`V==h=&dG<AZQmmcRcF+jR2~4AqP#q@$fT6pjb<5x9uA}yTDpljvb`6pvS$N zJup?R_pr}>W?j1LEj)|#<NnzoSup+`hNG<e-wp4{?u-NT%iB80+G~1?KAauioIAm$ zECcm%M$`hzebs^Ap%it}=412Bf*n_dJe@C!4ZC}D*tonuSbqf>l^QkQ+eKj(@#iR? zv_j*M2)qkcAd>6hcDV+kad-WF0GI~!h5G9r=N6)icY)ltZ*4eQ1o1ec$vv(ny5rty zb_B+sD}zyyDH0y8Q$yITs&LP6v=M0j+vV*)Qel_xhkZqP6lY}sF7dmlsxlJAXFj~0 zZQ1$QmLj2up2w$oL#;x?1%tdS3X-?->?~0~42kNxxz$bY_D|1_J%_4}n1jM_$Rzm{ zqT|a74alh^su3mG#oKcv>um0cEj}1Vhr5-n-k`IVjwF->7_Op7K1YXV=$5!mONq@Z z$Ti|JQXW+XglmugpR9qoiKZsn3@>hj?fhy&(9u(a5c$(bqZE@4g8=y)$sj<j^D9iI zYboYrjivxsXOKxaCcX>fwQoe|<)QgK+x0(9%%ze@HKz7pd*t<Ym`GTRn6Klnal{{B z_ffb11LTqh6TQCz{ukkih}?bSn}bgS9Rc2r;6K<`j9mapt<T}>=9=G8>n_JX-~#>v z{HO-;Z@FPlfN{gWqeBY6)ff5C`Pw<~!LB*=AAFI$rDuOsBLtxv3s48uUO2z`<2Wq6 z4fp;F+67KgD|_l;-^eZ(FowDbgDw}^4&MN2Je>8HDn``GWuP-FCs?cphbDDx`0GnJ zC`2jnhXZVsw><C&1AdP0Bn=Gi46)iCGrg-<1h;l0y&G?j!SC1*1ef<^&Vk5~i@5%Y zZ$(-;^1M}PXWK!y)P8d}BS#PuaqK_^k)N#-n7jFqZ|wnIbD*RTSH^3<)Te`YNASdJ z(zXaO<-xU3P@7nrYPoIIeGa)EVxa|m*Z<oAFiK+n=_(YF>U&g}(dunsDh8$>EAGgK z7{SJrSKSHkKWle=Ll@PpPX!-tXRZb6Dk<;3jQVVVgn&PW$UTRD$f!R9j~`kXIRYH& z!9044JdrQ9xvAoC2imBMdVkb}^bo4~v-}-cxSM+LCmuZC3&aci)jInmm=B2E`2UYk z!g~Q0@6YUU{-`~ZwUR~TrGCto{RXn0?Z#<4b?vIXs-6YS0UFRk!0RUT`aREvhUOrc zT&Z>Ky!}ORmhTvl!WVUX>xqUIL?VkY!0EG`xc5JOGry(Cxw8YI+Xn)iS8FZ6QamP; z+o513#BNha6w0fTNp9-2xiEg!K@)|8`g(<-r>cJ6*O%HHzyKUS4(K9sz1ny84*FMd zzxz*JlR2|zj>u$-i(D}b_<QKFgURERfJcpj><=@q!<K<>Zxzr~#TNkk1}Xq6V8bzj z{VD5gwlBBV!t8$vy4LB^JOei{Jqu5Qi$G*y%Pmk1bCC&fwdpv#`F9K70)Dxz@(m?z zx=aUv-yVD-5RS-)IrnV8_XJ2AIIG0mj9T)ja*Em6*-=Q%D!d4%7B6+4UFZZ7Z9+r} z{_28c{oP4=3>N(3o@N&?u;yOST=(w#4<hpKmOb9OmpjoGLmTAmZDH!=uu^(cx7%Lp zmFlv6C(-ABs0nls?$8uJ??W|UD`obPF;O9vLOQd&<b)&0KS#O3xv!0926vthcEMtX z_Wit!2=0WH`1F5hrT;ClPK2A>Kv(c%>;7J=7xFIX8H~;(J3XgxO(u0T38+I#91r|D zBMcS;WI7<-Am2}4^-*6Gez*f`(gu+>`u+P)Ac12XpV`v~f1Ir+5cG#ct)jMgN58dU zG4-4S-3#E3`fCB?*L_?!P|1MfR_DtlUEn3<Iq;w6{gDF>*10sU2kRFAJ=Wnf(A%{^ z+|}Igr<9Wljk_+~1Q2+a{tyNOz_2Fp?ZJ5JzYg`_H-4$P_?3Umy%LWSbtINxWMUf$ z%)4Ex9lRE=mHX;Uc2T@NnjP`mrEz{M&f8|#CLhwHMlZn9d}4g%-|0Mz^@kFp(2Mej zbuzLGwiobQ+uZ_M(4QiDfqJ}t=l@|e-76q77#UoOpdiAS{taT}A>f}9LG^!}ww(aQ z3mYSgvH8E8<{>~~MgUp49(K8AC?R;rDR78YdC`;it<iiBq(r?M*THfpX7nwP6Uu`; z=#Xb19a@p>>bdUW%`K7A_n9v$0AlFZ^qk*vIe!l2Pp@5s;XP%Niq9crtueg8I)O{d zuuFV`L6kP`SB*_?f8*D3>R{ix%agU~5Ol=9vG>Hg)#XqyfaV%%XFIJ6r?+-|7KwGU z(GerGcdmS!urjyQF~fslTSO!y2YMe<xVreF3t;RGcN`S!Nq*Flv<(=V^HxD*pHF9V z#T0H|xDEFHgpLerhBIgXXa_5MrHKXPsPk5A+D>B~9a^^#`u{JT;d4J-nDpDGGAl%P z^seAc?axsl`klt<+P^Zus&0w(<wI!WpHap@6ZQ7$U4TJq0c6PJsr_Ai3WHARX@}*S zaWZ<*rAFLVOFPeT6aM6Nd=*TFpWgfRabAX@b%sBb`G>yw8Q&B5UskQds-A;PkD$_$ zfR^{AhnzQkSgvQ#hQS=b#jg{Dd}Q=e8ln9M;Du?hR{@)2cE0ARLzMvLo=^q_0QE!V zn_$l?Sq@<SY{2F7cJ6j0A!WehbJb`&70q~j71@2x6;ZUz?Q?-luXH}=;QEg4{6q|V ztnhB%y}iZ_e0gVjNKBvd&wkTK{3{3u&unfyv{ar5dGkgvRiZtOx*;%exo%~J+8@3R zf1t2+=SwXeBsK6~18Bf6{OUh!`FP7l_gklRGdx`C`g-Rj-Vfv1PxJ+pCyFlW^D0u_ zpE>T|4J1+8bcM)V_!Aqfn<wUj)1K--6nnr1K*<Azy9S&`f%BR~%z;`M1F{kDl82%@ z42*EyKSby$7Z?~v>X<|e??2={oFtHuo5!NIhj331`3;vc$GayF{_}44{u<DeV10Y$ zJCKbQ;nu=EXe8RF6sU%(dRIsbhFn?(K0CgGFw4#W2LgPD*!OV#^$+5)dIiCtv<-n< zi&{QB5$Xr$ZF0cr`U2Y;tpHu%(EDcB&;QKfjz=Hm&uk8Ow?_Uq75=XOKQI&7!3Dse z9jvhl3?M_b0+j*C55OYx7U3(IXdGAr3hx4Va{Hg5_r;q%Wt{<FFNW1M1g4$@S_w7V zfcGrpo`pxyIc3~O#EkX8vmDER|H6HkG27<Bo72=DvG4HE)BjO?;;TQoe^1II+4sJj z_Yd<Oc(aG_V=nl>qz^yo&VXie(b{@IY3Bo!x1?YF<*cs=U-Mul0T5=}4p@Jj+~xlL z5fbvhkZZbtrHD@*A3@0jI;gtFKyCI{m)Q4s@<ZS!qOLWdP!k5Ju>x?RI09?`ec_@3 zu~GO&_B6W+(1d|5Jl}wOgww^+Rs{8WfG#gNSVn{&czmD>Vkq>_0Fpck@P>tWJ;1x| zZ+R&J<A9cZ*__}%J<?|R-=+OJC%ZphBr-0aq3r!E!X5D`A!k9GZuj~cP*V<h`Zj#L zqqC%M-$`V{SEAjIEwV|?3-c6UiuxNFz-GHEo&WktSU%L}A-cELOb*J>oUnjb8Kbv9 z*g?V|X-9_R+ZOV#$H6-atkPyGvej7M$w|;blAd9csz57cxO?*B<lrZRlWU5+Sg)zh zXA@Rl`BJUR$L}HATTdo0ua+Eg;nlmsWE)S<yNquDU}J~G{>_4P2(C7w$eCDOs2^2F zZyYZxi;05+t%Evv`?=_c56|*Djh?T^qut^ADRe!4Znw|1jYQXb+w1OaID9xS86^(C zPoO_v+(RDU+N$TZ%_-#_q{_~(ZdARlP0!X>8)U!jUS$<7*Fbm5`0u~u4TSU!j^RYK zL31uvoL63tTMNV8dFYP<U9~OHB0RFx%caZPW=IxHSp9c=Sv{B|EzzkM;dL?+mMlj` zmq}W9D?u2+K}08}@4XRAD6O}L=<wd4mNz;7&be>!lEzraWz=4t?rum~2=*xA>rj8- z`aRp7>mH-vLX6j*%lv#hJ8!)-08=?c0on$}!VIpluxAZ!O-HEC9J#i8!v{(tb#c8o z!f@MIUWg&`hVMO%dW*Zb@?|f=N@N0{$fDKvdxyvO(|=2B6wYr?ue*8fe!hhOZD|qb z&eqj#sYZC7z{QQo!Z&ubYT^Zo-LN4sj??`R6j&6LMWSQMP{ZHkEJUdArO?DJ_!IK+ z4Us}G*4bqkQ9Cel+ze4&yh6&D`m@_8N>F%O0#&*DxER4_l!;m1)v$$v{;Th|c>+E@ zzKS*J-2xm#SeS?wx(?rWpfI1F_lOgCNYJM8qUObQkKAd?MYfsg%~)uD!`A3T1*fC1 za$D<4VWhRS4Q^dZBKLQ_X5{kuv;*4<3OkNx@Cu@j6gkEJzMT=CosgbS{ic9irdpO> zsj$I_(C*=xrH0zzA&IfTLohc)=zqfxpJM3Yuse8{W7qbKd{O!GCl{rIdhw`K-`O~X znbmIl$Y<;)nXq7z^Yx=mBG&um?`a5BcnRmYyYHhz`Gi+g{T9l|{$;j9LbxyzAqklZ zsD^7#-9E{P2Ct><eTLjswZX@T-Cwx>B;qVX7;iEYk@SDR^8776%&@hk2qgsHSf74S zr&!v!?ZO;Z<JrQe)I;RuCov<^uGJPEN{D2{HkQo7_{JtUX+VtiCRe6~MHhwx`3pKe zA0Nv&Qp?ExG<alqg+eSOw7Iw>IsQlZ)Pr73uI+hu9TocbCmsS>!;LPq0G!~NYv#sc z1c6`8P~XIlYKH@H$xZX>e96QEP=+yQ#8<GNxX{`?kYuEFw0d5!B`Z6qGcnOss*{9o zx<FSIMuk_jQYQG;UmjbZ0`=EkpaD9t0hXqJ0;+e@Y+^Y^WuPNk2gCgkE^x!Njv5#E zC=occeuJ2h4(|<=<X!RCz6?wWg01*J4HGrnZTNb0gI@LcXUly7%gde1P5LKNI0GO3 zyut0xes?^<tCLdb%5X1aUi$!aS`W#NGm%wvVbHB|bcl!Y7w}KMm*~eb%h7@_MWv#g zh^Xc2@I@C6i_m{F)<&2*$<PBJD`z}5`iCUO;!eJU?>2N3>%cu(V(48P?}K`cz~9Ev z`p+eH5k=<93en$c#*VmNg*~oQFKwUK3K8F87s^7My0Z{1y#yv-`tLLoXLMJe+g=Z@ zrUWl5F35Vtw@Ll}#+i!<g_B9G(v*Sz7=sjue)_&U3S>Pf{@}N?FaX{a)B%A<fCE;( zO%UI=1-BIZ(wn!bRSW<2())a@Bmg7Yl34}<pPWma-Y4k$m%ub|;hX30q8xUCoi<5* z25LbR;ue2a-(F7nJ0H{a{rMqqc_)Mm_4ppi9{t`7YJB@@cZYXaRwemaNMjnQZx6uR z?*-3ZI+G-#r&}JWQ%KIY+xP8H;xDB`oXRA~nAQ^tg=T|J`lnTS80{(S5Yl;);d4no zZa!b(RBRQ6c-h=AEc>0GT%lfM74E2?zl|c)iEb$<0%a_Va8z2_do%|<aDOFlHQ6Xk z0(YhS_@op<f9P2GNor&A73zHG-Itl<O-8eSc5qhLCV#3{f$K+3dwu_TZ@<5lcBqFQ z>12>Qs;VysLw@W;yw(;~1vqvGpU0cVbQcC{D<fq1OI6q5$T!r^DENbL_FZSi@xDzg zdU&Q+^K=v_uJDjfw4j-hua;uY`6;3whi@LLY&fit*%(Hp%5Vzui;*D3m?%p?7(!%p z9D6W_;%o+%Qb)LVklauB&kUI5huhPhQ}Gg&&hu-f<v(PbUA4~Ie^Qbd-ru@anZ{7c zEY3H;2}p?NiC5H+9wdvK-5?vtPb-02WIMZ?tn{5gAw8EANP|ubRd++UjBulV#%LoQ zsc3(Ce3|Ra3%qv_sckRdycCSwICG)*3XZf07z%?hbwfip73qA4aKl+Wm+e*N&g^x= z;I*`g=;E=m@?M|bpt%e@6Iw!1G?XT~7mZm?Sb!5Uc77$>0Ih6#D-doM<+ZgxGHd$X zQw*w+9n|4zs-O|<cOe>y9N83vJuq2Fa<ICWZ1}DUuD|X>+in%P!xfQCq;r%BE4G(f z2t(A;3ZM^JXtTA1i70mr6g{r5hQBX0MMnJQ%KY)Rc6}FLc1(C+YHSTJc<IBJpu9B$ z*((0TN3;CQ0Vl_t1P+d-LcE>(do;tej-idBqkr>76C4G3P7?1_{Pqcx84cxdbA78c zv77&;Ik5E`v3CspcACOi=u@$hZnxQX;9Jmv*ctdyWq`GT=O7CYK7V=6TrVV7+YayP zP<0EB?N=3Vktf?9uy{AAs-C}d`I0~PTZ;Z;>{74SsT99q00+^|q{+0H<HC3t0Xfc? zv2IkBRZ}l5yS7R@fKV9rJC3gQH~7<4L>G*{gw|*kq58$#2RD&i%$^EAzvNBRFm5sx zXD;4>FKRn$+q^+O{%LM>YqYE`70IaVY*)XD1!ePj{G7;i*}$CpPliy<*E*M+-Fj$b zLxTQK>+&MdWHH;`O194{yDT68edww?|IgdOt6VKnKfHDx=w)6$_%Gl3$|iggiDt<X zoFYR)77ai<z56{KcOSxvSj16y58H-B5X{X4XFj6Vp9+Yc(moJtb}F4+0Cq?0U*%Ew z;Gb{p&k~<51uG1D`J{dj78ZAKnGub&`kjs}sS!n#2o{OdeQvf;B5D+#vI|-}ig@g) zq24QdQT;sZ#}A6#9pZQ!u-HZ2PO~X4M|F98JAfCbTNcNd@k(Gi!aNOhHLDh{i)9Y{ zw{^)lBmTJO%)-lF8f+^{QU~A2=;s>AkxXJTMJYe9{fyuIb1mP_PNbZYGER}m)-hc^ z?)!~b;ZL2Up+&EJvO~_}-vx-mM37BNFFv@FVo`IO$yj0Vm=pz1Vz~?T?nJ7%M)9#+ z;#j}z2>IhE%>H`mi#&)E?{aJ`+uF2Jnk^7oS{0@Fa?1g!3S<95Ir<EAy80EQz640X z{Vdu2Yi-P2(ekNfkoWD*$u@?%CwJ1%*u5xI27hqJ{3VDzX;X&EpqT|PA2lX;1y-aP zlJFY(uH7(2uMSmc`pX##@8}GJUF$W--=^g+b|<;xDw#`4b)1hyjhU;#D><3fz<OeA z1E<qubjcDU>&I~<@!@XhnQyW$PW&)8jVM((wZ<xzqnYgVgIHbC+U7=F6UH?9QTKz$ zCFq*`=)?oAf=iQ8mM#BKFo^64HTNT_QD%PI6~GyE$Av>%2%&7Hp(xBLmroZG73ZNT zc3TsO<lEu`skw0gf`87nSKJu*nmOEoaqt^ZiS68x_bgHm4?$(i7-hpV2)pzyd;5HO z%ZNk$Y_r@SSgd~|T+2szHZ{$!$aoT~w(O8XOE2pIKY!~dn6*_?c$_yEwYxHUjX+75 zQ!g2hw_^}DG@kEo=Ur~aWnv@rr2)tY^a$1X6g{gn<q<np101|R;!3hVSNbuKM0Q2X zqk8r&-2J}P=+K!rd`zreI393VNY1g(V2}n#F25H@!t&b;MvvUPm-=zv%QSD#GnM*j zourYym=UF^f=q}kv1%l2`|j@=+BTNOKN87>X$7v*fh5b$nl`&YV!}FN@ZMfY4DSpd zNo&`jiIIk&_70n)ZoO+0{ygAdttVa>#qcQfy4h|;@p(ipQs8iNlp6nu2vt{*H;cp3 z&pV*!W(Wl9H>U{~%EMG12g8kwBK}ug(vzC_Ofk#K-p$JkOaxD%dEN+GdGkWnqPt2Q zep<kyvJ(Q?4Nd*-@4Y^nzjMs`uJlEV@-EKoU2u`CDdY>Jzti^a5G`RIe(hT=m(Tr8 zJm=C_p_-Mcppm4K7Y7%t6ze4Q+#SOF{x>+!z$jTp15d9a=soGBc5(J}Q^T@qS}!yN z+pu&>Um06BhM8mB)&i)Gu_A^j$pJ|+0}lMN+hnkEAH3i;7w=p03a<aq7uM*ZvLB=i z3EvDX*@80&KN+uRaS|yEE+xe@T{znb%N55fK##f{r%wt<O_RD9LqQq0%oB5rKT+O( zBIV;d9KOyzh-sglv+90$K~=bO+IlGRk+!iL3sk~~miW%V>mmImgPfnV2v*m~IV8*x zMrJ+Kb*Gt!Cp`4a?Qfol()B7d0~s+E+32JOce<A94hues%v==W%9x+UyN+SKTy-l4 z(RD@-vT+Rpq*V@AYz6HD2&&sOg>>h+Cf%j1CTN^cnQwVo>eH5x+FuCSwS&;v+e2&f z1IBwq1auM`C?l|(u}X3ojZwX0g5<0Pw)nGfn&w&E<l!IH$^*iram_rzHAihRk21$> z@d`WnzC=IeGLw?gx)YX-XM;gz9U_sK!<0tWM!VhLmLjtl9;KD?W;XGvtG1)YQ;}TJ z;_zW(P>l1AAV@SI<3}OGOR?$>DK|eKL=APsV8}_d1$Zc?&-^m9w5h0T|3Q}Gh>VRh zPjr{AJtEV;UD(u)-->|J8Lp$-QZlqLpk)x4++eHNlA9YxFmGK%PUi?KVUvr{Otg<A z(iu^=d_eVfaSMkcOjsY#E4C~;A;BP^Qy-BenmgMPsznTqY{oY^8Tq~-B1_5oWkph) zbDN>%hm+-iLC0L8Dj(B2l-Q@wn*(NtO%x`~P!@PGwOw#d-qXsvlp)nZbRvdat-qg& zvWchK2Y*}%g;6+*9Aj`a_4H0tO|K2%OMjiZ_O+xMvrU+f3t2A5e2@}QEoeL+`-*(s zHgP4|B2+)f6NC+4_*>*C@)o`8yoKx)FBUT1;;-Q}m&a!=%pclh3SoN|dk$@|>=cBl zq)F37J0AWN5bSK+9Qeeo(~-PuYX(F%uSl+tWS;fE!oTs+l>K6=tEK@r0V;e{+x+|) zz0gHIO;UR_c#`2YR}@1+SNSZ&WJP@?SDws4wIiIC)e16>xNdq67`sh2(x1qfF{Q<> zA;N#_cXB7jQ~a|O5PugHSCBboPp_M$`Xu(UE%YFJa}Cq~CYSsfk#t^_h*Aw{F!cz= zE151li4+!rmzWYcq05|=dmU#FI-p0{D#?#yR9*$CoaGZ#q&CtgDKU>srllB!y*kV> zlrk9-l_^5sdXRidiuGd1YlNO2h`7<`lOSpZQu;cT8PN-Bb0yc_@zR@8ue^HS=k7x% zd-sZ3M~s$saMyGu<F=G4R~{`+;kB=GnK*P}z7UTh5tZNdBTo<t2V10OqnMv65jwne zW%qL2xWwtteyDdzyF(>6lx%DjELA9JSn3Ie<4G!-^nevY$y7pF*ru`J2*y^7A)?w@ zj)IgQ>jB*Szf5>~*PG_Lq*EghoJVSnh_JIGU>dMiX?n6nheAr>aqbdyz`rPo#Xl8H z35|gZ_gtzP^MgvB({^I~d4$gusb!BNczg1v()pe4OanfZ@O+(8><chKWgx_<7p`pz zkGm&Jwd&Dt7*@1)7#lUAbsV!4&9m&3V<fN`z}`gMaSAzw2FXZMP<kfT|BiCZp&kmv zEo`z8ru_jelfjt`V(lth$4<5)_6$gtDC1`A9#UWlmqcUc9|I*fY;q|TP0{p=ne`;2 zN`7SwSF9;hx7p8g!b(0d9r-wM!#|~gE3Qb#=Kf1-TS;O$Z$ERx?Bo(+T1%_mxWt5~ zjHL0D@{T^H%dEy}g=h?w*WmG)+ck4)-Vw(|@>6h#4eL3~not;T((iR+=RF|qeNdo0 zQ(*uXz}eDIY0o7jLVYRaUt!fR8`(nE)WjIg_jxx*QZ7uVW#~FboO*?<N>T`~#ki$f zNhZ$#p(sb&LLkbyQlWzlscz~RG-Vx`L0ROLF>S>ORInt7L=PffOOQ)cK_LvKKaLlQ zk4H7}EVwo3r1G#XP06CZWDw-E!5&L}9bFP~%s(_4rj1YhPCXu$Y?RMZ%uyiS2;JA> ze2r7isfLCUYUQu|)c1XBS;mQkc`z-y_iJd%r~GzRA|wAa(#NqMoXbCyagwF%o&pMC zEoB-TE%Tiznpa}}1Slu5C8F8x7Tx(>S+?q48gYm}rt&Q=Oe_<8Db|^}tD;JIh?V@@ z|9wCAZ_n2$(3qr}O=TIwqepth`p+ob1*_X}y!b8&Y04A=@{++Hb<iO_+~nDR&D*?b ziOqUm*mQzYjU^uc-qlKO_UIW4`G1pWn&YFGS73I1tBfKh>&L90N;pqqF+<hS;vCW= zKvk0+Dh-MeoMRKkved*s?2i~1N6v1R;+2l3UrO_VoXv2`j%99*U&(4xkHtlysE8{y zz1@0o+O?W9B0B$c*nOt`>Q!#qp<o(_*6btn$0f)Mn%h~ioygHAZvg4W^5!~*b#C5a zZ;^-=jx&ORWdaQ;$J3@WJtl1ENIco3LW|Vs2md|Zl_I6dY-YULEOcNjo-1~`^rO9L zyZIo>_xK6tP-IG4Ryh|fWdul`kb!`mN^ee$fTWZ#+0VtIt3gUgw&>z?2dc_3pHF}3 z81c3tSTv6_6Ev$R9DZ)q<JRS>Rr}({D{(X%+t(8tmTxL27~sdRSi>b9)`TS|L~j`p z{TRX+nD40bV2P=gA1O`M`%_XibSy$gR8t&T`c6NihJ#Mjw4<5`u}UkA&3$+^`?0;= z2{)I`F;9^xS@y9qlC<BSuBbOw?VDT*_k&o!jZ9LJi%n*^qG@8nFDUz$aYW_<1SLw4 z5OxqD<w8tujaF}jHOWOi`(nq*teDraNrkcP@e}bK&-m}9vdL4%PIaqLo9vH$U8r6- z-PNqZlcsWA#H}c8<Y6f_b5r#TXn(S37OXkOQedR+8Lh6BKOYgOr7f<S(54j=OWR5$ z?ap=dD_M`9HjuGK;K)5?SI>nn$yU<+a*UAPJF2T-m*>hccq9d{N<Qb8pOK9>cc#iy z!2A<^ErB3R#g{|Opr%CG^dNTX`(N>kKH@RNRg^M?nNd5r140sC{BkEGTqvicGNJ_N z!0=fj?7Vy8k#o9c4yR2cJCiw+5ryvxV+lP5O7Vy2(my#v3+V40*k$F}s4Cxf2x*<| zSSazvZ&MOAEDL(a)oVIu`iyw8sXxh^56-7nTOn4tG$2#`?A?BOTPtZwK%8}TRQfGx zt;d#dNL*5dJzPaDy<u^Zz7n!b<OMHUaYHVJ4&*aS?|y0o`P_|Ux3OMxMX73;tQuAN z#8{;mX0bfWK<^}G`ipJ0K8=WF0`+<moUdeh7iX0q*@X(d=}`-?f`x@v6#l`_G}`ng zBg<TEY0W)~#&Q`>w{o}nx|lO&9zm7wpmxH4dfkMvu;r`<Oj-pNpW<8DOvgl=eS5zA zqZ3D7D0W<TmP&SA(r&-~J)v_F!ld7mS}v!~aC+ysf0#77`}vMtp}tb_)5x_0D&b0~ zEm1_%Cj7&wFhARmEWySmm0_I*`dJ&cfw$vwo^RqB=?&)rBC!p%;>Z=NIHlA2$-MR@ zlS|U6?@u4M*K$M}wKE1++agl>f+Wl{6Dzv^5i+nR&6XiD(XyG0Yukt=DwU%oZ|@)= z@k{+FysT%6r$zWq7vcGdie`S#P&XtyCK0Fe1ZuCz(HYGuisyiCJ-MjXfLaVm5}Wel z_#sN2xrrTqrAA#v{)-C9?a5P1(Y3A0`^^!ERBiPo9cLwE%wZ496{dzHPK{Hg+cBY} zBdE91S4*6p;Yn7*3J#Cv&q1OgIGQUxmQXdEN2Qgkc;b01ps-w==GzpG^ff0X<opk2 zgs~#&@{<w?ns{d%GnHFQ{PA0Drg*J1Ve7VVwc<qn2*%f5ISwaz2HaIwSgb?H{OI%V zTWJM$4`$eL$yRD(O_i$q%t!-9csywaLJf)1_;+S5>YGT&!%|F51IgVFu}wY&CoMYt zv_C`pXhej$AtqwRtDqJ4mDBKbDakaK+Z@SbmgiK0L2%?e-%SfuVOfvt3-hT^zU0c9 zz-F1mE9}B~h87DIGcr4V!|8Z|%X=@Q9wTIeS->-}6*tPp8-$?#hP+sRwQ{F}$2IOb zuj#22m$wV$h&l8lpM5G<*`?F1F;~q&ktqv1GgE!#r~IkV1e&-I>%fN!JIRYx8(1E6 zV<cVYC<tYPm)$K=Qd{gazPMKKig$IyH1)}{2sxAeItin4{j0cqT7QD}AV;EEfvG3Y zC1HOY&-{BdL&6)Kpi!U(UrsnZ{-l(!){#5oZ~Py_y9a@%LP}_3jZ#aq!X{qp`}5bx z^9bJ5XOwKS!gL}9pJiUMMR>3GR8kY!`lU+P7EM4S5FO<+(^@4n0VA#U<YWbxzM=xW z($9>)6qvSM6Q(?#Pew{P?{hX(D_m(!zI;HJr(`5bFuQs(oO2I;aE>8nuasHprIPD3 zb6CMj#?^vA3FYutwtNNOX5E=6ezG68Fy{^~P+A}vGcLJ%3j_A*(UX3jRN>zw!{{Sz zvBtAGRP=2(O6oe8s)M2#xz(v6zt6|y)ruYnZ^LP{1!NWIjfJ&&oWkp)pLt7gshVNz zD}HEaEN>~`^n^kRC-*1Bwu1?$Gth`R|2c*t@n{~w(_Yt&+SS`KsP&DhBbg2aWPUDJ zBn~iS8)(Q-&)f0hY6^y>4}-ZG$KfCDLo4|;d0yQfKc*yV3N1J5RV!(&x`-$mDQu%q zfC8sZ+w{p)=w}9gJafG7x9lZaunomOzj=@E)@<P(`Q@85+w8+WiWP>TQ>!TG-5!^M zmZuG>w*|-x672wXpa4FON-`Gq)y7`%JoG4z2qkf9wN@Z&;!?&5d)nB5!*r8iN_|lY zlGI>bIX0<s7@>i{UwW!Z4a~iyLbfZHCN0lm@oh3yy>S}a2?j}c7%9%Uu|y>s>8ObU zI`ywAPRTl|$@1erR@w0)Sx~L-e*1fJ&BY1so)u;Xsmq%Nu-z)ptrit+w+BiLxLwo2 z>iHDA_-e!Wv^~#{-IUVU3f)wcvNnEh_)TqYPGUJNfXZxR#Wt}(LD`T@^(<d25tw-N z*lp0y{SEEuOD<d5`VWoABza*BgkP2gduKeY)cFcg9?tPX**=UWs*}?Zwl)rClk?A6 z^k1bSzfa#PEy~^3>$U%)x-6^3m6L@JbN$tvA-jz?fn8PMQ&O!bwXo}qN?<Zou=9YC z+><m`Si-=Hu6UHUYS@6+ssUHyuA&D;66@WYf-=-#^{_H<Ov@@|l^@kk&^2N4FngoK z6WbJGBjB9L^mXF=rFot4p=Lrn7|1Z3-w!cTYEsx-v^sp1F?~WQ<A~UjAjqAjT|M|^ zz%V%H;=(w|aysoKb^7+Blau63&eo|Yn>%PbhLba_MZ+)1NeI@cq^Qy>J<inae8HwA zfj+O!luoW$GyHwds?$?H)ahn61!r$w4Nn6<Eok1(uApy@Ftor|JQo@7(AASVz8)#B z%%(>tci-OXWr~bMFcDVIKxt#TH#2H!W8sf8__aE2^8okxc$WN8`&Inl-u0%8p2|5A z?V!a+*?MI+wcyhoYz3SWdDoeZULzVkT{aNyp8+Q9fL^%H<R9aC(6#FF;+8N?s^64S zdbrz`xUUq&Ul^v;;mv<~K+fu<V66;BAWFJtA&19P`*&IHOEqo4C2tCONV`u+Jxe@O zP8`BBG~4DmAYf9QL|7gv*)n<Z51ne$<EfVax_0o^p8?G3^`!c?=I|mB6G6TSfd(OS za}vLg%H2G5?4jgKOT>8z&vKrI{r;%s?tqkRnwyi6R^Wil+M;+II+x8##VsD3?7ZT2 zT$!$}ozQ2eZPG75?UiFv0uPN`*2}bThGCqD9cl<uxyv0)k194QRoq%IYOhb?l1zdw zPORN0RZx~;Op9Lu+i%0Opuy}YuP4nrJgn@rrAZuyB(9V&pFP6lr;g+qmo~dYf*VoH z%QURQMpQn+SZ;gxK#<S3Ow(_mTtbop2}CFp<U!8%rbMmn;8uiRa`{v^DVXli#7hsc zEtBRwy6v#i1QHu1JJMjqB_9lqC{c0c+v|UAsWO9<5j~E@zg`X1@Z3nlRWcQO8XJ_3 zbv=$HUtX0{Vc`9#D>gGi?7nJ!I{C!~i^hv)Zo$3mWN>A^4SU=Nal_KyNWezh1s+=W zLLpqx&drZzfw{bWvCq0(5&ays+#Ym#cyyAr^6M`Q=5Ufrh+a+a-TERf;S_R7O8oC_ z8j^if+hp=0YwZTh{$+&S<b92yR<n+?pb_z8MxB$YMaQ_Pa;9cYwrEm3g=Bc)i%+KN z<@KAIOSj!Ar(VuzOtI{f3QD{+VS$j`Dc|(fkG^6)14->+*jhC=Nfo42R;?9+vkpk6 z^(q^bMy{UTgx~8bBszyaC_Qap?PBaYRT<;gjw9D_#g80O4Xx!&JXWCMMl%JdaN<jo zk2B8}<2TqBVuAQcv7OMrt%~g+oa#4dZyEPxf#o7qMKgsSV~3@rk%*y;2l@bIC84I8 z-`zynT*@f1k0v&U36nzJ<ZC4+o%r|F<x7<+21Pgg5GwJ5-^1<nB#Aj+(COPs9}Z+Z zybre)HgZ`I?=0d}RP`A5m{`y9^47gS2sSJ}*i3@%g^S^lvz87=gY%ScFDZK1GSSd< zpfpYNc`l`>OMCdVn$(u{qG4Y!<@IOz#NFk>iL|a4d>W4Wf=lU7Qmg=sur?EhY$zUQ z@k1PYTzQ#Ij8XnnbE(BsZHMu#0@l3D(!q|*9rIw&ZLI6Qra^{zQ`-_z^!-ch@Q**A z+bi$SstWsJ>G6yQucOaoScs(vOc5~$T|%@Li`8OPnTLu78fQC>2UI;R9eKxCB8pb# z1q3ooL~u1r;!}+7&Q&k8eKKA7H1<RVYBw&<f%Z_6lY;w{P}5>he3=g^0{y0xghGKY z$%xN_hdmM8&@*spJrWvalk#5K$Sx3Xv0N@Q8kR*XLD#K?=57>+QnU(@_Q?=$oY~53 zl-1^PkjbFL=Si~tI+2Q2JG(G>_1K^yyT+zl=^E+}`j~}qMt%r(QuNN3@z;v8UET)p z*k5=Rf@HPquy*MTx(2I8aS>BBG$#XPNptdg92}Ln$YeV`^2#_y(`@s>g`se*?c2k# z#oq@ovMX;~t>z$=dIY*wMDj+CGuBbv*$WJCKT#c_0}iwdH`WHdp0I<^J%KoP6~mq2 zG>bt6qr3io0Mzj<tj^FvSC^~DT51>3q>JD9&Xoe)aCwvNo<8$|LjGlrIE~5=wtbFC zRe_)UMeMnuW^*eJ6-B4Vby|2VKF?6N!+a2)wtRYi*15>E`{|6tgvMuAX))x`O1M{F zUH2JGoV3myV0q3j2;iuerLd}40(w6;UCl-;E!?Yxc=N|(MBklCj%-kzpVrd_Df_?L z&Q%znjkJd#m45&9oi$Yyj=Vp?49kVr_4bRI7S0M+j%tvNR*2?3d(4kt%XLl(XkOFw zR07x3nxT7h8`d?v%Dn5}8J7=?=wVZWL@_PZB&LFX4cWAOK0wp|OTxsireJA{|3c(_ zbP!O2D3PcUyJB%!PeIon900Vr?+Yhxa_o4|>P=Ok4kxFbCR_`vH|1&)jfXPOcnW{k zku9G_M0OnF5!<1qX(@b|C~X_A_^s#Z!x1#`MNm0UPK@qX*jv`oMslm9kvyzbwnWm~ z_pUc0HMfMBvUu=~<eR%Ijfab>dIiH&^Y}<Xk<YTXQG0>4vA;b2T|atKt+~Q6Xa2-p z_~^k3I`iBzvV)z%pneP$VZg&3ywB-3fM??N3%x+g3-qtu{Z($c=qWyIr0+eroKqaM zHl4~5G$h}$X|EITl=Gj+<jzreD=cK(3t2jg5-{bd_ZzHT!prU|Sm*q$c+E`~(!TIU z{~F;aeKuR+{%gc{FxHWrCw={>uBrAyNrG}sb5%ZFVk@p3Tujs-mDH;l_p2!8PvLNx zQBL6UtBqrIPTzbdJE`?jgQ&$=;$X(iow>2Ift-z(qB@t-^{NW5p!kEu4gbljC4mw3 zExHG@rbbgVj7M^Lb;9-`=VGvi7g>&1IreT_({a}c#(tF2=eCYDBfe3&LC7LXWCAl0 zxR4b{F@XlM1P(}opN-}7^e1%16rggeA3OyXXr+xS(|q1?4^EvZOR72-MExnoAe=bs z2HjD1PShGtb&(J~rq|gBNDl_6y2-vavgGrh`#S8a_>yeHUF0fa47DW(`8<>DM(&ws zOI(i?PlB>7>Z_Yt{mT=<u#IO~1JEjI^eF@+2c@MI)>b#$-^40$jH|}Yv}C`D)hXdf z5mZjV=Pi>S$&;4^tw#4p&b9njQ};_Trh)HWXdNCPW@&_de<}BPo3FZ5#Pws0wG{W! zQqTI@>x4s5K2|^fFVXqMd}d)k+QT90gt^|+{0ur*tH9N90BMzq-nNW%&|L1}_l5|f zTdv#$Mv=PO?8l7|)nuG)ZEP)_Z|>^fHb;>CMIj4KpHEz9k@cL)XIXU~-?L5U-p4o8 z=5th)ns?Qb)f(yA6$W~a*@#8FVtA{?*;05?^kj?E3hAX!KnX33?ZI}uV=rvC4<Uaz z<X@$!%Xn5KLx0Amzz1D0%=RDPjLw*A%nuZv+c>GMiu|<}(<W4CNN${U`zEL*q1#qY z+cE3CZ<D?MBIWFu$|&~I;+PtC<nZwO4LP+Q5}k`&V}Ydh)K^94HBoz0Em>gYGB#OY zVd&$*y`;QvoO4MlO%|^|`Rh*LrK#pwZ6eotTvO|hUlW83B@{lxXWHeAT{Vh@SZNzu zp$yu?<?Z%eqlbO=2#?zSJJExNUXR?PRh<lVjx0s7!^LrNhs=kJmeqV|s@O4iHgucQ z#|Y+`<7~=t>!jIOXtUc6CGr-A>h-@f6*da{8))<P-aIoSlc-;d!x`n+*V}}JnDF*_ zG6@QJssoq)@%V~e7_840BN<w}|B=O<li~MA(PWj$xm}`S92j@rC-bnPlmNR*IBIWu zf|F*ORoyH_!-Ox{6+kZAfTCm3+u$vqr-8uq(&a2+GF}q??&jVu3sO}X;W!(?-wfX< z%DHn)s)|m~#Yht79M%uh1O_%%&H)Pjw{CGd7~cfB?<n&;QXmtj!0Q?$9?bH%ovD*H zvv3(aBAW$9SX<(l`EM~>^-7Ifi1nvd=9lM_V}Hh0O)3mVCV0Jnx~aPrza$K~M7FDY zFHB};UjCftgU50%)~ybou)00KwyU_WzT4ml>Q7Wr_3YR98<_X&P=2GRK&DNDo2YaO zO|{ocO5i0d@C#!=#*2M;+Q`-K8~*u*wwM_%rY9?y8m|$b^yh^3Pl?pNYP520VdfD> z*u7V4jBv{LM^sGFB&z0L$p4idJ9^sd2ERr%)Qz=07U_yLU>#{;<4!6ayH>P`XmDDT z8vjE5E)SR}mx$*6I1J6~(ja9{SG8OCZu%%gu%svWWbEJ3RfdW;yLafZnjbw@A$hcs zZ(q~c1&U5?23@F<%hI)HXM24kna=W~GZSO3m88IFnNsVccqO+C7@b%U7b{VO#37;` z7cawt*8ZzC>Oq%9lS0>sCaP879AwUwo;_i0z%{2d6fx}o9#3sE)|2<g^XX|Rr((r{ zoxg_IJdZ+OE~T&E#zmyEa<lmP{$`6E-NK(aGbclAfHn%Fc{S0TU$Qy?Dk5?$M;u>E z97YhwSQV&ZRrdt9cL|RP{Gqv7DUL2xruW+7%@wcI8A6;Nf7Nw(3pg*cX&kQ-A@Ehl zMf?WsQ%NsVNl+zU!JAj%HE2^TJz$lg6lbCe`XltI;b*lsDY2<s3a+fY0Ffa^>7Tk_ zfUV}NO_aK0DAld9;`5Et!(dca4m`EXvK~%h!;rW!tHJ(8=vbC%$=u60s;lB*@<0xJ zhpL@`(ujpRf43;ID&9g(SOqri@=j@*h2iG~Mm20XHL;{hr%2q)#cD3W!SlSvoetbi z`jn6hxH0mIx<F3@TzD0JE3LWd(gNNE4oyT{63%`!vZ9ps{TVtrl8n*Pd$YE3xLW0s z3~+wll#GsANqG6q)kJe!%EncR9<2dngXJxX`#|ZVHwa37_osVMURBN1v1VGOZk=bt z3Hk_JQ;Bt!hul2Ji+<fMZy#a6*g=;e0J`{dsLA|htZGs!mmNu(I06-4yo-flj;zg7 zK90JARz{59Aq4xq!X)i*!bdIL6ydu3B&%meLWOo}nk`V_Qji$IYk+Y(e*^3VbwX{5 zzVy2BMNEX>(4s*1q&zBK^@kCuz!(%3-e?5V^K{j=j%7~`t5VVmMRIH0ELDatqZ$uG zC+gxx2h2kPLJDRwjD;9qD$-vg_=*gkLfuq4!2}|P2VBN}EiUE4DzmtttFLEGlX!na zne8j8=PzG=r+!6YY{m8jZD!j>P9^J~RGPdJ)4C`*G8Yv{Z)0|gx=oB(1u}Q;fPT`W z#74Lu+`4Je-6xxRo6(Af&tqz_<&B*gX0SJGK2>Nre|9}pi*Yn8rB2EGxk>DnmGLd5 z{#TCC!JRHtuYFZ=6?l;nYhrH^9Yv%%b$;M6SjRoGjN*X_y5@1!<+><`LDi8#NkLpZ z@vL7mKFvKOy*|E~Vsf@ExO};Rp;e{UL^`1`?4+8&s`R>*=Q*`;neN|Ei;1<gH!BzE zQr6d6yywGsiuQa0#ZObst)^*~x2-o{xikKO&wmjy|Kh#~Iw=VH<YkTk?lV$y6Mk&( zR`rGT=+_NaBwsGy5OmioRFiv!wq!r_=(*FtTBFJ<MA4|Nn2*p4(ABQx^l))ryNwoA z4mcDu9>ScMpFz{GKHv)<mV?d9lYC~MVynh3Pqp?BJEr4d$MUP)!#q<ZH=lu4zsC6g z0$T~B_OXLZ`^PGs+gGM2Z<^swQ+(RUqp{DX&@$L!S{SDT3KE17oR@D1s}x#!X*~K| z(?*oDrd_^?t~=vqQ+-o4{?$;Ws~mum`DtOj+FbFgrbJN3l_&*h5o5BkS^?d|u8vU9 zcVao|k;K#PBro{hm?^sc3R&h+Z4{#hc{Ir*ZADS2IB-fV)mD(<i|?m0DNUcEl|_39 z^j?+=!WVatf0uV0Ln-Xgc$KcJ2Z@Vi`98U*Y<Z(K1#S*b2ezw+ivo*s?VpwPhE%Cr zXkJaM%m>E=FVi%k`(}l@q^9a6r%yP?3$?2Ar%Y9IWXT)^lPjpAL?_uPR$W6x?WbQj zyv9V>>12jA(_zaw)TKHic8cn}b~Q&6JwU!R=MO%5^N23_xnv@t?cFuE$*y&0<W1rv z=>`qTDpGsKro*G-N3tLpW^c{SB`g~92SJ|C5l9UlY{m#(b&7q-#>x22RlwEX7^J4D z&y&g|lICUNYnM;VvPA^!qbDR%j(X!BAicp904>AwMLt$FMXj^ODIQE2_ZO=buL(6! z!a()m<aV}K%twW~R9EVC6u&fWv_;jetfzw!-cW};6yKMAE7CxfwicYleqd@wc#tR_ z`(6;qKc1Luf6gL`dO|Yad0AfOIx<Ws=u&p1E4uO(9JQ-(`S~hQJgZe&;v-&N>xbT= zS({U%=}Y!fVCprO57KuPTRM5OPB6*nfa-DtRz()|6&G~Ut7<f)gp{hY#fQ+ubj^nJ zVJ;rg;sx&Y6K;H+Qc;<|6r4%cO_`9*;=Y?$s*Oix-n(AT8U13tNsE>*@AqqSZ*T|k z$y=kb!FRQpXCg+4V3lLT9tgq71Uk0kE7uCH=Wkib^9s3;>rRVH8xA^CJ{=BvVuIWa z)_D3gv&y~uk{AY~J|@<kv$-)hAhV%@=5_52a~I~A`9$UVfs0l}CAL|Y8IofLu>?Z` zR32^RzTR(k8AJa{%h>(ey9^$~!s!qST}Pkfw(=~Q%A$&8AY^4nfXu_E>_?KIM!?jd zei7-*7kxUQ+(bt{knnRh`MK;p7yqUT?4^SP`K!9*Et{`%$!U}7d2XM9%2Ij~KFGH0 zgU<^a(ry689(nx?*Dsvm6$GY(g&ZTCz*>ybF>Enl<0LIZ9`aG;XdRxm<GN4h?kb04 zUvFbAHe@fOSs+A4d=veYm*<$%;&S9a+Eo$o+Ely*wP!x6ZmN@EOtNXCH&c_BrTzJ# z3!^?5UD9ETiX&&kF<+@(mN};sD%(@kKi8tOJiS&*#@CZU_k@Q^i>AbnIlQ!Y8wZ)I zzAdJLKIjDjd+*i}h-!A3(S7nJG+6_6K0eQoA%4k*w>~0j)v&?Klsk+oga=+@Q~Vf{ za&Zc}L+w0B-U)z##Kp9{CacWW^IEbk?$Mhg_p!hONBa@?uwU}cM@<`0a#tcoUHLZU zz+gZ&b>}Q*qUBwfBI>@QuAQQQ!Sdv>luP0@u7L=aI|dqpnyu{L40Y3Gg;cIZ+Hn1J zDg(NE<<gPg;yj;~5jf~1BYyBX%f>ZMCzCA7`vQE=yJgw$@eSQda2p*o;(wz(dkOSc z_a4$74k}ma8ljE!J%>RVtl79)+ej0tY#Qm;D6;``ISm?!C9A$<Jvs(*m%#;dXKl#V z+vP&J!U`jjT85pP0*sh`$@5JyW^#Y#`Ff@4JCjEElS=#(l@<cDF)FOkkc{<aIip8N zcBC~6x-Gk!1U$)eGeUsm=b)IULCERJ%^}$e%&RdeNp8wXUQ8Q{h}pZMj-5sdv*gb3 zp@8&!Rw~q?C!I=d$&>kGblP!mkHaVG(C3+~Vn&g87humYJ!+5_hJDKB7(J${%_$R& zK9rdjwj;D$Z)uUG<k)~^ZoH#v?&v02|2h&@9eLSu${b(8S!Lxdi1e;xNR0JZhMeTl zo_Q@zm8O-bR+R%UDXL*&*OJt$n;Ac<BUj7WwbUW8G2ub&I$4sD^{!P40~a$_X@t5n zYYb9<Y?;C7x<Jc3m88mk#3o$}g0)_r3dJ=_CEA(=HF*na>FV$8pzGDX4hk7NZ%Fh3 zB_&SOJtx4q218VzNa$7<i(ly~Gg{Yy&~2izf_BN>$#`^HH2O2<xRsjk#3OHl9RYo0 z#eb;V?dWiyU*@y@5eM?48rPcdn3^j0O0#E$T`S7tRJO3!S4SqsRFHAPd)7pd6_i&m z87)Y9rM~4cS2~-*(^JmkKm`vQlqH~)L)xU=(l!0fdvUJl4CBRHszcJi7irXJ0jSU@ zo7UW~@=@J&HF^lg<$v?LG1sSN9+|!Sw12oKe)+Kf>D{i_`3U>-%dU6}ym5c;{hQiJ z87Xf@33zoZK*ycc!?;~&aR1<g(TMr=`wxe^2XnrA`RUEPuXa8izQro4<(D^<4uNO1 z{}KMT^ZND2-GhS{8}HK5WB&<Wt2myKarlMHJ<$>Ivs9db((wG@$#gpYVQcH_*RQQS z?Y3s!K`ZOcwg#i#;LBEalIOiGpy&W)h7=s?&u3dHbhoAZdp3UY>}2wyvFZNFajTbY zJ$&(O@7)`5@bT62hw#xbKc2LX2mObz(1*_-{&@06JQOcKe0;t8@wxYc+iz+t|2!*N z{Yg3-o#g!t9dBDF`DwLzXg#mA{^N(AJ{?@D51^mnATO$erjI`y{7!BEZG0@-e#svj zEsH<xy*_;V+>f`#+ugl4Zx5eGesgc#9$y(_c9{=*TjR;#3+NKK6WN(u`i*iVg+dr( zimW8mM-lmI5OH+#L1<OvZI0Z}Y^_g?!T-&6#<Qa>FfgojgulnAvSmGE_`mGF7V=Yb z4m@JOw4=Otju?l-c(L)|enWq7MiCoZV-Wq*te9^7oSyMzRa^i3M{9aEy?Gy==Os}j z9(ZxPo%jO(#)DP*mwxv>;rmJAg<c$lq3{AP4#NlH?B-oB2D+shhB7G9v|G%74j$|G zFKCCSBJ{ua1Yo)Grh?~nJmB5m2s}aei9GkiAPBZQA#i&5ELESyoiIwG?G4z_vY5^D zAdEU4-wTqBz!zm${`17|bYg$Q?+7y*{kebN$>`p~ynVmTJ{HkG{AJU>pTvp(KzO$~ zh<UK)^#9L)-1P_?IB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq+ywqV L7Wcr_0GI;+;ZGx1 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js deleted file mode 100644 index 8ea6f795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/header.js +++ /dev/null @@ -1,183 +0,0 @@ -var tap = require("tap") -var TarHeader = require("../lib/header.js") -var tar = require("../tar.js") -var fs = require("fs") - - -var headers = - { "a.txt file header": - [ "612e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303430312031313635313336303333332030313234353100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'a.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 257 - , mtime: 1319493851 - , cksum: 5417 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "omega pax": // the extended header from omega tar. - [ "5061784865616465722fcea92e74787400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303137302031313534333731303631312030313530353100207800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'PaxHeader/Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 120 - , mtime: 1301254537 - , cksum: 6697 - , type: 'x' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "omega file header": - [ "cea92e7478740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030322031313534333731303631312030313330373200203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'Ω.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 2 - , mtime: 1301254537 - , cksum: 5690 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } ] - - , "foo.js file header": - [ "666f6f2e6a730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030303030342031313534333637303734312030313236313700203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'foo.js' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 4 - , mtime: 1301246433 - , cksum: 5519 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "b.txt file header": - [ "622e747874000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030303036343420003035373736312000303030303234200030303030303030313030302031313635313336303637372030313234363100203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000757374617200303069736161637300000000000000000000000000000000000000000000000000007374616666000000000000000000000000000000000000000000000000000000303030303030200030303030303020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true - , path: 'b.txt' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 512 - , mtime: 1319494079 - , cksum: 5425 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - - , "deep nested file": - [ "636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363633030303634342000303537373631200030303030323420003030303030303030313434203131363532313531353333203034333331340020300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075737461720030306973616163730000000000000000000000000000000000000000000000000000737461666600000000000000000000000000000000000000000000000000000030303030303020003030303030302000722f652f612f6c2f6c2f792f2d2f642f652f652f702f2d2f662f6f2f6c2f642f652f722f2d2f702f612f742f680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - , { cksumValid: true, - path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' - , mode: 420 - , uid: 24561 - , gid: 20 - , size: 100 - , mtime: 1319687003 - , cksum: 18124 - , type: '0' - , linkpath: '' - , ustar: 'ustar\0' - , ustarver: '00' - , uname: 'isaacs' - , gname: 'staff' - , devmaj: 0 - , devmin: 0 - , fill: '' } - ] - } - -tap.test("parsing", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , header = new Buffer(h[0], "hex") - , expect = h[1] - , parsed = new TarHeader(header) - - // console.error(parsed) - t.has(parsed, expect, "parse " + name) - }) - t.end() -}) - -tap.test("encoding", function (t) { - Object.keys(headers).forEach(function (name) { - var h = headers[name] - , expect = new Buffer(h[0], "hex") - , encoded = TarHeader.encode(h[1]) - - // might have slightly different bytes, since the standard - // isn't very strict, but should have the same semantics - // checkSum will be different, but cksumValid will be true - - var th = new TarHeader(encoded) - delete h[1].block - delete h[1].needExtended - delete h[1].cksum - t.has(th, h[1], "fields "+name) - }) - t.end() -}) - -// test these manually. they're a bit rare to find in the wild -tap.test("parseNumeric tests", function (t) { - var parseNumeric = TarHeader.parseNumeric - , numbers = - { "303737373737373700": 2097151 - , "30373737373737373737373700": 8589934591 - , "303030303036343400": 420 - , "800000ffffffffffff": 281474976710655 - , "ffffff000000000001": -281474976710654 - , "ffffff000000000000": -281474976710655 - , "800000000000200000": 2097152 - , "8000000000001544c5": 1393861 - , "ffffffffffff1544c5": -15383354 } - Object.keys(numbers).forEach(function (n) { - var b = new Buffer(n, "hex") - t.equal(parseNumeric(b), numbers[n], n + " === " + numbers[n]) - }) - t.end() -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js deleted file mode 100644 index 5bf0e540..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack-no-proprietary.js +++ /dev/null @@ -1,854 +0,0 @@ -// This is exactly like test/pack.js, except that it's excluding -// any proprietary headers. -// -// This loses some information about the filesystem, but creates -// tarballs that are supported by more versions of tar, especially -// old non-spec-compliant copies of gnutar. - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - uid: uid, - gid: gid, - size: 200 } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - uid: uid, - gid: gid, - size: 2 } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , uid: uid - , gid: gid - , size: 2 } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var props = doGH ? pkg : {} - props.noProprietary = true - var pack = Pack(props) - var writer = Writer(target) - - // global header should be skipped regardless, since it has no content. - var entry = 0 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - if (ev !== wanted[0] || e.path !== wanted[1].path) { - console.error(wanted) - console.error([ev, e.props]) - e.on("end", function () { - console.error(e.fields) - throw "break" - }) - } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js deleted file mode 100644 index 0f509945..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/pack.js +++ /dev/null @@ -1,897 +0,0 @@ - -// the symlink file is excluded from git, because it makes -// windows freak the hell out. -var fs = require("fs") - , path = require("path") - , symlink = path.resolve(__dirname, "fixtures/symlink") -try { fs.unlinkSync(symlink) } catch (e) {} -fs.symlinkSync("./hardlink-1", symlink) -process.on("exit", function () { - fs.unlinkSync(symlink) -}) - - -var tap = require("tap") - , tar = require("../tar.js") - , pkg = require("../package.json") - , Pack = tar.Pack - , fstream = require("fstream") - , Reader = fstream.Reader - , Writer = fstream.Writer - , input = path.resolve(__dirname, "fixtures/") - , target = path.resolve(__dirname, "tmp/pack.tar") - , uid = process.getuid ? process.getuid() : 0 - , gid = process.getgid ? process.getgid() : 0 - - , entries = - - // the global header and root fixtures/ dir are going to get - // a different date each time, so omit that bit. - // Also, dev/ino values differ across machines, so that's not - // included. - [ [ 'globalExtendedHeader', - { path: 'PaxHeader/', - mode: 438, - uid: 0, - gid: 0, - type: 'g', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { "NODETAR.author": pkg.author, - "NODETAR.name": pkg.name, - "NODETAR.description": pkg.description, - "NODETAR.version": pkg.version, - "NODETAR.repository.type": pkg.repository.type, - "NODETAR.repository.url": pkg.repository.url, - "NODETAR.main": pkg.main, - "NODETAR.scripts.test": pkg.scripts.test } ] - - , [ 'entry', - { path: 'fixtures/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/200cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 200, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/a.txt', - mode: 420, - uid: uid, - gid: gid, - size: 257, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/b.txt', - mode: 420, - uid: uid, - gid: gid, - size: 512, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/c.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/cc.txt', - mode: 420, - uid: uid, - gid: gid, - size: 513, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/foo.js', - mode: 420, - uid: uid, - gid: gid, - size: 4, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-1', - mode: 420, - uid: uid, - gid: gid, - size: 200, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/hardlink-2', - mode: 420, - uid: uid, - gid: gid, - size: 0, - type: '1', - linkpath: 'fixtures/hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/omega.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/packtest/star.4.html', - mode: 420, - uid: uid, - gid: gid, - size: 54081, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'fixtures/packtest/Ω.txt', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - uid: uid, - gid: gid, - size: 2, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/packtest/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '2', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - - , [ 'entry', - { path: 'fixtures/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/', - mode: 493, - uid: uid, - gid: gid, - size: 0, - type: '5', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: uid, - gid: gid, - size: 100, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'entry', - { path: 'fixtures/symlink', - uid: uid, - gid: gid, - size: 0, - type: '2', - linkpath: 'hardlink-1', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' } ] - - , [ 'extendedHeader', - { path: 'PaxHeader/fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - type: 'x', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: "fixtures/Ω.txt" - , "NODETAR.depth": "1" - , "NODETAR.type": "File" - , nlink: 1 - , uid: uid - , gid: gid - , size: 2 - , "NODETAR.blksize": "4096" - , "NODETAR.blocks": "8" } ] - - , [ 'entry', - { path: 'fixtures/Ω.txt', - mode: 420, - uid: uid, - gid: gid, - size: 2, - type: '0', - linkpath: '', - ustar: 'ustar\u0000', - ustarver: '00', - uname: '', - gname: '', - devmaj: 0, - devmin: 0, - fill: '', - 'NODETAR.depth': '1', - 'NODETAR.type': 'File', - nlink: 1, - 'NODETAR.blksize': '4096', - 'NODETAR.blocks': '8' } ] - ] - - -// first, make sure that the hardlinks are actually hardlinks, or this -// won't work. Git has a way of replacing them with a copy. -var hard1 = path.resolve(__dirname, "fixtures/hardlink-1") - , hard2 = path.resolve(__dirname, "fixtures/hardlink-2") - , fs = require("fs") - -try { fs.unlinkSync(hard2) } catch (e) {} -fs.linkSync(hard1, hard2) - -tap.test("with global header", { timeout: 10000 }, function (t) { - runTest(t, true) -}) - -tap.test("without global header", { timeout: 10000 }, function (t) { - runTest(t, false) -}) - -function alphasort (a, b) { - return a === b ? 0 - : a.toLowerCase() > b.toLowerCase() ? 1 - : a.toLowerCase() < b.toLowerCase() ? -1 - : a > b ? 1 - : -1 -} - - -function runTest (t, doGH) { - var reader = Reader({ path: input - , filter: function () { - return !this.path.match(/\.(tar|hex)$/) - } - , sort: alphasort - }) - - var pack = Pack(doGH ? pkg : null) - var writer = Writer(target) - - // skip the global header if we're not doing that. - var entry = doGH ? 0 : 1 - - t.ok(reader, "reader ok") - t.ok(pack, "pack ok") - t.ok(writer, "writer ok") - - pack.pipe(writer) - - var parse = tar.Parse() - t.ok(parse, "parser should be ok") - - pack.on("data", function (c) { - // console.error("PACK DATA") - if (c.length !== 512) { - // this one is too noisy, only assert if it'll be relevant - t.equal(c.length, 512, "parser should emit data in 512byte blocks") - } - parse.write(c) - }) - - pack.on("end", function () { - // console.error("PACK END") - t.pass("parser ends") - parse.end() - }) - - pack.on("error", function (er) { - t.fail("pack error", er) - }) - - parse.on("error", function (er) { - t.fail("parse error", er) - }) - - writer.on("error", function (er) { - t.fail("writer error", er) - }) - - reader.on("error", function (er) { - t.fail("reader error", er) - }) - - parse.on("*", function (ev, e) { - var wanted = entries[entry++] - if (!wanted) { - t.fail("unexpected event: "+ev) - return - } - t.equal(ev, wanted[0], "event type should be "+wanted[0]) - - // if (ev !== wanted[0] || e.path !== wanted[1].path) { - // console.error(wanted) - // console.error([ev, e.props]) - // throw "break" - // } - - t.has(e.props, wanted[1], "properties "+wanted[1].path) - if (wanted[2]) { - e.on("end", function () { - if (!e.fields) { - t.ok(e.fields, "should get fields") - } else { - t.has(e.fields, wanted[2], "should get expected fields") - } - }) - } - }) - - reader.pipe(pack) - - writer.on("close", function () { - t.equal(entry, entries.length, "should get all expected entries") - t.pass("it finished") - t.end() - }) - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js deleted file mode 100644 index f765a501..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/parse.js +++ /dev/null @@ -1,359 +0,0 @@ -var tap = require("tap") - , tar = require("../tar.js") - , fs = require("fs") - , path = require("path") - , file = path.resolve(__dirname, "fixtures/c.tar") - , index = 0 - - , expect = -[ [ 'entry', - { path: 'c.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:10:58 GMT'), - cksum: 5422, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'cc.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 513, - mtime: new Date('Wed, 26 Oct 2011 01:11:02 GMT'), - cksum: 5525, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'r/e/a/l/l/y/-/d/e/e/p/-/f/o/l/d/e/r/-/p/a/t/h/cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 100, - mtime: new Date('Thu, 27 Oct 2011 03:43:23 GMT'), - cksum: 18124, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 120, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 6702, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: 'Ω.txt', - ctime: 1319737909, - atime: 1319739061, - dev: 234881026, - ino: 51693379, - nlink: 1 } ], - [ 'entry', - { path: 'Ω.txt', - mode: 420, - uid: 24561, - gid: 20, - size: 2, - mtime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - cksum: 5695, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 17:51:49 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:11:01 GMT'), - dev: 234881026, - ino: 51693379, - nlink: 1 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1319686868, - atime: 1319741254, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14570, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - atime: new Date('Thu, 27 Oct 2011 18:47:34 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 1 }, - undefined ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 1000, - gid: 1000, - size: 201, - mtime: new Date('Thu, 27 Oct 2011 22:21:50 GMT'), - cksum: 14086, - type: '0', - linkpath: '', - ustar: false }, - undefined ], - [ 'longLinkpath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4975, - type: 'K', - linkpath: '', - ustar: false }, - '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' ], - [ 'longPath', - { path: '././@LongLink', - mode: 0, - uid: 0, - gid: 0, - size: 201, - mtime: new Date('Thu, 01 Jan 1970 00:00:00 GMT'), - cksum: 4976, - type: 'L', - linkpath: '', - ustar: false }, - '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' ], - [ 'entry', - { path: '200LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL', - mode: 511, - uid: 1000, - gid: 1000, - size: 0, - mtime: new Date('Fri, 28 Oct 2011 23:05:17 GMT'), - cksum: 21603, - type: '2', - linkpath: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ustar: false }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 143, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 6533, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { ctime: 1320617144, - atime: 1320617232, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200-hard', - mode: 420, - uid: 24561, - gid: 20, - size: 200, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 5526, - type: '0', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:07:12 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ], - [ 'extendedHeader', - { path: 'PaxHeader/200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 353, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 14488, - type: 'x', - linkpath: '', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '' }, - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - ctime: 1320617144, - atime: 1320617406, - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 } ], - [ 'entry', - { path: '200ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc', - mode: 420, - uid: 24561, - gid: 20, - size: 0, - mtime: new Date('Thu, 27 Oct 2011 03:41:08 GMT'), - cksum: 15173, - type: '1', - linkpath: '200-hard', - ustar: 'ustar\0', - ustarver: '00', - uname: 'isaacs', - gname: 'staff', - devmaj: 0, - devmin: 0, - fill: '', - ctime: new Date('Sun, 06 Nov 2011 22:05:44 GMT'), - atime: new Date('Sun, 06 Nov 2011 22:10:06 GMT'), - 'LIBARCHIVE.creationtime': '1319686852', - dev: 234881026, - ino: 51681874, - nlink: 2 }, - undefined ] ] - - -tap.test("parser test", function (t) { - var parser = tar.Parse() - - parser.on("end", function () { - t.equal(index, expect.length, "saw all expected events") - t.end() - }) - - fs.createReadStream(file) - .pipe(parser) - .on("*", function (ev, entry) { - var wanted = expect[index] - if (!wanted) { - return t.fail("Unexpected event: " + ev) - } - var result = [ev, entry.props] - entry.on("end", function () { - result.push(entry.fields || entry.body) - - t.equal(ev, wanted[0], index + " event type") - t.equivalent(entry.props, wanted[1], wanted[1].path + " entry properties") - if (wanted[2]) { - t.equivalent(result[2], wanted[2], "metadata values") - } - index ++ - }) - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js deleted file mode 100644 index a00ff7fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tar/test/zz-cleanup.js +++ /dev/null @@ -1,20 +0,0 @@ -// clean up the fixtures - -var tap = require("tap") -, rimraf = require("rimraf") -, test = tap.test -, path = require("path") - -test("clean fixtures", function (t) { - rimraf(path.resolve(__dirname, "fixtures"), function (er) { - t.ifError(er, "rimraf ./fixtures/") - t.end() - }) -}) - -test("clean tmp", function (t) { - rimraf(path.resolve(__dirname, "tmp"), function (er) { - t.ifError(er, "rimraf ./tmp/") - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js deleted file mode 100644 index da99ffef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; -var path = require('path'); -var tmpdir = require('os').tmpdir(); -var uuid = require('uuid'); - -module.exports = function (ext) { - return path.join(tmpdir, uuid.v4() + (ext || '')); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml deleted file mode 100644 index b6d42c3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md deleted file mode 100644 index f039427f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/LICENSE.md +++ /dev/null @@ -1,2 +0,0 @@ -Copyright (c) 2010-2012 Robert Kieffer -MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md deleted file mode 100644 index d2adba18..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/README.md +++ /dev/null @@ -1,204 +0,0 @@ -# uuid [![Build Status](https://secure.travis-ci.org/shtylman/node-uuid.png?branch=master)](http://travis-ci.org/shtylman/node-uuid) # - -[![browser support](http://ci.testling.com/shtylman/node-uuid.png)](http://ci.testling.com/shtylman/node-uuid) - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Cryptographically strong random # generation on supporting platforms -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) - -## Getting Started - -Install it in your browser: - -```html -<script src="uuid.js"></script> -``` - -Or in node.js: - -``` -npm install uuid -``` - -```javascript -var uuid = require('uuid'); - -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include <stdio.h> -#include <unistd.h> -#include <sys/time.h> -#include <uuid/uuid.h> - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js deleted file mode 100644 index 3de34151..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/compare.js +++ /dev/null @@ -1,62 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../'), - uuidjs = require('uuid-js'), - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js deleted file mode 100644 index bdc9eb46..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/misc/perf.js +++ /dev/null @@ -1,102 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -var log = console.log; - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json deleted file mode 100644 index 731b282b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "uuid", - "version": "1.4.1", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "main": "./uuid.js", - "devDependencies": { - "mocha": "1.8.0" - }, - "scripts": { - "test": "mocha test/test.js" - }, - "browser": { - "./rng.js": "./rng-browser.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/shtylman/node-uuid.git" - }, - "testling": { - "browsers": [ - "ie6..latest", - "firefox/3.6..latest", - "chrome/22..latest", - "safari/5.1..latest" - ], - "harness": "mocha-tdd", - "files": "test/*.js" - }, - "readme": "# uuid [![Build Status](https://secure.travis-ci.org/shtylman/node-uuid.png?branch=master)](http://travis-ci.org/shtylman/node-uuid) #\n\n[![browser support](http://ci.testling.com/shtylman/node-uuid.png)](http://ci.testling.com/shtylman/node-uuid)\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src=\"uuid.js\"></script>\n```\n\nOr in node.js:\n\n```\nnpm install uuid\n```\n\n```javascript\nvar uuid = require('uuid');\n\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-uuid/issues" - }, - "homepage": "https://github.com/shtylman/node-uuid", - "_id": "uuid@1.4.1", - "_from": "uuid@~1.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js deleted file mode 100644 index 57b58d4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng-browser.js +++ /dev/null @@ -1,31 +0,0 @@ - -var rng; - -if (global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; -} - -if (!rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; -} - -module.exports = rng; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js deleted file mode 100644 index 3977f798..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/rng.js +++ /dev/null @@ -1,4 +0,0 @@ -var rb = require('crypto').randomBytes; -module.exports = function() { - return rb(16); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts deleted file mode 100644 index e2bfcc5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---ui qunit diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js deleted file mode 100644 index 4c9872ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/test/test.js +++ /dev/null @@ -1,105 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - test(name, function() { - // avoid .map for older browsers - for (var i=0 ; i<ids.length ; ++i) { - ids[i] = ids[i].split('-').reverse().join('-'); - } - ids = ids.sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); - }); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -test('msec', function() { - assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' - ); -}); - -test('exception thrown when > 10k ids created in 1ms', function() { - // Verify throw if too many ids created - var thrown = false; - try { - uuid.v1({msecs: TIME, nsecs: 10000}); - } catch (e) { - thrown = true; - } - assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); -}); - -test('clock regression by msec', function() { - // Verify clock regression bumps clockseq - var uidt = uuid.v1({msecs: TIME}); - var uidtb = uuid.v1({msecs: TIME - 1}); - assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' - ); -}); - -test('clock regression by nsec', function() { - // Verify clock regression bumps clockseq - var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); - var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); - assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' - ); -}); - -test('explicit options product expected id', function() { - // Verify explicit options produce expected id - var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] - }); - assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); -}); - -test('ids spanning 1ms boundary are 100ns apart', function() { - // Verify adjacent ids across a msec boundary are 1 time unit apart - var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); - var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - - var before = u0.split('-')[0], after = u1.split('-')[0]; - var dt = parseInt(after, 16) - parseInt(before, 16); - assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); -}); - -test('parse/unparse', function() { - var id = '00112233445566778899aabbccddeeff'; - assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); - assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js deleted file mode 100644 index d0062fb4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/node_modules/uuid/uuid.js +++ /dev/null @@ -1,187 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -// Unique ID creation requires a high quality random # generator. We feature -// detect to determine the best RNG source, normalizing to a function that -// returns 128-bits of randomness, since that's what's usually required -var _rng = require('./rng'); - -// Buffer class to use -var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - -// Maps for number <-> hex string conversion -var _byteToHex = []; -var _hexToByte = {}; -for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; -} - -// **`parse()` - Parse a UUID into it's component bytes** -function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; -} - -// **`unparse()` - Convert UUID byte array (ala parse()) into a string** -function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; -} - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -// random #'s we need to init node and clockseq -var _seedBytes = _rng(); - -// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) -var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] -]; - -// Per 4.2.2, randomize (14 bit) clockseq -var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - -// Previous uuid creation time -var _lastMSecs = 0, _lastNSecs = 0; - -// See https://github.com/broofa/node-uuid for API details -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); -} - -// **`v4()` - Generate random UUID** - -// See https://github.com/broofa/node-uuid for API details -function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); -} - -// Export public API -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; -uuid.parse = parse; -uuid.unparse = unparse; -uuid.BufferClass = BufferClass; - -module.exports = uuid; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json deleted file mode 100644 index ae2ae248..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "tempfile", - "version": "0.1.2", - "description": "Get a random temp file path", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/tempfile" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "index.js" - ], - "keywords": [ - "tmp", - "temp", - "temporary", - "tempfile", - "file", - "path", - "random", - "rand" - ], - "dependencies": { - "uuid": "~1.4.0" - }, - "devDependencies": { - "mocha": "*" - }, - "readme": "# tempfile [![Build Status](https://travis-ci.org/sindresorhus/tempfile.png?branch=master)](http://travis-ci.org/sindresorhus/tempfile)\n\n> Get a random temp file path\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/tempfile)\n\n```\nnpm install --save tempfile\n```\n\n\n## Example\n\n```js\nvar tempfile = require('tempfile');\ntempfile('.png');\n//=> /var/folders/_1/tk89k8215ts0rg0kmb096nj80000gn/T/4049f192-43e7-43b2-98d9-094e6760861b.png\n```\n\n## API\n\n### tempfile(extension)\n\n#### extension\n\nType: `String`\n\nOptionally supply an extension to append to the path.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/tempfile/issues" - }, - "homepage": "https://github.com/sindresorhus/tempfile", - "_id": "tempfile@0.1.2", - "_from": "tempfile@~0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md deleted file mode 100644 index 672a0ac6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/node_modules/tempfile/readme.md +++ /dev/null @@ -1,36 +0,0 @@ -# tempfile [![Build Status](https://travis-ci.org/sindresorhus/tempfile.png?branch=master)](http://travis-ci.org/sindresorhus/tempfile) - -> Get a random temp file path - - -## Install - -Install with [npm](https://npmjs.org/package/tempfile) - -``` -npm install --save tempfile -``` - - -## Example - -```js -var tempfile = require('tempfile'); -tempfile('.png'); -//=> /var/folders/_1/tk89k8215ts0rg0kmb096nj80000gn/T/4049f192-43e7-43b2-98d9-094e6760861b.png -``` - -## API - -### tempfile(extension) - -#### extension - -Type: `String` - -Optionally supply an extension to append to the path. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json deleted file mode 100644 index f24aab87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/decompress/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "decompress", - "version": "0.1.6", - "description": "Easily extract zip, tar and tar.gz archives", - "keywords": [ - "extract", - "zip", - "tar", - "tar.gz" - ], - "homepage": "https://github.com/kevva/decompress", - "bugs": { - "url": "https://github.com/kevva/decompress/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/decompress.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "decompress.js", - "files": [ - "decompress.js" - ], - "dependencies": { - "adm-zip": "~0.4.3", - "mkdirp": "~0.3.5", - "mout": "~0.6.0", - "rimraf": "~2.2.2", - "stream-combiner": "~0.0.2", - "tar": "~0.1.18", - "tempfile": "~0.1.2" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# decompress [![Build Status](https://secure.travis-ci.org/kevva/decompress.png?branch=master)](http://travis-ci.org/kevva/decompress)\n\nEasily extract `.zip`, `.tar` and `.tar.gz` archives. Based on the extract \nutility in [Bower](https://github.com/bower/bower).\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/decompress): `npm install decompress`\n\n## Examples\n\nYou'll only need to pass a type into `ext` and it'll figure the rest out for \nyou.\n\n```js\nvar decompress = require('decompress');\nvar fs = require('fs');\n\nvar src = fs.createReadStream('foo.tar.gz');\nvar dest = decompress.extract({ ext: '.tar.gz' });\n\nsrc.pipe(dest);\n```\n\n## API\n\n### .extract(opts)\n\nExtract an archive using the `ext` option to determine which extractor to use. \nIf no `path` is specified it'll extract it to your current location.\n\n### .canExtract(src, mime)\n\nDetermine if a file can be extracted or not by checking the file extension \nand/or the MIME type.\n\n```js\ndecompress.canExtract('foo.zip');\n// => true\n\ndecompress.canExtract('application/zip');\n// => true\n```\n\n## Options\n\n### `ext`\n\nType: `String` \nDefault: `''`\n\nString that can be a file name, URL, MIME type etc.\n\n### `path`\n\nType: `String` \nDefault: `process.cwd()`\n\nPath to extract the archive to. If no `path` is defined it'll extract it to your \ncurrent location.\n\n### strip\n\nType: `Number` \nDefault: `0`\n\nEquivalent to `--strip-components` for tar.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "decompress@0.1.6", - "_from": "decompress@~0.1.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js deleted file mode 100644 index a43b4363..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/each-async.js +++ /dev/null @@ -1,72 +0,0 @@ -/*! - each-async - Async concurrent iterator (async forEach) - https://github.com/sindresorhus/each-async - by Sindre Sorhus - MIT License -*/ -(function () { - 'use strict'; - - function once(fn) { - var called = false; - - if (typeof fn !== 'function') { - throw new TypeError; - } - - return function () { - if (called) { - throw new Error('Callback already called.'); - } - called = true; - fn.apply(this, arguments); - } - } - - function each(arr, next, cb) { - var failed = false; - var count = 0; - - cb = cb || function () {}; - - if (!Array.isArray(arr)) { - throw new TypeError('First argument must be an array'); - } - - if (typeof next !== 'function') { - throw new TypeError('Second argument must be a function'); - } - - var len = arr.length; - - if (!len) { - return cb(); - } - - function callback(err) { - if (failed) { - return; - } - - if (err !== undefined && err !== null) { - failed = true; - return cb(err); - } - - if (++count === len) { - return cb(); - } - } - - for (var i = 0; i < len; i++) { - next(arr[i], i, once(callback)); - } - } - - if (typeof module !== 'undefined' && module.exports) { - module.exports = each; - } else { - window.eachAsync = each; - } -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json deleted file mode 100644 index 53336b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "each-async", - "version": "0.1.2", - "description": "Async concurrent iterator", - "license": "MIT", - "main": "each-async.js", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/each-async" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "engines": { - "node": ">=0.10.0" - }, - "scripts": { - "test": "mocha" - }, - "files": [ - "each-async.js" - ], - "keywords": [ - "each", - "async", - "asynchronous", - "iteration", - "iterate", - "loop", - "foreach", - "parallel", - "concurrent", - "array", - "flow", - "control flow" - ], - "devDependencies": { - "mocha": "*" - }, - "readme": "# each-async [![Build Status](https://secure.travis-ci.org/sindresorhus/each-async.png?branch=master)](http://travis-ci.org/sindresorhus/each-async)\n\n> Async concurrent iterator (async forEach)\n\nLike [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny.\n\nI often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`.\n\nAsync iteration is one of the most used async control flow patterns.\n\n\n## Install\n\nDownload [manually](https://github.com/sindresorhus/each-async/releases) or with a package-manager.\n\n#### [npm](https://npmjs.org/package/each-async)\n\n```\nnpm install --save each-async\n```\n\n#### [Bower](http://bower.io)\n\n```\nbower install --save each-async\n```\n\n#### [Component](https://github.com/component/component)\n\n```\ncomponent install sindresorhus/each-async\n```\n\n\n## Examples\n\n### Node.js\n\n```js\neachAsync(['foo','bar','baz'], function (item, index, done) {\n\tconsole.log(item, index);\n\tdone();\n}, function (error) {\n\tconsole.log('finished');\n});\n//=> foo 0\n//=> bar 1\n//=> baz 2\n//=> finished\n```\n\n\n## API\n\n### eachAsync(array, callback, finishedCallback)\n\n#### array\n\nThe array you want to iterate.\n\n#### callback(item, index, done)\n\nA function which is called for each item in the array with the following arguments:\n\n- `item`: the current item in the array\n- `index`: the current index\n- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration.\n\nNote that order is not guaranteed since each item is handled concurrently.\n\n#### finishedCallback(error)\n\nA function which is called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/sindresorhus/each-async/issues" - }, - "homepage": "https://github.com/sindresorhus/each-async", - "_id": "each-async@0.1.2", - "_from": "each-async@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md deleted file mode 100644 index e5e5bb14..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/each-async/readme.md +++ /dev/null @@ -1,78 +0,0 @@ -# each-async [![Build Status](https://secure.travis-ci.org/sindresorhus/each-async.png?branch=master)](http://travis-ci.org/sindresorhus/each-async) - -> Async concurrent iterator (async forEach) - -Like [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny. - -I often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`. - -Async iteration is one of the most used async control flow patterns. - - -## Install - -Download [manually](https://github.com/sindresorhus/each-async/releases) or with a package-manager. - -#### [npm](https://npmjs.org/package/each-async) - -``` -npm install --save each-async -``` - -#### [Bower](http://bower.io) - -``` -bower install --save each-async -``` - -#### [Component](https://github.com/component/component) - -``` -component install sindresorhus/each-async -``` - - -## Examples - -### Node.js - -```js -eachAsync(['foo','bar','baz'], function (item, index, done) { - console.log(item, index); - done(); -}, function (error) { - console.log('finished'); -}); -//=> foo 0 -//=> bar 1 -//=> baz 2 -//=> finished -``` - - -## API - -### eachAsync(array, callback, finishedCallback) - -#### array - -The array you want to iterate. - -#### callback(item, index, done) - -A function which is called for each item in the array with the following arguments: - -- `item`: the current item in the array -- `index`: the current index -- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration. - -Note that order is not guaranteed since each item is handled concurrently. - -#### finishedCallback(error) - -A function which is called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore deleted file mode 100644 index 80e59ef5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -tests -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml deleted file mode 100644 index 0bce8152..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.10 - -env: - - OPTIONALS=Y - - OPTIONALS=N - -install: - - if [[ "$OPTIONALS" == "Y" ]]; then npm install; fi - - if [[ "$OPTIONALS" == "N" ]]; then npm install --no-optional; fi diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md deleted file mode 100644 index 5c0c081f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/README.md +++ /dev/null @@ -1,366 +0,0 @@ -# Request -- Simplified HTTP client - -[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/) - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```javascript -var request = require('request'); -request('http://www.google.com', function (error, response, body) { - if (!error && response.statusCode == 200) { - console.log(body) // Print the google web page. - } -}) -``` - -## Streaming - -You can stream any response to a file stream. - -```javascript -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```javascript -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```javascript -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Now let’s get fancy. - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```javascript -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - var x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```javascript -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```javascript -var r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - -URL-encoded forms are simple. - -```javascript -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -``` - -For `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you. - -```javascript -var r = request.post('http://service.com/upload') -var form = r.form() -form.append('my_field', 'my_value') -form.append('my_buffer', new Buffer([1, 2, 3])) -form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png')) -form.append('remote_file', request('http://google.com/doodle.png')) -``` - -## HTTP Authentication - -```javascript -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -``` - -If passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`. - -`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method). - -Digest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail. - -## OAuth Signing - -```javascript -// Twitter OAuth -var qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - var access_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: access_token.oauth_token - , verifier: access_token.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - var perm_token = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_token.oauth_token - , token_secret: perm_token.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json?' - , params = - { screen_name: perm_token.screen_name - , user_id: perm_token.user_id - } - ; - url += qs.stringify(params) - request.get({url:url, oauth:oauth, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -### Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```javascript -var request = require('request'); - -var options = { - url: 'https://api.github.com/repos/mikeal/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - var info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -### request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -* `qs` - object containing querystring values to be appended to the `uri` -* `method` - http method (default: `"GET"`) -* `headers` - http headers (default: `{}`) -* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`. -* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request). -* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above. -* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below. -* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`) -* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -* `maxRedirects` - the maximum number of redirects to follow (default: `10`) -* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. -* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node's default `maxSockets`) -* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool. -* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request -* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above. -* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section) -* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services) -* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. -* `localAddress` - Local interface to bind for network connections. - - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - -### request.defaults(options) - -This method returns a wrapper around the normal request API that defaults to whatever options you pass in to it. - -### request.put - -Same as `request()`, but defaults to `method: "PUT"`. - -```javascript -request.put(url) -``` - -### request.patch - -Same as `request()`, but defaults to `method: "PATCH"`. - -```javascript -request.patch(url) -``` - -### request.post - -Same as `request()`, but defaults to `method: "POST"`. - -```javascript -request.post(url) -``` - -### request.head - -Same as request() but defaults to `method: "HEAD"`. - -```javascript -request.head(url) -``` - -### request.del - -Same as `request()`, but defaults to `method: "DELETE"`. - -```javascript -request.del(url) -``` - -### request.get - -Same as `request()` (for uniformity). - -```javascript -request.get(url) -``` -### request.cookie - -Function that creates a new cookie. - -```javascript -request.cookie('cookie_string_here') -``` -### request.jar - -Function that creates a new cookie jar. - -```javascript -request.jar() -``` - - -## Examples: - -```javascript - var request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`). - -```javascript -var request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```javascript -var j = request.jar() -var request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` -OR - -Note that `setCookie` requires at least three parameters, and the last is required to be a callback. - -```javascript -var j = request.jar() -var cookie = request.cookie('your_cookie_here') -j.setCookie(cookie, uri, function (err, cookie){}) -request({url: 'http://www.google.com', jar: j}, function () { - request('http://images.google.com') -}) -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js deleted file mode 100644 index 6a847f6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/dns-request.js +++ /dev/null @@ -1,7 +0,0 @@ -var request = require('request') - , dns = require('dns') - ; - -function wrap (fn) { - var -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js deleted file mode 100755 index 465e5ae3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/index.js +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -var optional = require('./lib/optional') - , cookie = optional('tough-cookie') - , Cookie = cookie && cookie.Cookie - , CookieJar = cookie && cookie.CookieJar - , cookieJar = CookieJar && new CookieJar - - , copy = require('./lib/copy') - , Request = require('./request') - ; - - - -// organize params for patch, post, put, head, del -function initParams(uri, options, callback) { - if ((typeof options === 'function') && !callback) callback = options - if (options && typeof options === 'object') { - options.uri = uri - } else if (typeof uri === 'string') { - options = {uri:uri} - } else { - options = uri - uri = options.uri - } - return { uri: uri, options: options, callback: callback } -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.') - if ((typeof options === 'function') && !callback) callback = options - if (options && typeof options === 'object') { - options.uri = uri - } else if (typeof uri === 'string') { - options = {uri:uri} - } else { - options = uri - } - - options = copy(options) - - if (callback) options.callback = callback - var r = new Request(options) - return r -} - -module.exports = request - -request.Request = Request; - -request.debug = process.env.NODE_DEBUG && /request/.test(process.env.NODE_DEBUG) - -request.initParams = initParams - -request.defaults = function (options, requester) { - var def = function (method) { - var d = function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - for (var i in options) { - if (params.options[i] === undefined) params.options[i] = options[i] - } - if(typeof requester === 'function') { - if(method === request) { - method = requester - } else { - params.options._requester = requester - } - } - return method(params.options, params.callback) - } - return d - } - var de = def(request) - de.get = def(request.get) - de.patch = def(request.patch) - de.post = def(request.post) - de.put = def(request.put) - de.head = def(request.head) - de.del = def(request.del) - de.cookie = def(request.cookie) - de.jar = request.jar - return de -} - -function requester(params) { - if(typeof params.options._requester === 'function') { - return params.options._requester - } else { - return request - } -} - -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - for (var option in optionsArg) { - options[option] = optionsArg[option] - } - } - if (agentOptions) options.agentOptions = agentOptions - options.forever = true - return request.defaults(options) -} - -request.get = request -request.post = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'POST' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.put = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PUT' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.patch = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'PATCH' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.head = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'HEAD' - if (params.options.body || - params.options.requestBodyStream || - (params.options.json && typeof params.options.json !== 'boolean') || - params.options.multipart) { - throw new Error("HTTP HEAD requests MUST NOT include a request body.") - } - - return requester(params)(params.uri || null, params.options, params.callback) -} -request.del = function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.options.method = 'DELETE' - return requester(params)(params.uri || null, params.options, params.callback) -} -request.jar = function () { - return new CookieJar -} -request.cookie = function (str) { - if (str && str.uri) str = str.uri - if (typeof str !== 'string') throw new Error("The cookie function only accepts STRING as param") - return new Cookie(str) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js deleted file mode 100644 index 56831ff8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/copy.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js deleted file mode 100644 index fa27b24b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/debug.js +++ /dev/null @@ -1,7 +0,0 @@ -var util = require('util') - -module.exports = -function debug () { - if (/\brequest\b/.test(process.env.NODE_DEBUG)) - console.error('REQUEST %s', util.format.apply(util, arguments)) -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js deleted file mode 100644 index 28e07ea5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/getSafe.js +++ /dev/null @@ -1,34 +0,0 @@ -// Safe toJSON -module.exports = -function getSafe (self, uuid) { - if (typeof self === 'object' || typeof self === 'function') var safe = {} - if (Array.isArray(self)) var safe = [] - - var recurse = [] - - Object.defineProperty(self, uuid, {}) - - var attrs = Object.keys(self).filter(function (i) { - if (i === uuid) return false - if ( (typeof self[i] !== 'object' && typeof self[i] !== 'function') || self[i] === null) return true - return !(Object.getOwnPropertyDescriptor(self[i], uuid)) - }) - - - for (var i=0;i<attrs.length;i++) { - if ( (typeof self[attrs[i]] !== 'object' && typeof self[attrs[i]] !== 'function') || - self[attrs[i]] === null - ) { - safe[attrs[i]] = self[attrs[i]] - } else { - recurse.push(attrs[i]) - Object.defineProperty(self[attrs[i]], uuid, {}) - } - } - - for (var i=0;i<recurse.length;i++) { - safe[recurse[i]] = getSafe(self[recurse[i]], uuid) - } - - return safe -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js deleted file mode 100644 index 0c4fe853..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/lib/optional.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function(module) { - try { - return require(module); - } catch (e) {} -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md deleted file mode 100644 index 763564e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -aws-sign -======== - -AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js deleted file mode 100644 index 576e49dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/index.js +++ /dev/null @@ -1,202 +0,0 @@ - -/*! - * knox - auth - * Copyright(c) 2010 LearnBoost <dev@learnboost.com> - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , parse = require('url').parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS <key>:<signature>" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * <verb>\n - * <md5>\n - * <content-type>\n - * <date>\n - * [headers\n] - * <resource> - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.queryStringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * <date>\n - * <resource> - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json deleted file mode 100644 index 8fc3ff35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/aws-sign2/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "aws-sign2", - "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.", - "version": "0.5.0", - "repository": { - "url": "https://github.com/mikeal/aws-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "aws-sign\n========\n\nAWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/aws-sign/issues" - }, - "homepage": "https://github.com/mikeal/aws-sign", - "_id": "aws-sign2@0.5.0", - "_from": "aws-sign2@~0.5.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md deleted file mode 100644 index 9d5b6634..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -forever-agent -============= - -HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js deleted file mode 100644 index 1e8efcdf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/index.js +++ /dev/null @@ -1,119 +0,0 @@ -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = require('util') - , Agent = require('http').Agent - , net = require('net') - , tls = require('tls') - , AgentSSL = require('https').Agent - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = host + ':' + port - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = host + ':' + port - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json deleted file mode 100644 index 3c1bc219..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/forever-agent/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "forever-agent", - "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.", - "version": "0.5.2", - "repository": { - "url": "https://github.com/mikeal/forever-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "forever-agent\n=============\n\nHTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/forever-agent/issues" - }, - "homepage": "https://github.com/mikeal/forever-agent", - "_id": "forever-agent@0.5.2", - "_from": "forever-agent@~0.5.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License deleted file mode 100644 index c7ff12a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md deleted file mode 100644 index dc73c463..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/Readme.md +++ /dev/null @@ -1,163 +0,0 @@ -# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data) - -A module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface -[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions - -## Install - -``` -npm install form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's request stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); // for node-0.10.x -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', - contentType: 'image/jpg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing] - -## TODO - -- Add new streams (0.10) support and try really hard not to break it for 0.8.x. - -## License - -Form-Data is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js deleted file mode 100644 index d1064748..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,325 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var mime = require('mime'); -var async = require('async'); - -module.exports = FormData; -function FormData() { - this._overheadLength = 0; - this._valueLength = 0; - this._lengthRetrievers = []; - - CombinedStream.call(this); -} -util.inherits(FormData, CombinedStream); - -FormData.LINE_BREAK = '\r\n'; - -FormData.prototype.append = function(field, value, options) { - options = options || {}; - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') value = ''+value; - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(field, value, options); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - + FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) - this._lengthRetrievers.push(function(next) { - - if (value.hasOwnProperty('fd')) { - fs.stat(value.path, function(err, stat) { - if (err) { - next(err); - return; - } - - next(null, stat.size); - }); - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - next(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - next(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - next('Unknown stream'); - } - }); -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - var boundary = this.getBoundary(); - var header = ''; - - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (options.header != null) { - header = options.header; - } else { - header += '--' + boundary + FormData.LINE_BREAK + - 'Content-Disposition: form-data; name="' + field + '"'; - - // fs- and request- streams have path property - // or use custom filename and/or contentType - // TODO: Use request's response mime-type - if (options.filename || value.path) { - header += - '; filename="' + path.basename(options.filename || value.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + (options.contentType || mime.lookup(options.filename || value.path)); - - // http response has not - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - header += - '; filename="' + path.basename(value.client._httpMessage.path) + '"' + FormData.LINE_BREAK + - 'Content-Type: ' + value.headers['content-type']; - } - - header += FormData.LINE_BREAK + FormData.LINE_BREAK; - } - - return header; -}; - -FormData.prototype._multiPartFooter = function(field, value, options) { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--'; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (var header in userHeaders) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - - return formHeaders; -} - -FormData.prototype.getCustomHeaders = function(contentType) { - contentType = contentType ? contentType : 'multipart/form-data'; - - var formHeaders = { - 'content-type': contentType + '; boundary=' + this.getBoundary(), - 'content-length': this.getLengthSync() - }; - - return formHeaders; -} - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function(debug) { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/felixge/node-form-data/issues/40 - if (this._lengthRetrievers.length) { - // Some async length retrivers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._lengthRetrievers.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - async.parallel(this._lengthRetrievers, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - - var request - , options - , defaults = { - method : 'post', - headers: this.getHeaders() - }; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - params = parseUrl(params); - - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname - }, defaults); - } - else // use custom params - { - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // https if specified, fallback to http in any other case - if (params.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - - // TODO: Add chunked encoding when no length (if err) - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (this.error) return; - - this.error = err; - this.pause(); - this.emit('error', err); -}; - -/* - * Santa's little helpers - */ - -// populates missing values -function populate(dst, src) { - for (var prop in src) { - if (!dst[prop]) dst[prop] = src[prop]; - } - return dst; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore deleted file mode 100644 index aba34f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -*.un~ -/node_modules -/test/tmp diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md deleted file mode 100644 index 1a9999eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,132 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = true - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = 2 * 1024 * 1024 - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = 0 - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 32849fd1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,185 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - stream.on('data', this._checkDataSize.bind(this)); - - stream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)) - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 2fedb26c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.un~ -/node_modules/* diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited <felix@debuggable.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md deleted file mode 100644 index 5cb5b35e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,154 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index 7c10d482..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,99 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -DelayedStream.prototype.__defineGetter__('readable', function() { - return this.source.readable; -}); - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json deleted file mode 100644 index 38341b8a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "version": "0.0.5", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - }, - "readme": "# delayed-stream\n\nBuffers events from a stream until you are ready to handle them.\n\n## Installation\n\n``` bash\nnpm install delayed-stream\n```\n\n## Usage\n\nThe following example shows how to write a http echo server that delays its\nresponse by 1000 ms.\n\n``` javascript\nvar DelayedStream = require('delayed-stream');\nvar http = require('http');\n\nhttp.createServer(function(req, res) {\n var delayed = DelayedStream.create(req);\n\n setTimeout(function() {\n res.writeHead(200);\n delayed.pipe(res);\n }, 1000);\n});\n```\n\nIf you are not using `Stream#pipe`, you can also manually release the buffered\nevents by calling `delayedStream.resume()`:\n\n``` javascript\nvar delayed = DelayedStream.create(req);\n\nsetTimeout(function() {\n // Emit all buffered events and resume underlaying source\n delayed.resume();\n}, 1000);\n```\n\n## Implementation\n\nIn order to use this meta stream properly, here are a few things you should\nknow about the implementation.\n\n### Event Buffering / Proxying\n\nAll events of the `source` stream are hijacked by overwriting the `source.emit`\nmethod. Until node implements a catch-all event listener, this is the only way.\n\nHowever, delayed-stream still continues to emit all events it captures on the\n`source`, regardless of whether you have released the delayed stream yet or\nnot.\n\nUpon creation, delayed-stream captures all `source` events and stores them in\nan internal event buffer. Once `delayedStream.release()` is called, all\nbuffered events are emitted on the `delayedStream`, and the event buffer is\ncleared. After that, delayed-stream merely acts as a proxy for the underlaying\nsource.\n\n### Error handling\n\nError events on `source` are buffered / proxied just like any other events.\nHowever, `delayedStream.create` attaches a no-op `'error'` listener to the\n`source`. This way you only have to handle errors on the `delayedStream`\nobject, rather than in two places.\n\n### Buffer limits\n\ndelayed-stream provides a `maxDataSize` property that can be used to limit\nthe amount of data being buffered. In order to protect you from bad `source`\nstreams that don't react to `source.pause()`, this feature is enabled by\ndefault.\n\n## API\n\n### DelayedStream.create(source, [options])\n\nReturns a new `delayedStream`. Available options are:\n\n* `pauseStream`\n* `maxDataSize`\n\nThe description for those properties can be found below.\n\n### delayedStream.source\n\nThe `source` stream managed by this object. This is useful if you are\npassing your `delayedStream` around, and you still want to access properties\non the `source` object.\n\n### delayedStream.pauseStream = true\n\nWhether to pause the underlaying `source` when calling\n`DelayedStream.create()`. Modifying this property afterwards has no effect.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature. You can also modify this property during runtime.\n\n### delayedStream.maxDataSize = 1024 * 1024\n\nThe amount of data to buffer before emitting an `error`.\n\nIf the underlaying source is emitting `Buffer` objects, the `maxDataSize`\nrefers to bytes.\n\nIf the underlaying source is emitting JavaScript strings, the size refers to\ncharacters.\n\nIf you know what you are doing, you can set this property to `Infinity` to\ndisable this feature.\n\n### delayedStream.dataSize = 0\n\nThe amount of data buffered so far.\n\n### delayedStream.readable\n\nAn ECMA5 getter that returns the value of `source.readable`.\n\n### delayedStream.resume()\n\nIf the `delayedStream` has not been released so far, `delayedStream.release()`\nis called.\n\nIn either case, `source.resume()` is called.\n\n### delayedStream.pause()\n\nCalls `source.pause()`.\n\n### delayedStream.pipe(dest)\n\nCalls `delayedStream.resume()` and then proxies the arguments to `source.pipe`.\n\n### delayedStream.release()\n\nEmits and clears all events that have been buffered up so far. This does not\nresume the underlaying source, use `delayedStream.resume()` instead.\n\n## License\n\ndelayed-stream is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-delayed-stream/issues" - }, - "_id": "delayed-stream@0.0.5", - "_from": "delayed-stream@0.0.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js deleted file mode 100644 index 4d71b8a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js +++ /dev/null @@ -1,6 +0,0 @@ -var common = module.exports; - -common.DelayedStream = require('..'); -common.assert = require('assert'); -common.fake = require('fake'); -common.PORT = 49252; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js deleted file mode 100644 index 9ecad5b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var DelayedStream = common.DelayedStream; -var http = require('http'); - -var UPLOAD = new Buffer(10 * 1024 * 1024); - -var server = http.createServer(function(req, res) { - var delayed = DelayedStream.create(req, {maxDataSize: UPLOAD.length}); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 10); -}); -server.listen(common.PORT, function() { - var request = http.request({ - method: 'POST', - port: common.PORT, - }); - - request.write(UPLOAD); - request.end(); - - request.on('response', function(res) { - var received = 0; - res - .on('data', function(chunk) { - received += chunk.length; - }) - .on('end', function() { - assert.equal(received, UPLOAD.length); - server.close(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js deleted file mode 100644 index 6f417f3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js +++ /dev/null @@ -1,21 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testAutoPause() { - var source = new Stream(); - - fake.expect(source, 'pause', 1); - var delayedStream = DelayedStream.create(source); - fake.verify(); -})(); - -(function testDisableAutoPause() { - var source = new Stream(); - fake.expect(source, 'pause', 0); - - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js deleted file mode 100644 index b50c3978..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js +++ /dev/null @@ -1,14 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(source, 'pause'); - delayedStream.pause(); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js deleted file mode 100644 index fc4047e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js +++ /dev/null @@ -1,48 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testDelayEventsUntilResume() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // delayedStream must not emit until we resume - fake.expect(delayedStream, 'emit', 0); - - // but our original source must emit - var params = []; - source.on('foo', function(param) { - params.push(param); - }); - - source.emit('foo', 1); - source.emit('foo', 2); - - // Make sure delayedStream did not emit, and source did - assert.deepEqual(params, [1, 2]); - fake.verify(); - - // After resume, delayedStream must playback all events - fake - .stub(delayedStream, 'emit') - .times(Infinity) - .withArg(1, 'newListener'); - fake.expect(delayedStream, 'emit', ['foo', 1]); - fake.expect(delayedStream, 'emit', ['foo', 2]); - fake.expect(source, 'resume'); - - delayedStream.resume(); - fake.verify(); - - // Calling resume again will delegate to source - fake.expect(source, 'resume'); - delayedStream.resume(); - fake.verify(); - - // Emitting more events directly leads to them being emitted - fake.expect(delayedStream, 'emit', ['foo', 3]); - source.emit('foo', 3); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js deleted file mode 100644 index a9d35e72..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js +++ /dev/null @@ -1,15 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testHandleSourceErrors() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - // We deal with this by attaching a no-op listener to 'error' on the source - // when creating a new DelayedStream. This way error events on the source - // won't throw. - source.emit('error', new Error('something went wrong')); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 7638a2bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,18 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testMaxDataSize() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {maxDataSize: 1024, pauseStream: false}); - - source.emit('data', new Buffer(1024)); - - fake - .expect(delayedStream, 'emit') - .withArg(1, 'error'); - source.emit('data', new Buffer(1)); - fake.verify(); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js deleted file mode 100644 index 7d312ab1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testPipeReleases() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - fake.expect(delayedStream, 'resume'); - delayedStream.pipe(new Stream()); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js deleted file mode 100644 index d436163b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var fake = common.fake.create(); -var DelayedStream = common.DelayedStream; -var Stream = require('stream').Stream; - -(function testProxyReadableProperty() { - var source = new Stream(); - var delayedStream = DelayedStream.create(source, {pauseStream: false}); - - source.readable = fake.value('source.readable'); - assert.strictEqual(delayedStream.readable, source.readable); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js deleted file mode 100755 index 0bb8e822..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json deleted file mode 100644 index 0dd41416..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "0.0.4", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "engines": { - "node": "*" - }, - "dependencies": { - "delayed-stream": "0.0.5" - }, - "devDependencies": { - "far": "0.0.1" - }, - "readme": "# combined-stream\n\nA stream that emits multiple other streams one after another.\n\n## Installation\n\n``` bash\nnpm install combined-stream\n```\n\n## Usage\n\nHere is a simple example that shows how you can use combined-stream to combine\ntwo files into one:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(fs.createReadStream('file1.txt'));\ncombinedStream.append(fs.createReadStream('file2.txt'));\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\nWhile the example above works great, it will pause all source streams until\nthey are needed. If you don't want that to happen, you can set `pauseStreams`\nto `false`:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create({pauseStreams: false});\ncombinedStream.append(fs.createReadStream('file1.txt'));\ncombinedStream.append(fs.createReadStream('file2.txt'));\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\nHowever, what if you don't have all the source streams yet, or you don't want\nto allocate the resources (file descriptors, memory, etc.) for them right away?\nWell, in that case you can simply provide a callback that supplies the stream\nby calling a `next()` function:\n\n``` javascript\nvar CombinedStream = require('combined-stream');\nvar fs = require('fs');\n\nvar combinedStream = CombinedStream.create();\ncombinedStream.append(function(next) {\n next(fs.createReadStream('file1.txt'));\n});\ncombinedStream.append(function(next) {\n next(fs.createReadStream('file2.txt'));\n});\n\ncombinedStream.pipe(fs.createWriteStream('combined.txt'));\n```\n\n## API\n\n### CombinedStream.create([options])\n\nReturns a new combined stream object. Available options are:\n\n* `maxDataSize`\n* `pauseStreams`\n\nThe effect of those options is described below.\n\n### combinedStream.pauseStreams = true\n\nWhether to apply back pressure to the underlaying streams. If set to `false`,\nthe underlaying streams will never be paused. If set to `true`, the\nunderlaying streams will be paused right after being appended, as well as when\n`delayedStream.pipe()` wants to throttle.\n\n### combinedStream.maxDataSize = 2 * 1024 * 1024\n\nThe maximum amount of bytes (or characters) to buffer for all source streams.\nIf this value is exceeded, `combinedStream` emits an `'error'` event.\n\n### combinedStream.dataSize = 0\n\nThe amount of bytes (or characters) currently buffered by `combinedStream`.\n\n### combinedStream.append(stream)\n\nAppends the given `stream` to the combinedStream object. If `pauseStreams` is\nset to `true, this stream will also be paused right away.\n\n`streams` can also be a function that takes one parameter called `next`. `next`\nis a function that must be invoked in order to provide the `next` stream, see\nexample above.\n\nRegardless of how the `stream` is appended, combined-stream always attaches an\n`'error'` listener to it, so you don't have to do that manually.\n\nSpecial case: `stream` can also be a String or Buffer.\n\n### combinedStream.write(data)\n\nYou should not call this, `combinedStream` takes care of piping the appended\nstreams into itself for you.\n\n### combinedStream.resume()\n\nCauses `combinedStream` to start drain the streams it manages. The function is\nidempotent, and also emits a `'resume'` event each time which usually goes to\nthe stream that is currently being drained.\n\n### combinedStream.pause();\n\nIf `combinedStream.pauseStreams` is set to `false`, this does nothing.\nOtherwise a `'pause'` event is emitted, this goes to the stream that is\ncurrently being drained, so you can use it to apply back pressure.\n\n### combinedStream.end();\n\nSets `combinedStream.writable` to false, emits an `'end'` event, and removes\nall streams from the queue.\n\n### combinedStream.destroy();\n\nSame as `combinedStream.end()`, except it emits a `'close'` event instead of\n`'end'`.\n\n## License\n\ncombined-stream is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "_id": "combined-stream@0.0.4", - "_from": "combined-stream@~0.0.4" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js deleted file mode 100644 index 81543485..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/common.js +++ /dev/null @@ -1,23 +0,0 @@ -var common = module.exports; - -var path = require('path'); -var fs = require('fs'); -var root = path.join(__dirname, '..'); - -common.dir = { - fixture: root + '/test/fixture', - tmp: root + '/test/tmp', -}; - -// Create tmp directory if it does not exist -// Not using fs.exists so as to be node 0.6.x compatible -try { - fs.statSync(common.dir.tmp); -} -catch (e) { - // Dir does not exist - fs.mkdirSync(common.dir.tmp); -} - -common.CombinedStream = require(root); -common.assert = require('assert'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt deleted file mode 100644 index 50e0218d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file1.txt +++ /dev/null @@ -1,256 +0,0 @@ -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 -10101010101010101010101010101010101010101010101010101010101010101010101010101010 -01010101010101010101010101010101010101010101010101010101010101010101010101010101 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt deleted file mode 100644 index da1d821f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/fixture/file2.txt +++ /dev/null @@ -1,256 +0,0 @@ -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 -20202020202020202020202020202020202020202020202020202020202020202020202020202020 -02020202020202020202020202020202020202020202020202020202020202020202020202020202 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js deleted file mode 100644 index 44ecabab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-callback-streams.js +++ /dev/null @@ -1,27 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(function(next) { - next(fs.createReadStream(FILE1)); - }); - combinedStream.append(function(next) { - next(fs.createReadStream(FILE2)); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('end', function() { - var written = fs.readFileSync(tmpFile, 'utf8'); - assert.strictEqual(written, EXPECTED); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js deleted file mode 100644 index e3fbd184..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-data-size.js +++ /dev/null @@ -1,34 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; - -(function testDataSizeGetter() { - var combinedStream = CombinedStream.create(); - - assert.strictEqual(combinedStream.dataSize, 0); - - // Test one stream - combinedStream._streams.push({dataSize: 10}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 10); - - // Test two streams - combinedStream._streams.push({dataSize: 23}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); - - // Test currentStream - combinedStream._currentStream = {dataSize: 20}; - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 53); - - // Test currentStream without dataSize - combinedStream._currentStream = {}; - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); - - // Test stream function - combinedStream._streams.push(function() {}); - combinedStream._updateDataSize(); - assert.strictEqual(combinedStream.dataSize, 33); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js deleted file mode 100644 index c678575c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams-and-buffers-and-strings.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var BUFFER = new Buffer('Bacon is delicious'); -var FILE2 = common.dir.fixture + '/file2.txt'; -var STRING = 'The € kicks the $\'s ass!'; - -var EXPECTED = - fs.readFileSync(FILE1) - + BUFFER - + fs.readFileSync(FILE2) - + STRING; -var GOT; - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(BUFFER); - combinedStream.append(fs.createReadStream(FILE2)); - combinedStream.append(function(next) { - next(STRING); - }); - - var tmpFile = common.dir.tmp + '/combined-file1-buffer-file2-string.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('close', function() { - GOT = fs.readFileSync(tmpFile, 'utf8'); - }); -})(); - -process.on('exit', function() { - assert.strictEqual(GOT, EXPECTED); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js deleted file mode 100644 index 263cfdf7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-delayed-streams.js +++ /dev/null @@ -1,35 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); -var GOT; - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create(); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var stream1 = combinedStream._streams[0]; - var stream2 = combinedStream._streams[1]; - - stream1.on('end', function() { - assert.equal(stream2.dataSize, 0); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('close', function() { - GOT = fs.readFileSync(tmpFile, 'utf8'); - }); -})(); - -process.on('exit', function() { - console.error(GOT.length, EXPECTED.length); - assert.strictEqual(GOT, EXPECTED); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js deleted file mode 100644 index c3d288d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-empty-string.js +++ /dev/null @@ -1,39 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var util = require('util'); -var Stream = require('stream').Stream; - -var s = CombinedStream.create(); - - -function StringStream(){ - this.writable=true; - this.str="" -} -util.inherits(StringStream,Stream); - -StringStream.prototype.write=function(chunk,encoding){ - this.str+=chunk.toString(); - this.emit('data',chunk); -} - -StringStream.prototype.end=function(chunk,encoding){ - this.emit('end'); -} - -StringStream.prototype.toString=function(){ - return this.str; -} - - -s.append("foo."); -s.append(""); -s.append("bar"); - -var ss = new StringStream(); - -s.pipe(ss); -s.resume(); - -assert.equal(ss.toString(),"foo.bar"); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js deleted file mode 100644 index aefa36e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-is-stream-like.js +++ /dev/null @@ -1,17 +0,0 @@ -var fs = require('fs'); -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var FILE1 = common.dir.fixture + '/file1.txt'; -var fileStream = fs.createReadStream(FILE1); - -var foo = function(){}; - -(function testIsStreamLike() { - assert(! CombinedStream.isStreamLike(true)); - assert(! CombinedStream.isStreamLike("I am a string")); - assert(! CombinedStream.isStreamLike(7)); - assert(! CombinedStream.isStreamLike(foo)); - - assert(CombinedStream.isStreamLike(fileStream)); -})(); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js deleted file mode 100644 index 25f47a47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-max-data-size.js +++ /dev/null @@ -1,24 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create({pauseStreams: false, maxDataSize: 20736}); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var gotErr = null; - combinedStream.on('error', function(err) { - gotErr = err; - }); - - process.on('exit', function() { - assert.ok(gotErr); - assert.ok(gotErr.message.match(/bytes/)); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js deleted file mode 100644 index 30a3a6f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/integration/test-unpaused-streams.js +++ /dev/null @@ -1,30 +0,0 @@ -var common = require('../common'); -var assert = common.assert; -var CombinedStream = common.CombinedStream; -var fs = require('fs'); - -var FILE1 = common.dir.fixture + '/file1.txt'; -var FILE2 = common.dir.fixture + '/file2.txt'; -var EXPECTED = fs.readFileSync(FILE1) + fs.readFileSync(FILE2); - -(function testDelayedStreams() { - var combinedStream = CombinedStream.create({pauseStreams: false}); - combinedStream.append(fs.createReadStream(FILE1)); - combinedStream.append(fs.createReadStream(FILE2)); - - var stream1 = combinedStream._streams[0]; - var stream2 = combinedStream._streams[1]; - - stream1.on('end', function() { - assert.ok(stream2.dataSize > 0); - }); - - var tmpFile = common.dir.tmp + '/combined.txt'; - var dest = fs.createWriteStream(tmpFile); - combinedStream.pipe(dest); - - dest.on('end', function() { - var written = fs.readFileSync(tmpFile, 'utf8'); - assert.strictEqual(written, EXPECTED); - }); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js deleted file mode 100755 index 0bb8e822..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/node_modules/combined-stream/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var far = require('far').create(); - -far.add(__dirname); -far.include(/test-.*\.js$/); - -far.execute(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json deleted file mode 100644 index 8e5d3256..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/form-data/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "form-data", - "description": "A module to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "version": "0.1.2", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-form-data.git" - }, - "main": "./lib/form_data", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.6" - }, - "dependencies": { - "combined-stream": "~0.0.4", - "mime": "~1.2.11", - "async": "~0.2.9" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/felixge/node-form-data/master/License" - } - ], - "devDependencies": { - "fake": "~0.2.2", - "far": "~0.0.7", - "formidable": "~1.0.14", - "request": "~2.27.0" - }, - "readme": "# Form-Data [![Build Status](https://travis-ci.org/felixge/node-form-data.png?branch=master)](https://travis-ci.org/felixge/node-form-data) [![Dependency Status](https://gemnasium.com/felixge/node-form-data.png)](https://gemnasium.com/felixge/node-form-data)\n\nA module to create readable ```\"multipart/form-data\"``` streams. Can be used to submit forms and file uploads to other web applications.\n\nThe API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].\n\n[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface\n[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions\n\n## Install\n\n```\nnpm install form-data\n```\n\n## Usage\n\nIn this example we are constructing a form with 3 fields that contain a string,\na buffer and a file stream.\n\n``` javascript\nvar FormData = require('form-data');\nvar fs = require('fs');\n\nvar form = new FormData();\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_file', fs.createReadStream('/foo/bar.jpg'));\n```\n\nAlso you can use http-response stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar http = require('http');\n\nvar form = new FormData();\n\nhttp.request('http://nodejs.org/images/logo.png', function(response) {\n form.append('my_field', 'my value');\n form.append('my_buffer', new Buffer(10));\n form.append('my_logo', response);\n});\n```\n\nOr @mikeal's request stream:\n\n``` javascript\nvar FormData = require('form-data');\nvar request = require('request');\n\nvar form = new FormData();\n\nform.append('my_field', 'my value');\nform.append('my_buffer', new Buffer(10));\nform.append('my_logo', request('http://nodejs.org/images/logo.png'));\n```\n\nIn order to submit this form to a web application, call ```submit(url, [callback])``` method:\n\n``` javascript\nform.submit('http://example.org/', function(err, res) {\n // res – response object (http.IncomingMessage) //\n res.resume(); // for node-0.10.x\n});\n\n```\n\nFor more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods.\n\n### Alternative submission methods\n\nYou can use node's http client interface:\n\n``` javascript\nvar http = require('http');\n\nvar request = http.request({\n method: 'post',\n host: 'example.org',\n path: '/upload',\n headers: form.getHeaders()\n});\n\nform.pipe(request);\n\nrequest.on('response', function(res) {\n console.log(res.statusCode);\n});\n```\n\nOr if you would prefer the `'Content-Length'` header to be set for you:\n\n``` javascript\nform.submit('example.org/upload', function(err, res) {\n console.log(res.statusCode);\n});\n```\n\nTo use custom headers and pre-known length in parts:\n\n``` javascript\nvar CRLF = '\\r\\n';\nvar form = new FormData();\n\nvar options = {\n header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF,\n knownLength: 1\n};\n\nform.append('my_buffer', buffer, options);\n\nform.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n});\n```\n\nForm-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide \"file\"-related information manually:\n\n``` javascript\nsomeModule.stream(function(err, stdout, stderr) {\n if (err) throw err;\n\n var form = new FormData();\n\n form.append('file', stdout, {\n filename: 'unicycle.jpg',\n contentType: 'image/jpg',\n knownLength: 19806\n });\n\n form.submit('http://example.com/', function(err, res) {\n if (err) throw err;\n console.log('Done');\n });\n});\n```\n\nFor edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter:\n\n``` javascript\nform.submit({\n host: 'example.com',\n path: '/probably.php?extra=params',\n auth: 'username:password'\n}, function(err, res) {\n console.log(res.statusCode);\n});\n```\n\n## Notes\n\n- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.\n- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]\n\n## TODO\n\n- Add new streams (0.10) support and try really hard not to break it for 0.8.x.\n\n## License\n\nForm-Data is licensed under the MIT license.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-form-data/issues" - }, - "homepage": "https://github.com/felixge/node-form-data", - "_id": "form-data@0.1.2", - "_from": "form-data@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile deleted file mode 100755 index 5f339bf3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md deleted file mode 100755 index 010bac6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/README.md +++ /dev/null @@ -1,627 +0,0 @@ -![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png) - -<img align="right" src="https://raw.github.com/hueniverse/hawk/master/images/logo.png" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial -HTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz). - -Current version: **1.0** - -[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk) - -# Table of Content - -- [**Introduction**](#introduction) - - [Replay Protection](#replay-protection) - - [Usage Example](#usage-example) - - [Protocol Example](#protocol-example) - - [Payload Validation](#payload-validation) - - [Response Payload Validation](#response-payload-validation) - - [Browser Support and Considerations](#browser-support-and-considerations) -<p></p> -- [**Single URI Authorization**](#single-uri-authorization) - - [Usage Example](#bewit-usage-example) -<p></p> -- [**Security Considerations**](#security-considerations) - - [MAC Keys Transmission](#mac-keys-transmission) - - [Confidentiality of Requests](#confidentiality-of-requests) - - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers) - - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials) - - [Entropy of Keys](#entropy-of-keys) - - [Coverage Limitations](#coverage-limitations) - - [Future Time Manipulation](#future-time-manipulation) - - [Client Clock Poisoning](#client-clock-poisoning) - - [Bewit Limitations](#bewit-limitations) - - [Host Header Forgery](#host-header-forgery) -<p></p> -- [**Frequently Asked Questions**](#frequently-asked-questions) -<p></p> -- [**Acknowledgements**](#acknowledgements) - -# Introduction - -**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with -partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, -and optionally the request payload. - -Similar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of -client credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme, -the key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is -included in its place. - -However, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of -replay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less -"chattiness" (interaction with the server). - -Also unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because -the client and server must both have access to the key material in the clear. - -The primary design goals of this scheme are to: -* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources, -* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where - to send an authenticated request), and -* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client - failure to validate the server's identity as part of its TLS handshake. - -In addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using -a query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk). - -The **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server, -which is beyond the scope of this module. Typically, the shared credentials are established via an initial -TLS-protected phase or derived from some other shared confidential information available to both the client -and the server. - - -## Replay Protection - -Without replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more -than once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when -making requests. This gives the server enough information to prevent replay attacks. - -The nonce is generated by the client, and is a string unique across all requests with the same timestamp and -key identifier combination. - -The timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards -are rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks. -By default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in -practice translates to a maximum of 2 minutes as the skew can be positive or negative). - -Using a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client -clock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types -(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response -to a bad timestamp. - -There is no expectation that the client will adjust its system clock to match the server (in fact, this would be a -potential attack vector). Instead, the client only uses the server's time to calculate an offset used only -for communications with that particular server. The protocol rewards clients with synchronized clocks by reducing -the number of round trips required to authenticate the first request. - - -## Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - // Authenticate incoming request - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - // Prepare response - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { 'Content-Type': 'text/plain' }; - - // Generate Server-Authorization response header - - var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] }); - headers['Server-Authorization'] = header; - - // Send the response back - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -// Start server - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Client code: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Request options - -var requestOptions = { - uri: 'http://example.com:8000/resource/1?b=1&a=2', - method: 'GET', - headers: {} -}; - -// Generate Authorization request header - -var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' }); -requestOptions.headers.Authorization = header.field; - -// Send authenticated request - -Request(requestOptions, function (error, response, body) { - - // Authenticate the server's response - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - - // Output results - - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); -}); -``` - -**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local -machine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method. - -```javascript -Hawk.sntp.start(); -``` - - -## Protocol Example - -The client attempts to access a protected resource without authentication, sending the following HTTP request to -the resource server: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -``` - -The resource server returns an authentication challenge. - -``` -HTTP/1.1 401 Unauthorized -WWW-Authenticate: Hawk -``` - -The client has previously obtained a set of **Hawk** credentials for accessing resources on the "http://example.com/" -server. The **Hawk** credentials issued to the client include the following attributes: - -* Key identifier: dh37fgj492je -* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn -* Algorithm: sha256 - -The client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1, -1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline -character): - -``` -hawk.1.header -1353832234 -j4h3g2 -GET -/resource/1?b=1&a=2 -example.com -8000 - -some-app-ext-data - -``` - -The request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string. -The result is base64-encoded to produce the request MAC: - -``` -6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE= -``` - -The client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using -the HTTP `Authorization` request header field: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=" -``` - -The server validates the request by calculating the request MAC again based on the request received and verifies the validity -and scope of the **Hawk** credentials. If valid, the server responds with the requested resource. - - -### Payload Validation - -**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash -using the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character): -* `hawk.1.payload` -* the content-type in lowercase, without any parameters (e.g. `application/json`) -* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability) - -For example: - -* Payload: `Thank you for flying Hawk` -* Content Type: `text/plain` -* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=` - -Results in the following input to the payload hash function (newline terminated values): - -``` -hawk.1.payload -text/plain -Thank you for flying Hawk - -``` - -Which produces the following hash value: - -``` -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -``` - -The client constructs the normalized request string (newline terminated values): - -``` -hawk.1.header -1353832234 -j4h3g2 -POST -/resource/1?a=1&b=2 -example.com -8000 -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -some-app-ext-data - -``` - -Then calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data, -and request MAC, with the request using the HTTP `Authorization` request header field: - -``` -POST /resource/1?a=1&b=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=" -``` - -It is up to the server if and when it validates the payload for any given request, based solely on it's security policy -and the nature of the data included. - -If the payload is available at the time of authentication, the server uses the hash value provided by the client to construct -the normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value -with the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash. - -However, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed -at a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value -provided by the client after validating the MAC. - -It is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value -included in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided -by the client, the payload may be modified by an attacker. - - -## Response Payload Validation - -**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the -client to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header -as a response header using the exact same syntax as the `Authorization` request header field. - -The header is contructed using the same process as the client's request header. The server uses the same credentials and other -artifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with -new values based on the server response. The rest as identical to those used by the client. - -The result MAC digest is included with the optional `hash` and `ext` values: - -``` -Server-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific" -``` - - -## Browser Support and Considerations - -A browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js). - -**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client. -Therefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value -_"WWW-Authenticate, Server-Authorization"_ on each response from your server. As explained in the -[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers -can safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a -["simple response header"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the -Hawk client from authenticating the requests.You can read more about the why and how in this -[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server) - - -# Single URI Authorization - -There are cases in which limited and short-term access to a protected resource is granted to a third party which does not -have access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk** -provides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains -the necessary credentials to authenticate the request. - -Because of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests -and for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same -credentials as the client to maintain clear traceability as to who issued which credentials. - -In order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within -the granted access timeframe. - - -## Bewit Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' }); - res.end(!err ? 'Access granted' : 'Shoosh!'); - }); -}; - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Bewit code generation: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Generate bewit - -var duration = 60 * 5; // 5 Minutes -var bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' }); -var uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit; -``` - - -# Security Considerations - -The greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use. -Implementers are strongly encouraged to assess how this module addresses their security requirements. This section includes -an incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server. -Many of the protections provided in **Hawk** depends on whether and how they are used. - -### MAC Keys Transmission - -**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used -to obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS. - -### Confidentiality of Requests - -While **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request -confidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should -carefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms -to protect sensitive resources. - -### Spoofing by Counterfeit Servers - -**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server -may choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to -the server to determine when such measure is included, to up to the client to enforce that policy. - -A hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise -incorrect responses. Service providers should consider such attacks when developing services using this protocol, and should -require transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue. - -### Plaintext Storage of Credentials - -The **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC, -the server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which -store only a one-way hash of user credentials. - -If an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able -to perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized -access. - -### Entropy of Keys - -Unless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request -MAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to -assign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk** -credentials are valid. - -For example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force -attack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the -longest key reasonable. - -It is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high -quality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit -patterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use -cryptographically secure PRNGs to avoid these problems. - -### Coverage Limitations - -The request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers -which can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence -or value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the -`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC. - -The response authentication, when performed, only covers the response payload, content-type, and the request information -provided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or -any other response header field (e.g. Location) which can affect the client's behaviour. - -### Future Time Manipulation - -The protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its -current time when an invalid timestamp is received. - -If an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause -the client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will -not likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then -be able to replay the request at the correct time without detection. - -The client must only use the time information provided by the server if: -* it was delivered over a TLS connection and the server identity has been verified, or -* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified. - -### Client Clock Poisoning - -When receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use -the time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with -that particular server. - -### Bewit Limitations - -Special care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot -be revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with -access to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET -requests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private -and sensitive information. - -### Host Header Forgery - -Hawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port` -options are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and -use that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server -implementors must manually verify that the host header received matches their expectation (or use the options mentioned above). - -# Frequently Asked Questions - -### Where is the protocol specification? - -If you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source -project instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about -something? Open an issue! - -### Is it done? - -At if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental -and is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions -and suggestions. - -### Where can I find **Hawk** implementations in other languages? - -**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other -platforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk), -[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list -is maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another -port. A cross-platform test-suite is in the works. - -### Why isn't the algorithm part of the challenge or dynamically negotiated? - -The algorithm used is closely related to the key issued as different algorithms require different key sizes (and other -requirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm -together as part of the issued credentials. - -### Why is Host and Content-Type the only headers covered by the request MAC? - -It is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no -well-established way to normalize them. Many platforms change the case of header field names and values. The only -straight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request, -an approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information, -and introduces other security issues because firewalls will not be aware of these "hidden" headers. In addition, any information -repeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere. - -### Why not just use HTTP Digest? - -Digest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send -a protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile -where extra round-trip are costly. - -### Why bother with all this nonce and timestamp business? - -**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp -and nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses -it by requiring the client to sync its clock, but provides it with tools to accomplish it. - -In general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected -system where the clients are implemented using best practices and are under the control of the server. Instead of dropping -replay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers -with the ability to decide how to enforce their security policy without impacting the client's implementation. - -### What are `app` and `dlg` in the authorization header and normalized mac string? - -The original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which -this module is specifically designed for, and a delegated access mode which is being developed separately in -[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`. -This provides binding between the credentials and the application in a way that prevents an attacker from tricking an application -to use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the -application the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly, -but with the additional security of delegated credentials. - -### What is the purpose of the static strings used in each normalized MAC input? - -When calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being -used or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request, -response, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol -creates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it -can create an exploit opportunity for cases where the nonce is similar in format to a timestamp. - -### Does **Hawk** have anything to do with OAuth? - -Short answer: no. - -**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent -incompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it -to authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard -at work to produce more garbage. - -**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case -of delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz). - - -# Acknowledgements - -**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal -co-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification. - -Special thanks to Ben Laurie for his always insightful feedback and advice. - -The **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com). diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js deleted file mode 100755 index 8c063f6c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/example/usage.js +++ /dev/null @@ -1,78 +0,0 @@ -// Load modules - -var Http = require('http'); -var Request = require('request'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = { - credentials: { - dh37fgj492je: { - id: 'dh37fgj492je', // Required by Hawk.client.header - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - } - } -}; - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - return callback(null, internals.credentials[id]); -}; - - -// Create HTTP server - -var handler = function (req, res) { - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { - 'Content-Type': 'text/plain', - 'Server-Authorization': Hawk.server.header(credentials, artifacts, { payload: payload, contentType: 'text/plain' }) - }; - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -Http.createServer(handler).listen(8000, '127.0.0.1'); - - -// Send unauthenticated request - -Request('http://127.0.0.1:8000/resource/1?b=1&a=2', function (error, response, body) { - - console.log(response.statusCode + ': ' + body); -}); - - -// Send authenticated request - -credentialsFunc('dh37fgj492je', function (err, credentials) { - - var header = Hawk.client.header('http://127.0.0.1:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'and welcome!' }); - var options = { - uri: 'http://127.0.0.1:8000/resource/1?b=1&a=2', - method: 'GET', - headers: { - authorization: header.field - } - }; - - Request(options, function (error, response, body) { - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); - process.exit(0); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/hawk.png deleted file mode 100755 index a0e15cda0144a7d7ed222e74a2ea4afbab32555c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6945 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 B50U@? diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/images/logo.png deleted file mode 100755 index b8ff5901718a8a5529d25602a4a581d2f68d67cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71732 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 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js deleted file mode 100755 index 27494f23..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/browser.js +++ /dev/null @@ -1,485 +0,0 @@ -/* - HTTP Hawk Authentication Scheme - Copyright (c) 2012-2013, Eran Hammer <eran@hueniverse.com> - MIT Licensed -*/ - - -// Declare namespace - -var hawk = {}; - - -// Export if used as a module - -if (typeof module !== "undefined" && module.exports) { - module.exports = hawk; -} - -hawk.client = { - - // Generate an Authorization header for a given request - - /* - uri: 'http://example.com/resource?a=b' - method: HTTP verb (e.g. 'GET', 'POST') - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - timestamp: Date.now() / 1000, // A pre-calculated timestamp in seconds - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash - app: '24s23423f34dx', // Oz application id - dlg: '234sz34tww3sd' // Oz delegated-by application id - } - */ - - header: function (uri, method, options) { - - var result = { - field: '', - artifacts: {} - }; - - // Validate inputs - - if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') || - !method || typeof method !== 'string' || - !options || typeof options !== 'object') { - - return result; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((hawk.utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return result; - } - - if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return result; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = hawk.utils.parseUri(uri); - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || hawk.utils.randomString(6), - method: method, - resource: uri.relative, - host: uri.hostname, - port: uri.port, - hash: options.hash, - ext: options.ext, - app: options.app, - dlg: options.dlg - }; - - result.artifacts = artifacts; - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = hawk.crypto.calculateMac('header', credentials, artifacts); - - // Construct header - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + hawk.utils.escapeHeaderAttribute(artifacts.ext) : '') + - '", mac="' + mac + '"'; - - if (artifacts.app) { - header += ', app="' + artifacts.app + - (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'; - } - - result.field = header; - - return result; - }, - - - // Validate server response - - /* - request: object created via 'new XMLHttpRequest()' after response received - artifacts: object recieved from header().artifacts - options: { - payload: optional payload received - required: specifies if a Server-Authorization header is required. Defaults to 'false' - } - */ - - authenticate: function (request, credentials, artifacts, options) { - - options = options || {}; - - if (request.getResponseHeader('www-authenticate')) { - - // Parse HTTP WWW-Authenticate header - - var attributes = hawk.utils.parseAuthorizationHeader(request.getResponseHeader('www-authenticate'), ['ts', 'tsm', 'error']); - if (!attributes) { - return false; - } - - if (attributes.ts) { - var tsm = hawk.crypto.calculateTsMac(attributes.ts, credentials); - if (tsm !== attributes.tsm) { - return false; - } - - hawk.utils.setNtpOffset(attributes.ts - Math.floor(Date.now() / 1000)); // Keep offset at 1 second precision - } - } - - // Parse HTTP Server-Authorization header - - if (!request.getResponseHeader('server-authorization') && - !options.required) { - - return true; - } - - var attributes = hawk.utils.parseAuthorizationHeader(request.getResponseHeader('server-authorization'), ['mac', 'ext', 'hash']); - if (!attributes) { - return false; - } - - var modArtifacts = { - ts: artifacts.ts, - nonce: artifacts.nonce, - method: artifacts.method, - resource: artifacts.resource, - host: artifacts.host, - port: artifacts.port, - hash: attributes.hash, - ext: attributes.ext, - app: artifacts.app, - dlg: artifacts.dlg - }; - - var mac = hawk.crypto.calculateMac('response', credentials, modArtifacts); - if (mac !== attributes.mac) { - return false; - } - - if (!options.hasOwnProperty('payload')) { - return true; - } - - if (!attributes.hash) { - return false; - } - - var calculatedHash = hawk.crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.getResponseHeader('content-type')); - return (calculatedHash === attributes.hash); - }, - - message: function (host, port, message, options) { - - // Validate inputs - - if (!host || typeof host !== 'string' || - !port || typeof port !== 'number' || - message === null || message === undefined || typeof message !== 'string' || - !options || typeof options !== 'object') { - - return null; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((hawk.utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return null; - } - - if (hawk.crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return null; - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || hawk.utils.randomString(6), - host: host, - port: port, - hash: hawk.crypto.calculatePayloadHash(message, credentials.algorithm) - }; - - // Construct authorization - - var result = { - id: credentials.id, - ts: artifacts.ts, - nonce: artifacts.nonce, - hash: artifacts.hash, - mac: hawk.crypto.calculateMac('message', credentials, artifacts) - }; - - return result; - } -}; - - -hawk.crypto = { - - headerVersion: '1', - - algorithms: ['sha1', 'sha256'], - - calculateMac: function (type, credentials, options) { - - var normalized = hawk.crypto.generateNormalizedString(type, options); - - var hmac = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()](normalized, credentials.key); - return hmac.toString(CryptoJS.enc.Base64); - }, - - generateNormalizedString: function (type, options) { - - var normalized = 'hawk.' + hawk.crypto.headerVersion + '.' + type + '\n' + - options.ts + '\n' + - options.nonce + '\n' + - (options.method || '').toUpperCase() + '\n' + - (options.resource || '') + '\n' + - options.host.toLowerCase() + '\n' + - options.port + '\n' + - (options.hash || '') + '\n'; - - if (options.ext) { - normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n'); - } - - normalized += '\n'; - - if (options.app) { - normalized += options.app + '\n' + - (options.dlg || '') + '\n'; - } - - return normalized; - }, - - calculatePayloadHash: function (payload, algorithm, contentType) { - - var hash = CryptoJS.algo[algorithm.toUpperCase()].create(); - hash.update('hawk.' + hawk.crypto.headerVersion + '.payload\n'); - hash.update(hawk.utils.parseContentType(contentType) + '\n'); - hash.update(payload || ''); - hash.update('\n'); - return hash.finalize().toString(CryptoJS.enc.Base64); - }, - - calculateTsMac: function (ts, credentials) { - - var hash = CryptoJS['Hmac' + credentials.algorithm.toUpperCase()]('hawk.' + hawk.crypto.headerVersion + '.ts\n' + ts + '\n', credentials.key); - return hash.toString(CryptoJS.enc.Base64); - } -}; - - -hawk.utils = { - - storage: { // localStorage compatible interface - _cache: {}, - setItem: function (key, value) { - - hawk.utils.storage._cache[key] = value; - }, - getItem: function (key) { - - return hawk.utils.storage._cache[key]; - } - }, - - setStorage: function (storage) { - - var ntpOffset = hawk.utils.getNtpOffset() || 0; - hawk.utils.storage = storage; - hawk.utils.setNtpOffset(ntpOffset); - }, - - setNtpOffset: function (offset) { - - hawk.utils.storage.setItem('hawk_ntp_offset', offset); - }, - - getNtpOffset: function () { - - return parseInt(hawk.utils.storage.getItem('hawk_ntp_offset') || '0', 10); - }, - - now: function () { - - return Date.now() + hawk.utils.getNtpOffset(); - }, - - escapeHeaderAttribute: function (attribute) { - - return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); - }, - - parseContentType: function (header) { - - if (!header) { - return ''; - } - - return header.split(';')[0].trim().toLowerCase(); - }, - - parseAuthorizationHeader: function (header, keys) { - - if (!header) { - return null; - } - - var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something] - if (!headerParts) { - return null; - } - - var scheme = headerParts[1]; - if (scheme.toLowerCase() !== 'hawk') { - return null; - } - - var attributesString = headerParts[2]; - if (!attributesString) { - return null; - } - - var attributes = {}; - var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) { - - // Check valid attribute names - - if (keys.indexOf($1) === -1) { - return; - } - - // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9 - - if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) { - return; - } - - // Check for duplicates - - if (attributes.hasOwnProperty($1)) { - return; - } - - attributes[$1] = $2; - return ''; - }); - - if (verify !== '') { - return null; - } - - return attributes; - }, - - randomString: function (size) { - - var randomSource = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - var len = randomSource.length; - - var result = []; - for (var i = 0; i < size; ++i) { - result[i] = randomSource[Math.floor(Math.random() * len)]; - } - - return result.join(''); - }, - - parseUri: function (input) { - - // Based on: parseURI 1.2.2 - // http://blog.stevenlevithan.com/archives/parseuri - // (c) Steven Levithan <stevenlevithan.com> - // MIT License - - var keys = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'hostname', 'port', 'resource', 'relative', 'pathname', 'directory', 'file', 'query', 'fragment']; - - var uriRegex = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?(((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?)(?:#(.*))?)/; - var uriByNumber = uriRegex.exec(input); - var uri = {}; - - var i = 15; - while (i--) { - uri[keys[i]] = uriByNumber[i] || ''; - } - - if (uri.port === null || - uri.port === '') { - - uri.port = (uri.protocol.toLowerCase() === 'http' ? '80' : (uri.protocol.toLowerCase() === 'https' ? '443' : '')); - } - - return uri; - } -}; - - -// Based on: Crypto-JS v3.1.2 -// Copyright (c) 2009-2013, Jeff Mott. All rights reserved. -// http://code.google.com/p/crypto-js/ -// http://code.google.com/p/crypto-js/wiki/License - -var CryptoJS=CryptoJS||function(h,r){var k={},l=k.lib={},n=function(){},f=l.Base={extend:function(a){n.prototype=this;var b=new n;a&&b.mixIn(a);b.hasOwnProperty("init")||(b.init=function(){b.$super.init.apply(this,arguments)});b.init.prototype=b;b.$super=this;return b},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},j=l.WordArray=f.extend({init:function(a,b){a=this.words=a||[];this.sigBytes=b!=r?b:4*a.length},toString:function(a){return(a||s).stringify(this)},concat:function(a){var b=this.words,d=a.words,c=this.sigBytes;a=a.sigBytes;this.clamp();if(c%4)for(var e=0;e<a;e++)b[c+e>>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((c+e)%4);else if(65535<d.length)for(e=0;e<a;e+=4)b[c+e>>>2]=d[e>>>2];else b.push.apply(b,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,b=this.sigBytes;a[b>>>2]&=4294967295<<32-8*(b%4);a.length=h.ceil(b/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var b=[],d=0;d<a;d+=4)b.push(4294967296*h.random()|0);return new j.init(b,a)}}),m=k.enc={},s=m.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++){var e=b[c>>>2]>>>24-8*(c%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c+=2)d[c>>>3]|=parseInt(a.substr(c,2),16)<<24-4*(c%8);return new j.init(d,b/2)}},p=m.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var d=[],c=0;c<a;c++)d.push(String.fromCharCode(b[c>>>2]>>>24-8*(c%4)&255));return d.join("")},parse:function(a){for(var b=a.length,d=[],c=0;c<b;c++)d[c>>>2]|=(a.charCodeAt(c)&255)<<24-8*(c%4);return new j.init(d,b)}},t=m.Utf8={stringify:function(a){try{return decodeURIComponent(escape(p.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return p.parse(unescape(encodeURIComponent(a)))}},q=l.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new j.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=t.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,d=b.words,c=b.sigBytes,e=this.blockSize,f=c/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;c=h.min(4*a,c);if(a){for(var g=0;g<a;g+=e)this._doProcessBlock(d,g);g=d.splice(0,a);b.sigBytes-=c}return new j.init(g,c)},clone:function(){var a=f.clone.call(this);a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:f.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,d){return(new a.init(d)).finalize(b)}},_createHmacHelper:function(a){return function(b,d){return(new u.HMAC.init(a,d)).finalize(b)}}});var u=k.algo={};return k}(Math); -(function () { var k = CryptoJS, b = k.lib, m = b.WordArray, l = b.Hasher, d = [], b = k.algo.SHA1 = l.extend({ _doReset: function () { this._hash = new m.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (n, p) { for (var a = this._hash.words, e = a[0], f = a[1], h = a[2], j = a[3], b = a[4], c = 0; 80 > c; c++) { if (16 > c) d[c] = n[p + c] | 0; else { var g = d[c - 3] ^ d[c - 8] ^ d[c - 14] ^ d[c - 16]; d[c] = g << 1 | g >>> 31 } g = (e << 5 | e >>> 27) + b + d[c]; g = 20 > c ? g + ((f & h | ~f & j) + 1518500249) : 40 > c ? g + ((f ^ h ^ j) + 1859775393) : 60 > c ? g + ((f & h | f & j | h & j) - 1894007588) : g + ((f ^ h ^ j) - 899497514); b = j; j = h; h = f << 30 | f >>> 2; f = e; e = g } a[0] = a[0] + e | 0; a[1] = a[1] + f | 0; a[2] = a[2] + h | 0; a[3] = a[3] + j | 0; a[4] = a[4] + b | 0 }, _doFinalize: function () { var b = this._data, d = b.words, a = 8 * this._nDataBytes, e = 8 * b.sigBytes; d[e >>> 5] |= 128 << 24 - e % 32; d[(e + 64 >>> 9 << 4) + 14] = Math.floor(a / 4294967296); d[(e + 64 >>> 9 << 4) + 15] = a; b.sigBytes = 4 * d.length; this._process(); return this._hash }, clone: function () { var b = l.clone.call(this); b._hash = this._hash.clone(); return b } }); k.SHA1 = l._createHelper(b); k.HmacSHA1 = l._createHmacHelper(b) })(); -(function (k) { for (var g = CryptoJS, h = g.lib, v = h.WordArray, j = h.Hasher, h = g.algo, s = [], t = [], u = function (q) { return 4294967296 * (q - (q | 0)) | 0 }, l = 2, b = 0; 64 > b;) { var d; a: { d = l; for (var w = k.sqrt(d), r = 2; r <= w; r++) if (!(d % r)) { d = !1; break a } d = !0 } d && (8 > b && (s[b] = u(k.pow(l, 0.5))), t[b] = u(k.pow(l, 1 / 3)), b++); l++ } var n = [], h = h.SHA256 = j.extend({ _doReset: function () { this._hash = new v.init(s.slice(0)) }, _doProcessBlock: function (q, h) { for (var a = this._hash.words, c = a[0], d = a[1], b = a[2], k = a[3], f = a[4], g = a[5], j = a[6], l = a[7], e = 0; 64 > e; e++) { if (16 > e) n[e] = q[h + e] | 0; else { var m = n[e - 15], p = n[e - 2]; n[e] = ((m << 25 | m >>> 7) ^ (m << 14 | m >>> 18) ^ m >>> 3) + n[e - 7] + ((p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10) + n[e - 16] } m = l + ((f << 26 | f >>> 6) ^ (f << 21 | f >>> 11) ^ (f << 7 | f >>> 25)) + (f & g ^ ~f & j) + t[e] + n[e]; p = ((c << 30 | c >>> 2) ^ (c << 19 | c >>> 13) ^ (c << 10 | c >>> 22)) + (c & d ^ c & b ^ d & b); l = j; j = g; g = f; f = k + m | 0; k = b; b = d; d = c; c = m + p | 0 } a[0] = a[0] + c | 0; a[1] = a[1] + d | 0; a[2] = a[2] + b | 0; a[3] = a[3] + k | 0; a[4] = a[4] + f | 0; a[5] = a[5] + g | 0; a[6] = a[6] + j | 0; a[7] = a[7] + l | 0 }, _doFinalize: function () { var d = this._data, b = d.words, a = 8 * this._nDataBytes, c = 8 * d.sigBytes; b[c >>> 5] |= 128 << 24 - c % 32; b[(c + 64 >>> 9 << 4) + 14] = k.floor(a / 4294967296); b[(c + 64 >>> 9 << 4) + 15] = a; d.sigBytes = 4 * b.length; this._process(); return this._hash }, clone: function () { var b = j.clone.call(this); b._hash = this._hash.clone(); return b } }); g.SHA256 = j._createHelper(h); g.HmacSHA256 = j._createHmacHelper(h) })(Math); -(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;"string"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d<c;d++)h[d]^=1549556828,j[d]^=909522486;f.sigBytes=g.sigBytes=e;this.reset()},reset:function(){var a=this._hasher;a.reset();a.update(this._iKey)},update:function(a){this._hasher.update(a);return this},finalize:function(a){var b=this._hasher;a=b.finalize(a);b.reset();return b.finalize(this._oKey.clone().concat(a))}})})(); -(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a<f;a+=3)for(var d=(e[a>>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g<f;g++)b.push(c.charAt(d>>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join("")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<e;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js deleted file mode 100755 index 41984582..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/client.js +++ /dev/null @@ -1,367 +0,0 @@ -// Load modules - -var Url = require('url'); -var Hoek = require('hoek'); -var Cryptiles = require('cryptiles'); -var Crypto = require('./crypto'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// Generate an Authorization header for a given request - -/* - uri: 'http://example.com/resource?a=b' or object from Url.parse() - method: HTTP verb (e.g. 'GET', 'POST') - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - timestamp: Date.now(), // A pre-calculated timestamp - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=', // Pre-calculated payload hash - app: '24s23423f34dx', // Oz application id - dlg: '234sz34tww3sd' // Oz delegated-by application id - } -*/ - -exports.header = function (uri, method, options) { - - var result = { - field: '', - artifacts: {} - }; - - // Validate inputs - - if (!uri || (typeof uri !== 'string' && typeof uri !== 'object') || - !method || typeof method !== 'string' || - !options || typeof options !== 'object') { - - return result; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return result; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return result; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = Url.parse(uri); - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || Cryptiles.randomString(6), - method: method, - resource: uri.pathname + (uri.search || ''), // Maintain trailing '?' - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - hash: options.hash, - ext: options.ext, - app: options.app, - dlg: options.dlg - }; - - result.artifacts = artifacts; - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = Crypto.calculateMac('header', credentials, artifacts); - - // Construct header - - var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== ''; // Other falsey values allowed - var header = 'Hawk id="' + credentials.id + - '", ts="' + artifacts.ts + - '", nonce="' + artifacts.nonce + - (artifacts.hash ? '", hash="' + artifacts.hash : '') + - (hasExt ? '", ext="' + Utils.escapeHeaderAttribute(artifacts.ext) : '') + - '", mac="' + mac + '"'; - - if (artifacts.app) { - header += ', app="' + artifacts.app + - (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"'; - } - - result.field = header; - - return result; -}; - - -// Validate server response - -/* - res: node's response object - artifacts: object recieved from header().artifacts - options: { - payload: optional payload received - required: specifies if a Server-Authorization header is required. Defaults to 'false' - } -*/ - -exports.authenticate = function (res, credentials, artifacts, options) { - - artifacts = Hoek.clone(artifacts); - options = options || {}; - - if (res.headers['www-authenticate']) { - - // Parse HTTP WWW-Authenticate header - - var attributes = Utils.parseAuthorizationHeader(res.headers['www-authenticate'], ['ts', 'tsm', 'error']); - if (attributes instanceof Error) { - return false; - } - - if (attributes.ts) { - var tsm = Crypto.calculateTsMac(attributes.ts, credentials); - if (tsm !== attributes.tsm) { - return false; - } - } - } - - // Parse HTTP Server-Authorization header - - if (!res.headers['server-authorization'] && - !options.required) { - - return true; - } - - var attributes = Utils.parseAuthorizationHeader(res.headers['server-authorization'], ['mac', 'ext', 'hash']); - if (attributes instanceof Error) { - return false; - } - - artifacts.ext = attributes.ext; - artifacts.hash = attributes.hash; - - var mac = Crypto.calculateMac('response', credentials, artifacts); - if (mac !== attributes.mac) { - return false; - } - - if (!options.hasOwnProperty('payload')) { - return true; - } - - if (!attributes.hash) { - return false; - } - - var calculatedHash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, res.headers['content-type']); - return (calculatedHash === attributes.hash); -}; - - -// Generate a bewit value for a given URI - -/* - * credentials is an object with the following keys: 'id, 'key', 'algorithm'. - * options is an object with the following optional keys: 'ext', 'localtimeOffsetMsec' - */ -/* - uri: 'http://example.com/resource?a=b' or object from Url.parse() - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - ttlSec: 60 * 60, // TTL in seconds - - // Optional - - ext: 'application-specific', // Application specific data sent via the ext attribute - localtimeOffsetMsec: 400 // Time offset to sync with server time - }; -*/ - -exports.getBewit = function (uri, options) { - - // Validate inputs - - if (!uri || - (typeof uri !== 'string' && typeof uri !== 'object') || - !options || - typeof options !== 'object' || - !options.ttlSec) { - - return ''; - } - - options.ext = (options.ext === null || options.ext === undefined ? '' : options.ext); // Zero is valid value - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - return ''; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return ''; - } - - // Parse URI - - if (typeof uri === 'string') { - uri = Url.parse(uri); - } - - // Calculate signature - - var exp = Math.floor(now / 1000) + options.ttlSec; - var mac = Crypto.calculateMac('bewit', credentials, { - ts: exp, - nonce: '', - method: 'GET', - resource: uri.pathname + (uri.search || ''), // Maintain trailing '?' - host: uri.hostname, - port: uri.port || (uri.protocol === 'http:' ? 80 : 443), - ext: options.ext - }); - - // Construct bewit: id\exp\mac\ext - - var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + options.ext; - return Utils.base64urlEncode(bewit); -}; - - -// Generate an authorization string for a message - -/* - host: 'example.com', - port: 8000, - message: '{"some":"payload"}', // UTF-8 encoded string for body hash generation - options: { - - // Required - - credentials: { - id: 'dh37fgj492je', - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - - // Optional - - timestamp: Date.now(), // A pre-calculated timestamp - nonce: '2334f34f', // A pre-generated nonce - localtimeOffsetMsec: 400, // Time offset to sync with server time (ignored if timestamp provided) - } -*/ - -exports.message = function (host, port, message, options) { - - // Validate inputs - - if (!host || typeof host !== 'string' || - !port || typeof port !== 'number' || - message === null || message === undefined || typeof message !== 'string' || - !options || typeof options !== 'object') { - - return null; - } - - // Application time - - var timestamp = options.timestamp || Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000) - - // Validate credentials - - var credentials = options.credentials; - if (!credentials || - !credentials.id || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return null; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return null; - } - - // Calculate signature - - var artifacts = { - ts: timestamp, - nonce: options.nonce || Cryptiles.randomString(6), - host: host, - port: port, - hash: Crypto.calculatePayloadHash(message, credentials.algorithm) - }; - - // Construct authorization - - var result = { - id: credentials.id, - ts: artifacts.ts, - nonce: artifacts.nonce, - hash: artifacts.hash, - mac: Crypto.calculateMac('message', credentials, artifacts) - }; - - return result; -}; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js deleted file mode 100755 index 150340a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/crypto.js +++ /dev/null @@ -1,111 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Url = require('url'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// MAC normalization format version - -exports.headerVersion = '1'; // Prevent comparison of mac values generated with different normalized string formats - - -// Supported HMAC algorithms - -exports.algorithms = ['sha1', 'sha256']; - - -// Calculate the request MAC - -/* - type: 'header', // 'header', 'bewit', 'response' - credentials: { - key: 'aoijedoaijsdlaksjdl', - algorithm: 'sha256' // 'sha1', 'sha256' - }, - options: { - method: 'GET', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8080, - ts: 1357718381034, - nonce: 'd3d345f', - hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=', - ext: 'app-specific-data', - app: 'hf48hd83qwkj', // Application id (Oz) - dlg: 'd8djwekds9cj' // Delegated by application id (Oz), requires options.app - } -*/ - -exports.calculateMac = function (type, credentials, options) { - - var normalized = exports.generateNormalizedString(type, options); - - var hmac = Crypto.createHmac(credentials.algorithm, credentials.key).update(normalized); - var digest = hmac.digest('base64'); - return digest; -}; - - -exports.generateNormalizedString = function (type, options) { - - var normalized = 'hawk.' + exports.headerVersion + '.' + type + '\n' + - options.ts + '\n' + - options.nonce + '\n' + - (options.method || '').toUpperCase() + '\n' + - (options.resource || '') + '\n' + - options.host.toLowerCase() + '\n' + - options.port + '\n' + - (options.hash || '') + '\n'; - - if (options.ext) { - normalized += options.ext.replace('\\', '\\\\').replace('\n', '\\n'); - } - - normalized += '\n'; - - if (options.app) { - normalized += options.app + '\n' + - (options.dlg || '') + '\n'; - } - - return normalized; -}; - - -exports.calculatePayloadHash = function (payload, algorithm, contentType) { - - var hash = exports.initializePayloadHash(algorithm, contentType); - hash.update(payload || ''); - return exports.finalizePayloadHash(hash); -}; - - -exports.initializePayloadHash = function (algorithm, contentType) { - - var hash = Crypto.createHash(algorithm); - hash.update('hawk.' + exports.headerVersion + '.payload\n'); - hash.update(Utils.parseContentType(contentType) + '\n'); - return hash; -}; - - -exports.finalizePayloadHash = function (hash) { - - hash.update('\n'); - return hash.digest('base64'); -}; - - -exports.calculateTsMac = function (ts, credentials) { - - var hmac = Crypto.createHmac(credentials.algorithm, credentials.key); - hmac.update('hawk.' + exports.headerVersion + '.ts\n' + ts + '\n'); - return hmac.digest('base64'); -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js deleted file mode 100755 index 1d713cb6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Export sub-modules - -exports.error = exports.Error = require('boom'); -exports.sntp = require('sntp'); -exports.server = require('./server'); -exports.client = require('./client'); -exports.crypto = require('./crypto'); -exports.utils = require('./utils'); - -exports.uri = { - authenticate: exports.server.authenticateBewit, - getBewit: exports.client.getBewit -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js deleted file mode 100755 index 478c47b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/server.js +++ /dev/null @@ -1,524 +0,0 @@ -// Load modules - -var Boom = require('boom'); -var Hoek = require('hoek'); -var Cryptiles = require('cryptiles'); -var Crypto = require('./crypto'); -var Utils = require('./utils'); - - -// Declare internals - -var internals = {}; - - -// Hawk authentication - -/* - req: node's HTTP request object or an object as follows: - - var request = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="' - }; - - credentialsFunc: required function to lookup the set of Hawk credentials based on the provided credentials id. - The credentials include the MAC key, MAC algorithm, and other attributes (such as username) - needed by the application. This function is the equivalent of verifying the username and - password in Basic authentication. - - var credentialsFunc = function (id, callback) { - - // Lookup credentials in database - db.lookup(id, function (err, item) { - - if (err || !item) { - return callback(err); - } - - var credentials = { - // Required - key: item.key, - algorithm: item.algorithm, - // Application specific - user: item.user - }; - - return callback(null, credentials); - }); - }; - - options: { - - hostHeaderName: optional header field name, used to override the default 'Host' header when used - behind a cache of a proxy. Apache2 changes the value of the 'Host' header while preserving - the original (which is what the module must verify) in the 'x-forwarded-host' header field. - Only used when passed a node Http.ServerRequest object. - - nonceFunc: optional nonce validation function. The function signature is function(nonce, ts, callback) - where 'callback' must be called using the signature function(err). - - timestampSkewSec: optional number of seconds of permitted clock skew for incoming timestamps. Defaults to 60 seconds. - Provides a +/- skew which means actual allowed window is double the number of seconds. - - localtimeOffsetMsec: optional local clock time offset express in a number of milliseconds (positive or negative). - Defaults to 0. - - payload: optional payload for validation. The client calculates the hash value and includes it via the 'hash' - header attribute. The server always ensures the value provided has been included in the request - MAC. When this option is provided, it validates the hash value itself. Validation is done by calculating - a hash value over the entire payload (assuming it has already be normalized to the same format and - encoding used by the client to calculate the hash on request). If the payload is not available at the time - of authentication, the authenticatePayload() method can be used by passing it the credentials and - attributes.hash returned in the authenticate callback. - - host: optional host name override. Only used when passed a node request object. - port: optional port override. Only used when passed a node request object. - } - - callback: function (err, credentials, artifacts) { } - */ - -exports.authenticate = function (req, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Default options - - options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation - options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); // Measure now before any other processing - - // Convert node Http request object to a request configuration object - - var request = Utils.parseRequest(req, options); - if (request instanceof Error) { - return callback(Boom.badRequest(request.message)); - } - - // Parse HTTP Authorization header - - var attributes = Utils.parseAuthorizationHeader(request.authorization); - if (attributes instanceof Error) { - return callback(attributes); - } - - // Construct artifacts container - - var artifacts = { - method: request.method, - host: request.host, - port: request.port, - resource: request.url, - ts: attributes.ts, - nonce: attributes.nonce, - hash: attributes.hash, - ext: attributes.ext, - app: attributes.app, - dlg: attributes.dlg, - mac: attributes.mac, - id: attributes.id - }; - - // Verify required header attributes - - if (!attributes.id || - !attributes.ts || - !attributes.nonce || - !attributes.mac) { - - return callback(Boom.badRequest('Missing attributes'), null, artifacts); - } - - // Fetch Hawk credentials - - credentialsFunc(attributes.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null, artifacts); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, artifacts); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials, artifacts); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials, artifacts); - } - - // Calculate MAC - - var mac = Crypto.calculateMac('header', credentials, artifacts); - if (!Cryptiles.fixedTimeComparison(mac, attributes.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, artifacts); - } - - // Check payload hash - - if (options.payload !== null && - options.payload !== undefined) { // '' is valid - - if (!attributes.hash) { - return callback(Boom.unauthorized('Missing required payload hash', 'Hawk'), credentials, artifacts); - } - - var hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.contentType); - if (!Cryptiles.fixedTimeComparison(hash, attributes.hash)) { - return callback(Boom.unauthorized('Bad payload hash', 'Hawk'), credentials, artifacts); - } - } - - // Check nonce - - options.nonceFunc(attributes.nonce, attributes.ts, function (err) { - - if (err) { - return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials, artifacts); - } - - // Check timestamp staleness - - if (Math.abs((attributes.ts * 1000) - now) > (options.timestampSkewSec * 1000)) { - var fresh = Math.floor((Utils.now() + (options.localtimeOffsetMsec || 0)) / 1000); // Get fresh now - var tsm = Crypto.calculateTsMac(fresh, credentials); - return callback(Boom.unauthorized('Stale timestamp', 'Hawk', { ts: fresh, tsm: tsm }), credentials, artifacts); - } - - // Successful authentication - - return callback(null, credentials, artifacts); - }); - }); -}; - - -// Authenticate payload hash - used when payload cannot be provided during authenticate() - -/* - payload: raw request payload - credentials: from authenticate callback - artifacts: from authenticate callback - contentType: req.headers['content-type'] -*/ - -exports.authenticatePayload = function (payload, credentials, artifacts, contentType) { - - var calculatedHash = Crypto.calculatePayloadHash(payload, credentials.algorithm, contentType); - return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash); -}; - - -// Generate a Server-Authorization header for a given response - -/* - credentials: {}, // Object received from authenticate() - artifacts: {} // Object received from authenticate(); 'mac', 'hash', and 'ext' - ignored - options: { - ext: 'application-specific', // Application specific data sent via the ext attribute - payload: '{"some":"payload"}', // UTF-8 encoded string for body hash generation (ignored if hash provided) - contentType: 'application/json', // Payload content-type (ignored if hash provided) - hash: 'U4MKKSmiVxk37JCCrAVIjV=' // Pre-calculated payload hash - } -*/ - -exports.header = function (credentials, artifacts, options) { - - // Prepare inputs - - options = options || {}; - - if (!artifacts || - typeof artifacts !== 'object' || - typeof options !== 'object') { - - return ''; - } - - artifacts = Hoek.clone(artifacts); - delete artifacts.mac; - artifacts.hash = options.hash; - artifacts.ext = options.ext; - - // Validate credentials - - if (!credentials || - !credentials.key || - !credentials.algorithm) { - - // Invalid credential object - return ''; - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return ''; - } - - // Calculate payload hash - - if (!artifacts.hash && - options.hasOwnProperty('payload')) { - - artifacts.hash = Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType); - } - - var mac = Crypto.calculateMac('response', credentials, artifacts); - - // Construct header - - var header = 'Hawk mac="' + mac + '"' + - (artifacts.hash ? ', hash="' + artifacts.hash + '"' : ''); - - if (artifacts.ext !== null && - artifacts.ext !== undefined && - artifacts.ext !== '') { // Other falsey values allowed - - header += ', ext="' + Utils.escapeHeaderAttribute(artifacts.ext) + '"'; - } - - return header; -}; - - -/* - * Arguments and options are the same as authenticate() with the exception that the only supported options are: - * 'hostHeaderName', 'localtimeOffsetMsec', 'host', 'port' - */ - -exports.authenticateBewit = function (req, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); - - // Convert node Http request object to a request configuration object - - var request = Utils.parseRequest(req, options); - if (request instanceof Error) { - return callback(Boom.badRequest(request.message)); - } - - // Extract bewit - - // 1 2 3 4 - var resource = request.url.match(/^(\/.*)([\?&])bewit\=([^&$]*)(?:&(.+))?$/); - if (!resource) { - return callback(Boom.unauthorized(null, 'Hawk')); - } - - // Bewit not empty - - if (!resource[3]) { - return callback(Boom.unauthorized('Empty bewit', 'Hawk')); - } - - // Verify method is GET - - if (request.method !== 'GET' && - request.method !== 'HEAD') { - - return callback(Boom.unauthorized('Invalid method', 'Hawk')); - } - - // No other authentication - - if (request.authorization) { - return callback(Boom.badRequest('Multiple authentications', 'Hawk')); - } - - // Parse bewit - - var bewitString = Utils.base64urlDecode(resource[3]); - if (bewitString instanceof Error) { - return callback(Boom.badRequest('Invalid bewit encoding')); - } - - // Bewit format: id\exp\mac\ext ('\' is used because it is a reserved header attribute character) - - var bewitParts = bewitString.split('\\'); - if (!bewitParts || - bewitParts.length !== 4) { - - return callback(Boom.badRequest('Invalid bewit structure')); - } - - var bewit = { - id: bewitParts[0], - exp: parseInt(bewitParts[1], 10), - mac: bewitParts[2], - ext: bewitParts[3] || '' - }; - - if (!bewit.id || - !bewit.exp || - !bewit.mac) { - - return callback(Boom.badRequest('Missing bewit attributes')); - } - - // Construct URL without bewit - - var url = resource[1]; - if (resource[4]) { - url += resource[2] + resource[4]; - } - - // Check expiration - - if (bewit.exp * 1000 <= now) { - return callback(Boom.unauthorized('Access expired', 'Hawk'), null, bewit); - } - - // Fetch Hawk credentials - - credentialsFunc(bewit.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null, bewit.ext); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk'), null, bewit); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials, bewit); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials, bewit); - } - - // Calculate MAC - - var mac = Crypto.calculateMac('bewit', credentials, { - ts: bewit.exp, - nonce: '', - method: 'GET', - resource: url, - host: request.host, - port: request.port, - ext: bewit.ext - }); - - if (!Cryptiles.fixedTimeComparison(mac, bewit.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials, bewit); - } - - // Successful authentication - - return callback(null, credentials, bewit); - }); -}; - - -/* - * options are the same as authenticate() with the exception that the only supported options are: - * 'nonceFunc', 'timestampSkewSec', 'localtimeOffsetMsec' - */ - -exports.authenticateMessage = function (host, port, message, authorization, credentialsFunc, options, callback) { - - callback = Utils.nextTick(callback); - - // Default options - - options.nonceFunc = options.nonceFunc || function (nonce, ts, nonceCallback) { return nonceCallback(); }; // No validation - options.timestampSkewSec = options.timestampSkewSec || 60; // 60 seconds - - // Application time - - var now = Utils.now() + (options.localtimeOffsetMsec || 0); // Measure now before any other processing - - // Validate authorization - - if (!authorization.id || - !authorization.ts || - !authorization.nonce || - !authorization.hash || - !authorization.mac) { - - return callback(Boom.badRequest('Invalid authorization')) - } - - // Fetch Hawk credentials - - credentialsFunc(authorization.id, function (err, credentials) { - - if (err) { - return callback(err, credentials || null); - } - - if (!credentials) { - return callback(Boom.unauthorized('Unknown credentials', 'Hawk')); - } - - if (!credentials.key || - !credentials.algorithm) { - - return callback(Boom.internal('Invalid credentials'), credentials); - } - - if (Crypto.algorithms.indexOf(credentials.algorithm) === -1) { - return callback(Boom.internal('Unknown algorithm'), credentials); - } - - // Construct artifacts container - - var artifacts = { - ts: authorization.ts, - nonce: authorization.nonce, - host: host, - port: port, - hash: authorization.hash - }; - - // Calculate MAC - - var mac = Crypto.calculateMac('message', credentials, artifacts); - if (!Cryptiles.fixedTimeComparison(mac, authorization.mac)) { - return callback(Boom.unauthorized('Bad mac', 'Hawk'), credentials); - } - - // Check payload hash - - var hash = Crypto.calculatePayloadHash(message, credentials.algorithm); - if (!Cryptiles.fixedTimeComparison(hash, authorization.hash)) { - return callback(Boom.unauthorized('Bad message hash', 'Hawk'), credentials); - } - - // Check nonce - - options.nonceFunc(authorization.nonce, authorization.ts, function (err) { - - if (err) { - return callback(Boom.unauthorized('Invalid nonce', 'Hawk'), credentials); - } - - // Check timestamp staleness - - if (Math.abs((authorization.ts * 1000) - now) > (options.timestampSkewSec * 1000)) { - return callback(Boom.unauthorized('Stale timestamp'), credentials); - } - - // Successful authentication - - return callback(null, credentials); - }); - }); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js deleted file mode 100755 index c8938fe8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/lib/utils.js +++ /dev/null @@ -1,183 +0,0 @@ -// Load modules - -var Hoek = require('hoek'); -var Sntp = require('sntp'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Import Hoek Utilities - -internals.import = function () { - - for (var i in Hoek) { - if (Hoek.hasOwnProperty(i)) { - exports[i] = Hoek[i]; - } - } -}; - -internals.import(); - - -// Hawk version - -exports.version = function () { - - return exports.loadPackage(__dirname + '/..').version; -}; - - -// Extract host and port from request - -exports.parseHost = function (req, hostHeaderName) { - - hostHeaderName = (hostHeaderName ? hostHeaderName.toLowerCase() : 'host'); - var hostHeader = req.headers[hostHeaderName]; - if (!hostHeader) { - return null; - } - - var hostHeaderRegex; - if (hostHeader[0] === '[') { - hostHeaderRegex = /^(?:(?:\r\n)?\s)*(\[[^\]]+\])(?::(\d+))?(?:(?:\r\n)?\s)*$/; // IPv6 - } - else { - hostHeaderRegex = /^(?:(?:\r\n)?\s)*([^:]+)(?::(\d+))?(?:(?:\r\n)?\s)*$/; // IPv4, hostname - } - - var hostParts = hostHeader.match(hostHeaderRegex); - - if (!hostParts || - hostParts.length !== 3 || - !hostParts[1]) { - - return null; - } - - return { - name: hostParts[1], - port: (hostParts[2] ? hostParts[2] : (req.connection && req.connection.encrypted ? 443 : 80)) - }; -}; - - -// Parse Content-Type header content - -exports.parseContentType = function (header) { - - if (!header) { - return ''; - } - - return header.split(';')[0].trim().toLowerCase(); -}; - - -// Convert node's to request configuration object - -exports.parseRequest = function (req, options) { - - if (!req.headers) { - return req; - } - - // Obtain host and port information - - if (!options.host || !options.port) { - var host = exports.parseHost(req, options.hostHeaderName); - if (!host) { - return new Error('Invalid Host header'); - } - } - - var request = { - method: req.method, - url: req.url, - host: options.host || host.name, - port: options.port || host.port, - authorization: req.headers.authorization, - contentType: req.headers['content-type'] || '' - }; - - return request; -}; - - -exports.now = function () { - - return Sntp.now(); -}; - - -// Parse Hawk HTTP Authorization header - -exports.parseAuthorizationHeader = function (header, keys) { - - keys = keys || ['id', 'ts', 'nonce', 'hash', 'ext', 'mac', 'app', 'dlg']; - - if (!header) { - return Boom.unauthorized(null, 'Hawk'); - } - - var headerParts = header.match(/^(\w+)(?:\s+(.*))?$/); // Header: scheme[ something] - if (!headerParts) { - return Boom.badRequest('Invalid header syntax'); - } - - var scheme = headerParts[1]; - if (scheme.toLowerCase() !== 'hawk') { - return Boom.unauthorized(null, 'Hawk'); - } - - var attributesString = headerParts[2]; - if (!attributesString) { - return Boom.badRequest('Invalid header syntax'); - } - - var attributes = {}; - var errorMessage = ''; - var verify = attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function ($0, $1, $2) { - - // Check valid attribute names - - if (keys.indexOf($1) === -1) { - errorMessage = 'Unknown attribute: ' + $1; - return; - } - - // Allowed attribute value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9 - - if ($2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/) === null) { - errorMessage = 'Bad attribute value: ' + $1; - return; - } - - // Check for duplicates - - if (attributes.hasOwnProperty($1)) { - errorMessage = 'Duplicate attribute: ' + $1; - return; - } - - attributes[$1] = $2; - return ''; - }); - - if (verify !== '') { - return Boom.badRequest(errorMessage || 'Bad header format'); - } - - return attributes; -}; - - -exports.unauthorized = function (message) { - - return Boom.unauthorized(message, 'Hawk'); -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE deleted file mode 100755 index 911b97ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Walmart. -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 Walmart 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 WALMART 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile deleted file mode 100755 index 884ec6db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md deleted file mode 100755 index 1970b1c4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/README.md +++ /dev/null @@ -1,6 +0,0 @@ -<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a> -![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png) - -HTTP-friendly error objects - -[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png deleted file mode 100755 index 373bc13455bc0a71a6a4538158aee59c6994b761..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29479 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 QhhSjjq?9Eq#J`37AMgo!6951J diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js deleted file mode 100755 index 0bbeed95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js +++ /dev/null @@ -1,207 +0,0 @@ -// Load modules - -var Http = require('http'); -var NodeUtil = require('util'); -var Hoek = require('hoek'); - - -// Declare internals - -var internals = {}; - - -exports = module.exports = internals.Boom = function (/* (new Error) or (code, message) */) { - - var self = this; - - Hoek.assert(this.constructor === internals.Boom, 'Error must be instantiated using new'); - - Error.call(this); - this.isBoom = true; - - this.response = { - code: 0, - payload: {}, - headers: {} - // type: 'content-type' - }; - - if (arguments[0] instanceof Error) { - - // Error - - var error = arguments[0]; - - this.data = error; - this.response.code = error.code || 500; - if (error.message) { - this.message = error.message; - } - } - else { - - // code, message - - var code = arguments[0]; - var message = arguments[1]; - - Hoek.assert(!isNaN(parseFloat(code)) && isFinite(code) && code >= 400, 'First argument must be a number (400+)'); - - this.response.code = code; - if (message) { - this.message = message; - } - } - - // Response format - - this.reformat(); - - return this; -}; - -NodeUtil.inherits(internals.Boom, Error); - - -internals.Boom.prototype.reformat = function () { - - this.response.payload.code = this.response.code; - this.response.payload.error = Http.STATUS_CODES[this.response.code] || 'Unknown'; - if (this.message) { - this.response.payload.message = Hoek.escapeHtml(this.message); // Prevent XSS from error message - } -}; - - -// Utilities - -internals.Boom.badRequest = function (message) { - - return new internals.Boom(400, message); -}; - - -internals.Boom.unauthorized = function (message, scheme, attributes) { // Or function (message, wwwAuthenticate[]) - - var err = new internals.Boom(401, message); - - if (!scheme) { - return err; - } - - var wwwAuthenticate = ''; - - if (typeof scheme === 'string') { - - // function (message, scheme, attributes) - - wwwAuthenticate = scheme; - if (attributes) { - var names = Object.keys(attributes); - for (var i = 0, il = names.length; i < il; ++i) { - if (i) { - wwwAuthenticate += ','; - } - - var value = attributes[names[i]]; - if (value === null || - value === undefined) { // Value can be zero - - value = ''; - } - wwwAuthenticate += ' ' + names[i] + '="' + Hoek.escapeHeaderAttribute(value.toString()) + '"'; - } - } - - if (message) { - if (attributes) { - wwwAuthenticate += ','; - } - wwwAuthenticate += ' error="' + Hoek.escapeHeaderAttribute(message) + '"'; - } - else { - err.isMissing = true; - } - } - else { - - // function (message, wwwAuthenticate[]) - - var wwwArray = scheme; - for (var i = 0, il = wwwArray.length; i < il; ++i) { - if (i) { - wwwAuthenticate += ', '; - } - - wwwAuthenticate += wwwArray[i]; - } - } - - err.response.headers['WWW-Authenticate'] = wwwAuthenticate; - - return err; -}; - - -internals.Boom.clientTimeout = function (message) { - - return new internals.Boom(408, message); -}; - - -internals.Boom.serverTimeout = function (message) { - - return new internals.Boom(503, message); -}; - - -internals.Boom.forbidden = function (message) { - - return new internals.Boom(403, message); -}; - - -internals.Boom.notFound = function (message) { - - return new internals.Boom(404, message); -}; - - -internals.Boom.internal = function (message, data) { - - var err = new internals.Boom(500, message); - - if (data && data.stack) { - err.trace = data.stack.split('\n'); - err.outterTrace = Hoek.displayStack(1); - } - else { - err.trace = Hoek.displayStack(1); - } - - err.data = data; - err.response.payload.message = 'An internal server error occurred'; // Hide actual error from user - - return err; -}; - - -internals.Boom.passThrough = function (code, payload, contentType, headers) { - - var err = new internals.Boom(500, 'Pass-through'); // 500 code is only used to initialize - - err.data = { - code: code, - payload: payload, - type: contentType - }; - - err.response.code = code; - err.response.type = contentType; - err.response.headers = headers; - err.response.payload = payload; - - return err; -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json deleted file mode 100755 index c57a11a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "boom", - "description": "HTTP-friendly error objects", - "version": "0.4.2", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/spumko/boom" - }, - "main": "index", - "keywords": [ - "error", - "http" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/spumko/boom/raw/master/LICENSE" - } - ], - "readme": "<a href=\"https://github.com/spumko\"><img src=\"https://raw.github.com/spumko/spumko/master/images/from.png\" align=\"right\" /></a>\n![boom Logo](https://raw.github.com/spumko/boom/master/images/boom.png)\n\nHTTP-friendly error objects\n\n[![Build Status](https://secure.travis-ci.org/spumko/boom.png)](http://travis-ci.org/spumko/boom)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/spumko/boom/issues" - }, - "homepage": "https://github.com/spumko/boom", - "_id": "boom@0.4.2", - "_from": "boom@0.4.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js deleted file mode 100755 index a20c1c34..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js +++ /dev/null @@ -1,245 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Boom = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Boom', function () { - - it('returns an error with info when constructed using another error', function (done) { - - var error = new Error('ka-boom'); - error.xyz = 123; - var err = new Boom(error); - expect(err.data.xyz).to.equal(123); - expect(err.message).to.equal('ka-boom'); - expect(err.response).to.deep.equal({ - code: 500, - payload: { - code: 500, - error: 'Internal Server Error', - message: 'ka-boom' - }, - headers: {} - }); - done(); - }); - - describe('#isBoom', function () { - - it('returns true for Boom object', function (done) { - - expect(Boom.badRequest().isBoom).to.equal(true); - done(); - }); - - it('returns false for Error object', function (done) { - - expect(new Error().isBoom).to.not.exist; - done(); - }); - }); - - describe('#badRequest', function () { - - it('returns a 400 error code', function (done) { - - expect(Boom.badRequest().response.code).to.equal(400); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.badRequest('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#unauthorized', function () { - - it('returns a 401 error code', function (done) { - - var err = Boom.unauthorized(); - expect(err.response.code).to.equal(401); - expect(err.response.headers).to.deep.equal({}); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.unauthorized('my message').message).to.equal('my message'); - done(); - }); - - it('returns a WWW-Authenticate header when passed a scheme', function (done) { - - var err = Boom.unauthorized('boom', 'Test'); - expect(err.response.code).to.equal(401); - expect(err.response.headers['WWW-Authenticate']).to.equal('Test error="boom"'); - done(); - }); - - it('returns a WWW-Authenticate header when passed a scheme and attributes', function (done) { - - var err = Boom.unauthorized('boom', 'Test', { a: 1, b: 'something', c: null, d: 0 }); - expect(err.response.code).to.equal(401); - expect(err.response.headers['WWW-Authenticate']).to.equal('Test a="1", b="something", c="", d="0", error="boom"'); - done(); - }); - - it('sets the isMissing flag when error message is empty', function (done) { - - var err = Boom.unauthorized('', 'Basic'); - expect(err.isMissing).to.equal(true); - done(); - }); - - it('does not set the isMissing flag when error message is not empty', function (done) { - - var err = Boom.unauthorized('message', 'Basic'); - expect(err.isMissing).to.equal(undefined); - done(); - }); - - it('sets a WWW-Authenticate when passed as an array', function (done) { - - var err = Boom.unauthorized('message', ['Basic', 'Example e="1"', 'Another x="3", y="4"']); - expect(err.response.headers['WWW-Authenticate']).to.equal('Basic, Example e="1", Another x="3", y="4"'); - done(); - }); - }); - - describe('#clientTimeout', function () { - - it('returns a 408 error code', function (done) { - - expect(Boom.clientTimeout().response.code).to.equal(408); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.clientTimeout('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#serverTimeout', function () { - - it('returns a 503 error code', function (done) { - - expect(Boom.serverTimeout().response.code).to.equal(503); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.serverTimeout('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#forbidden', function () { - - it('returns a 403 error code', function (done) { - - expect(Boom.forbidden().response.code).to.equal(403); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.forbidden('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#notFound', function () { - - it('returns a 404 error code', function (done) { - - expect(Boom.notFound().response.code).to.equal(404); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - expect(Boom.notFound('my message').message).to.equal('my message'); - done(); - }); - }); - - describe('#internal', function () { - - it('returns a 500 error code', function (done) { - - expect(Boom.internal().response.code).to.equal(500); - done(); - }); - - it('sets the message with the passed in message', function (done) { - - var err = Boom.internal('my message'); - expect(err.message).to.equal('my message'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - - it('passes data on the callback if its passed in', function (done) { - - expect(Boom.internal('my message', { my: 'data' }).data.my).to.equal('data'); - done(); - }); - - it('uses passed in stack if its available', function (done) { - - var error = new Error(); - error.stack = 'my stack line\nmy second stack line'; - expect(Boom.internal('my message', error).trace[0]).to.equal('my stack line'); - done(); - }); - }); - - describe('#passThrough', function () { - - it('returns a pass-through error', function (done) { - - var err = Boom.passThrough(499, { a: 1 }, 'application/text', { 'X-Test': 'Boom' }); - expect(err.response.code).to.equal(499); - expect(err.message).to.equal('Pass-through'); - expect(err.response).to.deep.equal({ - code: 499, - payload: { a: 1 }, - headers: { 'X-Test': 'Boom' }, - type: 'application/text' - }); - done(); - }); - }); - - describe('#reformat', function () { - - it('encodes any HTML markup in the response payload', function (done) { - - var boom = new Boom(new Error('<script>alert(1)</script>')); - expect(boom.response.payload.message).to.not.contain('<script>'); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore deleted file mode 100644 index b3bb5176..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml deleted file mode 100755 index 40ca59ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile deleted file mode 100755 index 9e7138c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @./node_modules/.bin/lab -test-cov: - @./node_modules/.bin/lab -r threshold -t 100 -test-cov-html: - @./node_modules/.bin/lab -r html -o coverage.html -complexity: - @./node_modules/.bin/cr -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md deleted file mode 100644 index 6a900a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md +++ /dev/null @@ -1,6 +0,0 @@ -cryptiles -========= - -General purpose crypto utilities - -[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js deleted file mode 100755 index dcf2bc38..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js +++ /dev/null @@ -1,68 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Generate a cryptographically strong pseudo-random data - -exports.randomString = function (size) { - - var buffer = exports.randomBits((size + 1) * 6); - if (buffer instanceof Error) { - return buffer; - } - - var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); - return string.slice(0, size); -}; - - -exports.randomBits = function (bits) { - - if (!bits || - bits < 0) { - - return Boom.internal('Invalid random bits count'); - } - - var bytes = Math.ceil(bits / 8); - try { - return Crypto.randomBytes(bytes); - } - catch (err) { - return Boom.internal('Failed generating random bits: ' + err.message); - } -}; - - -// Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match) - -exports.fixedTimeComparison = function (a, b) { - - if (typeof a !== 'string' || - typeof b !== 'string') { - - return false; - } - - var mismatch = (a.length === b.length ? 0 : 1); - if (mismatch) { - b = a; - } - - for (var i = 0, il = a.length; i < il; ++i) { - var ac = a.charCodeAt(i); - var bc = b.charCodeAt(i); - mismatch += (ac === bc ? 0 : 1); - } - - return (mismatch === 0); -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json deleted file mode 100755 index cc1f7393..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "cryptiles", - "description": "General purpose crypto utilities", - "version": "0.2.2", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/cryptiles" - }, - "main": "index", - "keywords": [ - "cryptography", - "security", - "utilites" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "boom": "0.4.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/cryptiles/raw/master/LICENSE" - } - ], - "readme": "cryptiles\n=========\n\nGeneral purpose crypto utilities\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/cryptiles.png)](http://travis-ci.org/hueniverse/cryptiles)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/cryptiles/issues" - }, - "homepage": "https://github.com/hueniverse/cryptiles", - "_id": "cryptiles@0.2.2", - "_from": "cryptiles@0.2.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js deleted file mode 100755 index 58aaa70b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js +++ /dev/null @@ -1,101 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Cryptiles = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Cryptiles', function () { - - describe('#randomString', function () { - - it('should generate the right length string', function (done) { - - for (var i = 1; i <= 1000; ++i) { - expect(Cryptiles.randomString(i).length).to.equal(i); - } - - done(); - }); - - it('returns an error on invalid bits size', function (done) { - - expect(Cryptiles.randomString(99999999999999999999).message).to.equal('Failed generating random bits: Argument #1 must be number > 0'); - done(); - }); - }); - - describe('#randomBits', function () { - - it('returns an error on invalid input', function (done) { - - expect(Cryptiles.randomBits(0).message).to.equal('Invalid random bits count'); - done(); - }); - }); - - describe('#fixedTimeComparison', function () { - - var a = Cryptiles.randomString(50000); - var b = Cryptiles.randomString(150000); - - it('should take the same amount of time comparing different string sizes', function (done) { - - var now = Date.now(); - Cryptiles.fixedTimeComparison(b, a); - var t1 = Date.now() - now; - - now = Date.now(); - Cryptiles.fixedTimeComparison(b, b); - var t2 = Date.now() - now; - - expect(t2 - t1).to.be.within(-20, 20); - done(); - }); - - it('should return true for equal strings', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a)).to.equal(true); - done(); - }); - - it('should return false for different strings (size, a < b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a + 'x')).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a > b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a)).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a = b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a + 'y')).to.equal(false); - done(); - }); - - it('should return false when not a string', function (done) { - - expect(Cryptiles.fixedTimeComparison('x', null)).to.equal(false); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore deleted file mode 100644 index 9966e5e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml deleted file mode 100755 index 40ca59ee..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE deleted file mode 100755 index 394adcff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE +++ /dev/null @@ -1,33 +0,0 @@ -Copyright (c) 2011-2013, Walmart. -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 Walmart 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 WALMART BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - * * * - - -Portions of this project were initially based on Postmile, Copyright (c) 2011, Yahoo Inc. -Postmile is published at https://github.com/yahoo/postmile and its licensing terms are -published at https://github.com/yahoo/postmile/blob/master/LICENSE. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile deleted file mode 100755 index e605d6c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -test: - @node node_modules/lab/bin/lab -test-cov: - @node node_modules/lab/bin/lab -r threshold -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -r html -o coverage.html -complexity: - @node node_modules/complexity-report/src/cli.js -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md deleted file mode 100755 index ac64e2fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/README.md +++ /dev/null @@ -1,436 +0,0 @@ -<a href="https://github.com/spumko"><img src="https://raw.github.com/spumko/spumko/master/images/from.png" align="right" /></a> -![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png) - -General purpose node utilities - -[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek) - -# Table of Contents - -* [Introduction](#introduction "Introduction") -* [Object](#object "Object") - * [clone](#cloneobj "clone") - * [merge](#mergetarget-source-isnulloverride-ismergearrays "merge") - * [applyToDefaults](#applytodefaultsdefaults-options "applyToDefaults") - * [unique](#uniquearray-key "unique") - * [mapToObject](#maptoobjectarray-key "mapToObject") - * [intersect](#intersectarray1-array2 "intersect") - * [matchKeys](#matchkeysobj-keys "matchKeys") - * [flatten](#flattenarray-target "flatten") - * [removeKeys](#removekeysobject-keys "removeKeys") - * [reach](#reachobj-chain "reach") - * [inheritAsync](#inheritasyncself-obj-keys "inheritAsync") - * [rename](#renameobj-from-to "rename") -* [Timer](#timer "Timer") -* [Binary Encoding/Decoding](#binary "Binary Encoding/Decoding") - * [base64urlEncode](#binary64urlEncodevalue "binary64urlEncode") - * [base64urlDecode](#binary64urlDecodevalue "binary64urlDecode") -* [Escaping Characters](#escaped "Escaping Characters") - * [escapeHtml](#escapeHtmlstring "escapeHtml") - * [escapeHeaderAttribute](#escapeHeaderAttributeattribute "escapeHeaderAttribute") - * [escapeRegex](#escapeRegexstring "escapeRegex") -* [Errors](#errors "Errors") - * [assert](#assertmessage "assert") - * [abort](#abortmessage "abort") - * [displayStack](#displayStackslice "displayStack") - * [callStack](#callStackslice "callStack") - * [toss](#tosscondition "toss") -* [Load files](#load-files "Load Files") - * [loadPackage](#loadPackagedir "loadpackage") - * [loadDirModules](#loadDirModulespath-excludefiles-target "loaddirmodules") - - - -# Introduction - -The *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. - -For example, to use Hoek to set configuration with default options: -```javascript -var Hoek = require('hoek'); - -var default = {url : "www.github.com", port : "8000", debug : true} - -var config = Hoek.applyToDefaults(default, {port : "3000", admin : true}); - -// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true } -``` - -Under each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require('hoek') is omitted for brevity. - -## Object - -Hoek provides several helpful methods for objects and arrays. - -### clone(obj) - -This method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). - -```javascript - -var nestedObj = { - w: /^something$/ig, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date() - }, - y: 'y', - z: new Date() - }; - -var copy = Hoek.clone(nestedObj); - -copy.x.b = 100; - -console.log(copy.y) // results in 'y' -console.log(nestedObj.x.b) // results in 123456 -console.log(copy.x.b) // results in 100 -``` - -### merge(target, source, isNullOverride, isMergeArrays) -isNullOverride, isMergeArrays default to true - -Merge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied - - -```javascript - -var target = {a: 1, b : 2} -var source = {a: 0, c: 5} -var source2 = {a: null, c: 5} - -var targetArray = [1, 2, 3]; -var sourceArray = [4, 5]; - -var newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5} -newTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5} -newTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5} - -newTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5] -newTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5] - - - - -``` - -### applyToDefaults(defaults, options) - -Apply options to a copy of the defaults - -```javascript - -var defaults = {host: "localhost", port: 8000}; -var options = {port: 8080}; - -var config = Hoek.applyToDefaults(defaults, options); // results in {host: "localhost", port: 8080}; - - -``` - -### unique(array, key) - -Remove duplicate items from Array - -```javascript - -var array = [1, 2, 2, 3, 3, 4, 5, 6]; - -var newArray = Hoek.unique(array); // results in [1,2,3,4,5,6]; - -array = [{id: 1}, {id: 1}, {id: 2}]; - -newArray = Hoek.unique(array, "id") // results in [{id: 1}, {id: 2}] - -``` - -### mapToObject(array, key) - -Convert an Array into an Object - -```javascript - -var array = [1,2,3]; -var newObject = Hoek.mapToObject(array); // results in [{"1": true}, {"2": true}, {"3": true}] - -array = [{id: 1}, {id: 2}]; -newObject = Hoek.mapToObject(array, "id") // results in [{"id": 1}, {"id": 2}] - -``` -### intersect(array1, array2) - -Find the common unique items in two arrays - -```javascript - -var array1 = [1, 2, 3]; -var array2 = [1, 4, 5]; - -var newArray = Hoek.intersect(array1, array2) // results in [1] - -``` - -### matchKeys(obj, keys) - -Find which keys are present - -```javascript - -var obj = {a: 1, b: 2, c: 3}; -var keys = ["a", "e"]; - -Hoek.matchKeys(obj, keys) // returns ["a"] - -``` - -### flatten(array, target) - -Flatten an array - -```javascript - -var array = [1, 2, 3]; -var target = [4, 5]; - -var flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3]; - -``` - -### removeKeys(object, keys) - -Remove keys - -```javascript - -var object = {a: 1, b: 2, c: 3, d: 4}; - -var keys = ["a", "b"]; - -Hoek.removeKeys(object, keys) // object is now {c: 3, d: 4} - -``` - -### reach(obj, chain) - -Converts an object key chain string to reference - -```javascript - -var chain = 'a.b.c'; -var obj = {a : {b : { c : 1}}}; - -Hoek.reach(obj, chain) // returns 1 - -``` - -### inheritAsync(self, obj, keys) - -Inherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors - -```javascript - -var targetFunc = function () { }; - -var proto = { - a: function () { - return 'a!'; - }, - b: function () { - return 'b!'; - }, - c: function () { - throw new Error('c!'); - } - }; - -var keys = ['a', 'c']; - -Hoek.inheritAsync(targetFunc, proto, ['a', 'c']); - -var target = new targetFunc(); - -target.a(function(err, result){console.log(result)} // returns 'a!' - -target.c(function(err, result){console.log(result)} // returns undefined - -target.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method 'b' - -``` - -### rename(obj, from, to) - -Rename a key of an object - -```javascript - -var obj = {a : 1, b : 2}; - -Hoek.rename(obj, "a", "c"); // obj is now {c : 1, b : 2} - -``` - - -# Timer - -A Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. - -```javascript - - -example : - - -var timerObj = new Hoek.Timer(); -console.log("Time is now: " + timerObj.ts) -console.log("Elapsed time from initialization: " + timerObj.elapsed() + 'milliseconds') - -``` - -# Binary Encoding/Decoding - -### base64urlEncode(value) - -Encodes value in Base64 or URL encoding - -### base64urlDecode(value) - -Decodes data in Base64 or URL encoding. -# Escaping Characters - -Hoek provides convenient methods for escaping html characters. The escaped characters are as followed: - -```javascript - -internals.htmlEscaped = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' -}; - -``` - -### escapeHtml(string) - -```javascript - -var string = '<html> hey </html>'; -var escapedString = Hoek.escapeHtml(string); // returns <html> hey </html> - -``` - -### escapeHeaderAttribute(attribute) - -Escape attribute value for use in HTTP header - -```javascript - -var a = Hoek.escapeHeaderAttribute('I said "go w\\o me"'); //returns I said \"go w\\o me\" - - -``` - - -### escapeRegex(string) - -Escape string for Regex construction - -```javascript - -var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); // returns 4\^f\$s\.4\*5\+\-_\?%\=#\!\:@\|~\\\/`"\(>\)\[<\]d\{\}s\, - - - -``` - -# Errors - -### assert(message) - -```javascript - -var a = 1, b =2; - -Hoek.assert(a === b, 'a should equal b'); // ABORT: a should equal b - -``` - -### abort(message) - -First checks if process.env.NODE_ENV === 'test', and if so, throws error message. Otherwise, -displays most recent stack and then exits process. - - - -### displayStack(slice) - -Displays the trace stack - -```javascript - -var stack = Hoek.displayStack(); -console.log(stack) // returns something like: - -[ 'null (/Users/user/Desktop/hoek/test.js:4:18)', - 'Module._compile (module.js:449:26)', - 'Module._extensions..js (module.js:467:10)', - 'Module.load (module.js:356:32)', - 'Module._load (module.js:312:12)', - 'Module.runMain (module.js:492:10)', - 'startup.processNextTick.process._tickCallback (node.js:244:9)' ] - -``` - -### callStack(slice) - -Returns a trace stack array. - -```javascript - -var stack = Hoek.callStack(); -console.log(stack) // returns something like: - -[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ], - [ 'module.js', 449, 26, 'Module._compile', false ], - [ 'module.js', 467, 10, 'Module._extensions..js', false ], - [ 'module.js', 356, 32, 'Module.load', false ], - [ 'module.js', 312, 12, 'Module._load', false ], - [ 'module.js', 492, 10, 'Module.runMain', false ], - [ 'node.js', - 244, - 9, - 'startup.processNextTick.process._tickCallback', - false ] ] - - -``` - -### toss(condition) - -toss(condition /*, [message], callback */) - -Return an error as first argument of a callback - - -# Load Files - -### loadPackage(dir) - -Load and parse package.json process root or given directory - -```javascript - -var pack = Hoek.loadPackage(); // pack.name === 'hoek' - -``` - -### loadDirModules(path, excludeFiles, target) - -Loads modules from a given path; option to exclude files (array). - - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png deleted file mode 100755 index 6ccfcb12be76a7a8331428c87337b20b901e869c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37939 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 T*vZ8J00000NkvXXu0mjfKFT-e diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js deleted file mode 100755 index 666b3dc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js +++ /dev/null @@ -1,132 +0,0 @@ -// Declare internals - -var internals = {}; - - -exports.escapeJavaScript = function (input) { - - if (!input) { - return ''; - } - - var escaped = ''; - - for (var i = 0, il = input.length; i < il; ++i) { - - var charCode = input.charCodeAt(i); - - if (internals.isSafe(charCode)) { - escaped += input[i]; - } - else { - escaped += internals.escapeJavaScriptChar(charCode); - } - } - - return escaped; -}; - - -exports.escapeHtml = function (input) { - - if (!input) { - return ''; - } - - var escaped = ''; - - for (var i = 0, il = input.length; i < il; ++i) { - - var charCode = input.charCodeAt(i); - - if (internals.isSafe(charCode)) { - escaped += input[i]; - } - else { - escaped += internals.escapeHtmlChar(charCode); - } - } - - return escaped; -}; - - -internals.escapeJavaScriptChar = function (charCode) { - - if (charCode >= 256) { - return '\\u' + internals.padLeft('' + charCode, 4); - } - - var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex'); - return '\\x' + internals.padLeft(hexValue, 2); -}; - - -internals.escapeHtmlChar = function (charCode) { - - var namedEscape = internals.namedHtml[charCode]; - if (typeof namedEscape !== 'undefined') { - return namedEscape; - } - - if (charCode >= 256) { - return '&#' + charCode + ';'; - } - - var hexValue = new Buffer(String.fromCharCode(charCode), 'ascii').toString('hex'); - return '&#x' + internals.padLeft(hexValue, 2) + ';'; -}; - - -internals.padLeft = function (str, len) { - - while (str.length < len) { - str = '0' + str; - } - - return str; -}; - - -internals.isSafe = function (charCode) { - - return (typeof internals.safeCharCodes[charCode] !== 'undefined'); -}; - - -internals.namedHtml = { - '38': '&', - '60': '<', - '62': '>', - '34': '"', - '160': ' ', - '162': '¢', - '163': '£', - '164': '¤', - '169': '©', - '174': '®' -}; - - -internals.safeCharCodes = (function () { - - var safe = {}; - - for (var i = 32; i < 123; ++i) { - - if ((i >= 97 && i <= 122) || // a-z - (i >= 65 && i <= 90) || // A-Z - (i >= 48 && i <= 57) || // 0-9 - i === 32 || // space - i === 46 || // . - i === 44 || // , - i === 45 || // - - i === 58 || // : - i === 95) { // _ - - safe[i] = null; - } - } - - return safe; -}()); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js deleted file mode 100755 index 806260d2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js +++ /dev/null @@ -1,585 +0,0 @@ -// Load modules - -var Fs = require('fs'); -var Escape = require('./escape'); - - -// Declare internals - -var internals = {}; - - -// Clone object or array - -exports.clone = function (obj, seen) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - seen = seen || { orig: [], copy: [] }; - - var lookup = seen.orig.indexOf(obj); - if (lookup !== -1) { - return seen.copy[lookup]; - } - - var newObj = (obj instanceof Array) ? [] : {}; - - seen.orig.push(obj); - seen.copy.push(newObj); - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (obj[i] instanceof Buffer) { - newObj[i] = new Buffer(obj[i]); - } - else if (obj[i] instanceof Date) { - newObj[i] = new Date(obj[i].getTime()); - } - else if (obj[i] instanceof RegExp) { - var flags = '' + (obj[i].global ? 'g' : '') + (obj[i].ignoreCase ? 'i' : '') + (obj[i].multiline ? 'm' : ''); - newObj[i] = new RegExp(obj[i].source, flags); - } - else { - newObj[i] = exports.clone(obj[i], seen); - } - } - } - - return newObj; -}; - - -// Merge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied - -exports.merge = function (target, source, isNullOverride /* = true */, isMergeArrays /* = true */) { - - exports.assert(target && typeof target == 'object', 'Invalid target value: must be an object'); - exports.assert(source === null || source === undefined || typeof source === 'object', 'Invalid source value: must be null, undefined, or an object'); - - if (!source) { - return target; - } - - if (source instanceof Array) { - exports.assert(target instanceof Array, 'Cannot merge array onto an object'); - if (isMergeArrays === false) { // isMergeArrays defaults to true - target.length = 0; // Must not change target assignment - } - - for (var i = 0, il = source.length; i < il; ++i) { - target.push(source[i]); - } - - return target; - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - if (value && - typeof value === 'object') { - - if (!target[key] || - typeof target[key] !== 'object') { - - target[key] = exports.clone(value); - } - else { - exports.merge(target[key], source[key], isNullOverride, isMergeArrays); - } - } - else { - if (value !== null && value !== undefined) { // Explicit to preserve empty strings - target[key] = value; - } - else if (isNullOverride !== false) { // Defaults to true - target[key] = value; - } - } - } - - return target; -}; - - -// Apply options to a copy of the defaults - -exports.applyToDefaults = function (defaults, options) { - - exports.assert(defaults && typeof defaults == 'object', 'Invalid defaults value: must be an object'); - exports.assert(!options || options === true || typeof options === 'object', 'Invalid options value: must be true, falsy or an object'); - - if (!options) { // If no options, return null - return null; - } - - var copy = exports.clone(defaults); - - if (options === true) { // If options is set to true, use defaults - return copy; - } - - return exports.merge(copy, options, false, false); -}; - - -// Remove duplicate items from array - -exports.unique = function (array, key) { - - var index = {}; - var result = []; - - for (var i = 0, il = array.length; i < il; ++i) { - var id = (key ? array[i][key] : array[i]); - if (index[id] !== true) { - - result.push(array[i]); - index[id] = true; - } - } - - return result; -}; - - -// Convert array into object - -exports.mapToObject = function (array, key) { - - if (!array) { - return null; - } - - var obj = {}; - for (var i = 0, il = array.length; i < il; ++i) { - if (key) { - if (array[i][key]) { - obj[array[i][key]] = true; - } - } - else { - obj[array[i]] = true; - } - } - - return obj; -}; - - -// Find the common unique items in two arrays - -exports.intersect = function (array1, array2, justFirst) { - - if (!array1 || !array2) { - return []; - } - - var common = []; - var hash = (array1 instanceof Array ? exports.mapToObject(array1) : array1); - var found = {}; - for (var i = 0, il = array2.length; i < il; ++i) { - if (hash[array2[i]] && !found[array2[i]]) { - if (justFirst) { - return array2[i]; - } - - common.push(array2[i]); - found[array2[i]] = true; - } - } - - return (justFirst ? null : common); -}; - - -// Find which keys are present - -exports.matchKeys = function (obj, keys) { - - var matched = []; - for (var i = 0, il = keys.length; i < il; ++i) { - if (obj.hasOwnProperty(keys[i])) { - matched.push(keys[i]); - } - } - return matched; -}; - - -// Flatten array - -exports.flatten = function (array, target) { - - var result = target || []; - - for (var i = 0, il = array.length; i < il; ++i) { - if (Array.isArray(array[i])) { - exports.flatten(array[i], result); - } - else { - result.push(array[i]); - } - } - - return result; -}; - - -// Remove keys - -exports.removeKeys = function (object, keys) { - - for (var i = 0, il = keys.length; i < il; i++) { - delete object[keys[i]]; - } -}; - - -// Convert an object key chain string ('a.b.c') to reference (object[a][b][c]) - -exports.reach = function (obj, chain) { - - var path = chain.split('.'); - var ref = obj; - for (var i = 0, il = path.length; i < il; ++i) { - if (ref) { - ref = ref[path[i]]; - } - } - - return ref; -}; - - -// Inherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors - -exports.inheritAsync = function (self, obj, keys) { - - keys = keys || null; - - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - if (keys instanceof Array && - keys.indexOf(i) < 0) { - - continue; - } - - self.prototype[i] = (function (fn) { - - return function (next) { - - var result = null; - try { - result = fn(); - } - catch (err) { - return next(err); - } - - return next(null, result); - }; - })(obj[i]); - } - } -}; - - -exports.formatStack = function (stack) { - - var trace = []; - for (var i = 0, il = stack.length; i < il; ++i) { - var item = stack[i]; - trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]); - } - - return trace; -}; - - -exports.formatTrace = function (trace) { - - var display = []; - - for (var i = 0, il = trace.length; i < il; ++i) { - var row = trace[i]; - display.push((row[4] ? 'new ' : '') + row[3] + ' (' + row[0] + ':' + row[1] + ':' + row[2] + ')'); - } - - return display; -}; - - -exports.callStack = function (slice) { - - // http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi - - var v8 = Error.prepareStackTrace; - Error.prepareStackTrace = function (err, stack) { - - return stack; - }; - - var capture = {}; - Error.captureStackTrace(capture, arguments.callee); - var stack = capture.stack; - - Error.prepareStackTrace = v8; - - var trace = exports.formatStack(stack); - - if (slice) { - return trace.slice(slice); - } - - return trace; -}; - - -exports.displayStack = function (slice) { - - var trace = exports.callStack(slice === undefined ? 1 : slice + 1); - - return exports.formatTrace(trace); -}; - - -exports.abortThrow = false; - - -exports.abort = function (message, hideStack) { - - if (process.env.NODE_ENV === 'test' || exports.abortThrow === true) { - throw new Error(message || 'Unknown error'); - } - - var stack = ''; - if (!hideStack) { - stack = exports.displayStack(1).join('\n\t'); - } - console.log('ABORT: ' + message + '\n\t' + stack); - process.exit(1); -}; - - -exports.assert = function (condition /*, msg1, msg2, msg3 */) { - - if (condition) { - return; - } - - var msgs = Array.prototype.slice.call(arguments, 1); - msgs = msgs.map(function (msg) { - - return typeof msg === 'string' ? msg : msg instanceof Error ? msg.message : JSON.stringify(msg); - }); - throw new Error(msgs.join(' ') || 'Unknown error'); -}; - - -exports.loadDirModules = function (path, excludeFiles, target) { // target(filename, name, capName) - - var exclude = {}; - for (var i = 0, il = excludeFiles.length; i < il; ++i) { - exclude[excludeFiles[i] + '.js'] = true; - } - - var files = Fs.readdirSync(path); - for (i = 0, il = files.length; i < il; ++i) { - var filename = files[i]; - if (/\.js$/.test(filename) && - !exclude[filename]) { - - var name = filename.substr(0, filename.lastIndexOf('.')); - var capName = name.charAt(0).toUpperCase() + name.substr(1).toLowerCase(); - - if (typeof target !== 'function') { - target[capName] = require(path + '/' + name); - } - else { - target(path + '/' + name, name, capName); - } - } - } -}; - - -exports.rename = function (obj, from, to) { - - obj[to] = obj[from]; - delete obj[from]; -}; - - -exports.Timer = function () { - - this.reset(); -}; - - -exports.Timer.prototype.reset = function () { - - this.ts = Date.now(); -}; - - -exports.Timer.prototype.elapsed = function () { - - return Date.now() - this.ts; -}; - - -// Load and parse package.json process root or given directory - -exports.loadPackage = function (dir) { - - var result = {}; - var filepath = (dir || process.env.PWD) + '/package.json'; - if (Fs.existsSync(filepath)) { - try { - result = JSON.parse(Fs.readFileSync(filepath)); - } - catch (e) { } - } - - return result; -}; - - -// Escape string for Regex construction - -exports.escapeRegex = function (string) { - - // Escape ^$.*+-?=!:|\/()[]{}, - return string.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, '\\$&'); -}; - - -// Return an error as first argument of a callback - -exports.toss = function (condition /*, [message], next */) { - - var message = (arguments.length === 3 ? arguments[1] : ''); - var next = (arguments.length === 3 ? arguments[2] : arguments[1]); - - var err = (message instanceof Error ? message : (message ? new Error(message) : (condition instanceof Error ? condition : new Error()))); - - if (condition instanceof Error || - !condition) { - - return next(err); - } -}; - - -// Base64url (RFC 4648) encode - -exports.base64urlEncode = function (value) { - - return (new Buffer(value, 'binary')).toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); -}; - - -// Base64url (RFC 4648) decode - -exports.base64urlDecode = function (encoded) { - - if (encoded && - !encoded.match(/^[\w\-]*$/)) { - - return new Error('Invalid character'); - } - - try { - return (new Buffer(encoded.replace(/-/g, '+').replace(/:/g, '/'), 'base64')).toString('binary'); - } - catch (err) { - return err; - } -}; - - -// Escape attribute value for use in HTTP header - -exports.escapeHeaderAttribute = function (attribute) { - - // Allowed value characters: !#$%&'()*+,-./:;<=>?@[]^_`{|}~ and space, a-z, A-Z, 0-9, \, " - - exports.assert(attribute.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/), 'Bad attribute value (' + attribute + ')'); - - return attribute.replace(/\\/g, '\\\\').replace(/\"/g, '\\"'); // Escape quotes and slash -}; - - -exports.escapeHtml = function (string) { - - return Escape.escapeHtml(string); -}; - - -exports.escapeJavaScript = function (string) { - - return Escape.escapeJavaScript(string); -}; - - -/* -var event = { - timestamp: now.getTime(), - tags: ['tag'], - data: { some: 'data' } -}; -*/ - -exports.consoleFunc = console.log; - -exports.printEvent = function (event) { - - var pad = function (value) { - - return (value < 10 ? '0' : '') + value; - }; - - var now = new Date(event.timestamp); - var timestring = (now.getYear() - 100).toString() + - pad(now.getMonth() + 1) + - pad(now.getDate()) + - '/' + - pad(now.getHours()) + - pad(now.getMinutes()) + - pad(now.getSeconds()) + - '.' + - now.getMilliseconds(); - - var data = event.data; - if (typeof event.data !== 'string') { - try { - data = JSON.stringify(event.data); - } - catch (e) { - data = 'JSON Error: ' + e.message; - } - } - - var output = timestring + ', ' + event.tags[0] + ', ' + data; - exports.consoleFunc(output); -}; - - -exports.nextTick = function (callback) { - - return function () { - - var args = arguments; - process.nextTick(function () { - - callback.apply(null, args); - }); - }; -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json deleted file mode 100755 index e18f1485..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "hoek", - "description": "General purpose node utilities", - "version": "0.9.1", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [ - { - "name": "Van Nguyen", - "email": "the.gol.effect@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/spumko/hoek" - }, - "main": "index", - "keywords": [ - "utilities" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": {}, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/spumko/hoek/raw/master/LICENSE" - } - ], - "readme": "<a href=\"https://github.com/spumko\"><img src=\"https://raw.github.com/spumko/spumko/master/images/from.png\" align=\"right\" /></a>\r\n![hoek Logo](https://raw.github.com/spumko/hoek/master/images/hoek.png)\r\n\r\nGeneral purpose node utilities\r\n\r\n[![Build Status](https://secure.travis-ci.org/spumko/hoek.png)](http://travis-ci.org/spumko/hoek)\r\n\r\n# Table of Contents\r\n\r\n* [Introduction](#introduction \"Introduction\")\r\n* [Object](#object \"Object\")\r\n * [clone](#cloneobj \"clone\")\r\n * [merge](#mergetarget-source-isnulloverride-ismergearrays \"merge\")\r\n * [applyToDefaults](#applytodefaultsdefaults-options \"applyToDefaults\")\r\n * [unique](#uniquearray-key \"unique\")\r\n * [mapToObject](#maptoobjectarray-key \"mapToObject\")\r\n * [intersect](#intersectarray1-array2 \"intersect\")\r\n * [matchKeys](#matchkeysobj-keys \"matchKeys\")\r\n * [flatten](#flattenarray-target \"flatten\")\r\n * [removeKeys](#removekeysobject-keys \"removeKeys\")\r\n * [reach](#reachobj-chain \"reach\")\r\n * [inheritAsync](#inheritasyncself-obj-keys \"inheritAsync\")\r\n * [rename](#renameobj-from-to \"rename\")\r\n* [Timer](#timer \"Timer\")\r\n* [Binary Encoding/Decoding](#binary \"Binary Encoding/Decoding\")\r\n * [base64urlEncode](#binary64urlEncodevalue \"binary64urlEncode\")\r\n * [base64urlDecode](#binary64urlDecodevalue \"binary64urlDecode\")\r\n* [Escaping Characters](#escaped \"Escaping Characters\")\r\n * [escapeHtml](#escapeHtmlstring \"escapeHtml\")\r\n * [escapeHeaderAttribute](#escapeHeaderAttributeattribute \"escapeHeaderAttribute\")\r\n * [escapeRegex](#escapeRegexstring \"escapeRegex\")\r\n* [Errors](#errors \"Errors\")\r\n * [assert](#assertmessage \"assert\")\r\n * [abort](#abortmessage \"abort\")\r\n * [displayStack](#displayStackslice \"displayStack\")\r\n * [callStack](#callStackslice \"callStack\")\r\n * [toss](#tosscondition \"toss\")\r\n* [Load files](#load-files \"Load Files\")\r\n * [loadPackage](#loadPackagedir \"loadpackage\")\r\n * [loadDirModules](#loadDirModulespath-excludefiles-target \"loaddirmodules\")\r\n\r\n\r\n\r\n# Introduction\r\n\r\nThe *Hoek* general purpose node utilities library is used to aid in a variety of manners. It comes with useful methods for Arrays (clone, merge, applyToDefaults), Objects (removeKeys, copy), Asserting and more. \r\n\r\nFor example, to use Hoek to set configuration with default options:\r\n```javascript\r\nvar Hoek = require('hoek');\r\n\r\nvar default = {url : \"www.github.com\", port : \"8000\", debug : true}\r\n\r\nvar config = Hoek.applyToDefaults(default, {port : \"3000\", admin : true});\r\n\r\n// In this case, config would be { url: 'www.github.com', port: '3000', debug: true, admin: true }\r\n```\r\n\r\nUnder each of the sections (such as Array), there are subsections which correspond to Hoek methods. Each subsection will explain how to use the corresponding method. In each js excerpt below, the var Hoek = require('hoek') is omitted for brevity.\r\n\r\n## Object\r\n\r\nHoek provides several helpful methods for objects and arrays.\r\n\r\n### clone(obj)\r\n\r\nThis method is used to clone an object or an array. A *deep copy* is made (duplicates everything, including values that are objects). \r\n\r\n```javascript\r\n\r\nvar nestedObj = {\r\n w: /^something$/ig,\r\n x: {\r\n a: [1, 2, 3],\r\n b: 123456,\r\n c: new Date()\r\n },\r\n y: 'y',\r\n z: new Date()\r\n };\r\n\r\nvar copy = Hoek.clone(nestedObj);\r\n\r\ncopy.x.b = 100;\r\n\r\nconsole.log(copy.y) // results in 'y'\r\nconsole.log(nestedObj.x.b) // results in 123456\r\nconsole.log(copy.x.b) // results in 100\r\n```\r\n\r\n### merge(target, source, isNullOverride, isMergeArrays)\r\nisNullOverride, isMergeArrays default to true\r\n\r\nMerge all the properties of source into target, source wins in conflic, and by default null and undefined from source are applied\r\n\r\n\r\n```javascript\r\n\r\nvar target = {a: 1, b : 2}\r\nvar source = {a: 0, c: 5}\r\nvar source2 = {a: null, c: 5}\r\n\r\nvar targetArray = [1, 2, 3];\r\nvar sourceArray = [4, 5];\r\n\r\nvar newTarget = Hoek.merge(target, source); // results in {a: 0, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2); // results in {a: null, b: 2, c: 5}\r\nnewTarget = Hoek.merge(target, source2, false); // results in {a: 1, b: 2, c: 5}\r\n\r\nnewTarget = Hoek.merge(targetArray, sourceArray) // results in [1, 2, 3, 4, 5]\r\nnewTarget = Hoek.merge(targetArray, sourceArray, true, false) // results in [4, 5]\r\n\r\n\r\n\r\n\r\n```\r\n\r\n### applyToDefaults(defaults, options)\r\n\r\nApply options to a copy of the defaults\r\n\r\n```javascript\r\n\r\nvar defaults = {host: \"localhost\", port: 8000};\r\nvar options = {port: 8080};\r\n\r\nvar config = Hoek.applyToDefaults(defaults, options); // results in {host: \"localhost\", port: 8080};\r\n\r\n\r\n```\r\n\r\n### unique(array, key)\r\n\r\nRemove duplicate items from Array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 2, 3, 3, 4, 5, 6];\r\n\r\nvar newArray = Hoek.unique(array); // results in [1,2,3,4,5,6];\r\n\r\narray = [{id: 1}, {id: 1}, {id: 2}];\r\n\r\nnewArray = Hoek.unique(array, \"id\") // results in [{id: 1}, {id: 2}]\r\n\r\n```\r\n\r\n### mapToObject(array, key)\r\n\r\nConvert an Array into an Object\r\n\r\n```javascript\r\n\r\nvar array = [1,2,3];\r\nvar newObject = Hoek.mapToObject(array); // results in [{\"1\": true}, {\"2\": true}, {\"3\": true}]\r\n\r\narray = [{id: 1}, {id: 2}];\r\nnewObject = Hoek.mapToObject(array, \"id\") // results in [{\"id\": 1}, {\"id\": 2}]\r\n\r\n```\r\n### intersect(array1, array2)\r\n\r\nFind the common unique items in two arrays\r\n\r\n```javascript\r\n\r\nvar array1 = [1, 2, 3];\r\nvar array2 = [1, 4, 5];\r\n\r\nvar newArray = Hoek.intersect(array1, array2) // results in [1]\r\n\r\n```\r\n\r\n### matchKeys(obj, keys) \r\n\r\nFind which keys are present\r\n\r\n```javascript\r\n\r\nvar obj = {a: 1, b: 2, c: 3};\r\nvar keys = [\"a\", \"e\"];\r\n\r\nHoek.matchKeys(obj, keys) // returns [\"a\"]\r\n\r\n```\r\n\r\n### flatten(array, target)\r\n\r\nFlatten an array\r\n\r\n```javascript\r\n\r\nvar array = [1, 2, 3];\r\nvar target = [4, 5]; \r\n\r\nvar flattenedArray = Hoek.flatten(array, target) // results in [4, 5, 1, 2, 3];\r\n\r\n```\r\n\r\n### removeKeys(object, keys)\r\n\r\nRemove keys\r\n\r\n```javascript\r\n\r\nvar object = {a: 1, b: 2, c: 3, d: 4};\r\n\r\nvar keys = [\"a\", \"b\"];\r\n\r\nHoek.removeKeys(object, keys) // object is now {c: 3, d: 4}\r\n\r\n```\r\n\r\n### reach(obj, chain)\r\n\r\nConverts an object key chain string to reference\r\n\r\n```javascript\r\n\r\nvar chain = 'a.b.c';\r\nvar obj = {a : {b : { c : 1}}};\r\n\r\nHoek.reach(obj, chain) // returns 1\r\n\r\n```\r\n\r\n### inheritAsync(self, obj, keys) \r\n\r\nInherits a selected set of methods from an object, wrapping functions in asynchronous syntax and catching errors\r\n\r\n```javascript\r\n\r\nvar targetFunc = function () { };\r\n\r\nvar proto = {\r\n a: function () {\r\n return 'a!';\r\n },\r\n b: function () {\r\n return 'b!';\r\n },\r\n c: function () {\r\n throw new Error('c!');\r\n }\r\n };\r\n\r\nvar keys = ['a', 'c'];\r\n\r\nHoek.inheritAsync(targetFunc, proto, ['a', 'c']);\r\n\r\nvar target = new targetFunc();\r\n\r\ntarget.a(function(err, result){console.log(result)} // returns 'a!' \r\n\r\ntarget.c(function(err, result){console.log(result)} // returns undefined\r\n\r\ntarget.b(function(err, result){console.log(result)} // gives error: Object [object Object] has no method 'b'\r\n\r\n```\r\n\r\n### rename(obj, from, to)\r\n\r\nRename a key of an object\r\n\r\n```javascript\r\n\r\nvar obj = {a : 1, b : 2};\r\n\r\nHoek.rename(obj, \"a\", \"c\"); // obj is now {c : 1, b : 2}\r\n\r\n```\r\n\r\n\r\n# Timer\r\n\r\nA Timer object. Initializing a new timer object sets the ts to the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.\r\n\r\n```javascript\r\n\r\n\r\nexample : \r\n\r\n\r\nvar timerObj = new Hoek.Timer();\r\nconsole.log(\"Time is now: \" + timerObj.ts)\r\nconsole.log(\"Elapsed time from initialization: \" + timerObj.elapsed() + 'milliseconds')\r\n\r\n```\r\n\r\n# Binary Encoding/Decoding\r\n\r\n### base64urlEncode(value)\r\n\r\nEncodes value in Base64 or URL encoding\r\n\r\n### base64urlDecode(value)\r\n\r\nDecodes data in Base64 or URL encoding.\r\n# Escaping Characters\r\n\r\nHoek provides convenient methods for escaping html characters. The escaped characters are as followed:\r\n\r\n```javascript\r\n\r\ninternals.htmlEscaped = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n};\r\n\r\n```\r\n\r\n### escapeHtml(string)\r\n\r\n```javascript\r\n\r\nvar string = '<html> hey </html>';\r\nvar escapedString = Hoek.escapeHtml(string); // returns <html> hey </html>\r\n\r\n```\r\n\r\n### escapeHeaderAttribute(attribute)\r\n\r\nEscape attribute value for use in HTTP header\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeHeaderAttribute('I said \"go w\\\\o me\"'); //returns I said \\\"go w\\\\o me\\\"\r\n\r\n\r\n```\r\n\r\n\r\n### escapeRegex(string)\r\n\r\nEscape string for Regex construction\r\n\r\n```javascript\r\n\r\nvar a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\\\/`\"(>)[<]d{}s,'); // returns 4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`\"\\(>\\)\\[<\\]d\\{\\}s\\,\r\n\r\n\r\n\r\n```\r\n\r\n# Errors\r\n\r\n### assert(message)\r\n\r\n```javascript\r\n\r\nvar a = 1, b =2;\r\n\r\nHoek.assert(a === b, 'a should equal b'); // ABORT: a should equal b\r\n\r\n```\r\n\r\n### abort(message)\r\n\r\nFirst checks if process.env.NODE_ENV === 'test', and if so, throws error message. Otherwise,\r\ndisplays most recent stack and then exits process.\r\n\r\n\r\n\r\n### displayStack(slice)\r\n\r\nDisplays the trace stack\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.displayStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ 'null (/Users/user/Desktop/hoek/test.js:4:18)',\r\n 'Module._compile (module.js:449:26)',\r\n 'Module._extensions..js (module.js:467:10)',\r\n 'Module.load (module.js:356:32)',\r\n 'Module._load (module.js:312:12)',\r\n 'Module.runMain (module.js:492:10)',\r\n 'startup.processNextTick.process._tickCallback (node.js:244:9)' ]\r\n\r\n```\r\n\r\n### callStack(slice)\r\n\r\nReturns a trace stack array.\r\n\r\n```javascript\r\n\r\nvar stack = Hoek.callStack();\r\nconsole.log(stack) // returns something like:\r\n\r\n[ [ '/Users/user/Desktop/hoek/test.js', 4, 18, null, false ],\r\n [ 'module.js', 449, 26, 'Module._compile', false ],\r\n [ 'module.js', 467, 10, 'Module._extensions..js', false ],\r\n [ 'module.js', 356, 32, 'Module.load', false ],\r\n [ 'module.js', 312, 12, 'Module._load', false ],\r\n [ 'module.js', 492, 10, 'Module.runMain', false ],\r\n [ 'node.js',\r\n 244,\r\n 9,\r\n 'startup.processNextTick.process._tickCallback',\r\n false ] ]\r\n\r\n\r\n```\r\n\r\n### toss(condition)\r\n\r\ntoss(condition /*, [message], callback */)\r\n\r\nReturn an error as first argument of a callback\r\n\r\n\r\n# Load Files\r\n\r\n### loadPackage(dir)\r\n\r\nLoad and parse package.json process root or given directory\r\n\r\n```javascript\r\n\r\nvar pack = Hoek.loadPackage(); // pack.name === 'hoek'\r\n\r\n```\r\n\r\n### loadDirModules(path, excludeFiles, target) \r\n\r\nLoads modules from a given path; option to exclude files (array).\r\n\r\n\r\n\r\n\r\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/spumko/hoek/issues" - }, - "homepage": "https://github.com/spumko/hoek", - "_id": "hoek@0.9.1", - "_from": "hoek@0.9.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js deleted file mode 100644 index 4dddd77d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js +++ /dev/null @@ -1,86 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hoek', function () { - - describe('#escapeJavaScript', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeJavaScript('<script>alert(1)</script>'); - expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e'); - done(); - }); - - it('encodes \' characters', function (done) { - - var encoded = Hoek.escapeJavaScript('something(\'param\')'); - expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29'); - done(); - }); - - it('encodes large unicode characters with the correct padding', function (done) { - - var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('\\u0500\\u1000'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeJavaScript(null); - expect(encoded).to.equal(''); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeHtml('<script>alert(1)</script>'); - expect(encoded).to.equal('<script>alert(1)</script>'); - done(); - }); - - it('encodes < and > as named characters', function (done) { - - var encoded = Hoek.escapeHtml('<script><>'); - expect(encoded).to.equal('<script><>'); - done(); - }); - - it('encodes large unicode characters', function (done) { - - var encoded = Hoek.escapeHtml(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('ǴϨ'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeHtml(null); - expect(encoded).to.equal(''); - done(); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js deleted file mode 100755 index c40e3ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js +++ /dev/null @@ -1,1078 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hoek', function () { - - var nestedObj = { - v: [7,8,9], - w: /^something$/igm, - x: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - d: /hi/igm, - e: /hello/ - }, - y: 'y', - z: new Date() - }; - - var dupsArray = [nestedObj, { z: 'z' }, nestedObj]; - var reducedDupsArray = [nestedObj, { z: 'z' }]; - - describe('#clone', function () { - - it('should clone a nested object', function (done) { - - var a = nestedObj; - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - expect(a.z.getTime()).to.equal(b.z.getTime()); - done(); - }); - - it('should clone a null object', function (done) { - - var b = Hoek.clone(null); - - expect(b).to.equal(null); - done(); - }); - - it('should not convert undefined properties to null', function (done) { - - var obj = { something: undefined }; - var b = Hoek.clone(obj); - - expect(typeof b.something).to.equal('undefined'); - done(); - }); - - it('should not throw on circular reference', function (done) { - - var a = {}; - a.x = a; - - var test = (function () { - - var b = Hoek.clone(a); - }); - - expect(test).to.not.throw(); - done(); - }); - - it('should properly clone circular reference', function (done) { - - var x = { - 'z': new Date() - }; - x.y = x; - - var b = Hoek.clone(x); - expect(Object.keys(b.y)).to.deep.equal(Object.keys(x)) - expect(b.z).to.not.equal(x.z); - expect(b.y).to.not.equal(x.y); - expect(b.y.z).to.not.equal(x.y.z); - expect(b.y).to.equal(b); - expect(b.y.y.y.y).to.equal(b); - done(); - }); - - it('should properly clone deeply nested object', function (done) { - - var a = { - x: { - y: { - a: [1, 2, 3], - b: 123456, - c: new Date(), - d: /hi/igm, - e: /hello/ - }, - } - }; - - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - expect(a.x.y.c.getTime()).to.equal(b.x.y.c.getTime()); - done(); - }); - - it('should properly clone arrays', function (done) { - - var a = [1,2,3]; - - var b = Hoek.clone(a); - - expect(a).to.deep.equal(b); - done(); - }); - - it('should perform actual copy for shallow keys (no pass by reference)', function (done) { - - var x = Hoek.clone(nestedObj); - var y = Hoek.clone(nestedObj); - - // Date - expect(x.z).to.not.equal(nestedObj.z); - expect(x.z).to.not.equal(y.z); - - // Regex - expect(x.w).to.not.equal(nestedObj.w); - expect(x.w).to.not.equal(y.w); - - // Array - expect(x.v).to.not.equal(nestedObj.v); - expect(x.v).to.not.equal(y.v); - - // Immutable(s) - x.y = 5; - expect(x.y).to.not.equal(nestedObj.y); - expect(x.y).to.not.equal(y.y); - - done(); - }); - - it('should perform actual copy for deep keys (no pass by reference)', function (done) { - - var x = Hoek.clone(nestedObj); - var y = Hoek.clone(nestedObj); - - expect(x.x.c).to.not.equal(nestedObj.x.c); - expect(x.x.c).to.not.equal(y.x.c); - - expect(x.x.c.getTime()).to.equal(nestedObj.x.c.getTime()); - expect(x.x.c.getTime()).to.equal(y.x.c.getTime()); - done(); - }); - - it('copies functions with properties', function (done) { - - var a = { - x: function () { return 1; }, - y: {} - }; - a.x.z = 'string in function'; - a.x.v = function () { return 2; }; - a.y.u = a.x; - - var b = Hoek.clone(a); - expect(b.x()).to.equal(1); - expect(b.x.v()).to.equal(2); - expect(b.y.u).to.equal(b.x); - expect(b.x.z).to.equal('string in function'); - done(); - }); - - it('should copy a buffer', function(done){ - var tls = { - key: new Buffer([1,2,3,4,5]), - cert: new Buffer([1,2,3,4,5,6,10]) - } - - copiedTls = Hoek.clone(tls); - expect(Buffer.isBuffer(copiedTls.key)).to.equal(true); - expect(JSON.stringify(copiedTls.key)).to.equal(JSON.stringify(tls.key)) - expect(Buffer.isBuffer(copiedTls.cert)).to.equal(true); - expect(JSON.stringify(copiedTls.cert)).to.equal(JSON.stringify(tls.cert)) - done(); - }); - }); - - describe('#merge', function () { - - it('does not throw if source is null', function (done) { - - var a = {}; - var b = null; - var c = null; - - expect(function () { - - c = Hoek.merge(a, b); - }).to.not.throw(); - - expect(c).to.equal(a); - done(); - }); - - it('does not throw if source is undefined', function (done) { - - var a = {}; - var b = undefined; - var c = null; - - expect(function () { - - c = Hoek.merge(a, b); - }).to.not.throw(); - - expect(c).to.equal(a); - done(); - }); - - it('throws if source is not an object', function (done) { - - expect(function () { - - var a = {}; - var b = 0; - - Hoek.merge(a, b); - }).to.throw('Invalid source value: must be null, undefined, or an object'); - done(); - }); - - it('throws if target is not an object', function (done) { - - expect(function () { - - var a = 0; - var b = {}; - - Hoek.merge(a, b); - }).to.throw('Invalid target value: must be an object'); - done(); - }); - - it('throws if target is not an array and source is', function (done) { - - expect(function () { - - var a = {}; - var b = [1, 2]; - - Hoek.merge(a, b); - }).to.throw('Cannot merge array onto an object'); - done(); - }); - - it('returns the same object when merging arrays', function (done) { - - var a = []; - var b = [1, 2]; - - expect(Hoek.merge(a, b)).to.equal(a); - done(); - }); - - it('should combine an empty object with a non-empty object', function (done) { - - var a = {}; - var b = nestedObj; - - var c = Hoek.merge(a, b); - expect(a).to.deep.equal(b); - expect(c).to.deep.equal(b); - done(); - }); - - it('should override values in target', function (done) { - - var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' }; - var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' }; - - var c = Hoek.merge(a, b); - expect(c.x).to.equal(null); - expect(c.y).to.equal(2); - expect(c.z).to.equal(4); - expect(c.v).to.equal(0); - expect(c.m).to.equal('123'); - expect(c.t).to.deep.equal({ u: 6 }); - done(); - }); - - it('should override values in target (flip)', function (done) { - - var a = { x: 1, y: 2, z: 3, v: 5, t: 'test', m: 'abc' }; - var b = { x: null, z: 4, v: 0, t: { u: 6 }, m: '123' }; - - var d = Hoek.merge(b, a); - expect(d.x).to.equal(1); - expect(d.y).to.equal(2); - expect(d.z).to.equal(3); - expect(d.v).to.equal(5); - expect(d.m).to.equal('abc'); - expect(d.t).to.deep.equal('test'); - done(); - }); - }); - - describe('#applyToDefaults', function () { - - var defaults = { - a: 1, - b: 2, - c: { - d: 3, - e: [5, 6] - }, - f: 6, - g: 'test' - }; - - it('should return null if options is false', function (done) { - - var result = Hoek.applyToDefaults(defaults, false); - expect(result).to.equal(null); - done(); - }); - - it('should return a copy of defaults if options is true', function (done) { - - var result = Hoek.applyToDefaults(defaults, true); - expect(result).to.deep.equal(result); - done(); - }); - - it('should apply object to defaults', function (done) { - - var obj = { - a: null, - c: { - e: [4] - }, - f: 0, - g: { - h: 5 - } - }; - - var result = Hoek.applyToDefaults(defaults, obj); - expect(result.c.e).to.deep.equal([4]); - expect(result.a).to.equal(1); - expect(result.b).to.equal(2); - expect(result.f).to.equal(0); - expect(result.g).to.deep.equal({ h: 5 }); - done(); - }); - }); - - describe('#unique', function () { - - it('should ensure uniqueness within array of objects based on subkey', function (done) { - - var a = Hoek.unique(dupsArray, 'x'); - expect(a).to.deep.equal(reducedDupsArray); - done(); - }); - - it('removes duplicated without key', function (done) { - - expect(Hoek.unique([1, 2, 3, 4, 2, 1, 5])).to.deep.equal([1, 2, 3, 4, 5]); - done(); - }); - }); - - describe('#mapToObject', function () { - - it('should return null on null array', function (done) { - - var a = Hoek.mapToObject(null); - expect(a).to.equal(null); - done(); - }); - - it('should convert basic array to existential object', function (done) { - - var keys = [1, 2, 3, 4]; - var a = Hoek.mapToObject(keys); - for (var i in keys) { - expect(a[keys[i]]).to.equal(true); - } - done(); - }); - - it('should convert array of objects to existential object', function (done) { - - var keys = [{ x: 1 }, { x: 2 }, { x: 3 }]; - var subkey = 'x'; - var a = Hoek.mapToObject(keys, subkey); - for (var i in keys) { - expect(a[keys[i][subkey]]).to.equal(true); - } - done(); - }); - }); - - describe('#intersect', function () { - - it('should return the common objects of two arrays', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(array1, array2); - expect(common.length).to.equal(2); - done(); - }); - - it('should return just the first common object of two arrays', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(array1, array2, true); - expect(common).to.equal(5); - done(); - }); - - it('should return an empty array if either input is null', function (done) { - - expect(Hoek.intersect([1], null).length).to.equal(0); - expect(Hoek.intersect(null, [1]).length).to.equal(0); - done(); - }); - - it('should return the common objects of object and array', function (done) { - - var array1 = [1, 2, 3, 4, 4, 5, 5]; - var array2 = [5, 4, 5, 6, 7]; - var common = Hoek.intersect(Hoek.mapToObject(array1), array2); - expect(common.length).to.equal(2); - done(); - }); - }); - - describe('#matchKeys', function () { - - it('should match the existing object keys', function (done) { - - var obj = { - a: 1, - b: 2, - c: 3, - d: null - }; - - expect(Hoek.matchKeys(obj, ['b', 'c', 'd', 'e'])).to.deep.equal(['b', 'c', 'd']); - done(); - }); - }); - - describe('#flatten', function () { - - it('should return a flat array', function (done) { - - var result = Hoek.flatten([1, 2, [3, 4, [5, 6], [7], 8], [9], [10, [11, 12]], 13]); - expect(result.length).to.equal(13); - expect(result).to.deep.equal([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]); - done(); - }); - }); - - describe('#removeKeys', function () { - - var objWithHiddenKeys = { - location: { - name: 'San Bruno' - }, - company: { - name: '@WalmartLabs' - } - }; - - it('should delete params with definition\'s hide set to true', function (done) { - - var a = Hoek.removeKeys(objWithHiddenKeys, ['location']); - expect(objWithHiddenKeys.location).to.not.exist; - expect(objWithHiddenKeys.company).to.exist; - done(); - }); - }); - - describe('#reach', function () { - - var obj = { - a: { - b: { - c: { - d: 1, - e: 2 - }, - f: 'hello' - }, - g: { - h: 3 - } - }, - i: function () { } - }; - - it('returns a valid member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d')).to.equal(1); - done(); - }); - - it('returns null on null object', function (done) { - - expect(Hoek.reach(null, 'a.b.c.d')).to.not.exist; - done(); - }); - - it('returns null on missing member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d.x')).to.not.exist; - done(); - }); - - it('returns null on invalid member', function (done) { - - expect(Hoek.reach(obj, 'a.b.c.d-.x')).to.not.exist; - done(); - }); - - it('returns function member', function (done) { - - expect(typeof Hoek.reach(obj, 'i')).to.equal('function'); - done(); - }); - }); - - describe('#inheritAsync', function () { - - it('should inherit selected methods and wrap in async call', function (done) { - - var proto = { - a: function () { - return 'a!'; - }, - b: function () { - return 'b!'; - }, - c: function () { - throw new Error('c!'); - } - }; - - var targetFunc = function () { }; - targetFunc.prototype.c = function () { - - return 'oops'; - }; - - Hoek.inheritAsync(targetFunc, proto, ['a', 'c']); - var target = new targetFunc(); - - expect(typeof target.a).to.equal('function'); - expect(typeof target.c).to.equal('function'); - expect(target.b).to.not.exist; - - target.a(function (err, result) { - - expect(err).to.not.exist; - expect(result).to.equal('a!'); - - target.c(function (err, result) { - - expect(result).to.not.exist; - expect(err.message).to.equal('c!'); - done(); - }); - }); - }); - }); - - describe('#callStack', function () { - - it('should return the full call stack', function (done) { - - var stack = Hoek.callStack(); - expect(stack[0][0]).to.contain('index.js'); - expect(stack[0][2]).to.equal(30); - done(); - }); - }); - - describe('#displayStack ', function () { - - it('should return the full call stack for display', function (done) { - - var stack = Hoek.displayStack(); - expect(stack[0]).to.contain('test/index.js:'); - done(); - }); - - it('should include constructor functions correctly', function (done) { - - var Something = function (next) { - - next(); - }; - - var something = new Something(function () { - - var stack = Hoek.displayStack(); - expect(stack[1]).to.contain('new Something'); - done(); - }); - }); - }); - - describe('#abort', function () { - - it('should exit process when not in test mode', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - - process.env.NODE_ENV = 'nottatest'; - process.stdout.write = function () { }; - process.exit = function (state) { - - process.exit = exit; - process.env.NODE_ENV = env; - process.stdout.write = write; - - expect(state).to.equal(1); - done(); - }; - - Hoek.abort('Boom'); - }); - - it('should throw when not in test mode and abortThrow is true', function (done) { - - var env = process.env.NODE_ENV; - process.env.NODE_ENV = 'nottatest'; - Hoek.abortThrow = true; - - var fn = function () { - - Hoek.abort('my error message'); - }; - - expect(fn).to.throw('my error message'); - Hoek.abortThrow = false; - process.env.NODE_ENV = env; - - done(); - }); - - - it('should respect hideStack argument', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - var output = ''; - - process.exit = function () { }; - process.env.NODE_ENV = ''; - process.stdout.write = function (message) { - - output = message; - }; - - Hoek.abort('my error message', true); - - process.env.NODE_ENV = env; - process.stdout.write = write; - process.exit = exit; - - expect(output).to.equal('ABORT: my error message\n\t\n'); - - done(); - }); - - it('should default to showing stack', function (done) { - - var env = process.env.NODE_ENV; - var write = process.stdout.write; - var exit = process.exit; - var output = ''; - - process.exit = function () { }; - process.env.NODE_ENV = ''; - process.stdout.write = function (message) { - - output = message; - }; - - Hoek.abort('my error message'); - - process.env.NODE_ENV = env; - process.stdout.write = write; - process.exit = exit; - - expect(output).to.contain('index.js'); - - done(); - }); - }); - - describe('#assert', function () { - - it('should throw an Error when using assert in a test', function (done) { - - var fn = function () { - - Hoek.assert(false, 'my error message'); - }; - - expect(fn).to.throw('my error message'); - done(); - }); - - it('should throw an Error when using assert in a test with no message', function (done) { - - var fn = function () { - - Hoek.assert(false); - }; - - expect(fn).to.throw('Unknown error'); - done(); - }); - - it('should throw an Error when using assert in a test with multipart message', function (done) { - - var fn = function () { - - Hoek.assert(false, 'This', 'is', 'my message'); - }; - - expect(fn).to.throw('This is my message'); - done(); - }); - - it('should throw an Error when using assert in a test with object message', function (done) { - - var fn = function () { - - Hoek.assert(false, 'This', 'is', { spinal: 'tap' }); - }; - - expect(fn).to.throw('This is {"spinal":"tap"}'); - done(); - }); - - it('should throw an Error when using assert in a test with error object message', function (done) { - - var fn = function () { - - Hoek.assert(false, new Error('This is spinal tap')); - }; - - expect(fn).to.throw('This is spinal tap'); - done(); - }); - }); - - describe('#loadDirModules', function () { - - it('should load modules from directory', function (done) { - - var target = {}; - Hoek.loadDirModules(__dirname + '/modules', ['test2'], target); - expect(target.Test1.x).to.equal(1); - expect(target.Test2).to.not.exist; - expect(target.Test3.z).to.equal(3); - done(); - }); - - it('should list modules from directory into function', function (done) { - - var target = {}; - Hoek.loadDirModules(__dirname + '/modules', ['test2'], function (path, name, capName) { - - target[name] = capName; - }); - - expect(target.test1).to.equal('Test1'); - expect(target.test2).to.not.exist; - expect(target.test3).to.equal('Test3'); - done(); - }); - }); - - describe('#rename', function () { - - it('should rename object key', function (done) { - - var a = { b: 'c' }; - Hoek.rename(a, 'b', 'x'); - expect(a.b).to.not.exist; - expect(a.x).to.equal('c'); - done(); - }); - }); - - describe('Timer', function () { - - it('should return time elapsed', function (done) { - - var timer = new Hoek.Timer(); - setTimeout(function () { - - expect(timer.elapsed()).to.be.above(9); - done(); - }, 12); - }); - }); - - describe('#loadPackage', function () { - - it('should', function (done) { - - var pack = Hoek.loadPackage(); - expect(pack.name).to.equal('hoek'); - done(); - }); - }); - - describe('#escapeRegex', function () { - - it('should escape all special regular expression characters', function (done) { - - var a = Hoek.escapeRegex('4^f$s.4*5+-_?%=#!:@|~\\/`"(>)[<]d{}s,'); - expect(a).to.equal('4\\^f\\$s\\.4\\*5\\+\\-_\\?%\\=#\\!\\:@\\|~\\\\\\/`"\\(>\\)\\[<\\]d\\{\\}s\\,'); - done(); - }); - }); - - describe('#toss', function () { - - it('should call callback with new error', function (done) { - - var callback = function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('bug'); - done(); - }; - - Hoek.toss(true, 'feature', callback); - Hoek.toss(false, 'bug', callback); - }); - - it('should call callback with new error and no message', function (done) { - - Hoek.toss(false, function (err) { - - expect(err).to.exist; - expect(err.message).to.equal(''); - done(); - }); - }); - - it('should call callback with error condition', function (done) { - - Hoek.toss(new Error('boom'), function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - - it('should call callback with new error using message with error condition', function (done) { - - Hoek.toss(new Error('ka'), 'boom', function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - - it('should call callback with new error using passed error with error condition', function (done) { - - Hoek.toss(new Error('ka'), new Error('boom'), function (err) { - - expect(err).to.exist; - expect(err.message).to.equal('boom'); - done(); - }); - }); - }); - - describe('Base64Url', function () { - - var base64str = 'AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w'; - var str = unescape('%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29*+%2C-./0123456789%3A%3B%3C%3D%3E%3F@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF'); - - describe('#base64urlEncode', function () { - - it('should base64 URL-safe a string', function (done) { - - expect(Hoek.base64urlEncode(str)).to.equal(base64str); - done(); - }); - }); - - describe('#base64urlDecode', function () { - - it('should un-base64 URL-safe a string', function (done) { - - expect(Hoek.base64urlDecode(base64str)).to.equal(str); - done(); - }); - - it('should return error on undefined input', function (done) { - - expect(Hoek.base64urlDecode().message).to.exist; - done(); - }); - - it('should return error on invalid input', function (done) { - - expect(Hoek.base64urlDecode('*').message).to.exist; - done(); - }); - }); - }); - - describe('#escapeHeaderAttribute', function () { - - it('should not alter ascii values', function (done) { - - var a = Hoek.escapeHeaderAttribute('My Value'); - expect(a).to.equal('My Value'); - done(); - }); - - it('should escape all special HTTP header attribute characters', function (done) { - - var a = Hoek.escapeHeaderAttribute('I said go!!!#"' + String.fromCharCode(92)); - expect(a).to.equal('I said go!!!#\\"\\\\'); - done(); - }); - - it('should throw on large unicode characters', function (done) { - - var fn = function () { - - Hoek.escapeHeaderAttribute('this is a test' + String.fromCharCode(500) + String.fromCharCode(300)); - }; - - expect(fn).to.throw(Error); - done(); - }); - - it('should throw on CRLF to prevent response splitting', function (done) { - - var fn = function () { - - Hoek.escapeHeaderAttribute('this is a test\r\n'); - }; - - expect(fn).to.throw(Error); - done(); - }); - }); - - describe('#escapeHtml', function () { - - it('should escape all special HTML characters', function (done) { - - var a = Hoek.escapeHtml('&<>"\'`'); - expect(a).to.equal('&<>"'`'); - done(); - }); - - it('should return empty string on falsy input', function (done) { - - var a = Hoek.escapeHtml(''); - expect(a).to.equal(''); - done(); - }); - - it('should return unchanged string on no reserved input', function (done) { - - var a = Hoek.escapeHtml('abc'); - expect(a).to.equal('abc'); - done(); - }); - }); - - describe('#printEvent', function () { - - it('outputs event as string', function (done) { - - var event = { - timestamp: (new Date(2013, 1, 1, 6, 30, 45, 123)).getTime(), - tags: ['a', 'b', 'c'], - data: { some: 'data' } - }; - - Hoek.consoleFunc = function (string) { - - Hoek.consoleFunc = console.log; - expect(string).to.equal('130201/063045.123, a, {"some":"data"}'); - done(); - }; - - Hoek.printEvent(event); - }); - - it('outputs JSON error', function (done) { - - var event = { - timestamp: (new Date(2013, 1, 1, 6, 30, 45, 123)).getTime(), - tags: ['a', 'b', 'c'], - data: { some: 'data' } - }; - - event.data.a = event.data; - - Hoek.consoleFunc = function (string) { - - Hoek.consoleFunc = console.log; - expect(string).to.equal('130201/063045.123, a, JSON Error: Converting circular structure to JSON'); - done(); - }; - - Hoek.printEvent(event); - }); - }); - - describe('#nextTick', function () { - - it('calls the provided callback on nextTick', function (done) { - - var a = 0; - - var inc = function (step, next) { - - a += step; - next(); - }; - - var ticked = Hoek.nextTick(inc); - - ticked(5, function () { - - expect(a).to.equal(6); - done(); - }); - - expect(a).to.equal(0); - inc(1, function () { - - expect(a).to.equal(1); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js deleted file mode 100755 index 3f41e601..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js +++ /dev/null @@ -1 +0,0 @@ -exports.x = 1; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js deleted file mode 100755 index 38556b27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js +++ /dev/null @@ -1 +0,0 @@ -exports.y = 2; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js deleted file mode 100755 index 436b860b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js +++ /dev/null @@ -1 +0,0 @@ -exports.z = 3; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore deleted file mode 100644 index 77ba16cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE deleted file mode 100755 index e699a7bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2012-2013, Eran Hammer. -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 Eran Hammer 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 ERAN HAMMER 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile deleted file mode 100755 index 9e7138c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -test: - @./node_modules/.bin/lab -test-cov: - @./node_modules/.bin/lab -r threshold -t 100 -test-cov-html: - @./node_modules/.bin/lab -r html -o coverage.html -complexity: - @./node_modules/.bin/cr -o complexity.md -f markdown lib - -.PHONY: test test-cov test-cov-html complexity - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md deleted file mode 100755 index 98a6e025..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# sntp - -An SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time -along with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset -to the local time. - -[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp) - -# Usage - -```javascript -var Sntp = require('sntp'); - -// All options are optional - -var options = { - host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org - port: 123, // Defaults to 123 (NTP) - resolveReference: true, // Default to false (not resolving) - timeout: 1000 // Defaults to zero (no timeout) -}; - -// Request server time - -Sntp.time(options, function (err, time) { - - if (err) { - console.log('Failed: ' + err.message); - process.exit(1); - } - - console.log('Local clock is off by: ' + time.t + ' milliseconds'); - process.exit(0); -}); -``` - -If an application needs to maintain continuous time synchronization, the module provides a stateful method for -querying the current offset only when the last one is too old (defaults to daily). - -```javascript -// Request offset once - -Sntp.offset(function (err, offset) { - - console.log(offset); // New (served fresh) - - // Request offset again - - Sntp.offset(function (err, offset) { - - console.log(offset); // Identical (served from cache) - }); -}); -``` - -To set a background offset refresh, start the interval and use the provided now() method. If for any reason the -client fails to obtain an up-to-date offset, the current system clock is used. - -```javascript -var before = Sntp.now(); // System time without offset - -Sntp.start(function () { - - var now = Sntp.now(); // With offset - Sntp.stop(); -}); -``` - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js deleted file mode 100755 index 0303f6dc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js +++ /dev/null @@ -1,16 +0,0 @@ -var Sntp = require('../lib'); - -// Request offset once - -Sntp.offset(function (err, offset) { - - console.log(offset); // New (served fresh) - - // Request offset again - - Sntp.offset(function (err, offset) { - - console.log(offset); // Identical (served from cache) - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js deleted file mode 100755 index bd70d0e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js +++ /dev/null @@ -1,25 +0,0 @@ -var Sntp = require('../lib'); - -// All options are optional - -var options = { - host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org - port: 123, // Defaults to 123 (NTP) - resolveReference: true, // Default to false (not resolving) - timeout: 1000 // Defaults to zero (no timeout) -}; - -// Request server time - -Sntp.time(options, function (err, time) { - - if (err) { - console.log('Failed: ' + err.message); - process.exit(1); - } - - console.log(time); - console.log('Local clock is off by: ' + time.t + ' milliseconds'); - process.exit(0); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js deleted file mode 100755 index 4cc88b35..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js deleted file mode 100755 index e492cd93..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js +++ /dev/null @@ -1,409 +0,0 @@ -// Load modules - -var Dgram = require('dgram'); -var Dns = require('dns'); -var Hoek = require('hoek'); - - -// Declare internals - -var internals = {}; - - -exports.time = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - var settings = Hoek.clone(options); - settings.host = settings.host || 'pool.ntp.org'; - settings.port = settings.port || 123; - settings.resolveReference = settings.resolveReference || false; - - // Declare variables used by callback - - var timeoutId = 0; - var sent = 0; - - // Ensure callback is only called once - - var isFinished = false; - var finish = function (err, result) { - - if (timeoutId) { - clearTimeout(timeoutId); - timeoutId = 0; - } - - if (!isFinished) { - isFinished = true; - socket.removeAllListeners(); - socket.close(); - return callback(err, result); - } - }; - - // Create UDP socket - - var socket = Dgram.createSocket('udp4'); - - socket.once('error', function (err) { - - return finish(err); - }); - - // Listen to incoming messages - - socket.on('message', function (buffer, rinfo) { - - var received = Date.now(); - - var message = new internals.NtpMessage(buffer); - if (!message.isValid) { - return finish(new Error('Invalid server response'), message); - } - - if (message.originateTimestamp !== sent) { - return finish(new Error('Wrong originate timestamp'), message); - } - - // Timestamp Name ID When Generated - // ------------------------------------------------------------ - // Originate Timestamp T1 time request sent by client - // Receive Timestamp T2 time request received by server - // Transmit Timestamp T3 time reply sent by server - // Destination Timestamp T4 time reply received by client - // - // The roundtrip delay d and system clock offset t are defined as: - // - // d = (T4 - T1) - (T3 - T2) t = ((T2 - T1) + (T3 - T4)) / 2 - - var T1 = message.originateTimestamp; - var T2 = message.receiveTimestamp; - var T3 = message.transmitTimestamp; - var T4 = received; - - message.d = (T4 - T1) - (T3 - T2); - message.t = ((T2 - T1) + (T3 - T4)) / 2; - message.receivedLocally = received; - - if (!settings.resolveReference || - message.stratum !== 'secondary') { - - return finish(null, message); - } - - // Resolve reference IP address - - Dns.reverse(message.referenceId, function (err, domains) { - - if (!err) { - message.referenceHost = domains[0]; - } - - return finish(null, message); - }); - }); - - // Set timeout - - if (settings.timeout) { - timeoutId = setTimeout(function () { - - timeoutId = 0; - return finish(new Error('Timeout')); - }, settings.timeout); - } - - // Construct NTP message - - var message = new Buffer(48); - for (var i = 0; i < 48; i++) { // Zero message - message[i] = 0; - } - - message[0] = (0 << 6) + (4 << 3) + (3 << 0) // Set version number to 4 and Mode to 3 (client) - sent = Date.now(); - internals.fromMsecs(sent, message, 40); // Set transmit timestamp (returns as originate) - - // Send NTP request - - socket.send(message, 0, message.length, settings.port, settings.host, function (err, bytes) { - - if (err || - bytes !== 48) { - - return finish(err || new Error('Could not send entire message')); - } - }); -}; - - -internals.NtpMessage = function (buffer) { - - this.isValid = false; - - // Validate - - if (buffer.length !== 48) { - return; - } - - // Leap indicator - - var li = (buffer[0] >> 6); - switch (li) { - case 0: this.leapIndicator = 'no-warning'; break; - case 1: this.leapIndicator = 'last-minute-61'; break; - case 2: this.leapIndicator = 'last-minute-59'; break; - case 3: this.leapIndicator = 'alarm'; break; - } - - // Version - - var vn = ((buffer[0] & 0x38) >> 3); - this.version = vn; - - // Mode - - var mode = (buffer[0] & 0x7); - switch (mode) { - case 1: this.mode = 'symmetric-active'; break; - case 2: this.mode = 'symmetric-passive'; break; - case 3: this.mode = 'client'; break; - case 4: this.mode = 'server'; break; - case 5: this.mode = 'broadcast'; break; - case 0: - case 6: - case 7: this.mode = 'reserved'; break; - } - - // Stratum - - var stratum = buffer[1]; - if (stratum === 0) { - this.stratum = 'death'; - } - else if (stratum === 1) { - this.stratum = 'primary'; - } - else if (stratum <= 15) { - this.stratum = 'secondary'; - } - else { - this.stratum = 'reserved'; - } - - // Poll interval (msec) - - this.pollInterval = Math.round(Math.pow(2, buffer[2])) * 1000; - - // Precision (msecs) - - this.precision = Math.pow(2, buffer[3]) * 1000; - - // Root delay (msecs) - - var rootDelay = 256 * (256 * (256 * buffer[4] + buffer[5]) + buffer[6]) + buffer[7]; - this.rootDelay = 1000 * (rootDelay / 0x10000); - - // Root dispersion (msecs) - - this.rootDispersion = ((buffer[8] << 8) + buffer[9] + ((buffer[10] << 8) + buffer[11]) / Math.pow(2, 16)) * 1000; - - // Reference identifier - - this.referenceId = ''; - switch (this.stratum) { - case 'death': - case 'primary': - this.referenceId = String.fromCharCode(buffer[12]) + String.fromCharCode(buffer[13]) + String.fromCharCode(buffer[14]) + String.fromCharCode(buffer[15]); - break; - case 'secondary': - this.referenceId = '' + buffer[12] + '.' + buffer[13] + '.' + buffer[14] + '.' + buffer[15]; - break; - } - - // Reference timestamp - - this.referenceTimestamp = internals.toMsecs(buffer, 16); - - // Originate timestamp - - this.originateTimestamp = internals.toMsecs(buffer, 24); - - // Receive timestamp - - this.receiveTimestamp = internals.toMsecs(buffer, 32); - - // Transmit timestamp - - this.transmitTimestamp = internals.toMsecs(buffer, 40); - - // Validate - - if (this.version === 4 && - this.stratum !== 'reserved' && - this.mode === 'server' && - this.originateTimestamp && - this.receiveTimestamp && - this.transmitTimestamp) { - - this.isValid = true; - } - - return this; -}; - - -internals.toMsecs = function (buffer, offset) { - - var seconds = 0; - var fraction = 0; - - for (var i = 0; i < 4; ++i) { - seconds = (seconds * 256) + buffer[offset + i]; - } - - for (i = 4; i < 8; ++i) { - fraction = (fraction * 256) + buffer[offset + i]; - } - - return ((seconds - 2208988800 + (fraction / Math.pow(2, 32))) * 1000); -}; - - -internals.fromMsecs = function (ts, buffer, offset) { - - var seconds = Math.floor(ts / 1000) + 2208988800; - var fraction = Math.round((ts % 1000) / 1000 * Math.pow(2, 32)); - - buffer[offset + 0] = (seconds & 0xFF000000) >> 24; - buffer[offset + 1] = (seconds & 0x00FF0000) >> 16; - buffer[offset + 2] = (seconds & 0x0000FF00) >> 8; - buffer[offset + 3] = (seconds & 0x000000FF); - - buffer[offset + 4] = (fraction & 0xFF000000) >> 24; - buffer[offset + 5] = (fraction & 0x00FF0000) >> 16; - buffer[offset + 6] = (fraction & 0x0000FF00) >> 8; - buffer[offset + 7] = (fraction & 0x000000FF); -}; - - -// Offset singleton - -internals.last = { - offset: 0, - expires: 0, - host: '', - port: 0 -}; - - -exports.offset = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - var now = Date.now(); - var clockSyncRefresh = options.clockSyncRefresh || 24 * 60 * 60 * 1000; // Daily - - if (internals.last.offset && - internals.last.host === options.host && - internals.last.port === options.port && - now < internals.last.expires) { - - process.nextTick(function () { - - callback(null, internals.last.offset); - }); - - return; - } - - exports.time(options, function (err, time) { - - if (err) { - return callback(err, 0); - } - - internals.last = { - offset: Math.round(time.t), - expires: now + clockSyncRefresh, - host: options.host, - port: options.port - }; - - return callback(null, internals.last.offset); - }); -}; - - -// Now singleton - -internals.now = { - intervalId: 0 -}; - - -exports.start = function (options, callback) { - - if (arguments.length !== 2) { - callback = arguments[0]; - options = {}; - } - - if (internals.now.intervalId) { - process.nextTick(function () { - - callback(); - }); - - return; - } - - exports.offset(options, function (err, offset) { - - internals.now.intervalId = setInterval(function () { - - exports.offset(options, function () { }); - }, options.clockSyncRefresh || 24 * 60 * 60 * 1000); // Daily - - return callback(); - }); -}; - - -exports.stop = function () { - - if (!internals.now.intervalId) { - return; - } - - clearInterval(internals.now.intervalId); - internals.now.intervalId = 0; -}; - - -exports.isLive = function () { - - return !!internals.now.intervalId; -}; - - -exports.now = function () { - - var now = Date.now(); - if (!exports.isLive() || - now >= internals.last.expires) { - - return now; - } - - return now + internals.last.offset; -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json deleted file mode 100755 index 4c4b2f57..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "sntp", - "description": "SNTP Client", - "version": "0.2.4", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/sntp" - }, - "main": "index", - "keywords": [ - "sntp", - "ntp", - "time" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/sntp/raw/master/LICENSE" - } - ], - "readme": "# sntp\n\nAn SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time\nalong with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset\nto the local time.\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/sntp.png)](http://travis-ci.org/hueniverse/sntp)\n\n# Usage\n\n```javascript\nvar Sntp = require('sntp');\n\n// All options are optional\n\nvar options = {\n host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org\n port: 123, // Defaults to 123 (NTP)\n resolveReference: true, // Default to false (not resolving)\n timeout: 1000 // Defaults to zero (no timeout)\n};\n\n// Request server time\n\nSntp.time(options, function (err, time) {\n\n if (err) {\n console.log('Failed: ' + err.message);\n process.exit(1);\n }\n\n console.log('Local clock is off by: ' + time.t + ' milliseconds');\n process.exit(0);\n});\n```\n\nIf an application needs to maintain continuous time synchronization, the module provides a stateful method for\nquerying the current offset only when the last one is too old (defaults to daily).\n\n```javascript\n// Request offset once\n\nSntp.offset(function (err, offset) {\n\n console.log(offset); // New (served fresh)\n\n // Request offset again\n\n Sntp.offset(function (err, offset) {\n\n console.log(offset); // Identical (served from cache)\n });\n});\n```\n\nTo set a background offset refresh, start the interval and use the provided now() method. If for any reason the\nclient fails to obtain an up-to-date offset, the current system clock is used.\n\n```javascript\nvar before = Sntp.now(); // System time without offset\n\nSntp.start(function () {\n\n var now = Sntp.now(); // With offset\n Sntp.stop();\n});\n```\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/sntp/issues" - }, - "homepage": "https://github.com/hueniverse/sntp", - "_id": "sntp@0.2.4", - "_from": "sntp@0.2.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js deleted file mode 100755 index 38a55346..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js +++ /dev/null @@ -1,359 +0,0 @@ -// Load modules - -var Dgram = require('dgram'); -var Lab = require('lab'); -var Sntp = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('SNTP', function () { - - describe('#time', function () { - - it('returns consistent result over multiple tries', function (done) { - - Sntp.time(function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - var t1 = time.t; - - Sntp.time(function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - var t2 = time.t; - expect(Math.abs(t1 - t2)).is.below(200); - done(); - }); - }); - }); - - it('resolves reference IP', function (done) { - - Sntp.time({ host: 'ntp.exnet.com', resolveReference: true }, function (err, time) { - - expect(err).to.not.exist; - expect(time).to.exist; - expect(time.referenceHost).to.exist; - done(); - }); - }); - - it('times out on no response', function (done) { - - Sntp.time({ port: 124, timeout: 100 }, function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('Timeout'); - done(); - }); - }); - - it('errors on error event', function (done) { - - var orig = Dgram.createSocket; - Dgram.createSocket = function (type) { - - Dgram.createSocket = orig; - var socket = Dgram.createSocket(type); - process.nextTick(function () { socket.emit('error', new Error('Fake')) }); - return socket; - }; - - Sntp.time(function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('Fake'); - done(); - }); - }); - - it('times out on invalid host', function (done) { - - Sntp.time({ host: 'error', timeout: 10000 }, function (err, time) { - - expect(err).to.exist; - expect(time).to.not.exist; - expect(err.message).to.equal('getaddrinfo ENOTFOUND'); - done(); - }); - }); - - it('fails on bad response buffer size', function (done) { - - var server = Dgram.createSocket('udp4'); - server.on('message', function (message, remote) { - var message = new Buffer(10); - server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) { - - server.close(); - }); - }); - - server.bind(49123); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid server response'); - done(); - }); - }); - - var messup = function (bytes) { - - var server = Dgram.createSocket('udp4'); - server.on('message', function (message, remote) { - - var message = new Buffer([ - 0x24, 0x01, 0x00, 0xe3, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x41, 0x43, 0x54, 0x53, - 0xd4, 0xa8, 0x2d, 0xc7, - 0x1c, 0x5d, 0x49, 0x1b, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x67, 0xef, 0x9d, 0xb2, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x71, 0xed, 0xb5, 0xfb, - 0xd4, 0xa8, 0x2d, 0xe6, - 0x71, 0xee, 0x6c, 0xc5 - ]); - - for (var i = 0, il = bytes.length; i < il; ++i) { - message[bytes[i][0]] = bytes[i][1]; - } - - server.send(message, 0, message.length, remote.port, remote.address, function (err, bytes) { - - server.close(); - }); - }); - - server.bind(49123); - }; - - it('fails on bad version', function (done) { - - messup([[0, (0 << 6) + (3 << 3) + (4 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.version).to.equal(3); - expect(err.message).to.equal('Invalid server response'); - done(); - }); - }); - - it('fails on bad originate timestamp and alarm li', function (done) { - - messup([[0, (3 << 6) + (4 << 3) + (4 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(err.message).to.equal('Wrong originate timestamp'); - expect(time.leapIndicator).to.equal('alarm'); - done(); - }); - }); - - it('returns time with death stratum and last61 li', function (done) { - - messup([[0, (1 << 6) + (4 << 3) + (4 << 0)], [1, 0]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(time.stratum).to.equal('death'); - expect(time.leapIndicator).to.equal('last-minute-61'); - done(); - }); - }); - - it('returns time with reserved stratum and last59 li', function (done) { - - messup([[0, (2 << 6) + (4 << 3) + (4 << 0)], [1, 0x1f]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(time.stratum).to.equal('reserved'); - expect(time.leapIndicator).to.equal('last-minute-59'); - done(); - }); - }); - - it('fails on bad mode (symmetric-active)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (1 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('symmetric-active'); - done(); - }); - }); - - it('fails on bad mode (symmetric-passive)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (2 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('symmetric-passive'); - done(); - }); - }); - - it('fails on bad mode (client)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (3 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('client'); - done(); - }); - }); - - it('fails on bad mode (broadcast)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (5 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('broadcast'); - done(); - }); - }); - - it('fails on bad mode (reserved)', function (done) { - - messup([[0, (0 << 6) + (4 << 3) + (6 << 0)]]); - - Sntp.time({ host: 'localhost', port: 49123 }, function (err, time) { - - expect(err).to.exist; - expect(time.mode).to.equal('reserved'); - done(); - }); - }); - }); - - describe('#offset', function () { - - it('gets the current offset', function (done) { - - Sntp.offset(function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.not.equal(0); - done(); - }); - }); - - it('gets the current offset from cache', function (done) { - - Sntp.offset(function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.not.equal(0); - var offset1 = offset; - Sntp.offset({}, function (err, offset) { - - expect(err).to.not.exist; - expect(offset).to.equal(offset1); - done(); - }); - }); - }); - - it('fails getting the current offset on invalid server', function (done) { - - Sntp.offset({ host: 'error' }, function (err, offset) { - - expect(err).to.exist; - expect(offset).to.equal(0); - done(); - }); - }); - }); - - describe('#now', function () { - - it('starts auto-sync, gets now, then stops', function (done) { - - Sntp.stop(); - - var before = Sntp.now(); - expect(before).to.equal(Date.now()); - - Sntp.start(function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - Sntp.stop(); - - done(); - }); - }); - - it('starts twice', function (done) { - - Sntp.start(function () { - - Sntp.start(function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - Sntp.stop(); - - done(); - }); - }); - }); - - it('starts auto-sync, gets now, waits, gets again after timeout', function (done) { - - Sntp.stop(); - - var before = Sntp.now(); - expect(before).to.equal(Date.now()); - - Sntp.start({ clockSyncRefresh: 100 }, function () { - - var now = Sntp.now(); - expect(now).to.not.equal(Date.now()); - expect(now).to.equal(Sntp.now()); - - setTimeout(function () { - - expect(Sntp.now()).to.not.equal(now); - Sntp.stop(); - done(); - }, 110); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json deleted file mode 100755 index 16feb783..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "hawk", - "description": "HTTP Hawk Authentication Scheme", - "version": "1.0.0", - "author": { - "name": "Eran Hammer", - "email": "eran@hueniverse.com", - "url": "http://hueniverse.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/hueniverse/hawk" - }, - "main": "index", - "keywords": [ - "http", - "authentication", - "scheme", - "hawk" - ], - "engines": { - "node": ">=0.8.0" - }, - "dependencies": { - "hoek": "0.9.x", - "boom": "0.4.x", - "cryptiles": "0.2.x", - "sntp": "0.2.x" - }, - "devDependencies": { - "lab": "0.1.x", - "complexity-report": "0.x.x", - "localStorage": "1.0.x" - }, - "scripts": { - "test": "make test-cov" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/hueniverse/hawk/raw/master/LICENSE" - } - ], - "readme": "![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png)\n\n<img align=\"right\" src=\"https://raw.github.com/hueniverse/hawk/master/images/logo.png\" /> **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial\nHTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz).\n\nCurrent version: **1.0**\n\n[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk)\n\n# Table of Content\n\n- [**Introduction**](#introduction)\n - [Replay Protection](#replay-protection)\n - [Usage Example](#usage-example)\n - [Protocol Example](#protocol-example)\n - [Payload Validation](#payload-validation)\n - [Response Payload Validation](#response-payload-validation)\n - [Browser Support and Considerations](#browser-support-and-considerations)\n<p></p>\n- [**Single URI Authorization**](#single-uri-authorization)\n - [Usage Example](#bewit-usage-example)\n<p></p>\n- [**Security Considerations**](#security-considerations)\n - [MAC Keys Transmission](#mac-keys-transmission)\n - [Confidentiality of Requests](#confidentiality-of-requests)\n - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers)\n - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials)\n - [Entropy of Keys](#entropy-of-keys)\n - [Coverage Limitations](#coverage-limitations)\n - [Future Time Manipulation](#future-time-manipulation)\n - [Client Clock Poisoning](#client-clock-poisoning)\n - [Bewit Limitations](#bewit-limitations)\n - [Host Header Forgery](#host-header-forgery)\n<p></p>\n- [**Frequently Asked Questions**](#frequently-asked-questions)\n<p></p>\n- [**Acknowledgements**](#acknowledgements)\n\n# Introduction\n\n**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with\npartial cryptographic verification of the request and response, covering the HTTP method, request URI, host,\nand optionally the request payload.\n\nSimilar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of\nclient credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme,\nthe key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is\nincluded in its place.\n\nHowever, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of\nreplay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less\n\"chattiness\" (interaction with the server).\n\nAlso unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because\nthe client and server must both have access to the key material in the clear.\n\nThe primary design goals of this scheme are to:\n* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources,\n* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where\n to send an authenticated request), and\n* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client\n failure to validate the server's identity as part of its TLS handshake.\n\nIn addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using\na query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).\n\nThe **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server,\nwhich is beyond the scope of this module. Typically, the shared credentials are established via an initial\nTLS-protected phase or derived from some other shared confidential information available to both the client\nand the server.\n\n\n## Replay Protection\n\nWithout replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more \nthan once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when \nmaking requests. This gives the server enough information to prevent replay attacks.\n\nThe nonce is generated by the client, and is a string unique across all requests with the same timestamp and\nkey identifier combination. \n\nThe timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards\nare rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks.\nBy default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in\npractice translates to a maximum of 2 minutes as the skew can be positive or negative).\n\nUsing a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client\nclock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types\n(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response\nto a bad timestamp.\n\nThere is no expectation that the client will adjust its system clock to match the server (in fact, this would be a\npotential attack vector). Instead, the client only uses the server's time to calculate an offset used only\nfor communications with that particular server. The protocol rewards clients with synchronized clocks by reducing\nthe number of round trips required to authenticate the first request.\n\n\n## Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256',\n user: 'Steve'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n // Authenticate incoming request\n\n Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {\n\n // Prepare response\n\n var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');\n var headers = { 'Content-Type': 'text/plain' };\n\n // Generate Server-Authorization response header\n\n var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] });\n headers['Server-Authorization'] = header;\n\n // Send the response back\n\n res.writeHead(!err ? 200 : 401, headers);\n res.end(payload);\n });\n};\n\n// Start server\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nClient code:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Request options\n\nvar requestOptions = {\n uri: 'http://example.com:8000/resource/1?b=1&a=2',\n method: 'GET',\n headers: {}\n};\n\n// Generate Authorization request header\n\nvar header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' });\nrequestOptions.headers.Authorization = header.field;\n\n// Send authenticated request\n\nRequest(requestOptions, function (error, response, body) {\n\n // Authenticate the server's response\n\n var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });\n\n // Output results\n\n console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));\n});\n```\n\n**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local\nmachine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method.\n\n```javascript\nHawk.sntp.start();\n```\n\n\n## Protocol Example\n\nThe client attempts to access a protected resource without authentication, sending the following HTTP request to\nthe resource server:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\n```\n\nThe resource server returns an authentication challenge.\n\n```\nHTTP/1.1 401 Unauthorized\nWWW-Authenticate: Hawk\n```\n\nThe client has previously obtained a set of **Hawk** credentials for accessing resources on the \"http://example.com/\"\nserver. The **Hawk** credentials issued to the client include the following attributes:\n\n* Key identifier: dh37fgj492je\n* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn\n* Algorithm: sha256\n\nThe client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1,\n1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline\ncharacter):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nGET\n/resource/1?b=1&a=2\nexample.com\n8000\n\nsome-app-ext-data\n\n```\n\nThe request MAC is calculated using HMAC with the specified hash algorithm \"sha256\" and the key over the normalized request string.\nThe result is base64-encoded to produce the request MAC:\n\n```\n6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\n```\n\nThe client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using\nthe HTTP `Authorization` request header field:\n\n```\nGET /resource/1?b=1&a=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", ext=\"some-app-ext-data\", mac=\"6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=\"\n```\n\nThe server validates the request by calculating the request MAC again based on the request received and verifies the validity\nand scope of the **Hawk** credentials. If valid, the server responds with the requested resource.\n\n\n### Payload Validation\n\n**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash\nusing the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):\n* `hawk.1.payload`\n* the content-type in lowercase, without any parameters (e.g. `application/json`)\n* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability)\n\nFor example:\n\n* Payload: `Thank you for flying Hawk`\n* Content Type: `text/plain`\n* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=`\n\nResults in the following input to the payload hash function (newline terminated values):\n\n```\nhawk.1.payload\ntext/plain\nThank you for flying Hawk\n\n```\n\nWhich produces the following hash value:\n\n```\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\n```\n\nThe client constructs the normalized request string (newline terminated values):\n\n```\nhawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource/1?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n\n```\n\nThen calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data,\nand request MAC, with the request using the HTTP `Authorization` request header field:\n\n```\nPOST /resource/1?a=1&b=2 HTTP/1.1\nHost: example.com:8000\nAuthorization: Hawk id=\"dh37fgj492je\", ts=\"1353832234\", nonce=\"j4h3g2\", hash=\"Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\", ext=\"some-app-ext-data\", mac=\"aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=\"\n```\n\nIt is up to the server if and when it validates the payload for any given request, based solely on it's security policy\nand the nature of the data included.\n\nIf the payload is available at the time of authentication, the server uses the hash value provided by the client to construct\nthe normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value\nwith the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.\n\nHowever, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed\nat a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value\nprovided by the client after validating the MAC.\n\nIt is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value\nincluded in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided\nby the client, the payload may be modified by an attacker.\n\n\n## Response Payload Validation\n\n**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the\nclient to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header\nas a response header using the exact same syntax as the `Authorization` request header field.\n\nThe header is contructed using the same process as the client's request header. The server uses the same credentials and other\nartifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with\nnew values based on the server response. The rest as identical to those used by the client.\n\nThe result MAC digest is included with the optional `hash` and `ext` values:\n\n```\nServer-Authorization: Hawk mac=\"XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=\", hash=\"f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=\", ext=\"response-specific\"\n```\n\n\n## Browser Support and Considerations\n\nA browser script is provided for including using a `<script>` tag in [lib/browser.js](/lib/browser.js).\n\n**Hawk** relies on the _Server-Authorization_ and _WWW-Authenticate_ headers in its response to communicate with the client.\nTherefore, in case of CORS requests, it is important to consider sending _Access-Control-Expose-Headers_ with the value\n_\"WWW-Authenticate, Server-Authorization\"_ on each response from your server. As explained in the\n[specifications](http://www.w3.org/TR/cors/#access-control-expose-headers-response-header), it will indicate that these headers\ncan safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a\n[\"simple response header\"](http://www.w3.org/TR/cors/#simple-response-header) which excludes these fields and would prevent the\nHawk client from authenticating the requests.You can read more about the why and how in this\n[article](http://www.html5rocks.com/en/tutorials/cors/#toc-adding-cors-support-to-the-server)\n\n\n# Single URI Authorization\n\nThere are cases in which limited and short-term access to a protected resource is granted to a third party which does not\nhave access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. **Hawk**\nprovides limited support for such URIs in the form of a _bewit_ - a URI query parameter appended to the request URI which contains\nthe necessary credentials to authenticate the request.\n\nBecause of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests\nand for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same\ncredentials as the client to maintain clear traceability as to who issued which credentials.\n\nIn order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within\nthe granted access timeframe. \n\n\n## Bewit Usage Example\n\nServer code:\n\n```javascript\nvar Http = require('http');\nvar Hawk = require('hawk');\n\n\n// Credentials lookup function\n\nvar credentialsFunc = function (id, callback) {\n\n var credentials = {\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n };\n\n return callback(null, credentials);\n};\n\n// Create HTTP server\n\nvar handler = function (req, res) {\n\n Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {\n\n res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' });\n res.end(!err ? 'Access granted' : 'Shoosh!');\n });\n};\n\nHttp.createServer(handler).listen(8000, 'example.com');\n```\n\nBewit code generation:\n\n```javascript\nvar Request = require('request');\nvar Hawk = require('hawk');\n\n\n// Client credentials\n\nvar credentials = {\n id: 'dh37fgj492je',\n key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',\n algorithm: 'sha256'\n}\n\n// Generate bewit\n\nvar duration = 60 * 5; // 5 Minutes\nvar bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' });\nvar uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit;\n```\n\n\n# Security Considerations\n\nThe greatest sources of security risks are usually found not in **Hawk** but in the policies and procedures surrounding its use.\nImplementers are strongly encouraged to assess how this module addresses their security requirements. This section includes\nan incomplete list of security considerations that must be reviewed and understood before deploying **Hawk** on the server.\nMany of the protections provided in **Hawk** depends on whether and how they are used.\n\n### MAC Keys Transmission\n\n**Hawk** does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used\nto obtain **Hawk** credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.\n\n### Confidentiality of Requests\n\nWhile **Hawk** provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request\nconfidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should\ncarefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms\nto protect sensitive resources.\n\n### Spoofing by Counterfeit Servers\n\n**Hawk** provides limited verification of the server authenticity. When receiving a response back from the server, the server\nmay choose to include a response `Server-Authorization` header which the client can use to verify the response. However, it is up to\nthe server to determine when such measure is included, to up to the client to enforce that policy.\n\nA hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise\nincorrect responses. Service providers should consider such attacks when developing services using this protocol, and should\nrequire transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.\n\n### Plaintext Storage of Credentials\n\nThe **Hawk** key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC,\nthe server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which\nstore only a one-way hash of user credentials.\n\nIf an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able\nto perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized\naccess.\n\n### Entropy of Keys\n\nUnless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request\nMAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to\nassign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the **Hawk**\ncredentials are valid.\n\nFor example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force\nattack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the\nlongest key reasonable.\n\nIt is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high\nquality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit\npatterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use\ncryptographically secure PRNGs to avoid these problems.\n\n### Coverage Limitations\n\nThe request MAC only covers the HTTP `Host` header and optionally the `Content-Type` header. It does not cover any other headers\nwhich can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence\nor value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the\n`ext` feature to pass application-specific information via the `Authorization` header which is protected by the request MAC.\n\nThe response authentication, when performed, only covers the response payload, content-type, and the request information \nprovided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or\nany other response header field (e.g. Location) which can affect the client's behaviour.\n\n### Future Time Manipulation\n\nThe protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its\ncurrent time when an invalid timestamp is received.\n\nIf an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause\nthe client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will\nnot likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then\nbe able to replay the request at the correct time without detection.\n\nThe client must only use the time information provided by the server if:\n* it was delivered over a TLS connection and the server identity has been verified, or\n* the `tsm` MAC digest calculated using the same client credentials over the timestamp has been verified.\n\n### Client Clock Poisoning\n\nWhen receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use\nthe time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with\nthat particular server.\n\n### Bewit Limitations\n\nSpecial care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot\nbe revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with\naccess to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET\nrequests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private\nand sensitive information.\n\n### Host Header Forgery\n\nHawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional `host` and `port`\noptions are used with `server.authenticate()`, a malicous client can mint new host names pointing to the server's IP address and\nuse that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server\nimplementors must manually verify that the host header received matches their expectation (or use the options mentioned above).\n\n# Frequently Asked Questions\n\n### Where is the protocol specification?\n\nIf you are looking for some prose explaining how all this works, **this is it**. **Hawk** is being developed as an open source\nproject instead of a standard. In other words, the [code](/hueniverse/hawk/tree/master/lib) is the specification. Not sure about\nsomething? Open an issue!\n\n### Is it done?\n\nAt if version 0.10.0, **Hawk** is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental\nand is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions\nand suggestions.\n\n### Where can I find **Hawk** implementations in other languages?\n\n**Hawk**'s only reference implementation is provided in JavaScript as a node.js module. However, others are actively porting it to other\nplatforms. There is already a [PHP](https://github.com/alexbilbie/PHP-Hawk),\n[.NET](https://github.com/pcibraro/hawknet), and [JAVA](https://github.com/wealdtech/hawk) libraries available. The full list\nis maintained [here](https://github.com/hueniverse/hawk/issues?labels=port). Please add an issue if you are working on another\nport. A cross-platform test-suite is in the works.\n\n### Why isn't the algorithm part of the challenge or dynamically negotiated?\n\nThe algorithm used is closely related to the key issued as different algorithms require different key sizes (and other\nrequirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm\ntogether as part of the issued credentials.\n\n### Why is Host and Content-Type the only headers covered by the request MAC?\n\nIt is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no\nwell-established way to normalize them. Many platforms change the case of header field names and values. The only\nstraight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request,\nan approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information,\nand introduces other security issues because firewalls will not be aware of these \"hidden\" headers. In addition, any information\nrepeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.\n\n### Why not just use HTTP Digest?\n\nDigest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send\na protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile\nwhere extra round-trip are costly.\n\n### Why bother with all this nonce and timestamp business?\n\n**Hawk** is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp\nand nonces halfway right but failed when it came to scalability and consistent developer experience. **Hawk** addresses\nit by requiring the client to sync its clock, but provides it with tools to accomplish it.\n\nIn general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected\nsystem where the clients are implemented using best practices and are under the control of the server. Instead of dropping\nreplay protection, **Hawk** offers a required time window and an optional nonce verification. Together, it provides developers\nwith the ability to decide how to enforce their security policy without impacting the client's implementation.\n\n### What are `app` and `dlg` in the authorization header and normalized mac string?\n\nThe original motivation for **Hawk** was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which\nthis module is specifically designed for, and a delegated access mode which is being developed separately in\n[Oz](https://github.com/hueniverse/oz). In addition to the **Hawk** use cases, Oz requires another attribute: the application id `app`.\nThis provides binding between the credentials and the application in a way that prevents an attacker from tricking an application\nto use credentials issued to someone else. It also has an optional 'delegated-by' attribute `dlg` which is the application id of the\napplication the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize **Hawk** directly,\nbut with the additional security of delegated credentials.\n\n### What is the purpose of the static strings used in each normalized MAC input?\n\nWhen calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being\nused or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request,\nresponse, and a bewit use cases). It also protects against expliots created after a potential change in how the protocol\ncreates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it\ncan create an exploit opportunity for cases where the nonce is similar in format to a timestamp.\n\n### Does **Hawk** have anything to do with OAuth?\n\nShort answer: no.\n\n**Hawk** was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent\nincompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it\nto authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard\nat work to produce more garbage.\n\n**Hawk** provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case\nof delegating access to a third party. If you are looking for an OAuth alternative, check out [Oz](https://github.com/hueniverse/oz).\n\n\n# Acknowledgements\n\n**Hawk** is a derivative work of the [HTTP MAC Authentication Scheme](http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05) proposal\nco-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.\n\nSpecial thanks to Ben Laurie for his always insightful feedback and advice.\n\nThe **Hawk** logo was created by [Chris Carrasco](http://chriscarrasco.com).\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/hueniverse/hawk/issues" - }, - "homepage": "https://github.com/hueniverse/hawk", - "_id": "hawk@1.0.0", - "_from": "hawk@~1.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js deleted file mode 100755 index b25a10fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/browser.js +++ /dev/null @@ -1,771 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); -var Browser = require('../lib/browser'); -var LocalStorage = require('localStorage'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Browser', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a header then successfully parse it (configuration)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (node request)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' }); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header options)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header with stale ts and successfully authenticate on second call', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - Browser.utils.setNtpOffset(60 * 60 * 1000); - var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }); - req.authorization = header.field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - - var res = { - headers: { - 'www-authenticate': err.response.headers['WWW-Authenticate'] - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000); - expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true); - expect(Browser.utils.getNtpOffset()).to.equal(0); - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - }); - - it('should generate a header with stale ts and successfully authenticate on second call (manual localStorage)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - Browser.utils.setStorage(LocalStorage) - - Browser.utils.setNtpOffset(60 * 60 * 1000); - var header = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }); - req.authorization = header.field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - - var res = { - headers: { - 'www-authenticate': err.response.headers['WWW-Authenticate'] - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(parseInt(LocalStorage.getItem('hawk_ntp_offset'))).to.equal(60 * 60 * 1000); - expect(Browser.utils.getNtpOffset()).to.equal(60 * 60 * 1000); - expect(Browser.client.authenticate(res, credentials, header.artifacts)).to.equal(true); - expect(Browser.utils.getNtpOffset()).to.equal(0); - expect(parseInt(LocalStorage.getItem('hawk_ntp_offset'))).to.equal(0); - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - }); - - it('should generate a header then fails to parse it (missing server header hash)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Browser.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (with hash)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it then validate payload', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true; - expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false; - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app, dlg)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - expect(artifacts.dlg).to.equal('23434szr3q4d'); - done(); - }); - }); - }); - - it('should generate a header then fail authentication due to bad hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad payload hash'); - done(); - }); - }); - }); - - it('should generate a header for one resource then fail to authenticate another', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Browser.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - req.url = '/something/else'; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(credentials).to.exist; - done(); - }); - }); - }); - - describe('client', function () { - - describe('#header', function () { - - it('should return a valid authorization header (sha1)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha1' - }; - - var header = Browser.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="'); - done(); - }); - - it('should return a valid authorization header (sha256)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="'); - done(); - }); - - it('should return a valid authorization header (no ext)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="'); - done(); - }); - - it('should return an empty authorization header on missing options', function (done) { - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST').field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Browser.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - }); - - describe('#authenticate', function () { - - it('should return false on invalid header', function (done) { - - var res = { - headers: { - 'server-authorization': 'Hawk mac="abc", bad="xyz"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should return false on invalid mac', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(false); - done(); - }); - - it('should return true on ignoring hash', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Browser.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var res = { - headers: { - 'www-authenticate': 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - var res = { - headers: { - 'www-authenticate': 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"' - }, - getResponseHeader: function (header) { - - return res.headers[header.toLowerCase()]; - } - }; - - expect(Browser.client.authenticate(res, credentials)).to.equal(false); - done(); - }); - }); - - describe('#message', function () { - it('should generate an authorization then successfully parse it', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should fail on missing host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Browser.client.message(null, 8080, 'some message', { credentials: credentials }); - expect(auth).to.not.exist; - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var auth = Browser.client.message('example.com', 8080, 'some message', {}); - expect(auth).to.not.exist; - done(); - }); - - it('should fail on invalid algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var creds = Hoek.clone(credentials); - creds.algorithm = 'blah'; - var auth = Browser.client.message('example.com', 8080, 'some message', { credentials: creds }); - expect(auth).to.not.exist; - done(); - }); - }); - }); - }); - - describe('#parseAuthorizationHeader', function (done) { - - it('returns null on missing header', function (done) { - - expect(Browser.utils.parseAuthorizationHeader()).to.equal(null); - done(); - }); - - it('returns null on bad header syntax (structure)', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk')).to.equal(null); - done(); - }); - - it('returns null on bad header syntax (parts)', function (done) { - - expect(Browser.utils.parseAuthorizationHeader(' ')).to.equal(null); - done(); - }); - - it('returns null on bad scheme name', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Basic asdasd')).to.equal(null); - done(); - }); - - it('returns null on bad attribute value', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk test="\t"', ['test'])).to.equal(null); - done(); - }); - - it('returns null on duplicated attribute', function (done) { - - expect(Browser.utils.parseAuthorizationHeader('Hawk test="a", test="b"', ['test'])).to.equal(null); - done(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js deleted file mode 100755 index bcc4222a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/client.js +++ /dev/null @@ -1,206 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('client', function () { - - describe('#header', function () { - - it('should return a valid authorization header (sha1)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha1' - }; - - var header = Hawk.client.header('http://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="bsvY3IfUllw6V5rvk4tStEvpBhE=", ext="Bazinga!", mac="qbf1ZPG/r/e06F4ht+T77LXi5vw="'); - done(); - }); - - it('should return a valid authorization header (sha256)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", ext="Bazinga!", mac="q1CwFoSHzPZSkbIvl0oYlD+91rBUEvFk763nMjMndj8="'); - done(); - }); - - it('should return a valid authorization header (no ext)', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, timestamp: 1353809207, nonce: 'Ygvqdz', payload: 'something to write about', contentType: 'text/plain' }).field; - expect(header).to.equal('Hawk id="123456", ts="1353809207", nonce="Ygvqdz", hash="2QfCt3GuY9HQnHWyWD3wX68ZOKbynqlfYmuO2ZBRqtY=", mac="HTgtd0jPI6E4izx8e4OHdO36q00xFCU0FolNq3RiCYs="'); - done(); - }); - - it('should return an empty authorization header on missing options', function (done) { - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST').field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Hawk.client.header('https://example.net/somewhere/over/the/rainbow', 'POST', { credentials: credentials, payload: 'something, anything!', ext: 'Bazinga!', timestamp: 1353809207 }).field; - expect(header).to.equal(''); - done(); - }); - }); - - describe('#authenticate', function () { - - it('should return false on invalid header', function (done) { - - var res = { - headers: { - 'server-authorization': 'Hawk mac="abc", bad="xyz"' - } - }; - - expect(Hawk.client.authenticate(res, {})).to.equal(false); - done(); - }); - - it('should return false on invalid mac', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="_IJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(false); - done(); - }); - - it('should return true on ignoring hash', function (done) { - - var res = { - headers: { - 'content-type': 'text/plain', - 'server-authorization': 'Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"' - } - }; - - var artifacts = { - method: 'POST', - host: 'example.com', - port: '8080', - resource: '/resource/4?filter=a', - ts: '1362336900', - nonce: 'eb5S_L', - hash: 'nJjkVtBE5Y/Bk38Aiokwn0jiJxt/0S2WRSUwWLCf5xk=', - ext: 'some-app-data', - app: undefined, - dlg: undefined, - mac: 'BlmSe8K+pbKIb6YsZCnt4E1GrYvY1AaYayNR82dGpIk=', - id: '123456' - }; - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var header = 'Hawk ts="1362346425875", tsm="PhwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", x="Stale timestamp"'; - expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, {})).to.equal(false); - done(); - }); - - it('should fail on invalid WWW-Authenticate header format', function (done) { - - var credentials = { - id: '123456', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - var header = 'Hawk ts="1362346425875", tsm="hwayS28vtnn3qbv0mqRBYSXebN/zggEtucfeZ620Zo=", error="Stale timestamp"'; - expect(Hawk.client.authenticate({ headers: { 'www-authenticate': header } }, credentials)).to.equal(false); - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js deleted file mode 100755 index b62c2177..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/crypto.js +++ /dev/null @@ -1,86 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Crypto', function () { - - describe('#generateNormalizedString', function () { - - it('should return a valid normalized string', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080 - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\n\n'); - - done(); - }); - - it('should return a valid normalized string (ext)', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080, - ext: 'this is some app data' - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\n\nthis is some app data\n'); - - done(); - }); - - it('should return a valid normalized string (payload + ext)', function (done) { - - expect(Hawk.crypto.generateNormalizedString('header', { - credentials: { - key: 'dasdfasdf', - algorithm: 'sha256' - }, - ts: 1357747017, - nonce: 'k3k4j5', - method: 'GET', - resource: '/resource/something', - host: 'example.com', - port: 8080, - hash: 'U4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=', - ext: 'this is some app data' - })).to.equal('hawk.1.header\n1357747017\nk3k4j5\nGET\n/resource/something\nexample.com\n8080\nU4MKKSmiVxk37JCCrAVIjV/OhB3y+NdwoCr6RShbVkE=\nthis is some app data\n'); - - done(); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js deleted file mode 100755 index ba837388..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/index.js +++ /dev/null @@ -1,316 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a header then successfully parse it (configuration)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header(Url.parse('http://example.com:8080/resource/4?filter=a'), req.method, { credentials: credentials, ext: 'some-app-data' }).field; - expect(req.authorization).to.exist; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (node request)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts, { payload: 'some reply', contentType: 'text/plain', ext: 'response-specific' }); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (no server header options)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - }); - - it('should generate a header then fails to parse it (missing server header hash)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:8080', - 'content-type': 'text/plain;x=y' - } - }; - - var payload = 'some not so random text'; - - credentialsFunc('123456', function (err, credentials) { - - var reqHeader = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', payload: payload, contentType: req.headers['content-type'] }); - req.headers.authorization = reqHeader.field; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload(payload, credentials, artifacts, req.headers['content-type'])).to.equal(true); - - var res = { - headers: { - 'content-type': 'text/plain' - } - }; - - res.headers['server-authorization'] = Hawk.server.header(credentials, artifacts); - expect(res.headers['server-authorization']).to.exist; - - expect(Hawk.client.authenticate(res, credentials, artifacts, { payload: 'some reply' })).to.equal(false); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (with hash)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it then validate payload', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(Hawk.server.authenticatePayload('hola!', credentials, artifacts)).to.be.true; - expect(Hawk.server.authenticatePayload('hello!', credentials, artifacts)).to.be.false; - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - done(); - }); - }); - }); - - it('should generate a header then successfully parse it (app, dlg)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data', app: 'asd23ased', dlg: '23434szr3q4d' }).field; - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(artifacts.ext).to.equal('some-app-data'); - expect(artifacts.app).to.equal('asd23ased'); - expect(artifacts.dlg).to.equal('23434szr3q4d'); - done(); - }); - }); - }); - - it('should generate a header then fail authentication due to bad hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, payload: 'hola!', ext: 'some-app-data' }).field; - Hawk.server.authenticate(req, credentialsFunc, { payload: 'byebye!' }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad payload hash'); - done(); - }); - }); - }); - - it('should generate a header for one resource then fail to authenticate another', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - credentialsFunc('123456', function (err, credentials) { - - req.authorization = Hawk.client.header('http://example.com:8080/resource/4?filter=a', req.method, { credentials: credentials, ext: 'some-app-data' }).field; - req.url = '/something/else'; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(credentials).to.exist; - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js deleted file mode 100755 index 04b91d41..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/message.js +++ /dev/null @@ -1,246 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate an authorization then successfully parse it', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should fail authorization on mismatching host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example1.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - it('should fail authorization on stale timestamp', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { localtimeOffsetMsec: 100000 }, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Stale timestamp'); - done(); - }); - }); - }); - - it('should fail authorization on invalid authorization', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - delete auth.id; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid authorization'); - done(); - }); - }); - }); - - it('should fail authorization on bad hash', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message1', auth, credentialsFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Bad message hash'); - done(); - }); - }); - }); - - it('should fail authorization on nonce error', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, credentialsFunc, { nonceFunc: function (nonce, ts, callback) { callback (new Error('kaboom')); } }, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid nonce'); - done(); - }); - }); - }); - - it('should fail authorization on credentials error', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(new Error('kablooey')); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('kablooey'); - done(); - }); - }); - }); - - it('should fail authorization on missing credentials', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown credentials'); - done(); - }); - }); - }); - - it('should fail authorization on invalid credentials', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(null, {}); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - done(); - }); - }); - }); - - it('should fail authorization on invalid credentials algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: credentials }); - expect(auth).to.exist; - - var errFunc = function (id, callback) { - - callback(null, { key: '123', algorithm: '456' }); - }; - - Hawk.server.authenticateMessage('example.com', 8080, 'some message', auth, errFunc, {}, function (err, credentials) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - done(); - }); - }); - }); - - it('should fail on missing host', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var auth = Hawk.client.message(null, 8080, 'some message', { credentials: credentials }); - expect(auth).to.not.exist; - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var auth = Hawk.client.message('example.com', 8080, 'some message', {}); - expect(auth).to.not.exist; - done(); - }); - - it('should fail on invalid algorithm', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var creds = Hoek.clone(credentials); - creds.algorithm = 'blah'; - var auth = Hawk.client.message('example.com', 8080, 'some message', { credentials: creds }); - expect(auth).to.not.exist; - done(); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js deleted file mode 100755 index f39e033d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/readme.js +++ /dev/null @@ -1,98 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hoek = require('hoek'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('README', function () { - - describe('core', function () { - - var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' - }; - - var options = { - credentials: credentials, - timestamp: 1353832234, - nonce: 'j4h3g2', - ext: 'some-app-ext-data' - }; - - it('should generate a header protocol example', function (done) { - - var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', options).field; - - expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="'); - done(); - }); - - it('should generate a normalized string protocol example', function (done) { - - var normalized = Hawk.crypto.generateNormalizedString('header', { - credentials: credentials, - ts: options.timestamp, - nonce: options.nonce, - method: 'GET', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8000, - ext: options.ext - }); - - expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nGET\n/resource?a=1&b=2\nexample.com\n8000\n\nsome-app-ext-data\n'); - done(); - }); - - var payloadOptions = Hoek.clone(options); - payloadOptions.payload = 'Thank you for flying Hawk'; - payloadOptions.contentType = 'text/plain'; - - it('should generate a header protocol example (with payload)', function (done) { - - var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'POST', payloadOptions).field; - - expect(header).to.equal('Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="'); - done(); - }); - - it('should generate a normalized string protocol example (with payload)', function (done) { - - var normalized = Hawk.crypto.generateNormalizedString('header', { - credentials: credentials, - ts: options.timestamp, - nonce: options.nonce, - method: 'POST', - resource: '/resource?a=1&b=2', - host: 'example.com', - port: 8000, - hash: Hawk.crypto.calculatePayloadHash(payloadOptions.payload, credentials.algorithm, payloadOptions.contentType), - ext: options.ext - }); - - expect(normalized).to.equal('hawk.1.header\n1353832234\nj4h3g2\nPOST\n/resource?a=1&b=2\nexample.com\n8000\nYi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=\nsome-app-ext-data\n'); - done(); - }); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js deleted file mode 100755 index 3e92427a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/server.js +++ /dev/null @@ -1,686 +0,0 @@ -// Load modules - -var Url = require('url'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('server', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: (id === '1' ? 'sha1' : 'sha256'), - user: 'steve' - }; - - return callback(null, credentials); - }; - - describe('#authenticate', function () { - - it('should parse a valid authentication header (sha1)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (sha256)', function (done) { - - var req = { - method: 'GET', - url: '/resource/1?b=1&a=2', - host: 'example.com', - port: 8000, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (host override)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example1.com:8080', - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (host port override)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example1.com:80', - authorization: 'Hawk id="1", ts="1353788437", nonce="k3j4h2", mac="zy79QQ5/EYFmQqutVnYb73gAc/U=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { host: 'example.com', port: 8080, localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should parse a valid authentication header (POST with payload)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123456", ts="1357926341", nonce="1AwuJD", hash="qAiXIVv+yjDATneWxZP2YCTa9aHRgQdnH9b3Wc+o3dg=", ext="some-app-data", mac="UeYcj5UoTVaAWXNvJfLVia7kU3VabxCqrccXP8sUGC4="' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1357926341000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - - it('should fail on missing hash', function (done) { - - var req = { - method: 'GET', - url: '/resource/1?b=1&a=2', - host: 'example.com', - port: 8000, - authorization: 'Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", mac="m8r1rHbXN6NgO+KIIhjO7sFRyd78RNGVUwehe8Cp2dU=", ext="some-app-data"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { payload: 'body', localtimeOffsetMsec: 1353832234000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing required payload hash'); - done(); - }); - }); - - it('should fail on a stale timestamp', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123456", ts="1362337299", nonce="UzmxSs", ext="some-app-data", mac="wnNUxchvvryMH2RxckTdZ/gY3ijzvccx4keVvELC61w="' - }; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Stale timestamp'); - var header = err.response.headers['WWW-Authenticate']; - var ts = header.match(/^Hawk ts\=\"(\d+)\"\, tsm\=\"([^\"]+)\"\, error=\"Stale timestamp\"$/); - var now = Hawk.utils.now(); - expect(parseInt(ts[1], 10) * 1000).to.be.within(now - 1000, now + 1000); - - var res = { - headers: { - 'www-authenticate': header - } - }; - - expect(Hawk.client.authenticate(res, credentials, artifacts)).to.equal(true); - done(); - }); - }); - - it('should fail on a replay', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="bXx7a7p1h9QYQNZ8x7QhvDQym8ACgab4m3lVSFn4DBw=", ext="hello"' - }; - - var memoryCache = {}; - var options = { - localtimeOffsetMsec: 1353788437000 - Hawk.utils.now(), - nonceFunc: function (nonce, ts, callback) { - - if (memoryCache[nonce]) { - return callback(new Error()); - } - - memoryCache[nonce] = true; - return callback(); - } - }; - - Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - - Hawk.server.authenticate(req, credentialsFunc, options, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid nonce'); - done(); - }); - }); - }); - - it('should fail on an invalid authentication header: wrong scheme', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Basic asdasdasdasd' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.not.exist; - done(); - }); - }); - - it('should fail on an invalid authentication header: no scheme', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: '!@#' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid header syntax'); - done(); - }); - }); - - it('should fail on an missing authorization header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.isMissing).to.equal(true); - done(); - }); - }); - - it('should fail on an missing host header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (id)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (ts)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (nonce)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an missing authorization attribute (mac)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing attributes'); - done(); - }); - }); - - it('should fail on an unknown authorization attribute', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", x="3", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown attribute: x'); - done(); - }); - }); - - it('should fail on an bad authorization header format', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123\\", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad header format'); - done(); - }); - }); - - it('should fail on an bad authorization attribute value', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="\t", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad attribute value: id'); - done(); - }); - }); - - it('should fail on an empty authorization attribute value', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad attribute value: id'); - done(); - }); - }); - - it('should fail on duplicated authorization attribute key', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", id="456", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Duplicate attribute: id'); - done(); - }); - }); - - it('should fail on an invalid authorization header format', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk' - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid header syntax'); - done(); - }); - }); - - it('should fail on an bad host header (missing host)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: ':8080', - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on an bad host header (pad port)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - headers: { - host: 'example.com:something', - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - } - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on credentialsFunc error', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - return callback(new Error('Unknown user')); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown user'); - done(); - }); - }); - - it('should fail on missing credentials', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - return callback(null, null); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown credentials'); - done(); - }); - }); - - it('should fail on invalid credentials', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - }); - - it('should fail on unknown credentials algorithm', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcUyW6EEgUH4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'hmac-sha-0', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - expect(err.response.payload.message).to.equal('An internal server error occurred'); - done(); - }); - }); - - it('should fail on unknown bad mac', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080, - authorization: 'Hawk id="123", ts="1353788437", nonce="k3j4h2", mac="/qwS4UjfVWMcU4jlr7T/wuKe3dKijvTvSos=", ext="hello"' - }; - - var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - return callback(null, credentials); - }; - - Hawk.server.authenticate(req, credentialsFunc, { localtimeOffsetMsec: 1353788437000 - Hawk.utils.now() }, function (err, credentials, artifacts) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - describe('#header', function () { - - it('should return an empty authorization header on missing options', function (done) { - - var header = Hawk.server.header(); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on missing credentials', function (done) { - - var header = Hawk.server.header(null, {}); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q' - }; - - var header = Hawk.server.header(credentials); - expect(header).to.equal(''); - done(); - }); - - it('should return an empty authorization header on invalid algorithm', function (done) { - - var artifacts = { - id: '123456' - }; - - var credentials = { - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var header = Hawk.server.header(credentials, artifacts); - expect(header).to.equal(''); - done(); - }); - }); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js deleted file mode 100755 index 44ffd7fb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/uri.js +++ /dev/null @@ -1,456 +0,0 @@ -// Load modules - -var Http = require('http'); -var Lab = require('lab'); -var Hawk = require('../lib'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Uri', function () { - - var credentialsFunc = function (id, callback) { - - var credentials = { - id: id, - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'steve' - }; - - return callback(null, credentials); - }; - - it('should generate a bewit then successfully authenticate it', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 80 - }; - - credentialsFunc('123456', function (err, credentials) { - - var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100, ext: 'some-app-data' }); - req.url += '&bewit=' + bewit; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - }); - - it('should generate a bewit then successfully authenticate it (no ext)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2', - host: 'example.com', - port: 80 - }; - - credentialsFunc('123456', function (err, credentials) { - - var bewit = Hawk.uri.getBewit('http://example.com/resource/4?a=1&b=2', { credentials: credentials, ttlSec: 60 * 60 * 24 * 365 * 100 }); - req.url += '&bewit=' + bewit; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - done(); - }); - }); - }); - - it('should successfully authenticate a request (last param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should successfully authenticate a request (first param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2MjFcMzFjMmNkbUJFd1NJRVZDOVkva1NFb2c3d3YrdEVNWjZ3RXNmOGNHU2FXQT1cc29tZS1hcHAtZGF0YQ&a=1&b=2', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should successfully authenticate a request (only param)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.not.exist; - expect(credentials.user).to.equal('steve'); - expect(attributes.ext).to.equal('some-app-data'); - done(); - }); - }); - - it('should fail on multiple authentication', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MTE0ODQ2NDFcZm1CdkNWT3MvcElOTUUxSTIwbWhrejQ3UnBwTmo4Y1VrSHpQd3Q5OXJ1cz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080, - authorization: 'Basic asdasdasdasd' - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Multiple authentications'); - done(); - }); - }); - - it('should fail on method other than GET', function (done) { - - credentialsFunc('123456', function (err, credentials) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - host: 'example.com', - port: 8080 - }; - - var exp = Math.floor(Hawk.utils.now() / 1000) + 60; - var ext = 'some-app-data'; - var mac = Hawk.crypto.calculateMac('bewit', credentials, { - timestamp: exp, - nonce: '', - method: req.method, - resource: req.url, - host: req.host, - port: req.port, - ext: ext - }); - - var bewit = credentials.id + '\\' + exp + '\\' + mac + '\\' + ext; - - req.url += '&bewit=' + Hawk.utils.base64urlEncode(bewit); - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid method'); - done(); - }); - }); - }); - - it('should fail on invalid host header', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - headers: { - host: 'example.com:something' - } - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid Host header'); - done(); - }); - }); - - it('should fail on empty bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Empty bewit'); - expect(err.isMissing).to.not.exist; - done(); - }); - }); - - it('should fail on invalid bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=*', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid bewit encoding'); - expect(err.isMissing).to.not.exist; - done(); - }); - }); - - it('should fail on missing bewit', function (done) { - - var req = { - method: 'GET', - url: '/resource/4', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.not.exist; - expect(err.isMissing).to.equal(true); - done(); - }); - }); - - it('should fail on invalid bewit structure', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=abc', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Invalid bewit structure'); - done(); - }); - }); - - it('should fail on empty bewit attribute', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=YVxcY1xk', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Missing bewit attributes'); - done(); - }); - }); - - it('should fail on expired access', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?a=1&b=2&bewit=MTIzNDU2XDEzNTY0MTg1ODNcWk1wZlMwWU5KNHV0WHpOMmRucTRydEk3NXNXTjFjeWVITTcrL0tNZFdVQT1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Access expired'); - done(); - }); - }); - - it('should fail on credentials function error', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(Hawk.error.badRequest('Boom')); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Boom'); - done(); - }); - }); - - it('should fail on null credentials function response', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, null); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Unknown credentials'); - done(); - }); - }); - - it('should fail on invalid credentials function response', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, {}); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.message).to.equal('Invalid credentials'); - done(); - }); - }); - - it('should fail on invalid credentials function response (unknown algorithm)', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'xxx' }); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.message).to.equal('Unknown algorithm'); - done(); - }); - }); - - it('should fail on expired access', function (done) { - - var req = { - method: 'GET', - url: '/resource/4?bewit=MTIzNDU2XDQ1MDk5OTE3MTlcTUE2eWkwRWRwR0pEcWRwb0JkYVdvVDJrL0hDSzA1T0Y3MkhuZlVmVy96Zz1cc29tZS1hcHAtZGF0YQ', - host: 'example.com', - port: 8080 - }; - - Hawk.uri.authenticate(req, function (id, callback) { callback(null, { key: 'xxx', algorithm: 'sha256' }); }, {}, function (err, credentials, attributes) { - - expect(err).to.exist; - expect(err.response.payload.message).to.equal('Bad mac'); - done(); - }); - }); - }); - - describe('#getBewit', function () { - - it('should return a valid bewit value', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, localtimeOffsetMsec: 1356420407232 - Hawk.utils.now(), ext: 'xandyandz' }); - expect(bewit).to.equal('MTIzNDU2XDEzNTY0MjA3MDdca3NjeHdOUjJ0SnBQMVQxekRMTlBiQjVVaUtJVTl0T1NKWFRVZEc3WDloOD1ceGFuZHlhbmR6'); - done(); - }); - - it('should return an empty bewit on invalid credentials', function (done) { - - var credentials = { - key: '2983d45yun89q', - algorithm: 'sha256' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 3000, ext: 'xandyandz' }); - expect(bewit).to.equal(''); - done(); - }); - - it('should return an empty bewit on invalid algorithm', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow', { credentials: credentials, ttlSec: 300, ext: 'xandyandz' }); - expect(bewit).to.equal(''); - done(); - }); - - it('should return an empty bewit on missing options', function (done) { - - var credentials = { - id: '123456', - key: '2983d45yun89q', - algorithm: 'hmac-sha-0' - }; - - var bewit = Hawk.uri.getBewit('https://example.com/somewhere/over/the/rainbow'); - expect(bewit).to.equal(''); - done(); - }); - }); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js deleted file mode 100755 index 0f5fef77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/hawk/test/utils.js +++ /dev/null @@ -1,120 +0,0 @@ -// Load modules - -var Lab = require('lab'); -var Hawk = require('../lib'); -var Package = require('../package.json'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var expect = Lab.expect; -var before = Lab.before; -var after = Lab.after; -var describe = Lab.experiment; -var it = Lab.test; - - -describe('Hawk', function () { - - describe('Utils', function () { - - describe('#parseHost', function () { - - it('returns port 80 for non tls node request', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com', - 'content-type': 'text/plain;x=y' - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(80); - done(); - }); - - it('returns port 443 for non tls node request', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: 'example.com', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443); - done(); - }); - - it('returns port 443 for non tls node request (IPv6)', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: '[123:123:123]', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - expect(Hawk.utils.parseHost(req, 'Host').port).to.equal(443); - done(); - }); - - it('parses IPv6 headers', function (done) { - - var req = { - method: 'POST', - url: '/resource/4?filter=a', - headers: { - host: '[123:123:123]:8000', - 'content-type': 'text/plain;x=y' - }, - connection: { - encrypted: true - } - }; - - var host = Hawk.utils.parseHost(req, 'Host'); - expect(host.port).to.equal('8000'); - expect(host.name).to.equal('[123:123:123]'); - done(); - }); - }); - - describe('#version', function () { - - it('returns the correct package version number', function (done) { - - expect(Hawk.utils.version()).to.equal(Package.version); - done(); - }); - }); - - describe('#unauthorized', function () { - - it('returns a hawk 401', function (done) { - - expect(Hawk.utils.unauthorized('kaboom').response.headers['WWW-Authenticate']).to.equal('Hawk error="kaboom"'); - done(); - }); - }); - }); -}); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el deleted file mode 100644 index 3bc9235f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.dir-locals.el +++ /dev/null @@ -1,6 +0,0 @@ -((nil . ((indent-tabs-mode . nil) - (tab-width . 8) - (fill-column . 80))) - (js-mode . ((js-indent-level . 2) - (indent-tabs-mode . nil) - ))) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore deleted file mode 100644 index c143fb3a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -.gitmodules -deps -docs -Makefile -node_modules -test -tools \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE deleted file mode 100644 index f6d947d2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md deleted file mode 100644 index 0c707149..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# node-http-signature - -node-http-signature is a node.js library that has client and server components -for Joyent's [HTTP Signature Scheme](http_signing.md). - -## Usage - -Note the example below signs a request with the same key/cert used to start an -HTTP server. This is almost certainly not what you actaully want, but is just -used to illustrate the API calls; you will need to provide your own key -management in addition to this library. - -### Client - - var fs = require('fs'); - var https = require('https'); - var httpSignature = require('http-signature'); - - var key = fs.readFileSync('./key.pem', 'ascii'); - - var options = { - host: 'localhost', - port: 8443, - path: '/', - method: 'GET', - headers: {} - }; - - // Adds a 'Date' header in, signs it, and adds the - // 'Authorization' header in. - var req = https.request(options, function(res) { - console.log(res.statusCode); - }); - - - httpSignature.sign(req, { - key: key, - keyId: './cert.pem' - }); - - req.end(); - -### Server - - var fs = require('fs'); - var https = require('https'); - var httpSignature = require('http-signature'); - - var options = { - key: fs.readFileSync('./key.pem'), - cert: fs.readFileSync('./cert.pem') - }; - - https.createServer(options, function (req, res) { - var rc = 200; - var parsed = httpSignature.parseRequest(req); - var pub = fs.readFileSync(parsed.keyId, 'ascii'); - if (!httpSignature.verifySignature(parsed, pub)) - rc = 401; - - res.writeHead(rc); - res.end(); - }).listen(8443); - -## Installation - - npm install http-signature - -## License - -MIT. - -## Bugs - -See <https://github.com/joyent/node-http-signature/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md deleted file mode 100644 index ba7321da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/http_signing.md +++ /dev/null @@ -1,296 +0,0 @@ -# Abstract - -This document describes a way to add origin authentication, message integrity, -and replay resistance to HTTP REST requests. It is intended to be used over -the HTTPS protocol. - -# Copyright Notice - -Copyright (c) 2011 Joyent, Inc. and the persons identified as document authors. -All rights reserved. - -Code Components extracted from this document must include MIT License text. - -# Introduction - -This protocol is intended to provide a standard way for clients to sign HTTP -requests. RFC2617 (HTTP Authentication) defines Basic and Digest authentication -mechanisms, and RFC5246 (TLS 1.2) defines client-auth, both of which are widely -employed on the Internet today. However, it is common place that the burdens of -PKI prevent web service operators from deploying that methodoloy, and so many -fall back to Basic authentication, which has poor security characteristics. - -Additionally, OAuth provides a fully-specified alternative for authorization -of web service requests, but is not (always) ideal for machine to machine -communication, as the key acquisition steps (generally) imply a fixed -infrastructure that may not make sense to a service provider (e.g., symmetric -keys). - -Several web service providers have invented their own schemes for signing -HTTP requests, but to date, none have been placed in the public domain as a -standard. This document serves that purpose. There are no techniques in this -proposal that are novel beyond previous art, however, this aims to be a simple -mechanism for signing these requests. - -# Signature Authentication Scheme - -The "signature" authentication scheme is based on the model that the client must -authenticate itself with a digital signature produced by either a private -asymmetric key (e.g., RSA) or a shared symmetric key (e.g., HMAC). The scheme -is parameterized enough such that it is not bound to any particular key type or -signing algorithm. However, it does explicitly assume that clients can send an -HTTP `Date` header. - -## Authorization Header - -The client is expected to send an Authorization header (as defined in RFC 2617) -with the following parameterization: - - credentials := "Signature" params - params := 1#(keyId | algorithm | [headers] | [ext] | signature) - digitalSignature := plain-string - - keyId := "keyId" "=" <"> plain-string <"> - algorithm := "algorithm" "=" <"> plain-string <"> - headers := "headers" "=" <"> 1#headers-value <"> - ext := "ext" "=" <"> plain-string <"> - signature := "signature" "=" <"> plain-string <"> - - headers-value := plain-string - plain-string = 1*( %x20-21 / %x23-5B / %x5D-7E ) - -### Signature Parameters - -#### keyId - -REQUIRED. The `keyId` field is an opaque string that the server can use to look -up the component they need to validate the signature. It could be an SSH key -fingerprint, an LDAP DN, etc. Management of keys and assignment of `keyId` is -out of scope for this document. - -#### algorithm - -REQUIRED. The `algorithm` parameter is used if the client and server agree on a -non-standard digital signature algorithm. The full list of supported signature -mechanisms is listed below. - -#### headers - -OPTIONAL. The `headers` parameter is used to specify the list of HTTP headers -used to sign the request. If specified, it should be a quoted list of HTTP -header names, separated by a single space character. By default, only one -HTTP header is signed, which is the `Date` header. Note that the list MUST be -specified in the order the values are concatenated together during signing. To -include the HTTP request line in the signature calculation, use the special -`request-line` value. While this is overloading the definition of `headers` in -HTTP linguism, the request-line is defined in RFC 2616, and as the outlier from -headers in useful signature calculation, it is deemed simpler to simply use -`request-line` than to add a separate parameter for it. - -#### extensions - -OPTIONAL. The `extensions` parameter is used to include additional information -which is covered by the request. The content and format of the string is out of -scope for this document, and expected to be specified by implementors. - -#### signature - -REQUIRED. The `signature` parameter is a `Base64` encoded digital signature -generated by the client. The client uses the `algorithm` and `headers` request -parameters to form a canonicalized `signing string`. This `signing string` is -then signed with the key associated with `keyId` and the algorithm -corresponding to `algorithm`. The `signature` parameter is then set to the -`Base64` encoding of the signature. - -### Signing String Composition - -In order to generate the string that is signed with a key, the client MUST take -the values of each HTTP header specified by `headers` in the order they appear. - -1. If the header name is not `request-line` then append the lowercased header - name followed with an ASCII colon `:` and an ASCII space ` `. -2. If the header name is `request-line` then appened the HTTP request line, - otherwise append the header value. -3. If value is not the last value then append an ASCII newline `\n`. The string - MUST NOT include a trailing ASCII newline. - -# Example Requests - -All requests refer to the following request (body ommitted): - - POST /foo HTTP/1.1 - Host: example.org - Date: Tue, 07 Jun 2011 20:51:35 GMT - Content-Type: application/json - Content-MD5: h0auK8hnYJKmHTLhKtMTkQ== - Content-Length: 123 - -The "rsa-key-1" keyId refers to a private key known to the client and a public -key known to the server. The "hmac-key-1" keyId refers to key known to the -client and server. - -## Default parameterization - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",signature="Base64(RSA-SHA256(signing string))" - -The client would compose the signing string as: - - date: Tue, 07 Jun 2011 20:51:35 GMT - -## Header List - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="rsa-key-1",algorithm="rsa-sha256",headers="request-line date content-type content-md5",signature="Base64(RSA-SHA256(signing string))" - -The client would compose the signing string as (`+ "\n"` inserted for -readability): - - POST /foo HTTP/1.1 + "\n" - date: Tue, 07 Jun 2011 20:51:35 GMT + "\n" - content-type: application/json + "\n" - content-md5: h0auK8hnYJKmHTLhKtMTkQ== - -## Algorithm - -The authorization header and signature would be generated as: - - Authorization: Signature keyId="hmac-key-1",algorithm="hmac-sha1",signature="Base64(HMAC-SHA1(signing string))" - -The client would compose the signing string as: - - date: Tue, 07 Jun 2011 20:51:35 GMT - -# Signing Algorithms - -Currently supported algorithm names are: - -* rsa-sha1 -* rsa-sha256 -* rsa-sha512 -* dsa-sha1 -* hmac-sha1 -* hmac-sha256 -* hmac-sha512 - -# Security Considerations - -## Default Parameters - -Note the default parameterization of the `Signature` scheme is only safe if all -requests are carried over a secure transport (i.e., TLS). Sending the default -scheme over a non-secure transport will leave the request vulnerable to -spoofing, tampering, replay/repudiaton, and integrity violations (if using the -STRIDE threat-modeling methodology). - -## Insecure Transports - -If sending the request over plain HTTP, service providers SHOULD require clients -to sign ALL HTTP headers, and the `request-line`. Additionally, service -providers SHOULD require `Content-MD5` calculations to be performed to ensure -against any tampering from clients. - -## Nonces - -Nonces are out of scope for this document simply because many service providers -fail to implement them correctly, or do not adopt security specfiications -because of the infrastructure complexity. Given the `header` parameterization, -a service provider is fully enabled to add nonce semantics into this scheme by -using something like an `x-request-nonce` header, and ensuring it is signed -with the `Date` header. - -## Clock Skew - -As the default scheme is to sign the `Date` header, service providers SHOULD -protect against logged replay attacks by enforcing a clock skew. The server -SHOULD be synchronized with NTP, and the recommendation in this specification -is to allow 300s of clock skew (in either direction). - -## Required Headers to Sign - -It is out of scope for this document to dictate what headers a service provider -will want to enforce, but service providers SHOULD at minimum include the -`Date` header. - -# References - -## Normative References - -* [RFC2616] Hypertext Transfer Protocol -- HTTP/1.1 -* [RFC2617] HTTP Authentication: Basic and Digest Access Authentication -* [RFC5246] The Transport Layer Security (TLS) Protocol Version 1.2 - -## Informative References - - Name: Mark Cavage (editor) - Company: Joyent, Inc. - Email: mark.cavage@joyent.com - URI: http://www.joyent.com - -# Appendix A - Test Values - -The following test data uses the RSA (2048b) keys, which we will refer -to as `keyId=Test` in the following samples: - - -----BEGIN PUBLIC KEY----- - MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCFENGw33yGihy92pDjZQhl0C3 - 6rPJj+CvfSC8+q28hxA161QFNUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6 - Z4UMR7EOcpfdUE9Hf3m/hs+FUR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJw - oYi+1hqp1fIekaxsyQIDAQAB - -----END PUBLIC KEY----- - - -----BEGIN RSA PRIVATE KEY----- - MIICXgIBAAKBgQDCFENGw33yGihy92pDjZQhl0C36rPJj+CvfSC8+q28hxA161QF - NUd13wuCTUcq0Qd2qsBe/2hFyc2DCJJg0h1L78+6Z4UMR7EOcpfdUE9Hf3m/hs+F - UR45uBJeDK1HSFHD8bHKD6kv8FPGfJTotc+2xjJwoYi+1hqp1fIekaxsyQIDAQAB - AoGBAJR8ZkCUvx5kzv+utdl7T5MnordT1TvoXXJGXK7ZZ+UuvMNUCdN2QPc4sBiA - QWvLw1cSKt5DsKZ8UETpYPy8pPYnnDEz2dDYiaew9+xEpubyeW2oH4Zx71wqBtOK - kqwrXa/pzdpiucRRjk6vE6YY7EBBs/g7uanVpGibOVAEsqH1AkEA7DkjVH28WDUg - f1nqvfn2Kj6CT7nIcE3jGJsZZ7zlZmBmHFDONMLUrXR/Zm3pR5m0tCmBqa5RK95u - 412jt1dPIwJBANJT3v8pnkth48bQo/fKel6uEYyboRtA5/uHuHkZ6FQF7OUkGogc - mSJluOdc5t6hI1VsLn0QZEjQZMEOWr+wKSMCQQCC4kXJEsHAve77oP6HtG/IiEn7 - kpyUXRNvFsDE0czpJJBvL/aRFUJxuRK91jhjC68sA7NsKMGg5OXb5I5Jj36xAkEA - gIT7aFOYBFwGgQAQkWNKLvySgKbAZRTeLBacpHMuQdl1DfdntvAyqpAZ0lY0RKmW - G6aFKaqQfOXKCyWoUiVknQJAXrlgySFci/2ueKlIE1QqIiLSZ8V8OlpFLRnb1pzI - 7U1yQXnTAEFYM560yJlzUpOb1V4cScGd365tiSMvxLOvTA== - -----END RSA PRIVATE KEY----- - -And all examples use this request: - - POST /foo?param=value&pet=dog HTTP/1.1 - Host: example.com - Date: Thu, 05 Jan 2012 21:31:40 GMT - Content-Type: application/json - Content-MD5: Sd/dVLAcvNLSq16eXua5uQ== - Content-Length: 18 - - {"hello": "world"} - -### Default - -The string to sign would be: - - date: Thu, 05 Jan 2012 21:31:40 GMT - -The Authorization header would be: - - Authorization: Signature keyId="Test",algorithm="rsa-sha256",signature="JldXnt8W9t643M2Sce10gqCh/+E7QIYLiI+bSjnFBGCti7s+mPPvOjVb72sbd1FjeOUwPTDpKbrQQORrm+xBYfAwCxF3LBSSzORvyJ5nRFCFxfJ3nlQD6Kdxhw8wrVZX5nSem4A/W3C8qH5uhFTRwF4ruRjh+ENHWuovPgO/HGQ=" - -### All Headers - -Parameterized to include all headers, the string to sign would be (`+ "\n"` -inserted for readability): - - POST /foo?param=value&pet=dog HTTP/1.1 + "\n" - host: example.com + "\n" - date: Thu, 05 Jan 2012 21:31:40 GMT + "\n" - content-type: application/json + "\n" - content-md5: Sd/dVLAcvNLSq16eXua5uQ== + "\n" - content-length: 18 - -The Authorization header would be: - - Authorization: Signature keyId="Test",algorithm="rsa-sha256",headers="request-line host date content-type content-md5 content-length",signature="Gm7W/r+e90REDpWytALMrft4MqZxCmslOTOvwJX17ViEBA5E65QqvWI0vIH3l/vSsGiaMVmuUgzYsJLYMLcm5dGrv1+a+0fCoUdVKPZWHyImQEqpLkopVwqEH67LVECFBqFTAKlQgBn676zrfXQbb+b/VebAsNUtvQMe6cTjnDY=" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js deleted file mode 100644 index 3ac70b77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/index.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2011 Joyent, Inc. All rights reserved. - -var parser = require('./parser'); -var signer = require('./signer'); -var verify = require('./verify'); -var util = require('./util'); - - - -///--- API - -module.exports = { - - parse: parser.parseRequest, - parseRequest: parser.parseRequest, - - sign: signer.signRequest, - signRequest: signer.signRequest, - - sshKeyToPEM: util.sshKeyToPEM, - sshKeyFingerprint: util.fingerprint, - - verify: verify.verifySignature, - verifySignature: verify.verifySignature -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js deleted file mode 100644 index fd9ac102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/parser.js +++ /dev/null @@ -1,304 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var util = require('util'); - - - -///--- Globals - -var Algorithms = { - 'rsa-sha1': true, - 'rsa-sha256': true, - 'rsa-sha512': true, - 'dsa-sha1': true, - 'hmac-sha1': true, - 'hmac-sha256': true, - 'hmac-sha512': true -}; - -var State = { - New: 0, - Params: 1 -}; - -var ParamsState = { - Name: 0, - Quote: 1, - Value: 2, - Comma: 3 -}; - - - -///--- Specific Errors - -function HttpSignatureError(message, caller) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, caller || HttpSignatureError); - - this.message = message; - this.name = caller.name; -} -util.inherits(HttpSignatureError, Error); - -function ExpiredRequestError(message) { - HttpSignatureError.call(this, message, ExpiredRequestError); -} -util.inherits(ExpiredRequestError, HttpSignatureError); - - -function InvalidHeaderError(message) { - HttpSignatureError.call(this, message, InvalidHeaderError); -} -util.inherits(InvalidHeaderError, HttpSignatureError); - - -function InvalidParamsError(message) { - HttpSignatureError.call(this, message, InvalidParamsError); -} -util.inherits(InvalidParamsError, HttpSignatureError); - - -function MissingHeaderError(message) { - HttpSignatureError.call(this, message, MissingHeaderError); -} -util.inherits(MissingHeaderError, HttpSignatureError); - - - -///--- Exported API - -module.exports = { - - /** - * Parses the 'Authorization' header out of an http.ServerRequest object. - * - * Note that this API will fully validate the Authorization header, and throw - * on any error. It will not however check the signature, or the keyId format - * as those are specific to your environment. You can use the options object - * to pass in extra constraints. - * - * As a response object you can expect this: - * - * { - * "scheme": "Signature", - * "params": { - * "keyId": "foo", - * "algorithm": "rsa-sha256", - * "headers": [ - * "date" or "x-date", - * "content-md5" - * ], - * "signature": "base64" - * }, - * "signingString": "ready to be passed to crypto.verify()" - * } - * - * @param {Object} request an http.ServerRequest. - * @param {Object} options an optional options object with: - * - clockSkew: allowed clock skew in seconds (default 300). - * - headers: required header names (def: date or x-date) - * - algorithms: algorithms to support (default: all). - * @return {Object} parsed out object (see above). - * @throws {TypeError} on invalid input. - * @throws {InvalidHeaderError} on an invalid Authorization header error. - * @throws {InvalidParamsError} if the params in the scheme are invalid. - * @throws {MissingHeaderError} if the params indicate a header not present, - * either in the request headers from the params, - * or not in the params from a required header - * in options. - * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew. - */ - parseRequest: function parseRequest(request, options) { - assert.object(request, 'request'); - assert.object(request.headers, 'request.headers'); - if (options === undefined) { - options = {}; - } - if (options.headers === undefined) { - options.headers = [request.headers['x-date'] ? 'x-date' : 'date']; - } - assert.object(options, 'options'); - assert.arrayOfString(options.headers, 'options.headers'); - assert.optionalNumber(options.clockSkew, 'options.clockSkew'); - - if (!request.headers.authorization) - throw new MissingHeaderError('no authorization header present in ' + - 'the request'); - - options.clockSkew = options.clockSkew || 300; - - - var i = 0; - var state = State.New; - var substate = ParamsState.Name; - var tmpName = ''; - var tmpValue = ''; - - var parsed = { - scheme: '', - params: {}, - signingString: '', - - get algorithm() { - return this.params.algorithm.toUpperCase(); - }, - - get keyId() { - return this.params.keyId; - } - - }; - - var authz = request.headers.authorization; - for (i = 0; i < authz.length; i++) { - var c = authz.charAt(i); - - switch (Number(state)) { - - case State.New: - if (c !== ' ') parsed.scheme += c; - else state = State.Params; - break; - - case State.Params: - switch (Number(substate)) { - - case ParamsState.Name: - var code = c.charCodeAt(0); - // restricted name of A-Z / a-z - if ((code >= 0x41 && code <= 0x5a) || // A-Z - (code >= 0x61 && code <= 0x7a)) { // a-z - tmpName += c; - } else if (c === '=') { - if (tmpName.length === 0) - throw new InvalidHeaderError('bad param format'); - substate = ParamsState.Quote; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Quote: - if (c === '"') { - tmpValue = ''; - substate = ParamsState.Value; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - case ParamsState.Value: - if (c === '"') { - parsed.params[tmpName] = tmpValue; - substate = ParamsState.Comma; - } else { - tmpValue += c; - } - break; - - case ParamsState.Comma: - if (c === ',') { - tmpName = ''; - substate = ParamsState.Name; - } else { - throw new InvalidHeaderError('bad param format'); - } - break; - - default: - throw new Error('Invalid substate'); - } - break; - - default: - throw new Error('Invalid substate'); - } - - } - - if (!parsed.params.headers || parsed.params.headers === '') { - if (request.headers['x-date']) { - parsed.params.headers = ['x-date']; - } else { - parsed.params.headers = ['date']; - } - } else { - parsed.params.headers = parsed.params.headers.split(' '); - } - - // Minimally validate the parsed object - if (!parsed.scheme || parsed.scheme !== 'Signature') - throw new InvalidHeaderError('scheme was not "Signature"'); - - if (!parsed.params.keyId) - throw new InvalidHeaderError('keyId was not specified'); - - if (!parsed.params.algorithm) - throw new InvalidHeaderError('algorithm was not specified'); - - if (!parsed.params.signature) - throw new InvalidHeaderError('signature was not specified'); - - // Check the algorithm against the official list - parsed.params.algorithm = parsed.params.algorithm.toLowerCase(); - if (!Algorithms[parsed.params.algorithm]) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not supported'); - - // Build the signingString - for (i = 0; i < parsed.params.headers.length; i++) { - var h = parsed.params.headers[i].toLowerCase(); - parsed.params.headers[i] = h; - - if (h !== 'request-line') { - var value = request.headers[h]; - if (!value) - throw new MissingHeaderError(h + ' was not in the request'); - parsed.signingString += h + ': ' + value; - } else { - parsed.signingString += - request.method + ' ' + request.url + ' HTTP/' + request.httpVersion; - } - - if ((i + 1) < parsed.params.headers.length) - parsed.signingString += '\n'; - } - - // Check against the constraints - var date; - if (request.headers.date || request.headers['x-date']) { - if (request.headers['x-date']) { - date = new Date(request.headers['x-date']); - } else { - date = new Date(request.headers.date); - } - var now = new Date(); - var skew = Math.abs(now.getTime() - date.getTime()); - - if (skew > options.clockSkew * 1000) { - throw new ExpiredRequestError('clock skew of ' + - (skew / 1000) + - 's was greater than ' + - options.clockSkew + 's'); - } - } - - options.headers.forEach(function (hdr) { - // Remember that we already checked any headers in the params - // were in the request, so if this passes we're good. - if (parsed.params.headers.indexOf(hdr) < 0) - throw new MissingHeaderError(hdr + ' was not a signed header'); - }); - - if (options.algorithms) { - if (options.algorithms.indexOf(parsed.params.algorithm) === -1) - throw new InvalidParamsError(parsed.params.algorithm + - ' is not a supported algorithm'); - } - - return parsed; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js deleted file mode 100644 index 8095f0d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/signer.js +++ /dev/null @@ -1,179 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); -var http = require('http'); - -var sprintf = require('util').format; - - - -///--- Globals - -var Algorithms = { - 'rsa-sha1': true, - 'rsa-sha256': true, - 'rsa-sha512': true, - 'dsa-sha1': true, - 'hmac-sha1': true, - 'hmac-sha256': true, - 'hmac-sha512': true -}; - -var Authorization = - 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"'; - - - -///--- Specific Errors - -function MissingHeaderError(message) { - this.name = 'MissingHeaderError'; - this.message = message; - this.stack = (new Error()).stack; -} -MissingHeaderError.prototype = new Error(); - - -function InvalidAlgorithmError(message) { - this.name = 'InvalidAlgorithmError'; - this.message = message; - this.stack = (new Error()).stack; -} -InvalidAlgorithmError.prototype = new Error(); - - - -///--- Internal Functions - -function _pad(val) { - if (parseInt(val, 10) < 10) { - val = '0' + val; - } - return val; -} - - -function _rfc1123() { - var date = new Date(); - - var months = ['Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec']; - var days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - return days[date.getUTCDay()] + ', ' + - _pad(date.getUTCDate()) + ' ' + - months[date.getUTCMonth()] + ' ' + - date.getUTCFullYear() + ' ' + - _pad(date.getUTCHours()) + ':' + - _pad(date.getUTCMinutes()) + ':' + - _pad(date.getUTCSeconds()) + - ' GMT'; -} - - - -///--- Exported API - -module.exports = { - - /** - * Adds an 'Authorization' header to an http.ClientRequest object. - * - * Note that this API will add a Date header if it's not already set. Any - * other headers in the options.headers array MUST be present, or this - * will throw. - * - * You shouldn't need to check the return type; it's just there if you want - * to be pedantic. - * - * @param {Object} request an instance of http.ClientRequest. - * @param {Object} options signing parameters object: - * - {String} keyId required. - * - {String} key required (either a PEM or HMAC key). - * - {Array} headers optional; defaults to ['date']. - * - {String} algorithm optional; defaults to 'rsa-sha256'. - * - {String} httpVersion optional; defaults to '1.1'. - * @return {Boolean} true if Authorization (and optionally Date) were added. - * @throws {TypeError} on bad parameter types (input). - * @throws {InvalidAlgorithmError} if algorithm was bad. - * @throws {MissingHeaderError} if a header to be signed was specified but - * was not present. - */ - signRequest: function signRequest(request, options) { - assert.object(request, 'request'); - assert.object(options, 'options'); - assert.optionalString(options.algorithm, 'options.algorithm'); - assert.string(options.keyId, 'options.keyId'); - assert.optionalArrayOfString(options.headers, 'options.headers'); - assert.optionalString(options.httpVersion, 'options.httpVersion'); - - if (!request.getHeader('Date')) - request.setHeader('Date', _rfc1123()); - if (!options.headers) - options.headers = ['date']; - if (!options.algorithm) - options.algorithm = 'rsa-sha256'; - if (!options.httpVersion) - options.httpVersion = '1.1'; - - options.algorithm = options.algorithm.toLowerCase(); - - if (!Algorithms[options.algorithm]) - throw new InvalidAlgorithmError(options.algorithm + ' is not supported'); - - var i; - var stringToSign = ''; - for (i = 0; i < options.headers.length; i++) { - if (typeof (options.headers[i]) !== 'string') - throw new TypeError('options.headers must be an array of Strings'); - - var h = options.headers[i].toLowerCase(); - - if (h !== 'request-line') { - var value = request.getHeader(h); - if (!value) { - throw new MissingHeaderError(h + ' was not in the request'); - } - stringToSign += h + ': ' + value; - } else { - value = - stringToSign += - request.method + ' ' + request.path + ' HTTP/' + options.httpVersion; - } - - if ((i + 1) < options.headers.length) - stringToSign += '\n'; - } - - var alg = options.algorithm.match(/(hmac|rsa)-(\w+)/); - var signature; - if (alg[1] === 'hmac') { - var hmac = crypto.createHmac(alg[2].toUpperCase(), options.key); - hmac.update(stringToSign); - signature = hmac.digest('base64'); - } else { - var signer = crypto.createSign(options.algorithm.toUpperCase()); - signer.update(stringToSign); - signature = signer.sign(options.key, 'base64'); - } - - request.setHeader('Authorization', sprintf(Authorization, - options.keyId, - options.algorithm, - options.headers.join(' '), - signature)); - - return true; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js deleted file mode 100644 index 30bbf045..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/util.js +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright 2012 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); - -var asn1 = require('asn1'); -var ctype = require('ctype'); - - - -///--- Helpers - -function readNext(buffer, offset) { - var len = ctype.ruint32(buffer, 'big', offset); - offset += 4; - - var newOffset = offset + len; - - return { - data: buffer.slice(offset, newOffset), - offset: newOffset - }; -} - - -function writeInt(writer, buffer) { - writer.writeByte(0x02); // ASN1.Integer - writer.writeLength(buffer.length); - - for (var i = 0; i < buffer.length; i++) - writer.writeByte(buffer[i]); - - return writer; -} - - -function rsaToPEM(key) { - var buffer; - var der; - var exponent; - var i; - var modulus; - var newKey = ''; - var offset = 0; - var type; - var tmp; - - try { - buffer = new Buffer(key.split(' ')[1], 'base64'); - - tmp = readNext(buffer, offset); - type = tmp.data.toString(); - offset = tmp.offset; - - if (type !== 'ssh-rsa') - throw new Error('Invalid ssh key type: ' + type); - - tmp = readNext(buffer, offset); - exponent = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - modulus = tmp.data; - } catch (e) { - throw new Error('Invalid ssh key: ' + key); - } - - // DER is a subset of BER - der = new asn1.BerWriter(); - - der.startSequence(); - - der.startSequence(); - der.writeOID('1.2.840.113549.1.1.1'); - der.writeNull(); - der.endSequence(); - - der.startSequence(0x03); // bit string - der.writeByte(0x00); - - // Actual key - der.startSequence(); - writeInt(der, modulus); - writeInt(der, exponent); - der.endSequence(); - - // bit string - der.endSequence(); - - der.endSequence(); - - tmp = der.buffer.toString('base64'); - for (i = 0; i < tmp.length; i++) { - if ((i % 64) === 0) - newKey += '\n'; - newKey += tmp.charAt(i); - } - - if (!/\\n$/.test(newKey)) - newKey += '\n'; - - return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n'; -} - - -function dsaToPEM(key) { - var buffer; - var offset = 0; - var tmp; - var der; - var newKey = ''; - - var type; - var p; - var q; - var g; - var y; - - try { - buffer = new Buffer(key.split(' ')[1], 'base64'); - - tmp = readNext(buffer, offset); - type = tmp.data.toString(); - offset = tmp.offset; - - /* JSSTYLED */ - if (!/^ssh-ds[as].*/.test(type)) - throw new Error('Invalid ssh key type: ' + type); - - tmp = readNext(buffer, offset); - p = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - q = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - g = tmp.data; - offset = tmp.offset; - - tmp = readNext(buffer, offset); - y = tmp.data; - } catch (e) { - console.log(e.stack); - throw new Error('Invalid ssh key: ' + key); - } - - // DER is a subset of BER - der = new asn1.BerWriter(); - - der.startSequence(); - - der.startSequence(); - der.writeOID('1.2.840.10040.4.1'); - - der.startSequence(); - writeInt(der, p); - writeInt(der, q); - writeInt(der, g); - der.endSequence(); - - der.endSequence(); - - der.startSequence(0x03); // bit string - der.writeByte(0x00); - writeInt(der, y); - der.endSequence(); - - der.endSequence(); - - tmp = der.buffer.toString('base64'); - for (var i = 0; i < tmp.length; i++) { - if ((i % 64) === 0) - newKey += '\n'; - newKey += tmp.charAt(i); - } - - if (!/\\n$/.test(newKey)) - newKey += '\n'; - - return '-----BEGIN PUBLIC KEY-----' + newKey + '-----END PUBLIC KEY-----\n'; -} - - -///--- API - -module.exports = { - - /** - * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. - * - * The intent of this module is to interoperate with OpenSSL only, - * specifically the node crypto module's `verify` method. - * - * @param {String} key an OpenSSH public key. - * @return {String} PEM encoded form of the RSA public key. - * @throws {TypeError} on bad input. - * @throws {Error} on invalid ssh key formatted data. - */ - sshKeyToPEM: function sshKeyToPEM(key) { - assert.string(key, 'ssh_key'); - - /* JSSTYLED */ - if (/^ssh-rsa.*/.test(key)) - return rsaToPEM(key); - - /* JSSTYLED */ - if (/^ssh-ds[as].*/.test(key)) - return dsaToPEM(key); - - throw new Error('Only RSA and DSA public keys are allowed'); - }, - - - /** - * Generates an OpenSSH fingerprint from an ssh public key. - * - * @param {String} key an OpenSSH public key. - * @return {String} key fingerprint. - * @throws {TypeError} on bad input. - * @throws {Error} if what you passed doesn't look like an ssh public key. - */ - fingerprint: function fingerprint(key) { - assert.string(key, 'ssh_key'); - - var pieces = key.split(' '); - if (!pieces || !pieces.length || pieces.length < 2) - throw new Error('invalid ssh key'); - - var data = new Buffer(pieces[1], 'base64'); - - var hash = crypto.createHash('md5'); - hash.update(data); - var digest = hash.digest('hex'); - - var fp = ''; - for (var i = 0; i < digest.length; i++) { - if (i && i % 2 === 0) - fp += ':'; - - fp += digest[i]; - } - - return fp; - } - - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js deleted file mode 100644 index 5bf95896..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/lib/verify.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2011 Joyent, Inc. All rights reserved. - -var assert = require('assert-plus'); -var crypto = require('crypto'); - - - -///--- Exported API - -module.exports = { - - /** - * Simply wraps up the node crypto operations for you, and returns - * true or false. You are expected to pass in an object that was - * returned from `parse()`. - * - * @param {Object} parsedSignature the object you got from `parse`. - * @param {String} key either an RSA private key PEM or HMAC secret. - * @return {Boolean} true if valid, false otherwise. - * @throws {TypeError} if you pass in bad arguments. - */ - verifySignature: function verifySignature(parsedSignature, key) { - assert.object(parsedSignature, 'parsedSignature'); - assert.string(key, 'key'); - - var alg = parsedSignature.algorithm.match(/(HMAC|RSA|DSA)-(\w+)/); - if (!alg || alg.length !== 3) - throw new TypeError('parsedSignature: unsupported algorithm ' + - parsedSignature.algorithm); - - if (alg[1] === 'HMAC') { - var hmac = crypto.createHmac(alg[2].toUpperCase(), key); - hmac.update(parsedSignature.signingString); - return (hmac.digest('base64') === parsedSignature.params.signature); - } else { - var verify = crypto.createVerify(alg[0]); - verify.update(parsedSignature.signingString); - return verify.verify(key, parsedSignature.params.signature, 'base64'); - } - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore deleted file mode 100644 index eb03e3e1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -*.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE deleted file mode 100644 index 9b5dcdb7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Mark Cavage, All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md deleted file mode 100644 index 7cebf7a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md +++ /dev/null @@ -1,50 +0,0 @@ -node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. -Currently BER encoding is supported; at some point I'll likely have to do DER. - -## Usage - -Mostly, if you're *actually* needing to read and write ASN.1, you probably don't -need this readme to explain what and why. If you have no idea what ASN.1 is, -see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -The source is pretty much self-explanatory, and has read/write methods for the -common types out there. - -### Decoding - -The following reads an ASN.1 sequence with a boolean. - - var Ber = require('asn1').Ber; - - var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - - reader.readSequence(); - console.log('Sequence len: ' + reader.length); - if (reader.peek() === Ber.Boolean) - console.log(reader.readBoolean()); - -### Encoding - -The following generates the same payload as above. - - var Ber = require('asn1').Ber; - - var writer = new Ber.Writer(); - - writer.startSequence(); - writer.writeBoolean(true); - writer.endSequence(); - - console.log(writer.buffer); - -## Installation - - npm install asn1 - -## License - -MIT. - -## Bugs - -See <https://github.com/mcavage/node-asn1/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js deleted file mode 100644 index ff21d4fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function(msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js deleted file mode 100644 index 4fb90aea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var errors = require('./errors'); -var types = require('./types'); - -var Reader = require('./reader'); -var Writer = require('./writer'); - - -///--- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js deleted file mode 100644 index bd3357a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var assert = require('assert'); - -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -///--- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; - - var self = this; - this.__defineGetter__('length', function() { return self._len; }); - this.__defineGetter__('offset', function() { return self._offset; }); - this.__defineGetter__('remain', function() { - return self._size - self._offset; - }); - this.__defineGetter__('buffer', function() { - return self._buf.slice(self._offset); - }); -} - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function(peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function() { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function(offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) == 0x80) { - lenB &= 0x7f; - - if (lenB == 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function(tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function() { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function() { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function() { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function(tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function(tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - var values = []; - var value = 0; - - for (var i = 0; i < this.length; i++) { - var byte = this._buf[this._offset++] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) == 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function(tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset++]; - var value = 0; - - value = fb & 0x7F; - for (var i = 1; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) == 0x80) - value = -value; - - return value; -}; - - - -///--- Exported API - -module.exports = Reader; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js deleted file mode 100644 index 8aea0001..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js deleted file mode 100644 index 7b445cc6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var assert = require('assert'); -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -///--- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof(from), 'object'); - assert.ok(to); - assert.equal(typeof(to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function(key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -///--- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = new Buffer(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; - - var self = this; - this.__defineGetter__('buffer', function() { - if (self._seq.length) - throw new InvalidAsn1Error(self._seq.length + ' unended sequence(s)'); - - return self._buf.slice(0, self._offset); - }); -} - - -Writer.prototype.writeByte = function(b) { - if (typeof(b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function() { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function(b, tag) { - if (typeof(b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof(tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof(s) + ')'); - if (typeof(tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function(buf, tag) { - if (typeof(tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function(strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function(s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof(tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function(b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function(b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function(len) { - if (typeof(len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw new InvalidAsn1ERror('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function(tag) { - if (typeof(tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function() { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw new InvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function(start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function(len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = new Buffer(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -///--- Exported API - -module.exports = Writer; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js deleted file mode 100644 index d1766e7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = require('./ber/index'); - - - -///--- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json deleted file mode 100644 index 79f0b054..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "contributors": [ - { - "name": "David Gwynne", - "email": "loki@animata.net" - }, - { - "name": "Yunong Xiao", - "email": "yunong@joyent.com" - } - ], - "name": "asn1", - "description": "Contains parsers and serializers for ASN.1 (currently BER only)", - "version": "0.1.11", - "repository": { - "type": "git", - "url": "git://github.com/mcavage/node-asn1.git" - }, - "main": "lib/index.js", - "engines": { - "node": ">=0.4.9" - }, - "dependencies": {}, - "devDependencies": { - "tap": "0.1.4" - }, - "scripts": { - "pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi", - "test": "./node_modules/.bin/tap ./tst" - }, - "readme": "node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.\nCurrently BER encoding is supported; at some point I'll likely have to do DER.\n\n## Usage\n\nMostly, if you're *actually* needing to read and write ASN.1, you probably don't\nneed this readme to explain what and why. If you have no idea what ASN.1 is,\nsee this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nThe source is pretty much self-explanatory, and has read/write methods for the\ncommon types out there.\n\n### Decoding\n\nThe following reads an ASN.1 sequence with a boolean.\n\n var Ber = require('asn1').Ber;\n\n var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));\n\n reader.readSequence();\n console.log('Sequence len: ' + reader.length);\n if (reader.peek() === Ber.Boolean)\n console.log(reader.readBoolean());\n\n### Encoding\n\nThe following generates the same payload as above.\n\n var Ber = require('asn1').Ber;\n\n var writer = new Ber.Writer();\n\n writer.startSequence();\n writer.writeBoolean(true);\n writer.endSequence();\n\n console.log(writer.buffer);\n\n## Installation\n\n npm install asn1\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-asn1/issues>.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mcavage/node-asn1/issues" - }, - "homepage": "https://github.com/mcavage/node-asn1", - "_id": "asn1@0.1.11", - "_from": "asn1@0.1.11" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js deleted file mode 100644 index 0b78b474..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var test = require('tap').test; - - - -///--- Globals - -var BerReader; - - - -///--- Tests - -test('load library', function(t) { - BerReader = require('../../lib/index').BerReader; - t.ok(BerReader); - try { - new BerReader(); - t.fail('Should have thrown'); - } catch (e) { - t.ok(e instanceof TypeError, 'Should have been a type error'); - } - t.end(); -}); - - -test('read byte', function(t) { - var reader = new BerReader(new Buffer([0xde])); - t.ok(reader); - t.equal(reader.readByte(), 0xde, 'wrong value'); - t.end(); -}); - - -test('read 1 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x01, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x03, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read 2 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede, 'wrong value'); - t.equal(reader.length, 0x02, 'wrong length'); - t.end(); -}); - - -test('read 3 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede03, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.end(); -}); - - -test('read 4 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede0301, 'wrong value'); - t.equal(reader.length, 0x04, 'wrong length'); - t.end(); -}); - - -test('read boolean true', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read boolean false', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0x00])); - t.ok(reader); - t.equal(reader.readBoolean(), false, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read enumeration', function(t) { - var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20])); - t.ok(reader); - t.equal(reader.readEnumeration(), 0x20, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read string', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var buf = new Buffer(dn.length + 2); - buf[0] = 0x04; - buf[1] = Buffer.byteLength(dn); - buf.write(dn, 2); - var reader = new BerReader(buf); - t.ok(reader); - t.equal(reader.readString(), dn, 'wrong value'); - t.equal(reader.length, dn.length, 'wrong length'); - t.end(); -}); - - -test('read sequence', function(t) { - var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readSequence(), 0x30, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('anonymous LDAPv3 bind', function(t) { - var BIND = new Buffer(14); - BIND[0] = 0x30; // Sequence - BIND[1] = 12; // len - BIND[2] = 0x02; // ASN.1 Integer - BIND[3] = 1; // len - BIND[4] = 0x04; // msgid (make up 4) - BIND[5] = 0x60; // Bind Request - BIND[6] = 7; // len - BIND[7] = 0x02; // ASN.1 Integer - BIND[8] = 1; // len - BIND[9] = 0x03; // v3 - BIND[10] = 0x04; // String (bind dn) - BIND[11] = 0; // len - BIND[12] = 0x80; // ContextSpecific (choice) - BIND[13] = 0; // simple bind - - // Start testing ^^ - var ber = new BerReader(BIND); - t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence'); - t.equal(ber.length, 12, 'Message length should be 12'); - t.equal(ber.readInt(), 4, 'Message id should have been 4'); - t.equal(ber.readSequence(), 96, 'Bind Request should have been 96'); - t.equal(ber.length, 7, 'Bind length should have been 7'); - t.equal(ber.readInt(), 3, 'LDAP version should have been 3'); - t.equal(ber.readString(), '', 'Bind DN should have been empty'); - t.equal(ber.length, 0, 'string length should have been 0'); - t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)'); - t.equal(ber.readByte(), 0, 'Should have been simple bind'); - t.equal(null, ber.readByte(), 'Should be out of data'); - t.end(); -}); - - -test('long string', function(t) { - var buf = new Buffer(256); - var o; - var s = - '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' + - 'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' + - 'Teena Vradmin\'s description.'; - buf[0] = 0x04; - buf[1] = 0x81; - buf[2] = 0x94; - buf.write(s, 3); - var ber = new BerReader(buf.slice(0, 3 + s.length)); - t.equal(ber.readString(), s); - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js deleted file mode 100644 index add0b9fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved. - -var test = require('tap').test; -var sys = require('sys'); - -///--- Globals - -var BerWriter; - -var BerReader; - - -///--- Tests - -test('load library', function(t) { - BerWriter = require('../../lib/index').BerWriter; - t.ok(BerWriter); - t.ok(new BerWriter()); - t.end(); -}); - - -test('write byte', function(t) { - var writer = new BerWriter(); - - writer.writeByte(0xC2); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 1, 'Wrong length'); - t.equal(ber[0], 0xC2, 'value wrong'); - - t.end(); -}); - - -test('write 1 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7f); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]); - t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]); - t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]); - - t.end(); -}); - - -test('write 2 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 4, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x02, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xfe, 'value wrong (byte 2)'); - - t.end(); -}); - - -test('write 3 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 5, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x03, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xfe, 'value wrong (byte 3)'); - - t.end(); -}); - - -test('write 4 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffffe); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 6, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x04, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xff, 'value wrong (byte 3)'); - t.equal(ber[5], 0xfe, 'value wrong (byte 4)'); - - t.end(); -}); - - -test('write boolean', function(t) { - var writer = new BerWriter(); - - writer.writeBoolean(true); - writer.writeBoolean(false); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 6, 'Wrong length'); - t.equal(ber[0], 0x01, 'tag wrong'); - t.equal(ber[1], 0x01, 'length wrong'); - t.equal(ber[2], 0xff, 'value wrong'); - t.equal(ber[3], 0x01, 'tag wrong'); - t.equal(ber[4], 0x01, 'length wrong'); - t.equal(ber[5], 0x00, 'value wrong'); - - t.end(); -}); - - -test('write string', function(t) { - var writer = new BerWriter(); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - -test('write buffer', function(t) { - var writer = new BerWriter(); - // write some stuff to start with - writer.writeString('hello world'); - var ber = writer.buffer; - var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01, - 0xff, 0x01, 0x01, 0xff]); - writer.writeBuffer(buf.slice(2, buf.length), 0x04); - ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 26, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[13], buf[0], 'wrong tag'); - t.equal(ber[14], buf[1], 'wrong length'); - for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) { - t.equal(ber[i], buf[j], 'buffer contents not identical'); - } - t.end(); -}); - -test('write string array', function(t) { - var writer = new BerWriter(); - writer.writeStringArray(['hello world', 'fubar!']); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 21, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - - t.equal(ber[13], 0x04, 'wrong tag'); - t.equal(ber[14], 6, 'wrong length'); - t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value'); - - t.end(); -}); - - -test('resize internal buffer', function(t) { - var writer = new BerWriter({size: 2}); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - console.log(ber); - t.equal(ber.length, 15, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 13, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('nested sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 30, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 28, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[15], 0x30, 'wrong tag'); - t.equal(ber[16], 13, 'wrong length'); - t.equal(ber[17], 0x04, 'wrong tag'); - t.equal(ber[18], 11, 'wrong length'); - t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('LDAP bind message', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var writer = new BerWriter(); - writer.startSequence(); - writer.writeInt(3); // msgid = 3 - writer.startSequence(0x60); // ldap bind - writer.writeInt(3); // ldap v3 - writer.writeString(dn); - writer.writeByte(0x80); - writer.writeByte(0x00); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 35, 'wrong length (buffer)'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 33, 'wrong length'); - t.equal(ber[2], 0x02, 'wrong tag'); - t.equal(ber[3], 1, 'wrong length'); - t.equal(ber[4], 0x03, 'wrong value'); - t.equal(ber[5], 0x60, 'wrong tag'); - t.equal(ber[6], 28, 'wrong length'); - t.equal(ber[7], 0x02, 'wrong tag'); - t.equal(ber[8], 1, 'wrong length'); - t.equal(ber[9], 0x03, 'wrong value'); - t.equal(ber[10], 0x04, 'wrong tag'); - t.equal(ber[11], dn.length, 'wrong length'); - t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value'); - t.equal(ber[33], 0x80, 'wrong tag'); - t.equal(ber[34], 0x00, 'wrong len'); - - t.end(); -}); - - -test('Write OID', function(t) { - var oid = '1.2.840.113549.1.1.1'; - var writer = new BerWriter(); - writer.writeOID(oid); - - var ber = writer.buffer; - t.ok(ber); - console.log(require('util').inspect(ber)); - console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x01, 0x01]))); - - t.end(); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md deleted file mode 100644 index c0c3a530..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# node-assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object.<anonymous> (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - - function test(foo) { - assert.string(foo, 'foo'); - } - -There you go. You can check that arrays are of a homogenous type with `Arrayof$Type`: - - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - - assert.optionalString(foo, 'foo'); - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. - -The complete list of APIs is: - -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.object -* assert.string -* assert.arrayOfBool -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfObject -* assert.arrayOfString -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalObject -* assert.optionalString -* assert.optionalArrayOfBool -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -## Bugs - -See <https://github.com/mcavage/node-assert-plus/issues>. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js deleted file mode 100644 index 70583f12..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - - -///--- Globals - -var NDEBUG = process.env.NODE_NDEBUG || false; - - - -///--- Messages - -var ARRAY_TYPE_REQUIRED = '%s ([%s]) required'; -var TYPE_REQUIRED = '%s (%s) is required'; - - - -///--- Internal - -function capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function uncapitalize(str) { - return (str.charAt(0).toLowerCase() + str.slice(1)); -} - -function _() { - return (util.format.apply(util, arguments)); -} - - -function _assert(arg, type, name, stackFunc) { - if (!NDEBUG) { - name = name || type; - stackFunc = stackFunc || _assert.caller; - var t = typeof (arg); - - if (t !== type) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: t, - expected: type, - operator: '===', - stackStartFunction: stackFunc - }); - } - } -} - - - -///--- API - -function array(arr, type, name) { - if (!NDEBUG) { - name = name || type; - - if (!Array.isArray(arr)) { - throw new assert.AssertionError({ - message: _(ARRAY_TYPE_REQUIRED, name, type), - actual: typeof (arr), - expected: 'array', - operator: 'Array.isArray', - stackStartFunction: array.caller - }); - } - - for (var i = 0; i < arr.length; i++) { - _assert(arr[i], type, name, array); - } - } -} - - -function bool(arg, name) { - _assert(arg, 'boolean', name, bool); -} - - -function buffer(arg, name) { - if (!Buffer.isBuffer(arg)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: typeof (arg), - expected: 'buffer', - operator: 'Buffer.isBuffer', - stackStartFunction: buffer - }); - } -} - - -function func(arg, name) { - _assert(arg, 'function', name); -} - - -function number(arg, name) { - _assert(arg, 'number', name); -} - - -function object(arg, name) { - _assert(arg, 'object', name); -} - - -function stream(arg, name) { - if (!(arg instanceof Stream)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: typeof (arg), - expected: 'Stream', - operator: 'instanceof', - stackStartFunction: buffer - }); - } -} - - -function string(arg, name) { - _assert(arg, 'string', name); -} - - - -///--- Exports - -module.exports = { - bool: bool, - buffer: buffer, - func: func, - number: number, - object: object, - stream: stream, - string: string -}; - - -Object.keys(module.exports).forEach(function (k) { - if (k === 'buffer') - return; - - var name = 'arrayOf' + capitalize(k); - - if (k === 'bool') - k = 'boolean'; - if (k === 'func') - k = 'function'; - module.exports[name] = function (arg, name) { - array(arg, k, name); - }; -}); - -Object.keys(module.exports).forEach(function (k) { - var _name = 'optional' + capitalize(k); - var s = uncapitalize(k.replace('arrayOf', '')); - if (s === 'bool') - s = 'boolean'; - if (s === 'func') - s = 'function'; - - if (k.indexOf('arrayOf') !== -1) { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - array(arg, s, name); - } - }; - } else { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - _assert(arg, s, name); - } - }; - } -}); - - -// Reexport built-in assertions -Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - module.exports[k] = assert[k]; - return; - } - - module.exports[k] = function () { - if (!NDEBUG) { - assert[k].apply(assert[k], arguments); - } - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json deleted file mode 100644 index aaf2e924..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "author": { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - "name": "assert-plus", - "description": "Extra assertions on top of node's assert module", - "version": "0.1.2", - "main": "./assert.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": ">=0.6" - }, - "readme": "# node-assert-plus\n\nThis library is a super small wrapper over node's assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks\nlike this:\n\n var assert = require('assert-plus');\n\n function fooAccount(options, callback) {\n\t assert.object(options, 'options');\n\t\tassert.number(options.id, 'options.id);\n\t\tassert.bool(options.isManager, 'options.isManager');\n\t\tassert.string(options.name, 'options.name');\n\t\tassert.arrayOfString(options.email, 'options.email');\n\t\tassert.func(callback, 'callback');\n\n // Do stuff\n\t\tcallback(null, {});\n }\n\n# API\n\nAll methods that *aren't* part of node's core assert API are simply assumed to\ntake an argument, and then a string 'name' that's not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n\tat test (/home/mark/work/foo/foo.js:3:9)\n\tat Object.<anonymous> (/home/mark/work/foo/foo.js:15:1)\n\tat Module._compile (module.js:446:26)\n\tat Object..js (module.js:464:10)\n\tat Module.load (module.js:353:31)\n\tat Function._load (module.js:311:12)\n\tat Array.0 (module.js:484:10)\n\tat EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n function test(foo) {\n\t assert.string(foo, 'foo');\n }\n\nThere you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:\n\n function test(foo) {\n\t assert.arrayOfString(foo, 'foo');\n }\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n assert.optionalString(foo, 'foo');\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don't want to pay `typeof ()` taxes to v8 in\nproduction.\n\nThe complete list of APIs is:\n\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.object\n* assert.string\n* assert.arrayOfBool\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee <https://github.com/mcavage/node-assert-plus/issues>.\n", - "readmeFilename": "README.md", - "_id": "assert-plus@0.1.2", - "_from": "assert-plus@0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG deleted file mode 100644 index 078c03ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG +++ /dev/null @@ -1,71 +0,0 @@ -This contains tickets fixed in each version release in reverse chronological -order. There is one ticket per line. Each commits message has the tickets fixed -in it. The commit message also has the corresponding github issue. i.e. CTYPE-42 -would be issue 42. Each issue can be found at: -https://github.com/rmustacc/node-ctype/issues/%d. - -CTYPE v0.5.2 -CTYPE-46 Release 0.5.2 -CTYPE-45 error in setEndian logic - -v0.5.1 -CTYPE-44 Release 0.5.1 -Contributed by Terin Stock: -CTYPE-41 CTypeParser.writeStruct should return its offset -Contributed by Terin Stock: -CTYPE-42 int64_t returns wrong size - -v0.5.0 -CTYPE-40 Release 0.5.0 -CTYPE-39 want > 0.6 engine support - -v0.4.0 -CTYPE-37 Release v0.4.0 -CTYPE-6 want additional entry point for write -CTYPE-20 Add 64-bit int support into core parser -CTYPE-31 Fix bounds errors node/2129 -CTYPE-33 Update copyright holders -CTYPE-34 ctf.js confuses sign bit. -CTYPE-35 Make the README more useful for getting started -CTYPE-36 want manual page on ctio functions - -v0.3.1 -CTYPE-29 Release 0.3.1 -CTYPE-28 Want v0.6 npm support - -v0.3.0 -CTYPE-27 Release v0.3.0 -CTYPE-26 Want alternate default char behavior - -v0.2.1 -CTYPE-25 Release v0.2.1 -CTYPE-24 Writing structs is busted - -v0.2.0: -CTYPE-23 Release v0.2.0 -CTYPE-21 Add support for CTF JSON data -CTYPE-22 Add Javascriptlint profile -CTYPE-15 Pull in ctio updates from node/master - -v0.1.0: -CTYPE-18 Bump version to v0.1.0 -CTYPE-17 Fix nested structures -CTYPE-16 Remove extraneous logging -CTYPE-14 toAbs64 and toApprox64 are not exported - -v0.0.3: -CTYPE-12 Bump version to v0.0.3 -CTYPE-11 fix typo in wuint64 -CTYPE-10 Integrate jsstyle - -v0.0.2: -CTYPE-8 dump npm version to v0.0.2 -CTYPE-9 want changelog -CTYPE-7 fix typo in detypes. - -v0.0.1: -CTYPE-5 Missing from NPM registry -CTYPE-4 int16_t calls wrong read function -CTYPE-3 API example types are missing quotes as strings -CTYPE-2 doc missing 64-bit functions -CTYPE-1 Need license diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE deleted file mode 100644 index 22ced3e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The following license applies to all files unless the file is specified below. -Each file specified below has its license information embedded in it: - -tools/jsstyle - -Copyright 2011, Robert Mustacchi. All rights reserved. -Copyright 2011, Joyent, Inc. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README deleted file mode 100644 index 4efd7ee5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README +++ /dev/null @@ -1,82 +0,0 @@ -Node-CType is a way to read and write binary data in structured and easy to use -format. Its name comes from the C header file. - -To get started, simply clone the repository or use npm to install it. Once it is -there, simply require it. - -git clone git://github.com/rmustacc/node-ctype -npm install ctype -var mod_ctype = require('ctype') - - -There are two APIs that you can use, depending on what abstraction you'd like. -The low level API let's you read and write individual integers and floats from -buffers. The higher level API let's you read and write structures of these. To -illustrate this, let's looks look at how we would read and write a binary -encoded x,y point. - -In C we would define this structure as follows: - -typedef struct point { - uint16_t p_x; - uint16_t p_y; -} point_t; - -To read a binary encoded point from a Buffer, we first need to create a CType -parser (where we specify the endian and other options) and add the typedef. - -var parser = new mod_ctype.Parser({ endian: 'big' }); -parser.typedef('point_t', [ - { x: { type: 'uint16_t' } }, - { y: { type: 'uint16_t' } } -]); - -From here, given a buffer buf and an offset into it, we can read a point. - -var out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0); -console.log(out); -{ point: { x: 23, y: 42 } } - -Another way to get the same information would be to use the low level methods. -Note that these require you to manually deal with the offset. Here's how we'd -get the same values of x and y from the buffer. - -var x = mod_ctype.ruint16(buf, 'big', 0); -var y = mod_ctype.ruint16(buf, 'big', 2); -console.log(x + ', ' + y); -23, 42 - -The true power of this API comes from the ability to define and nest typedefs, -just as you would in C. By default, the following types are defined by default. -Note that they return a Number, unless indicated otherwise. - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (either returns a buffer with that character or a uint8_t) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - - -ctf2json integration: - -Node-CType supports consuming the output of ctf2json. Once you read in a JSON file, -all you have to do to add all the definitions it contains is: - -var data, parser; -data = JSON.parse(parsedJSONData); -parser = mod_ctype.parseCTF(data, { endian: 'big' }); - -For more documentation, see the file README.old. Full documentation is in the -process of being rewritten as a series of manual pages which will be available -in the repository and online for viewing. - -To read the ctio manual page simple run, from the root of the workspace: - -man -Mman -s 3ctype ctio diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old deleted file mode 100644 index 9326b725..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old +++ /dev/null @@ -1,298 +0,0 @@ -This library provides a way to read and write binary data. - -Node CType is a way to read and write binary data in structured and easy to use -formats. It's name comes from the header file, though it does not share as much -with it as it perhaps should. - -There are two levels of the API. One is the raw API which everything is built on -top of, while the other provides a much nicer abstraction and is built entirely -by using the lower level API. The hope is that the low level API is both clear -and useful. The low level API gets it's names from stdint.h (a rather -appropriate source). The lower level API is presented at the end of this -document. - -Standard CType API - -The CType interface is presented as a parser object that controls the -endianness combined with a series of methods to change that value, parse and -write out buffers, and a way to provide typedefs. Standard Types - -The CType parser supports the following basic types which return Numbers except -as indicated: - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (returns a buffer with just that single character) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - -Specifying Structs - -The CType parser also supports the notion of structs. A struct is an array of -JSON objects that defines an order of keys which have types and values. One -would build a struct to represent a point (x,y) as follows: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -] - -When this is passed into the read routine, it would read the first two bytes -(as defined by int16_t) to determine the Number to use for X, and then it would -read the next two bytes to determine the value of Y. When read this could -return something like: - -{ - x: 42, - y: -23 -} - -When someone wants to write values, we use the same format as above, but with -additional value field: - -[ - { x: { type: 'int16_t', value: 42 }}, - { y: { type: 'int16_t', value: -23 }} -] - -Now, the structure above may be optionally annotated with offsets. This tells -us to rather than read continuously we should read the given value at the -specified offset. If an offset is provided, it is is effectively the equivalent -of lseek(offset, SEEK_SET). Thus, subsequent values will be read from that -offset and incremented by the appropriate value. As an example: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t', offset: 20 }}, - { z: { type: 'int16_t' }} -] - -We would read x from the first starting offset given to us, for the sake of -example, let's assume that's 0. After reading x, the next offset to read from -would be 2; however, y specifies an offset, thus we jump directly to that -offset and read y from byte 20. We would then read z from byte 22. - -The same offsets may be used when writing values. - -Typedef - -The basic set of types while covers the basics, is somewhat limiting. To make -this richer, there is functionality to typedef something like in C. One can use -typedef to add a new name to an existing type or to define a name to refer to a -struct. Thus the following are all examples of a typedef: - -typedef('size_t', 'uint32_t'); -typedef('ssize_t', 'int32_t'); -typedef('point_t', [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -]); - -Once something has been typedef'd it can be used in any of the definitions -previously shown. - -One cannot remove a typedef once created, this is analogous to C. - -The set of defined types can be printed with lstypes. The format of this output -is subject to change, but likely will look something like: - -> lstypes(); -{ - size_t: 'uint32_t', - ssize_t: 'int32_t', - point_t: [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} - ] -} - -Specifying arrays - -Arrays can be specified by appending []s to a type. Arrays must have the size -specified. The size must be specified and it can be done in one of two ways: - - * An explicit non-zero integer size - * A name of a previously declared variable in the struct whose value is a - number. - -Note, that when using the name of a variable, it should be the string name for -the key. This is only valid inside structs and the value must be declared -before the value with the array. The following are examples: - -[ - { ip_addr4: { type: 'uint8_t[4]' }}, - { len: { type: 'uint32_t' }}, - { data: { type: 'uint8_t[len]' }} -] - -Arrays are permitted in typedefs; however, they must have a declared integer -size. The following are examples of valid and invalid arrays: - -typedef('path', 'char[1024]'); /* Good */ -typedef('path', 'char[len]'); /* Bad! */ - -64 bit values: - -Unfortunately Javascript represents values with a double, so you lose precision -and the ability to represent Integers roughly beyond 2^53. To alleviate this, I -propose the following for returning 64 bit integers when read: - -value[2]: Each entry is a 32 bit number which can be reconstructed to the -original by the following formula: - -value[0] << 32 + value[1] (Note this will not work in Javascript) - -CTF JSON data: - -node-ctype can also handle JSON data that mathces the format described in the -documentation of the tool ctf2json. Given the JSON data which specifies type -information, it will transform that into a parser that understands all of the -types defined inside of it. This is useful for more complicated structures that -have a lot of typedefs. - -Interface overview - -The following is the header-file like interface to the parser object: - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -function CTypeParser(conf); - -/* - * Parses the CTF JSON data and creates a parser that understands all of those - * types. - * - * data Parsed JSON data that maches that CTF JSON - * specification. - * - * conf The configuration object to create a new CTypeParser - * from. - */ -CTypeParser parseCTF(data, conf); - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -Object CTypeParser.readData(<Type Definition>, buffer, offset); - -/* - * This is the second half of what we were born to do, write out the data - * itself. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - */ -void CTypeParser.writeData(<Type Definition>, buffer, offset); - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -void CTypeParser.prototype.typedef(name, value); - -Object CTypeParser.prototype.lstypes(); - -/* - * Get the endian value for the current parser - */ -String CTypeParser.prototype.getEndian(); - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -void CTypeParser.protoype.setEndian(String); - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -Number function toAbs64(val) - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -Number function toApprox64(val) - -Low Level API - -The following function are provided at the low level: - -Read unsigned integers from a buffer: -Number ruint8(buffer, endian, offset); -Number ruint16(buffer, endian, offset); -Number ruint32(buffer, endian, offset); -Number[] ruint64(buffer, endian, offset); - -Read signed integers from a buffer: -Number rsint8(buffer, endian, offset); -Number rsint16(buffer, endian, offset); -Number rsint32(buffer, endian, offset); -Number[] rsint64(buffer, endian, offset); - -Read floating point numbers from a buffer: -Number rfloat(buffer, endian, offset); /* IEEE-754 Single precision */ -Number rdouble(buffer, endian, offset); /* IEEE-754 Double precision */ - -Write unsigned integers to a buffer: -void wuint8(Number, endian, buffer, offset); -void wuint16(Number, endian, buffer, offset); -void wuint32(Number, endian, buffer, offset); -void wuint64(Number[], endian, buffer, offset); - -Write signed integers from a buffer: -void wsint8(Number, endian, buffer, offset); -void wsint16(Number, endian, buffer, offset); -void wsint32(Number, endian, buffer, offset); -void wsint64(Number[], endian, buffer offset); - -Write floating point numbers from a buffer: -void wfloat(Number, buffer, endian, offset); /* IEEE-754 Single precision */ -void wdouble(Number, buffer, endian, offset); /* IEEE-754 Double precision */ - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js deleted file mode 100644 index 66d5f735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js +++ /dev/null @@ -1,245 +0,0 @@ -/* - * ctf.js - * - * Understand and parse all of the different JSON formats of CTF data and - * translate that into a series of node-ctype friendly pieces. The reason for - * the abstraction is to handle different changes in the file format. - * - * We have to be careful here that we don't end up using a name that is already - * a built in type. - */ -var mod_assert = require('assert'); -var ASSERT = mod_assert.ok; - -var ctf_versions = [ '1.0' ]; -var ctf_entries = [ 'integer', 'float', 'typedef', 'struct' ]; -var ctf_deftypes = [ 'int8_t', 'uint8_t', 'int16_t', 'uint16_t', 'int32_t', - 'uint32_t', 'float', 'double' ]; - -function ctfParseInteger(entry, ctype) -{ - var name, sign, len, type; - - name = entry['name']; - if (!('signed' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'signed value')); - - - if (!('length' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'length value')); - - sign = entry['integer']['signed']; - len = entry['integer']['length']; - type = null; - - if (sign && len == 1) - type = 'int8_t'; - else if (len == 1) - type = 'uint8_t'; - else if (sign && len == 2) - type = 'int16_t'; - else if (len == 2) - type = 'uint16_t'; - else if (sign && len == 4) - type = 'int32_t'; - else if (len == 4) - type = 'uint32_t'; - else if (sign && len == 8) - type = 'int64_t'; - else if (len == 8) - type = 'uint64_t'; - - if (type === null) - throw (new Error('Malformed CTF JSON: integer has ' + - 'unsupported length and sign - ' + len + '/' + sign)); - - /* - * This means that this is the same as one of our built in types. If - * that's the case defining it would be an error. So instead of trying - * to typedef it, we'll return here. - */ - if (name == type) - return; - - if (name == 'char') { - ASSERT(type == 'int8_t'); - return; - } - - ctype.typedef(name, type); -} - -function ctfParseFloat(entry, ctype) -{ - var name, len; - - name = entry['name']; - if (!('length' in entry['float'])) - throw (new Error('Malformed CTF JSON: float missing ' + - 'length value')); - - len = entry['float']['length']; - if (len != 4 && len != 8) - throw (new Error('Malformed CTF JSON: float has invalid ' + - 'length value')); - - if (len == 4) { - if (name == 'float') - return; - ctype.typedef(name, 'float'); - } else if (len == 8) { - if (name == 'double') - return; - ctype.typedef(name, 'double'); - } -} - -function ctfParseTypedef(entry, ctype) -{ - var name, type, ii; - - name = entry['name']; - if (typeof (entry['typedef']) != 'string') - throw (new Error('Malformed CTF JSON: typedef value in not ' + - 'a string')); - - type = entry['typedef']; - - /* - * We need to ensure that we're not looking at type that's one of our - * built in types. Traditionally in C a uint32_t would be a typedef to - * some kind of integer. However, those size types are built ins. - */ - for (ii = 0; ii < ctf_deftypes.length; ii++) { - if (name == ctf_deftypes[ii]) - return; - } - - ctype.typedef(name, type); -} - -function ctfParseStruct(entry, ctype) -{ - var name, type, ii, val, index, member, push; - - member = []; - if (!Array.isArray(entry['struct'])) - throw (new Error('Malformed CTF JSON: struct value is not ' + - 'an array')); - - for (ii = 0; ii < entry['struct'].length; ii++) { - val = entry['struct'][ii]; - if (!('name' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing name')); - - if (!('type' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing type')); - - if (typeof (val['name']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'name isn\'t a string')); - - if (typeof (val['type']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'type isn\'t a string')); - - /* - * CTF version 2 specifies array names as <type> [<num>] where - * as node-ctype does this as <type>[<num>]. - */ - name = val['name']; - type = val['type']; - index = type.indexOf(' ['); - if (index != -1) { - type = type.substring(0, index) + - type.substring(index + 1, type.length); - } - push = {}; - push[name] = { 'type': type }; - member.push(push); - } - - name = entry['name']; - ctype.typedef(name, member); -} - -function ctfParseEntry(entry, ctype) -{ - var ii, found; - - if (!('name' in entry)) - throw (new Error('Malformed CTF JSON: entry missing "name" ' + - 'section')); - - for (ii = 0; ii < ctf_entries.length; ii++) { - if (ctf_entries[ii] in entry) - found++; - } - - if (found === 0) - throw (new Error('Malformed CTF JSON: found no entries')); - - if (found >= 2) - throw (new Error('Malformed CTF JSON: found more than one ' + - 'entry')); - - if ('integer' in entry) { - ctfParseInteger(entry, ctype); - return; - } - - if ('float' in entry) { - ctfParseFloat(entry, ctype); - return; - } - - if ('typedef' in entry) { - ctfParseTypedef(entry, ctype); - return; - } - - if ('struct' in entry) { - ctfParseStruct(entry, ctype); - return; - } - - ASSERT(false, 'shouldn\'t reach here'); -} - -function ctfParseJson(json, ctype) -{ - var version, ii; - - ASSERT(json); - ASSERT(ctype); - if (!('metadata' in json)) - throw (new Error('Invalid CTF JSON: missing metadata section')); - - if (!('ctf2json_version' in json['metadata'])) - throw (new Error('Invalid CTF JSON: missing ctf2json_version')); - - version = json['metadata']['ctf2json_version']; - for (ii = 0; ii < ctf_versions.length; ii++) { - if (ctf_versions[ii] == version) - break; - } - - if (ii == ctf_versions.length) - throw (new Error('Unsuported ctf2json_version: ' + version)); - - if (!('data' in json)) - throw (new Error('Invalid CTF JSON: missing data section')); - - if (!Array.isArray(json['data'])) - throw (new Error('Malformed CTF JSON: data section is not ' + - 'an array')); - - for (ii = 0; ii < json['data'].length; ii++) - ctfParseEntry(json['data'][ii], ctype); -} - -exports.ctfParseJson = ctfParseJson; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js deleted file mode 100644 index 62c5d7b2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js +++ /dev/null @@ -1,1485 +0,0 @@ -/* - * rm - Feb 2011 - * ctio.js: - * - * A simple way to read and write simple ctypes. Of course, as you'll find the - * code isn't as simple as it might appear. The following types are currently - * supported in big and little endian formats: - * - * uint8_t int8_t - * uint16_t int16_t - * uint32_t int32_t - * float (single precision IEEE 754) - * double (double precision IEEE 754) - * - * This is designed to work in Node and v8. It may in fact work in other - * Javascript interpreters (that'd be pretty neat), but it hasn't been tested. - * If you find that it does in fact work, that's pretty cool. Try and pass word - * back to the original author. - * - * Note to the reader: If you're tabstop isn't set to 8, parts of this may look - * weird. - */ - -/* - * Numbers in Javascript have a secret: all numbers must be represented with an - * IEEE-754 double. The double has a mantissa with a length of 52 bits with an - * implicit one. Thus the range of integers that can be represented is limited - * to the size of the mantissa, this makes reading and writing 64-bit integers - * difficult, but far from impossible. - * - * Another side effect of this representation is what happens when you use the - * bitwise operators, i.e. shift left, shift right, and, or, etc. In Javascript, - * each operand and the result is cast to a signed 32-bit number. However, in - * the case of >>> the values are cast to an unsigned number. - */ - -/* - * A reminder on endian related issues: - * - * Big Endian: MSB -> First byte - * Little Endian: MSB->Last byte - */ -var mod_assert = require('assert'); - -/* - * An 8 bit unsigned integer involves doing no significant work. - */ -function ruint8(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (buffer[offset]); -} - -/* - * For 16 bit unsigned numbers we can do all the casting that we want to do. - */ -function rgint16(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset] << 8; - val |= buffer[offset+1]; - } else { - val = buffer[offset]; - val |= buffer[offset+1] << 8; - } - - return (val); - -} - -function ruint16(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint16(buffer, endian, offset)); -} - -/* - * Because most bitshifting is done using signed numbers, if we would go into - * the realm where we use that 32nd bit, we'll end up going into the negative - * range. i.e.: - * > 200 << 24 - * -939524096 - * - * Not the value you'd expect. To work around this, we end up having to do some - * abuse of the JavaScript standard. in this case, we know that a >>> shift is - * defined to cast our value to an *unsigned* 32-bit number. Because of that, we - * use that instead to save us some additional math, though it does feel a - * little weird and it isn't obvious as to why you woul dwant to do this at - * first. - */ -function rgint32(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset+1] << 16; - val |= buffer[offset+2] << 8; - val |= buffer[offset+3]; - val = val + (buffer[offset] << 24 >>> 0); - } else { - val = buffer[offset+2] << 16; - val |= buffer[offset+1] << 8; - val |= buffer[offset]; - val = val + (buffer[offset + 3] << 24 >>> 0); - } - - return (val); -} - -function ruint32(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint32(buffer, endian, offset)); -} - -/* - * Reads a 64-bit unsigned number. The astue observer will note that this - * doesn't quite work. Javascript has chosen to only have numbers that can be - * represented by a double. A double only has 52 bits of mantissa with an - * implicit 1, thus we have up to 53 bits to represent an integer. However, 2^53 - * doesn't quite give us what we want. Isn't 53 bits enough for anyone? What - * could you have possibly wanted to represent that was larger than that? Oh, - * maybe a size? You mean we bypassed the 4 GB limit on file sizes, when did - * that happen? - * - * To get around this egregious language issue, we're going to instead construct - * an array of two 32 bit unsigned integers. Where arr[0] << 32 + arr[1] would - * give the actual number. However, note that the above code probably won't - * produce the desired results because of the way Javascript numbers are - * doubles. - */ -function rgint64(buffer, endian, offset) -{ - var val = new Array(2); - - if (endian == 'big') { - val[0] = ruint32(buffer, endian, offset); - val[1] = ruint32(buffer, endian, offset+4); - } else { - val[0] = ruint32(buffer, endian, offset+4); - val[1] = ruint32(buffer, endian, offset); - } - - return (val); -} - -function ruint64(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint64(buffer, endian, offset)); -} - - -/* - * Signed integer types, yay team! A reminder on how two's complement actually - * works. The first bit is the signed bit, i.e. tells us whether or not the - * number should be positive or negative. If the two's complement value is - * positive, then we're done, as it's equivalent to the unsigned representation. - * - * Now if the number is positive, you're pretty much done, you can just leverage - * the unsigned translations and return those. Unfortunately, negative numbers - * aren't quite that straightforward. - * - * At first glance, one might be inclined to use the traditional formula to - * translate binary numbers between the positive and negative values in two's - * complement. (Though it doesn't quite work for the most negative value) - * Mainly: - * - invert all the bits - * - add one to the result - * - * Of course, this doesn't quite work in Javascript. Take for example the value - * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of - * course, Javascript will do the following: - * - * > ~0xff80 - * -65409 - * - * Whoh there, Javascript, that's not quite right. But wait, according to - * Javascript that's perfectly correct. When Javascript ends up seeing the - * constant 0xff80, it has no notion that it is actually a signed number. It - * assumes that we've input the unsigned value 0xff80. Thus, when it does the - * binary negation, it casts it into a signed value, (positive 0xff80). Then - * when you perform binary negation on that, it turns it into a negative number. - * - * Instead, we're going to have to use the following general formula, that works - * in a rather Javascript friendly way. I'm glad we don't support this kind of - * weird numbering scheme in the kernel. - * - * (BIT-MAX - (unsigned)val + 1) * -1 - * - * The astute observer, may think that this doesn't make sense for 8-bit numbers - * (really it isn't necessary for them). However, when you get 16-bit numbers, - * you do. Let's go back to our prior example and see how this will look: - * - * (0xffff - 0xff80 + 1) * -1 - * (0x007f + 1) * -1 - * (0x0080) * -1 - * - * Doing it this way ends up allowing us to treat it appropriately in - * Javascript. Sigh, that's really quite ugly for what should just be a few bit - * shifts, ~ and &. - */ - -/* - * Endianness doesn't matter for 8-bit signed values. We could in fact optimize - * this case because the more traditional methods work, but for consistency, - * we'll keep doing this the same way. - */ -function rsint8(buffer, endian, offset) -{ - var neg; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - neg = buffer[offset] & 0x80; - if (!neg) - return (buffer[offset]); - - return ((0xff - buffer[offset] + 1) * -1); -} - -/* - * The 16-bit version requires a bit more effort. In this case, we can leverage - * our unsigned code to generate the value we want to return. - */ -function rsint16(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint16(buffer, endian, offset); - neg = val & 0x8000; - if (!neg) - return (val); - - return ((0xffff - val + 1) * -1); -} - -/* - * We really shouldn't leverage our 32-bit code here and instead utilize the - * fact that we know that since these are signed numbers, we can do all the - * shifting and binary anding to generate the 32-bit number. But, for - * consistency we'll do the same. If we want to do otherwise, we should instead - * make the 32 bit unsigned code do the optimization. But as long as there - * aren't floats secretly under the hood for that, we /should/ be okay. - */ -function rsint32(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint32(buffer, endian, offset); - neg = val & 0x80000000; - if (!neg) - return (val); - - return ((0xffffffff - val + 1) * -1); -} - -/* - * The signed version of this code suffers from all of the same problems of the - * other 64 bit version. - */ -function rsint64(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint64(buffer, endian, offset); - neg = val[0] & 0x80000000; - - if (!neg) - return (val); - - val[0] = (0xffffffff - val[0]) * -1; - val[1] = (0xffffffff - val[1] + 1) * -1; - - /* - * If we had the key 0x8000000000000000, that would leave the lower 32 - * bits as 0xffffffff, however, since we're goint to add one, that would - * actually leave the lower 32-bits as 0x100000000, which would break - * our ability to write back a value that we received. To work around - * this, if we actually get that value, we're going to bump the upper - * portion by 1 and set this to zero. - */ - mod_assert.ok(val[1] <= 0x100000000); - if (val[1] == -0x100000000) { - val[1] = 0; - val[0]--; - } - - return (val); -} - -/* - * We now move onto IEEE 754: The traditional form for floating point numbers - * and what is secretly hiding at the heart of everything in this. I really hope - * that someone is actually using this, as otherwise, this effort is probably - * going to be more wasted. - * - * One might be tempted to use parseFloat here, but that wouldn't work at all - * for several reasons. Mostly due to the way floats actually work, and - * parseFloat only actually works in base 10. I don't see base 10 anywhere near - * this file. - * - * In this case we'll implement the single and double precision versions. The - * quadruple precision, while probably useful, wouldn't really be accepted by - * Javascript, so let's not even waste our time. - * - * So let's review how this format looks like. A single precision value is 32 - * bits and has three parts: - * - Sign bit - * - Exponent (Using bias notation) - * - Mantissa - * - * |s|eeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmm| - * 31| 30-23 | 22 - 0 | - * - * The exponent is stored in a biased input. The bias in this case 127. - * Therefore, our exponent is equal to the 8-bit value - 127. - * - * By default, a number is normalized in IEEE, that means that the mantissa has - * an implicit one that we don't see. So really the value stored is 1.m. - * However, if the exponent is all zeros, then instead we have to shift - * everything to the right one and there is no more implicit one. - * - * Special values: - * - Positive Infinity: - * Sign: 0 - * Exponent: All 1s - * Mantissa: 0 - * - Negative Infinity: - * Sign: 1 - * Exponent: All 1s - * Mantissa: 0 - * - NaN: - * Sign: * - * Exponent: All 1s - * Mantissa: non-zero - * - Zero: - * Sign: * - * Exponent: All 0s - * Mantissa: 0 - * - * In the case of zero, the sign bit determines whether we get a positive or - * negative zero. However, since Javascript cannot determine the difference - * between the two: i.e. -0 == 0, we just always return 0. - * - */ -function rfloat(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val; - var bias = 127; - var maxexp = 0xff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - } else { - bytes[3] = buffer[offset]; - bytes[2] = buffer[offset+1]; - bytes[1] = buffer[offset+2]; - bytes[0] = buffer[offset+3]; - } - - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 1; - exponent |= (bytes[1] & 0x80) >>> 7; - mantissa = (bytes[1] & 0x7f) << 16; - mantissa |= bytes[2] << 8; - mantissa |= bytes[3]; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -23)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Doubles in IEEE 754 are like their brothers except for a few changes and - * increases in size: - * - The exponent is now 11 bits - * - The mantissa is now 52 bits - * - The bias is now 1023 - * - * |s|eeeeeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm| - * 63| 62 - 52 | 51 - 0 | - * 63| 62 - 52 | 51 - 0 | - * - * While the size has increased a fair amount, we're going to end up keeping the - * same general formula for calculating the final value. As a reminder, this - * formula is: - * - * (-1)^s * (n + m) * 2^(e-b) - * - * Where: - * s is the sign bit - * n is (exponent > 0) ? 1 : 0 -- Determines whether we're normalized - * or not - * m is the mantissa - * e is the exponent specified - * b is the bias for the exponent - * - */ -function rdouble(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val, lowmant; - var bias = 1023; - var maxexp = 0x7ff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - bytes[4] = buffer[offset+4]; - bytes[5] = buffer[offset+5]; - bytes[6] = buffer[offset+6]; - bytes[7] = buffer[offset+7]; - } else { - bytes[7] = buffer[offset]; - bytes[6] = buffer[offset+1]; - bytes[5] = buffer[offset+2]; - bytes[4] = buffer[offset+3]; - bytes[3] = buffer[offset+4]; - bytes[2] = buffer[offset+5]; - bytes[1] = buffer[offset+6]; - bytes[0] = buffer[offset+7]; - } - - /* - * We can construct the exponent and mantissa the same way as we did in - * the case of a float, just increase the range of the exponent. - */ - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 4; - exponent |= (bytes[1] & 0xf0) >>> 4; - - /* - * This is going to be ugly but then again, we're dealing with IEEE 754. - * This could probably be done as a node add on in a few lines of C++, - * but oh we'll, we've made it this far so let's be native the rest of - * the way... - * - * What we're going to do is break the mantissa into two parts, the - * lower 24 bits and the upper 28 bits. We'll multiply the upper 28 bits - * by the appropriate power and then add in the lower 24-bits. Not - * really that great. It's pretty much a giant kludge to deal with - * Javascript eccentricities around numbers. - */ - lowmant = bytes[7]; - lowmant |= bytes[6] << 8; - lowmant |= bytes[5] << 16; - mantissa = bytes[4]; - mantissa |= bytes[3] << 8; - mantissa |= bytes[2] << 16; - mantissa |= (bytes[1] & 0x0f) << 24; - mantissa *= Math.pow(2, 24); /* Equivalent to << 24, but JS compat */ - mantissa += lowmant; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -52)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Now that we have gone through the pain of reading the individual types, we're - * probably going to want some way to write these back. None of this is going to - * be good. But since we have Javascript numbers this should certainly be more - * interesting. Though we can constrain this end a little bit more in what is - * valid. For now, let's go back to our friends the unsigned value. - */ - -/* - * Unsigned numbers seem deceptively easy. Here are the general steps and rules - * that we are going to take: - * - If the number is negative, throw an Error - * - Truncate any floating point portion - * - Take the modulus of the number in our base - * - Write it out to the buffer in the endian format requested at the offset - */ - -/* - * We have to make sure that the value is a valid integer. This means that it is - * non-negative. It has no fractional component and that it does not exceed the - * maximum allowed value. - * - * value The number to check for validity - * - * max The maximum value - */ -function prepuint(value, max) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value < 0) - throw (new Error('specified a negative value for writing an ' + - 'unsigned value')); - - if (value > max) - throw (new Error('value is larger than maximum value for ' + - 'type')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * 8-bit version, classy. We can ignore endianness which is good. - */ -function wuint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xff); - buffer[offset] = val; -} - -/* - * Pretty much the same as the 8-bit version, just this time we need to worry - * about endian related issues. - */ -function wgint16(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val & 0xff00) >>> 8; - buffer[offset+1] = val & 0x00ff; - } else { - buffer[offset+1] = (val & 0xff00) >>> 8; - buffer[offset] = val & 0x00ff; - } -} - -function wuint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffff); - wgint16(val, endian, buffer, offset); -} - -/* - * The 32-bit version is going to have to be a little different unfortunately. - * We can't quite bitshift to get the largest byte, because that would end up - * getting us caught by the signed values. - * - * And yes, we do want to subtract out the lower part by default. This means - * that when we do the division, it will be treated as a bit shift and we won't - * end up generating a floating point value. If we did generate a floating point - * value we'd have to truncate it intelligently, this saves us that problem and - * may even be somewhat faster under the hood. - */ -function wgint32(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val - (val & 0x00ffffff)) / Math.pow(2, 24); - buffer[offset+1] = (val >>> 16) & 0xff; - buffer[offset+2] = (val >>> 8) & 0xff; - buffer[offset+3] = val & 0xff; - } else { - buffer[offset+3] = (val - (val & 0x00ffffff)) / - Math.pow(2, 24); - buffer[offset+2] = (val >>> 16) & 0xff; - buffer[offset+1] = (val >>> 8) & 0xff; - buffer[offset] = val & 0xff; - } -} - -function wuint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffffffff); - wgint32(val, endian, buffer, offset); -} - -/* - * Unlike the other versions, we expect the value to be in the form of two - * arrays where value[0] << 32 + value[1] would result in the value that we - * want. - */ -function wgint64(value, endian, buffer, offset) -{ - if (endian == 'big') { - wgint32(value[0], endian, buffer, offset); - wgint32(value[1], endian, buffer, offset+4); - } else { - wgint32(value[0], endian, buffer, offset+4); - wgint32(value[1], endian, buffer, offset); - } -} - -function wuint64(value, endian, buffer, offset) -{ - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - prepuint(value[0], 0xffffffff); - prepuint(value[1], 0xffffffff); - wgint64(value, endian, buffer, offset); -} - -/* - * We now move onto our friends in the signed number category. Unlike unsigned - * numbers, we're going to have to worry a bit more about how we put values into - * arrays. Since we are only worrying about signed 32-bit values, we're in - * slightly better shape. Unfortunately, we really can't do our favorite binary - * & in this system. It really seems to do the wrong thing. For example: - * - * > -32 & 0xff - * 224 - * - * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of - * this aren't treated as a signed number. Ultimately a bad thing. - * - * What we're going to want to do is basically create the unsigned equivalent of - * our representation and pass that off to the wuint* functions. To do that - * we're going to do the following: - * - * - if the value is positive - * we can pass it directly off to the equivalent wuint - * - if the value is negative - * we do the following computation: - * mb + val + 1, where - * mb is the maximum unsigned value in that byte size - * val is the Javascript negative integer - * - * - * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If - * you do out the computations: - * - * 0xffff - 128 + 1 - * 0xffff - 127 - * 0xff80 - * - * You can then encode this value as the signed version. This is really rather - * hacky, but it should work and get the job done which is our goal here. - * - * Thus the overall flow is: - * - Truncate the floating point part of the number - * - We don't have to take the modulus, because the unsigned versions will - * take care of that for us. And we don't have to worry about that - * potentially causing bad things to happen because of sign extension - * - Pass it off to the appropriate unsigned version, potentially modifying - * the negative portions as necessary. - */ - -/* - * A series of checks to make sure we actually have a signed 32-bit number - */ -function prepsint(value, max, min) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value > max) - throw (new Error('value larger than maximum allowed value')); - - if (value < min) - throw (new Error('value smaller than minimum allowed value')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * The 8-bit version of the signed value. Overall, fairly straightforward. - */ -function wsint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7f, -0x80); - if (val >= 0) - wuint8(val, endian, buffer, offset); - else - wuint8(0xff + val + 1, endian, buffer, offset); -} - -/* - * The 16-bit version of the signed value. Also, fairly straightforward. - */ -function wsint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fff, -0x8000); - if (val >= 0) - wgint16(val, endian, buffer, offset); - else - wgint16(0xffff + val + 1, endian, buffer, offset); - -} - -/* - * We can do this relatively easily by leveraging the code used for 32-bit - * unsigned code. - */ -function wsint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fffffff, -0x80000000); - if (val >= 0) - wgint32(val, endian, buffer, offset); - else - wgint32(0xffffffff + val + 1, endian, buffer, offset); -} - -/* - * The signed 64 bit integer should by in the same format as when received. - * Mainly it should ensure that the value is an array of two integers where - * value[0] << 32 + value[1] is the desired number. Furthermore, the two values - * need to be equal. - */ -function wsint64(value, endian, buffer, offset) -{ - var vzpos, vopos; - var vals = new Array(2); - - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* - * We need to make sure that we have the same sign on both values. The - * hokiest way to to do this is to multiply the number by +inf. If we do - * this, we'll get either +/-inf depending on the sign of the value. - * Once we have this, we can compare it to +inf to see if the number is - * positive or not. - */ - vzpos = (value[0] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - vopos = (value[1] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - - /* - * If either of these is zero, then we don't actually need this check. - */ - if (value[0] != 0 && value[1] != 0 && vzpos != vopos) - throw (new Error('Both entries in the array must have ' + - 'the same sign')); - - /* - * Doing verification for a signed 64-bit integer is actually a big - * trickier than it appears. We can't quite use our standard techniques - * because we need to compare both sets of values. The first value is - * pretty straightforward. If the first value is beond the extremes than - * we error out. However, the valid range of the second value varies - * based on the first one. If the first value is negative, and *not* the - * largest negative value, than it can be any integer within the range [ - * 0, 0xffffffff ]. If it is the largest negative number, it must be - * zero. - * - * If the first number is positive, than it doesn't matter what the - * value is. We just simply have to make sure we have a valid positive - * integer. - */ - if (vzpos) { - prepuint(value[0], 0x7fffffff); - prepuint(value[1], 0xffffffff); - } else { - prepsint(value[0], 0, -0x80000000); - prepsint(value[1], 0, -0xffffffff); - if (value[0] == -0x80000000 && value[1] != 0) - throw (new Error('value smaller than minimum ' + - 'allowed value')); - } - - /* Fix negative numbers */ - if (value[0] < 0 || value[1] < 0) { - vals[0] = 0xffffffff - Math.abs(value[0]); - vals[1] = 0x100000000 - Math.abs(value[1]); - if (vals[1] == 0x100000000) { - vals[1] = 0; - vals[0]++; - } - } else { - vals[0] = value[0]; - vals[1] = value[1]; - } - wgint64(vals, endian, buffer, offset); -} - -/* - * Now we are moving onto the weirder of these, the float and double. For this - * we're going to just have to do something that's pretty weird. First off, we - * have no way to get at the underlying float representation, at least not - * easily. But that doesn't mean we can't figure it out, we just have to use our - * heads. - * - * One might propose to use Number.toString(2). Of course, this is not really - * that good, because the ECMAScript 262 v3 Standard says the following Section - * 15.7.4.2-Number.prototype.toString (radix): - * - * If radix is an integer from 2 to 36, but not 10, the result is a string, the - * choice of which is implementation-dependent. - * - * Well that doesn't really help us one bit now does it? We could use the - * standard base 10 version of the string, but that's just going to create more - * errors as we end up trying to convert it back to a binary value. So, really - * this just means we have to be non-lazy and parse the structure intelligently. - * - * First off, we can do the basic checks: NaN, positive and negative infinity. - * - * Now that those are done we can work backwards to generate the mantissa and - * exponent. - * - * The first thing we need to do is determine the sign bit, easy to do, check - * whether the value is less than 0. And convert the number to its absolute - * value representation. Next, we need to determine if the value is less than - * one or greater than or equal to one and from there determine what power was - * used to get there. What follows is now specific to floats, though the general - * ideas behind this will hold for doubles as well, but the exact numbers - * involved will change. - * - * Once we have that power we can determine the exponent and the mantissa. Call - * the value that has the number of bits to reach the power ebits. In the - * general case they have the following values: - * - * exponent 127 + ebits - * mantissa value * 2^(23 - ebits) & 0x7fffff - * - * In the case where the value of ebits is <= -127 we are now in the case where - * we no longer have normalized numbers. In this case the values take on the - * following values: - * - * exponent 0 - * mantissa value * 2^149 & 0x7fffff - * - * Once we have the values for the sign, mantissa, and exponent. We reconstruct - * the four bytes as follows: - * - * byte0 sign bit and seven most significant bits from the exp - * sign << 7 | (exponent & 0xfe) >>> 1 - * - * byte1 lsb from the exponent and 7 top bits from the mantissa - * (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16 - * - * byte2 bits 8-15 (zero indexing) from mantissa - * mantissa & 0xff00 >> 8 - * - * byte3 bits 0-7 from mantissa - * mantissa & 0xff - * - * Once we have this we have to assign them into the buffer in proper endian - * order. - */ - -/* - * Compute the log base 2 of the value. Now, someone who remembers basic - * properties of logarithms will point out that we could use the change of base - * formula for logs, and in fact that would be astute, because that's what we'll - * do for now. It feels cleaner, albeit it may be less efficient than just - * iterating and dividing by 2. We may want to come back and revisit that some - * day. - */ -function log2(value) -{ - return (Math.log(value) / Math.log(2)); -} - -/* - * Helper to determine the exponent of the number we're looking at. - */ -function intexp(value) -{ - return (Math.floor(log2(value))); -} - -/* - * Helper to determine the exponent of the fractional part of the value. - */ -function fracexp(value) -{ - return (Math.floor(log2(value))); -} - -function wfloat(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0xff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0xff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0xff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* Time to deal with the issues surrounding normalization */ - if (ebits <= -127) { - exponent = 0; - mantissa = (value * Math.pow(2, 149)) & 0x7fffff; - } else { - exponent = 127 + ebits; - mantissa = value * Math.pow(2, 23 - ebits); - mantissa &= 0x7fffff; - } - } - - bytes[0] = sign << 7 | (exponent & 0xfe) >>> 1; - bytes[1] = (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16; - bytes[2] = (mantissa & 0x00ff00) >>> 8; - bytes[3] = mantissa & 0x0000ff; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - } else { - buffer[offset] = bytes[3]; - buffer[offset+1] = bytes[2]; - buffer[offset+2] = bytes[1]; - buffer[offset+3] = bytes[0]; - } -} - -/* - * Now we move onto doubles. Doubles are similar to floats in pretty much all - * ways except that the processing isn't quite as straightforward because we - * can't always use shifting, i.e. we have > 32 bit values. - * - * We're going to proceed in an identical fashion to floats and utilize the same - * helper functions. All that really is changing are the specific values that we - * use to do the calculations. Thus, to review we have to do the following. - * - * First get the sign bit and convert the value to its absolute value - * representation. Next, we determine the number of bits that we used to get to - * the value, branching whether the value is greater than or less than 1. Once - * we have that value which we will again call ebits, we have to do the - * following in the general case: - * - * exponent 1023 + ebits - * mantissa [value * 2^(52 - ebits)] % 2^52 - * - * In the case where the value of ebits <= -1023 we no longer use normalized - * numbers, thus like with floats we have to do slightly different processing: - * - * exponent 0 - * mantissa [value * 2^1074] % 2^52 - * - * Once we have determined the sign, exponent and mantissa we can construct the - * bytes as follows: - * - * byte0 sign bit and seven most significant bits form the exp - * sign << 7 | (exponent & 0x7f0) >>> 4 - * - * byte1 Remaining 4 bits from the exponent and the four most - * significant bits from the mantissa 48-51 - * (exponent & 0x00f) << 4 | mantissa >>> 48 - * - * byte2 Bits 40-47 from the mantissa - * (mantissa >>> 40) & 0xff - * - * byte3 Bits 32-39 from the mantissa - * (mantissa >>> 32) & 0xff - * - * byte4 Bits 24-31 from the mantissa - * (mantissa >>> 24) & 0xff - * - * byte5 Bits 16-23 from the Mantissa - * (mantissa >>> 16) & 0xff - * - * byte6 Bits 8-15 from the mantissa - * (mantissa >>> 8) & 0xff - * - * byte7 Bits 0-7 from the mantissa - * mantissa & 0xff - * - * Now we can't quite do the right shifting that we want in bytes 1 - 3, because - * we'll have extended too far and we'll lose those values when we try and do - * the shift. Instead we have to use an alternate approach. To try and stay out - * of floating point, what we'll do is say that mantissa -= bytes[4-7] and then - * divide by 2^32. Once we've done that we can use binary arithmetic. Oof, - * that's ugly, but it seems to avoid using floating point (just based on how v8 - * seems to be optimizing for base 2 arithmetic). - */ -function wdouble(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0x7ff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0x7ff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0x7ff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* - * This is a total hack to determine a denormalized value. - * Unfortunately, we sometimes do not get a proper value for - * ebits, i.e. we lose the values that would get rounded off. - * - * - * The astute observer may wonder why we would be - * multiplying by two Math.pows rather than just summing - * them. Well, that's to get around a small bug in the - * way v8 seems to implement the function. On occasion - * doing: - * - * foo * Math.pow(2, 1023 + 51) - * - * Causes us to overflow to infinity, where as doing: - * - * foo * Math.pow(2, 1023) * Math.pow(2, 51) - * - * Does not cause us to overflow. Go figure. - * - */ - if (value <= 2.225073858507201e-308 || ebits <= -1023) { - exponent = 0; - mantissa = value * Math.pow(2, 1023) * Math.pow(2, 51); - mantissa %= Math.pow(2, 52); - } else { - /* - * We might have gotten fucked by our floating point - * logarithm magic. This is rather crappy, but that's - * our luck. If we just had a log base 2 or access to - * the stupid underlying representation this would have - * been much easier and we wouldn't have such stupid - * kludges or hacks. - */ - if (ebits > 1023) - ebits = 1023; - exponent = 1023 + ebits; - mantissa = value * Math.pow(2, -ebits); - mantissa *= Math.pow(2, 52); - mantissa %= Math.pow(2, 52); - } - } - - /* Fill the bytes in backwards to deal with the size issues */ - bytes[7] = mantissa & 0xff; - bytes[6] = (mantissa >>> 8) & 0xff; - bytes[5] = (mantissa >>> 16) & 0xff; - mantissa = (mantissa - (mantissa & 0xffffff)) / Math.pow(2, 24); - bytes[4] = mantissa & 0xff; - bytes[3] = (mantissa >>> 8) & 0xff; - bytes[2] = (mantissa >>> 16) & 0xff; - bytes[1] = (exponent & 0x00f) << 4 | mantissa >>> 24; - bytes[0] = (sign << 7) | (exponent & 0x7f0) >>> 4; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - buffer[offset+4] = bytes[4]; - buffer[offset+5] = bytes[5]; - buffer[offset+6] = bytes[6]; - buffer[offset+7] = bytes[7]; - } else { - buffer[offset+7] = bytes[0]; - buffer[offset+6] = bytes[1]; - buffer[offset+5] = bytes[2]; - buffer[offset+4] = bytes[3]; - buffer[offset+3] = bytes[4]; - buffer[offset+2] = bytes[5]; - buffer[offset+1] = bytes[6]; - buffer[offset] = bytes[7]; - } -} - -/* - * Actually export our work above. One might argue that we shouldn't expose - * these interfaces and just force people to use the higher level abstractions - * around this work. However, unlike say other libraries we've come across, this - * interface has several properties: it makes sense, it's simple, and it's - * useful. - */ -exports.ruint8 = ruint8; -exports.ruint16 = ruint16; -exports.ruint32 = ruint32; -exports.ruint64 = ruint64; -exports.wuint8 = wuint8; -exports.wuint16 = wuint16; -exports.wuint32 = wuint32; -exports.wuint64 = wuint64; - -exports.rsint8 = rsint8; -exports.rsint16 = rsint16; -exports.rsint32 = rsint32; -exports.rsint64 = rsint64; -exports.wsint8 = wsint8; -exports.wsint16 = wsint16; -exports.wsint32 = wsint32; -exports.wsint64 = wsint64; - -exports.rfloat = rfloat; -exports.rdouble = rdouble; -exports.wfloat = wfloat; -exports.wdouble = wdouble; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js deleted file mode 100644 index 7d2f4a5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js +++ /dev/null @@ -1,944 +0,0 @@ -/* - * rm - Feb 2011 - * ctype.js - * - * This module provides a simple abstraction towards reading and writing - * different types of binary data. It is designed to use ctio.js and provide a - * richer and more expressive API on top of it. - * - * By default we support the following as built in basic types: - * int8_t - * int16_t - * int32_t - * uint8_t - * uint16_t - * uint32_t - * uint64_t - * float - * double - * char - * char[] - * - * Each type is returned as a Number, with the exception of char and char[] - * which are returned as Node Buffers. A char is considered a uint8_t. - * - * Requests to read and write data are specified as an array of JSON objects. - * This is also the same way that one declares structs. Even if just a single - * value is requested, it must be done as a struct. The array order determines - * the order that we try and read values. Each entry has the following format - * with values marked with a * being optional. - * - * { key: { type: /type/, value*: /value/, offset*: /offset/ } - * - * If offset is defined, we lseek(offset, SEEK_SET) before reading the next - * value. Value is defined when we're writing out data, otherwise it's ignored. - * - */ - -var mod_ctf = require('./ctf.js'); -var mod_ctio = require('./ctio.js'); -var mod_assert = require('assert'); - -/* - * This is the set of basic types that we support. - * - * read The function to call to read in a value from a buffer - * - * write The function to call to write a value to a buffer - * - */ -var deftypes = { - 'uint8_t': { read: ctReadUint8, write: ctWriteUint8 }, - 'uint16_t': { read: ctReadUint16, write: ctWriteUint16 }, - 'uint32_t': { read: ctReadUint32, write: ctWriteUint32 }, - 'uint64_t': { read: ctReadUint64, write: ctWriteUint64 }, - 'int8_t': { read: ctReadSint8, write: ctWriteSint8 }, - 'int16_t': { read: ctReadSint16, write: ctWriteSint16 }, - 'int32_t': { read: ctReadSint32, write: ctWriteSint32 }, - 'int64_t': { read: ctReadSint64, write: ctWriteSint64 }, - 'float': { read: ctReadFloat, write: ctWriteFloat }, - 'double': { read: ctReadDouble, write: ctWriteDouble }, - 'char': { read: ctReadChar, write: ctWriteChar }, - 'char[]': { read: ctReadCharArray, write: ctWriteCharArray } -}; - -/* - * The following are wrappers around the CType IO low level API. They encode - * knowledge about the size and return something in the expected format. - */ -function ctReadUint8(endian, buffer, offset) -{ - var val = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadUint16(endian, buffer, offset) -{ - var val = mod_ctio.ruint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadUint32(endian, buffer, offset) -{ - var val = mod_ctio.ruint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadUint64(endian, buffer, offset) -{ - var val = mod_ctio.ruint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadSint8(endian, buffer, offset) -{ - var val = mod_ctio.rsint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadSint16(endian, buffer, offset) -{ - var val = mod_ctio.rsint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadSint32(endian, buffer, offset) -{ - var val = mod_ctio.rsint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadSint64(endian, buffer, offset) -{ - var val = mod_ctio.rsint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadFloat(endian, buffer, offset) -{ - var val = mod_ctio.rfloat(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadDouble(endian, buffer, offset) -{ - var val = mod_ctio.rdouble(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -/* - * Reads a single character into a node buffer - */ -function ctReadChar(endian, buffer, offset) -{ - var res = new Buffer(1); - res[0] = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: res, size: 1 }); -} - -function ctReadCharArray(length, endian, buffer, offset) -{ - var ii; - var res = new Buffer(length); - - for (ii = 0; ii < length; ii++) - res[ii] = mod_ctio.ruint8(buffer, endian, offset + ii); - - return ({ value: res, size: length }); -} - -function ctWriteUint8(value, endian, buffer, offset) -{ - mod_ctio.wuint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteUint16(value, endian, buffer, offset) -{ - mod_ctio.wuint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteUint32(value, endian, buffer, offset) -{ - mod_ctio.wuint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteUint64(value, endian, buffer, offset) -{ - mod_ctio.wuint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteSint8(value, endian, buffer, offset) -{ - mod_ctio.wsint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteSint16(value, endian, buffer, offset) -{ - mod_ctio.wsint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteSint32(value, endian, buffer, offset) -{ - mod_ctio.wsint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteSint64(value, endian, buffer, offset) -{ - mod_ctio.wsint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteFloat(value, endian, buffer, offset) -{ - mod_ctio.wfloat(value, endian, buffer, offset); - return (4); -} - -function ctWriteDouble(value, endian, buffer, offset) -{ - mod_ctio.wdouble(value, endian, buffer, offset); - return (8); -} - -/* - * Writes a single character into a node buffer - */ -function ctWriteChar(value, endian, buffer, offset) -{ - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - mod_ctio.ruint8(value[0], endian, buffer, offset); - return (1); -} - -/* - * We're going to write 0s into the buffer if the string is shorter than the - * length of the array. - */ -function ctWriteCharArray(value, length, endian, buffer, offset) -{ - var ii; - - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - if (value.length > length) - throw (new Error('value length greater than array length')); - - for (ii = 0; ii < value.length && ii < length; ii++) - mod_ctio.wuint8(value[ii], endian, buffer, offset + ii); - - for (; ii < length; ii++) - mod_ctio.wuint8(0, endian, offset + ii); - - - return (length); -} - -/* - * Each parser has their own set of types. We want to make sure that they each - * get their own copy as they may need to modify it. - */ -function ctGetBasicTypes() -{ - var ret = {}; - var key; - for (key in deftypes) - ret[key] = deftypes[key]; - - return (ret); -} - -/* - * Given a string in the form of type[length] we want to split this into an - * object that extracts that information. We want to note that we could possibly - * have nested arrays so this should only check the furthest one. It may also be - * the case that we have no [] pieces, in which case we just return the current - * type. - */ -function ctParseType(str) -{ - var begInd, endInd; - var type, len; - if (typeof (str) != 'string') - throw (new Error('type must be a Javascript string')); - - endInd = str.lastIndexOf(']'); - if (endInd == -1) { - if (str.lastIndexOf('[') != -1) - throw (new Error('found invalid type with \'[\' but ' + - 'no corresponding \']\'')); - - return ({ type: str }); - } - - begInd = str.lastIndexOf('['); - if (begInd == -1) - throw (new Error('found invalid type with \']\' but ' + - 'no corresponding \'[\'')); - - if (begInd >= endInd) - throw (new Error('malformed type, \']\' appears before \'[\'')); - - type = str.substring(0, begInd); - len = str.substring(begInd + 1, endInd); - - return ({ type: type, len: len }); -} - -/* - * Given a request validate that all of the fields for it are valid and make - * sense. This includes verifying the following notions: - * - Each type requested is present in types - * - Only allow a name for a field to be specified once - * - If an array is specified, validate that the requested field exists and - * comes before it. - * - If fields is defined, check that each entry has the occurrence of field - */ -function ctCheckReq(def, types, fields) -{ - var ii, jj; - var req, keys, key; - var found = {}; - - if (!(def instanceof Array)) - throw (new Error('definition is not an array')); - - if (def.length === 0) - throw (new Error('definition must have at least one element')); - - for (ii = 0; ii < def.length; ii++) { - req = def[ii]; - if (!(req instanceof Object)) - throw (new Error('definition must be an array of' + - 'objects')); - - keys = Object.keys(req); - if (keys.length != 1) - throw (new Error('definition entry must only have ' + - 'one key')); - - if (keys[0] in found) - throw (new Error('Specified name already ' + - 'specified: ' + keys[0])); - - if (!('type' in req[keys[0]])) - throw (new Error('missing required type definition')); - - key = ctParseType(req[keys[0]]['type']); - - /* - * We may have nested arrays, we need to check the validity of - * the types until the len field is undefined in key. However, - * each time len is defined we need to verify it is either an - * integer or corresponds to an already seen key. - */ - while (key['len'] !== undefined) { - if (isNaN(parseInt(key['len'], 10))) { - if (!(key['len'] in found)) - throw (new Error('Given an array ' + - 'length without a matching type')); - - } - - key = ctParseType(key['type']); - } - - /* Now we can validate if the type is valid */ - if (!(key['type'] in types)) - throw (new Error('type not found or typdefed: ' + - key['type'])); - - /* Check for any required fields */ - if (fields !== undefined) { - for (jj = 0; jj < fields.length; jj++) { - if (!(fields[jj] in req[keys[0]])) - throw (new Error('Missing required ' + - 'field: ' + fields[jj])); - } - } - - found[keys[0]] = true; - } -} - - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following required - * values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - * And the following optional values: - * - * char-type Valid options here are uint8 and int8. If uint8 is - * specified this changes the default behavior of a single - * char from being a buffer of a single character to being - * a uint8_t. If int8, it becomes an int8_t instead. - */ -function CTypeParser(conf) -{ - if (!conf) throw (new Error('missing required argument')); - - if (!('endian' in conf)) - throw (new Error('missing required endian value')); - - if (conf['endian'] != 'big' && conf['endian'] != 'little') - throw (new Error('Invalid endian type')); - - if ('char-type' in conf && (conf['char-type'] != 'uint8' && - conf['char-type'] != 'int8')) - throw (new Error('invalid option for char-type: ' + - conf['char-type'])); - - this.endian = conf['endian']; - this.types = ctGetBasicTypes(); - - /* - * There may be a more graceful way to do this, but this will have to - * serve. - */ - if ('char-type' in conf && conf['char-type'] == 'uint8') - this.types['char'] = this.types['uint8_t']; - - if ('char-type' in conf && conf['char-type'] == 'int8') - this.types['char'] = this.types['int8_t']; -} - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -CTypeParser.prototype.setEndian = function (endian) -{ - if (endian != 'big' && endian != 'little') - throw (new Error('invalid endian type, must be big or ' + - 'little')); - - this.endian = endian; -}; - -/* - * Returns the current value of the endian value for the parser. - */ -CTypeParser.prototype.getEndian = function () -{ - return (this.endian); -}; - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -CTypeParser.prototype.typedef = function (name, value) -{ - var type; - - if (name === undefined) - throw (new (Error('missing required typedef argument: name'))); - - if (value === undefined) - throw (new (Error('missing required typedef argument: value'))); - - if (typeof (name) != 'string') - throw (new (Error('the name of a type must be a string'))); - - type = ctParseType(name); - - if (type['len'] !== undefined) - throw (new Error('Cannot have an array in the typedef name')); - - if (name in this.types) - throw (new Error('typedef name already present: ' + name)); - - if (typeof (value) != 'string' && !(value instanceof Array)) - throw (new Error('typedef value must either be a string or ' + - 'struct')); - - if (typeof (value) == 'string') { - type = ctParseType(value); - if (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) - throw (new (Error('typedef value must use ' + - 'fixed size array when outside of a ' + - 'struct'))); - } - - this.types[name] = value; - } else { - /* We have a struct, validate it */ - ctCheckReq(value, this.types); - this.types[name] = value; - } -}; - -/* - * Include all of the typedefs, but none of the built in types. This should be - * treated as read-only. - */ -CTypeParser.prototype.lstypes = function () -{ - var key; - var ret = {}; - - for (key in this.types) { - if (key in deftypes) - continue; - ret[key] = this.types[key]; - } - - return (ret); -}; - -/* - * Given a type string that may have array types that aren't numbers, try and - * fill them in from the values object. The object should be of the format where - * indexing into it should return a number for that type. - * - * str The type string - * - * values An object that can be used to fulfill type information - */ -function ctResolveArray(str, values) -{ - var ret = ''; - var type = ctParseType(str); - - while (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) { - if (typeof (values[type['len']]) != 'number') - throw (new Error('cannot sawp in non-number ' + - 'for array value')); - ret = '[' + values[type['len']] + ']' + ret; - } else { - ret = '[' + type['len'] + ']' + ret; - } - type = ctParseType(type['type']); - } - - ret = type['type'] + ret; - - return (ret); -} - -/* - * [private] Either the typedef resolves to another type string or to a struct. - * If it resolves to a struct, we just pass it off to read struct. If not, we - * can just pass it off to read entry. - */ -CTypeParser.prototype.resolveTypedef = function (type, dispatch, buffer, - offset, value) -{ - var pt; - - mod_assert.ok(type in this.types); - if (typeof (this.types[type]) == 'string') { - pt = ctParseType(this.types[type]); - if (dispatch == 'read') - return (this.readEntry(pt, buffer, offset)); - else if (dispatch == 'write') - return (this.writeEntry(value, pt, buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } else { - if (dispatch == 'read') - return (this.readStruct(this.types[type], buffer, - offset)); - else if (dispatch == 'write') - return (this.writeStruct(value, this.types[type], - buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } - -}; - -/* - * [private] Try and read in the specific entry. - */ -CTypeParser.prototype.readEntry = function (type, buffer, offset) -{ - var parse, len; - - /* - * Because we want to special case char[]s this is unfortunately - * a bit uglier than it really should be. We want to special - * case char[]s so that we return a node buffer, thus they are a - * first class type where as all other arrays just call into a - * generic array routine which calls their data-specific routine - * the specified number of times. - * - * The valid dispatch options we have are: - * - Array and char => char[] handler - * - Generic array handler - * - Generic typedef handler - * - Basic type handler - */ - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - parse = this.types['char[]']['read'](len, - this.endian, buffer, offset); - else - parse = this.readArray(type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - parse = this.types[type['type']]['read'](this.endian, - buffer, offset); - else - parse = this.resolveTypedef(type['type'], 'read', - buffer, offset); - } - - return (parse); -}; - -/* - * [private] Read an array of data - */ -CTypeParser.prototype.readArray = function (type, length, buffer, offset) -{ - var ii, ent, pt; - var baseOffset = offset; - var ret = new Array(length); - pt = ctParseType(type); - - for (ii = 0; ii < length; ii++) { - ent = this.readEntry(pt, buffer, offset); - offset += ent['size']; - ret[ii] = ent['value']; - } - - return ({ value: ret, size: offset - baseOffset }); -}; - -/* - * [private] Read a single struct in. - */ -CTypeParser.prototype.readStruct = function (def, buffer, offset) -{ - var parse, ii, type, entry, key; - var baseOffset = offset; - var ret = {}; - - /* Walk it and handle doing what's necessary */ - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - /* Resolve all array values */ - type = ctParseType(ctResolveArray(entry['type'], ret)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - parse = this.readEntry(type, buffer, offset); - - offset += parse['size']; - ret[key] = parse['value']; - } - - return ({ value: ret, size: (offset-baseOffset)}); -}; - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -CTypeParser.prototype.readData = function (def, buffer, offset) -{ - /* Sanity check for arguments */ - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - /* Sanity check the object definition */ - ctCheckReq(def, this.types); - - return (this.readStruct(def, buffer, offset)['value']); -}; - -/* - * [private] Write out an array of data - */ -CTypeParser.prototype.writeArray = function (value, type, length, buffer, - offset) -{ - var ii, pt; - var baseOffset = offset; - if (!(value instanceof Array)) - throw (new Error('asked to write an array, but value is not ' + - 'an array')); - - if (value.length != length) - throw (new Error('asked to write array of length ' + length + - ' but that does not match value length: ' + value.length)); - - pt = ctParseType(type); - for (ii = 0; ii < length; ii++) - offset += this.writeEntry(value[ii], pt, buffer, offset); - - return (offset - baseOffset); -}; - -/* - * [private] Write the specific entry - */ -CTypeParser.prototype.writeEntry = function (value, type, buffer, offset) -{ - var len, ret; - - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - ret = this.types['char[]']['write'](value, len, - this.endian, buffer, offset); - else - ret = this.writeArray(value, type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - ret = this.types[type['type']]['write'](value, - this.endian, buffer, offset); - else - ret = this.resolveTypedef(type['type'], 'write', - buffer, offset, value); - } - - return (ret); -}; - -/* - * [private] Write a single struct out. - */ -CTypeParser.prototype.writeStruct = function (value, def, buffer, offset) -{ - var ii, entry, type, key; - var baseOffset = offset; - var vals = {}; - - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - type = ctParseType(ctResolveArray(entry['type'], vals)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - offset += this.writeEntry(value[ii], type, buffer, offset); - /* Now that we've written it out, we can use it for arrays */ - vals[key] = value[ii]; - } - - return (offset); -}; - -/* - * Unfortunately, we're stuck with the sins of an initial poor design. Because - * of that, we are going to have to support the old way of writing data via - * writeData. There we insert the values that you want to write into the - * definition. A little baroque. Internally, we use the new model. So we need to - * just get those values out of there. But to maintain the principle of least - * surprise, we're not going to modify the input data. - */ -function getValues(def) -{ - var ii, out, key; - out = []; - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - mod_assert.ok('value' in def[ii][key]); - out.push(def[ii][key]['value']); - } - - return (out); -} - -/* - * This is the second half of what we were born to do, write out the data - * itself. Historically this function required you to put your values in the - * definition section. This was not the smartest thing to do and a bit of an - * oversight to be honest. As such, this function now takes a values argument. - * If values is non-null and non-undefined, it will be used to determine the - * values. This means that the old method is still supported, but is no longer - * acceptable. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - * - * values An array of values to write. - */ -CTypeParser.prototype.writeData = function (def, buffer, offset, values) -{ - var hv; - - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - hv = (values != null && values != undefined); - if (hv) { - if (!Array.isArray(values)) - throw (new Error('missing values for writing')); - ctCheckReq(def, this.types); - } else { - ctCheckReq(def, this.types, [ 'value' ]); - } - - this.writeStruct(hv ? values : getValues(def), def, buffer, offset); -}; - -/* - * Functions to go to and from 64 bit numbers in a way that is compatible with - * Javascript limitations. There are two sets. One where the user is okay with - * an approximation and one where they are definitely not okay with an - * approximation. - */ - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -function toAbs64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - /* We have 20 bits worth of precision in this range */ - if (val[0] >= 0x100000) - throw (new Error('value would become approximated')); - - return (val[0] * Math.pow(2, 32) + val[1]); -} - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -function toApprox64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - return (Math.pow(2, 32) * val[0] + val[1]); -} - -function parseCTF(json, conf) -{ - var ctype = new CTypeParser(conf); - mod_ctf.ctfParseJson(json, ctype); - - return (ctype); -} - -/* - * Export the few things we actually want to. Currently this is just the CType - * Parser and ctio. - */ -exports.Parser = CTypeParser; -exports.toAbs64 = toAbs64; -exports.toApprox64 = toApprox64; - -exports.parseCTF = parseCTF; - -exports.ruint8 = mod_ctio.ruint8; -exports.ruint16 = mod_ctio.ruint16; -exports.ruint32 = mod_ctio.ruint32; -exports.ruint64 = mod_ctio.ruint64; -exports.wuint8 = mod_ctio.wuint8; -exports.wuint16 = mod_ctio.wuint16; -exports.wuint32 = mod_ctio.wuint32; -exports.wuint64 = mod_ctio.wuint64; - -exports.rsint8 = mod_ctio.rsint8; -exports.rsint16 = mod_ctio.rsint16; -exports.rsint32 = mod_ctio.rsint32; -exports.rsint64 = mod_ctio.rsint64; -exports.wsint8 = mod_ctio.wsint8; -exports.wsint16 = mod_ctio.wsint16; -exports.wsint32 = mod_ctio.wsint32; -exports.wsint64 = mod_ctio.wsint64; - -exports.rfloat = mod_ctio.rfloat; -exports.rdouble = mod_ctio.rdouble; -exports.wfloat = mod_ctio.wfloat; -exports.wdouble = mod_ctio.wdouble; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype deleted file mode 100644 index 3f94986a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype +++ /dev/null @@ -1,241 +0,0 @@ -'\" te -.\" Copyright (c) 2011, Robert Mustacchi. All Rights Reserved. -.\" Copyright (c) 2011, Joyent, Inc. All Rights Reserved. -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a copy -.\" of this software and associated documentation files (the "Software"), to -.\" deal in the Software without restriction, including without limitation the -.\" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -.\" sell copies of the Software, and to permit persons to whom the Software is -.\" furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice shall be included in -.\" all copies or substantial portions of the Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -.\" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -.\" IN THE SOFTWARE. -.TH CTIO 3CTYPE "December 12, 2011" -.SH NAME -ctio, ruint8, ruint16, ruint32, ruint64, wuint8, wuint16, wuint32, wuint64, -rsint8, rsint16, rsint32, rsint64, wsint8, wsint16, wsint32, wsint64, rfloat, -rdouble, wfloat, wdouble \- integer and float operations -.SH SYNOPSIS -.LP -.nf -var mod_ctype = require('ctype'); - -\fBNumber\fR \fBmod_ctype.ruint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.ruint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.rsint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rfloat\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rdouble\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wfloat\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wdouble\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.SH DESCRIPTION -.sp -.LP -The argument \fIbuf\fR refers to a valid buffer (from calling new Buffer()). The -argument \fIendian\fR is either the string 'big' or 'little' and controls -whether the data in the buffer is interpreted as big or little endian. The argument -\fIoffset\fR indicates the starting index into the buffer to read or write. All -functions ensure that starting at \fIoffset\fR does not overflow the end of the -buffer. The argument \fIvalue\fR is a Number that is the valid type for the -specific function. All functions that take \fIvalue\fR as an argument, verify -that the passed value is valid. - -.SS "\fBruint8()\fR, \fBruint16()\fR, \fBruint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions read an 8, -16, and 32-bit unsigned value from \fIbuf\fR and return it. The value read is -influenced by the values of \fIoffset\fR and \fRendian\fI. - - -.SS "\fBrsint8()\fR, \fBrsint16()\fR, \fBrsint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions work just as -\fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR, except they return signed -integers. - -.SS "\fBruint64()\fR, \fBrsint64()\fR" -.sp -.LP -The \fBruint64()\fR and \fBrsint64()\fR functions read unsigned and signed 64 -bit integers respectively from \fBbuf\fR. Due to the limitations of ECMAScript's -\fBNumber\fR type, they cannot be stored as one value without a loss of -precision. Instead of returning the values as a single \fBNumber\fR, the -functions return an array of two numbers. The first entry always contains the -upper 32-bits and the second value contains the lower 32-bits. The lossy -transformation into a number would be \fIres[0]*Math.pow(2,32)+res[1]\fR. -Note that, unless an entry is zero, both array entries are guaranteed to have -the same sign. - -.SS "\fBwuint8()\fR, \fBwuint16()\fR, \fBwuint32()\fR" -.sp -.LP -The functions \fBwuint8()\fR, \fBwuint16()\fR, and \fBwuint32()\fR modify the -contents of \fBbuf\fR by writing an 8, 16, and 32-bit unsigned integer -respectively to \fBbuf\fR. It is illegal to pass a number that is not an integer -within the domain of the integer size, for example, for \fBwuint8()\fR the valid -range is \fB[0, 255]\fR. The value will be written in either big or little -endian format based upon the value of \fBendian\fR. - - -.SS "\fBwsint8()\fR, \fBwsint16()\fR, \fBwsint32()\fR" -.sp -.LP -The functions \fBwsint8()\fR, \fBwsint16()\fR, and \fBwsint32()\fR function -identically to the functions \fBwuint8()\fR, \fBwuint16()\fR, and -\fBwuint32()\fR except that they the valid domain for \fBvalue\fR is that of a -signed number instead of an unsigned number. For example the \fBwsint8()\fR has -a domain of \fB[-128, 127]\fR. - -.SS "\fBwuint64()\fR, \fBwsint64()\fR" -.sp -.LP -The functions \fBwuint64()\fR and \fBswint64()\fR write out 64-bit unsigned and -signed integers to \fBbuf\fR. The \fBvalue\fR argument must be in the same -format as described in \fBruint64()\fR and \fBrsint64()\fR. - -.SS "\fBrfloat()\fR, \fBrdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other read -functions, except that they read a single precision and double precision -IEEE-754 floating point value instead. - -.SS "\fBwfloat()\fR, \fBwdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other write -functions, except that the domain for a float is that of a single precision 4 -byte value. The domain for a double is any \fBNumber\fR in ECMAScript, which is -defined to be represented by a double. - -.SH ATTRIBUTES -.sp -.LP -See \fBattributes\fR(5) for descriptions of the following attributes: -.sp - -.sp -.TS -box; -c | c -l | l . -ATTRIBUTE TYPE ATTRIBUTE VALUE -_ -Interface Stability Committed -_ -MT-Level See below. -_ -Standard Not standardized. -.TE - -.sp -.LP - -All functions are MT-safe in so far as there aren't shared memory MT concerns in -most node programs. If one where to concoct such an environment, these functions -wouldn't be MT-safe. - -.SH SEE ALSO -.sp -.LP diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json deleted file mode 100644 index edcc649a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "ctype", - "version": "0.5.2", - "description": "read and write binary structures and data types", - "homepage": "https://github.com/rmustacc/node-ctype", - "author": { - "name": "Robert Mustacchi", - "email": "rm@fingolfin.org" - }, - "engines": { - "node": ">= 0.4" - }, - "main": "ctype.js", - "readme": "Node-CType is a way to read and write binary data in structured and easy to use\nformat. Its name comes from the C header file.\n\nTo get started, simply clone the repository or use npm to install it. Once it is\nthere, simply require it.\n\ngit clone git://github.com/rmustacc/node-ctype\nnpm install ctype\nvar mod_ctype = require('ctype')\n\n\nThere are two APIs that you can use, depending on what abstraction you'd like.\nThe low level API let's you read and write individual integers and floats from\nbuffers. The higher level API let's you read and write structures of these. To\nillustrate this, let's looks look at how we would read and write a binary\nencoded x,y point.\n\nIn C we would define this structure as follows:\n\ntypedef struct point {\n\tuint16_t\tp_x;\n\tuint16_t\tp_y;\n} point_t;\n\nTo read a binary encoded point from a Buffer, we first need to create a CType\nparser (where we specify the endian and other options) and add the typedef.\n\nvar parser = new mod_ctype.Parser({ endian: 'big' });\nparser.typedef('point_t', [\n\t{ x: { type: 'uint16_t' } },\n\t{ y: { type: 'uint16_t' } }\n]);\n\nFrom here, given a buffer buf and an offset into it, we can read a point.\n\nvar out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0);\nconsole.log(out);\n{ point: { x: 23, y: 42 } }\n\nAnother way to get the same information would be to use the low level methods.\nNote that these require you to manually deal with the offset. Here's how we'd\nget the same values of x and y from the buffer.\n\nvar x = mod_ctype.ruint16(buf, 'big', 0);\nvar y = mod_ctype.ruint16(buf, 'big', 2);\nconsole.log(x + ', ' + y);\n23, 42\n\nThe true power of this API comes from the ability to define and nest typedefs,\njust as you would in C. By default, the following types are defined by default.\nNote that they return a Number, unless indicated otherwise.\n\n * int8_t\n * int16_t\n * int32_t\n * int64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * uint8_t\n * uint16_t\n * uint32_t\n * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * float\n * double\n * char (either returns a buffer with that character or a uint8_t)\n * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)\n\n\nctf2json integration:\n\nNode-CType supports consuming the output of ctf2json. Once you read in a JSON file,\nall you have to do to add all the definitions it contains is:\n\nvar data, parser;\ndata = JSON.parse(parsedJSONData);\nparser = mod_ctype.parseCTF(data, { endian: 'big' });\n\nFor more documentation, see the file README.old. Full documentation is in the\nprocess of being rewritten as a series of manual pages which will be available\nin the repository and online for viewing.\n\nTo read the ctio manual page simple run, from the root of the workspace:\n\nman -Mman -s 3ctype ctio\n", - "readmeFilename": "README", - "_id": "ctype@0.5.2", - "_from": "ctype@0.5.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf deleted file mode 100755 index 845f367a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf +++ /dev/null @@ -1,129 +0,0 @@ -# -# Configuration File for JavaScript Lint 0.3.0 -# Developed by Matthias Miller (http://www.JavaScriptLint.com) -# -# This configuration file can be used to lint a collection of scripts, or to enable -# or disable warnings for scripts that are linted via the command line. -# - -### Warnings -# Enable or disable warnings based on requirements. -# Use "+WarningName" to display or "-WarningName" to suppress. -# -+no_return_value # function {0} does not always return a value -+duplicate_formal # duplicate formal argument {0} -+equal_as_assign # test for equality (==) mistyped as assignment (=)?{0} -+var_hides_arg # variable {0} hides argument -+redeclared_var # redeclaration of {0} {1} -+anon_no_return_value # anonymous function does not always return a value -+missing_semicolon # missing semicolon -+meaningless_block # meaningless block; curly braces have no impact -+comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+unreachable_code # unreachable code -+missing_break # missing break statement -+missing_break_for_last_case # missing break statement for last case in switch -+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement -+useless_void # use of the void type may be unnecessary (void is always undefined) --useless_quotes # quotation marks are unnecessary -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+use_of_label # use of label --block_without_braces # block statement without curly braces -+leading_decimal_point # leading decimal point may indicate a number or an object member -+trailing_decimal_point # trailing decimal point may indicate a number or an object member --octal_number # leading zeros make an octal number -+nested_comment # nested comment -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+empty_statement # empty statement or extra semicolon --missing_option_explicit # the "option explicit" control comment is missing -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+dup_option_explicit # duplicate "option explicit" control comment -+useless_assign # useless assignment -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent) -+missing_default_case # missing default case in switch statement -+duplicate_case_in_switch # duplicate case in switch statements -+default_not_at_end # the default case is not at the end of the switch statement -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+useless_comparison # useless comparison; comparing identical expressions -+with_statement # with statement hides undeclared variables; use temporary variable instead -+trailing_comma_in_array # extra comma is not recommended in array initializers -+assign_to_function_call # assignment to a function call -+parseint_missing_radix # parseInt missing radix parameter --unreferenced_argument # argument declared but never referenced: {name} - -### Output format -# Customize the format of the error message. -# __FILE__ indicates current file path -# __FILENAME__ indicates current file name -# __LINE__ indicates current line -# __ERROR__ indicates error message -# -# Visual Studio syntax (default): -+output-format __FILE__(__LINE__): __ERROR__ -# Alternative syntax: -#+output-format __FILE__:__LINE__: __ERROR__ - - -### Context -# Show the in-line position of the error. -# Use "+context" to display or "-context" to suppress. -# -+context - - -### Semicolons -# By default, assignments of an anonymous function to a variable or -# property (such as a function prototype) must be followed by a semicolon. -# -#+lambda_assign_requires_semicolon # deprecated setting - - -### Control Comments -# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for -# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is -# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason, -# although legacy control comments are enabled by default for backward compatibility. -# -+legacy_control_comments - - -### JScript Function Extensions -# JScript allows member functions to be defined like this: -# function MyObj() { /*constructor*/ } -# function MyObj.prototype.go() { /*member function*/ } -# -# It also allows events to be attached like this: -# function window::onload() { /*init page*/ } -# -# This is a Microsoft-only JavaScript extension. Enable this setting to allow them. -# -#-jscript_function_extensions # deprecated setting - - -### Defining identifiers -# By default, "option explicit" is enabled on a per-file basis. -# To enable this for all files, use "+always_use_option_explicit" --always_use_option_explicit - -# Define certain identifiers of which the lint is not aware. -# (Use this in conjunction with the "undeclared identifier" warning.) -# -# Common uses for webpages might be: -#+define window -#+define document -+define require -+define exports -+define console -+define Buffer -+define JSON - -### Files -# Specify which files to lint -# Use "+recurse" to enable recursion (disabled by default). -# To add a set of files, use "+process FileName", "+process Folder\Path\*.js", -# or "+process Folder\Path\*.htm". -# -#+process jsl-test.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle deleted file mode 100755 index 96c72b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle +++ /dev/null @@ -1,839 +0,0 @@ -#!/usr/bin/env perl -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# Copyright 2011 Joyent, Inc. All rights reserved. -# -# jsstyle - check for some common stylistic errors. -# -# jsstyle is a sort of "lint" for Javascript coding style. This tool is -# derived from the cstyle tool, used to check for the style used in the -# Solaris kernel, sometimes known as "Bill Joy Normal Form". -# -# There's a lot this can't check for, like proper indentation of code -# blocks. There's also a lot more this could check for. -# -# A note to the non perl literate: -# -# perl regular expressions are pretty much like egrep -# regular expressions, with the following special symbols -# -# \s any space character -# \S any non-space character -# \w any "word" character [a-zA-Z0-9_] -# \W any non-word character -# \d a digit [0-9] -# \D a non-digit -# \b word boundary (between \w and \W) -# \B non-word boundary -# - -require 5.0; -use IO::File; -use Getopt::Std; -use strict; - -my $usage = -"usage: jsstyle [-chvC] [-o constructs] file ... - -c check continuation indentation inside functions - -h perform heuristic checks that are sometimes wrong - -v verbose - -C don't check anything in header block comments - -o constructs - allow a comma-seperated list of optional constructs: - doxygen allow doxygen-style block comments (/** /*!) - splint allow splint-style lint comments (/*@ ... @*/) -"; - -my %opts; - -if (!getopts("cho:vC", \%opts)) { - print $usage; - exit 2; -} - -my $check_continuation = $opts{'c'}; -my $heuristic = $opts{'h'}; -my $verbose = $opts{'v'}; -my $ignore_hdr_comment = $opts{'C'}; - -my $doxygen_comments = 0; -my $splint_comments = 0; - -if (defined($opts{'o'})) { - for my $x (split /,/, $opts{'o'}) { - if ($x eq "doxygen") { - $doxygen_comments = 1; - } elsif ($x eq "splint") { - $splint_comments = 1; - } else { - print "jsstyle: unrecognized construct \"$x\"\n"; - print $usage; - exit 2; - } - } -} - -my ($filename, $line, $prev); # shared globals - -my $fmt; -my $hdr_comment_start; - -if ($verbose) { - $fmt = "%s: %d: %s\n%s\n"; -} else { - $fmt = "%s: %d: %s\n"; -} - -if ($doxygen_comments) { - # doxygen comments look like "/*!" or "/**"; allow them. - $hdr_comment_start = qr/^\s*\/\*[\!\*]?$/; -} else { - $hdr_comment_start = qr/^\s*\/\*$/; -} - -# Note, following must be in single quotes so that \s and \w work right. -my $lint_re = qr/\/\*(?: - jsl:\w+?|ARGSUSED[0-9]*|NOTREACHED|LINTLIBRARY|VARARGS[0-9]*| - CONSTCOND|CONSTANTCOND|CONSTANTCONDITION|EMPTY| - FALLTHRU|FALLTHROUGH|LINTED.*?|PRINTFLIKE[0-9]*| - PROTOLIB[0-9]*|SCANFLIKE[0-9]*|JSSTYLED.*? - )\*\//x; - -my $splint_re = qr/\/\*@.*?@\*\//x; - -my $err_stat = 0; # exit status - -if ($#ARGV >= 0) { - foreach my $arg (@ARGV) { - my $fh = new IO::File $arg, "r"; - if (!defined($fh)) { - printf "%s: cannot open\n", $arg; - } else { - &jsstyle($arg, $fh); - close $fh; - } - } -} else { - &jsstyle("<stdin>", *STDIN); -} -exit $err_stat; - -my $no_errs = 0; # set for JSSTYLED-protected lines - -sub err($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $line; - $err_stat = 1; - } -} - -sub err_prefix($$) { - my ($prevline, $error) = @_; - my $out = $prevline."\n".$line; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $out; - $err_stat = 1; - } -} - -sub err_prev($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $. - 1, $error, $prev; - $err_stat = 1; - } -} - -sub jsstyle($$) { - -my ($fn, $filehandle) = @_; -$filename = $fn; # share it globally - -my $in_cpp = 0; -my $next_in_cpp = 0; - -my $in_comment = 0; -my $in_header_comment = 0; -my $comment_done = 0; -my $in_function = 0; -my $in_function_header = 0; -my $in_declaration = 0; -my $note_level = 0; -my $nextok = 0; -my $nocheck = 0; - -my $in_string = 0; - -my ($okmsg, $comment_prefix); - -$line = ''; -$prev = ''; -reset_indent(); - -line: while (<$filehandle>) { - s/\r?\n$//; # strip return and newline - - # save the original line, then remove all text from within - # double or single quotes, we do not want to check such text. - - $line = $_; - - # - # C allows strings to be continued with a backslash at the end of - # the line. We translate that into a quoted string on the previous - # line followed by an initial quote on the next line. - # - # (we assume that no-one will use backslash-continuation with character - # constants) - # - $_ = '"' . $_ if ($in_string && !$nocheck && !$in_comment); - - # - # normal strings and characters - # - s/'([^\\']|\\.)*'/\'\'/g; - s/"([^\\"]|\\.)*"/\"\"/g; - - # - # detect string continuation - # - if ($nocheck || $in_comment) { - $in_string = 0; - } else { - # - # Now that all full strings are replaced with "", we check - # for unfinished strings continuing onto the next line. - # - $in_string = - (s/([^"](?:"")*)"([^\\"]|\\.)*\\$/$1""/ || - s/^("")*"([^\\"]|\\.)*\\$/""/); - } - - # - # figure out if we are in a cpp directive - # - $in_cpp = $next_in_cpp || /^\s*#/; # continued or started - $next_in_cpp = $in_cpp && /\\$/; # only if continued - - # strip off trailing backslashes, which appear in long macros - s/\s*\\$//; - - # an /* END JSSTYLED */ comment ends a no-check block. - if ($nocheck) { - if (/\/\* *END *JSSTYLED *\*\//) { - $nocheck = 0; - } else { - reset_indent(); - next line; - } - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if ($nextok) { - if ($okmsg) { - err($okmsg); - } - $nextok = 0; - $okmsg = 0; - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - $no_errs = 1; - } elsif ($no_errs) { - $no_errs = 0; - } - - # check length of line. - # first, a quick check to see if there is any chance of being too long. - if (($line =~ tr/\t/\t/) * 7 + length($line) > 80) { - # yes, there is a chance. - # replace tabs with spaces and check again. - my $eline = $line; - 1 while $eline =~ - s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; - if (length($eline) > 80) { - err("line > 80 characters"); - } - } - - # ignore NOTE(...) annotations (assumes NOTE is on lines by itself). - if ($note_level || /\b_?NOTE\s*\(/) { # if in NOTE or this is NOTE - s/[^()]//g; # eliminate all non-parens - $note_level += s/\(//g - length; # update paren nest level - next; - } - - # a /* BEGIN JSSTYLED */ comment starts a no-check block. - if (/\/\* *BEGIN *JSSTYLED *\*\//) { - $nocheck = 1; - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - if (/\/\/ *JSSTYLED/) { - /^.*\/\/ *JSSTYLED *(.*)$/; - $okmsg = $1; - $nextok = 1; - } - - # universal checks; apply to everything - if (/\t +\t/) { - err("spaces between tabs"); - } - if (/ \t+ /) { - err("tabs between spaces"); - } - if (/\s$/) { - err("space or tab at end of line"); - } - if (/[^ \t(]\/\*/ && !/\w\(\/\*.*\*\/\);/) { - err("comment preceded by non-blank"); - } - - # is this the beginning or ending of a function? - # (not if "struct foo\n{\n") - if (/^{$/ && $prev =~ /\)\s*(const\s*)?(\/\*.*\*\/\s*)?\\?$/) { - $in_function = 1; - $in_declaration = 1; - $in_function_header = 0; - $prev = $line; - next line; - } - if (/^}\s*(\/\*.*\*\/\s*)*$/) { - if ($prev =~ /^\s*return\s*;/) { - err_prev("unneeded return at end of function"); - } - $in_function = 0; - reset_indent(); # we don't check between functions - $prev = $line; - next line; - } - if (/^\w*\($/) { - $in_function_header = 1; - } - - # a blank line terminates the declarations within a function. - # XXX - but still a problem in sub-blocks. - if ($in_declaration && /^$/) { - $in_declaration = 0; - } - - if ($comment_done) { - $in_comment = 0; - $in_header_comment = 0; - $comment_done = 0; - } - # does this looks like the start of a block comment? - if (/$hdr_comment_start/) { - if (!/^\t*\/\*/) { - err("block comment not indented by tabs"); - } - $in_comment = 1; - /^(\s*)\//; - $comment_prefix = $1; - if ($comment_prefix eq "") { - $in_header_comment = 1; - } - $prev = $line; - next line; - } - # are we still in the block comment? - if ($in_comment) { - if (/^$comment_prefix \*\/$/) { - $comment_done = 1; - } elsif (/\*\//) { - $comment_done = 1; - err("improper block comment close") - unless ($ignore_hdr_comment && $in_header_comment); - } elsif (!/^$comment_prefix \*[ \t]/ && - !/^$comment_prefix \*$/) { - err("improper block comment") - unless ($ignore_hdr_comment && $in_header_comment); - } - } - - if ($in_header_comment && $ignore_hdr_comment) { - $prev = $line; - next line; - } - - # check for errors that might occur in comments and in code. - - # allow spaces to be used to draw pictures in header comments. - #if (/[^ ] / && !/".* .*"/ && !$in_header_comment) { - # err("spaces instead of tabs"); - #} - #if (/^ / && !/^ \*[ \t\/]/ && !/^ \*$/ && - # (!/^ \w/ || $in_function != 0)) { - # err("indent by spaces instead of tabs"); - #} - if (/^ {2,}/ && !/^ [^ ]/) { - err("indent by spaces instead of tabs"); - } - if (/^\t+ [^ \t\*]/ || /^\t+ \S/ || /^\t+ \S/) { - err("continuation line not indented by 4 spaces"); - } - - if (/^\s*\/\*./ && !/^\s*\/\*.*\*\// && !/$hdr_comment_start/) { - err("improper first line of block comment"); - } - - if ($in_comment) { # still in comment, don't do further checks - $prev = $line; - next line; - } - - if ((/[^(]\/\*\S/ || /^\/\*\S/) && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank after open comment"); - } - if (/\S\*\/[^)]|\S\*\/$/ && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank before close comment"); - } - if (/\/\/\S/) { # C++ comments - err("missing blank after start comment"); - } - # check for unterminated single line comments, but allow them when - # they are used to comment out the argument list of a function - # declaration. - if (/\S.*\/\*/ && !/\S.*\/\*.*\*\// && !/\(\/\*/) { - err("unterminated single line comment"); - } - - if (/^(#else|#endif|#include)(.*)$/) { - $prev = $line; - next line; - } - - # - # delete any comments and check everything else. Note that - # ".*?" is a non-greedy match, so that we don't get confused by - # multiple comments on the same line. - # - s/\/\*.*?\*\///g; - s/\/\/.*$//; # C++ comments - - # delete any trailing whitespace; we have already checked for that. - s/\s*$//; - - # following checks do not apply to text in comments. - if (/"/) { - err("literal string using double-quote instead of single"); - } - - if (/[^=!<>\s][!<>=]=/ || /[^<>!=][!<>=]==?[^\s,=]/ || - (/[^->]>[^,=>\s]/ && !/[^->]>$/) || - (/[^<]<[^,=<\s]/ && !/[^<]<$/) || - /[^<\s]<[^<]/ || /[^->\s]>[^>]/) { - err("missing space around relational operator"); - } - if (/\S>>=/ || /\S<<=/ || />>=\S/ || /<<=\S/ || /\S[-+*\/&|^%]=/ || - (/[^-+*\/&|^%!<>=\s]=[^=]/ && !/[^-+*\/&|^%!<>=\s]=$/) || - (/[^!<>=]=[^=\s]/ && !/[^!<>=]=$/)) { - # XXX - should only check this for C++ code - # XXX - there are probably other forms that should be allowed - if (!/\soperator=/) { - err("missing space around assignment operator"); - } - } - if (/[,;]\S/ && !/\bfor \(;;\)/) { - err("comma or semicolon followed by non-blank"); - } - # allow "for" statements to have empty "while" clauses - if (/\s[,;]/ && !/^[\t]+;$/ && !/^\s*for \([^;]*; ;[^;]*\)/) { - err("comma or semicolon preceded by blank"); - } - if (/^\s*(&&|\|\|)/) { - err("improper boolean continuation"); - } - if (/\S *(&&|\|\|)/ || /(&&|\|\|) *\S/) { - err("more than one space around boolean operator"); - } - if (/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\(/) { - err("missing space between keyword and paren"); - } - if (/(\b(catch|for|if|with|while|switch|return)\b.*){2,}/) { - # multiple "case" and "sizeof" allowed - err("more than one keyword on line"); - } - if (/\b(delete|typeof|instanceOf|with|throw|catch|new|function|in|for|if|while|switch|return|case)\s\s+\(/ && - !/^#if\s+\(/) { - err("extra space between keyword and paren"); - } - # try to detect "func (x)" but not "if (x)" or - # "#define foo (x)" or "int (*func)();" - if (/\w\s\(/) { - my $s = $_; - # strip off all keywords on the line - s/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\s\(/XXX(/g; - s/#elif\s\(/XXX(/g; - s/^#define\s+\w+\s+\(/XXX(/; - # do not match things like "void (*f)();" - # or "typedef void (func_t)();" - s/\w\s\(+\*/XXX(*/g; - s/\b(void)\s+\(+/XXX(/og; - if (/\w\s\(/) { - err("extra space between function name and left paren"); - } - $_ = $s; - } - - if (/^\s*return\W[^;]*;/ && !/^\s*return\s*\(.*\);/) { - err("unparenthesized return expression"); - } - if (/\btypeof\b/ && !/\btypeof\s*\(.*\)/) { - err("unparenthesized typeof expression"); - } - if (/\(\s/) { - err("whitespace after left paren"); - } - # allow "for" statements to have empty "continue" clauses - if (/\s\)/ && !/^\s*for \([^;]*;[^;]*; \)/) { - err("whitespace before right paren"); - } - if (/^\s*\(void\)[^ ]/) { - err("missing space after (void) cast"); - } - if (/\S{/ && !/({|\(){/) { - err("missing space before left brace"); - } - if ($in_function && /^\s+{/ && - ($prev =~ /\)\s*$/ || $prev =~ /\bstruct\s+\w+$/)) { - err("left brace starting a line"); - } - if (/}(else|while)/) { - err("missing space after right brace"); - } - if (/}\s\s+(else|while)/) { - err("extra space after right brace"); - } - if (/^\s+#/) { - err("preprocessor statement not in column 1"); - } - if (/^#\s/) { - err("blank after preprocessor #"); - } - - # - # We completely ignore, for purposes of indentation: - # * lines outside of functions - # * preprocessor lines - # - if ($check_continuation && $in_function && !$in_cpp) { - process_indent($_); - } - - if ($heuristic) { - # cannot check this everywhere due to "struct {\n...\n} foo;" - if ($in_function && !$in_declaration && - /}./ && !/}\s+=/ && !/{.*}[;,]$/ && !/}(\s|)*$/ && - !/} (else|while)/ && !/}}/) { - err("possible bad text following right brace"); - } - # cannot check this because sub-blocks in - # the middle of code are ok - if ($in_function && /^\s+{/) { - err("possible left brace starting a line"); - } - } - if (/^\s*else\W/) { - if ($prev =~ /^\s*}$/) { - err_prefix($prev, - "else and right brace should be on same line"); - } - } - $prev = $line; -} - -if ($prev eq "") { - err("last line in file is blank"); -} - -} - -# -# Continuation-line checking -# -# The rest of this file contains the code for the continuation checking -# engine. It's a pretty simple state machine which tracks the expression -# depth (unmatched '('s and '['s). -# -# Keep in mind that the argument to process_indent() has already been heavily -# processed; all comments have been replaced by control-A, and the contents of -# strings and character constants have been elided. -# - -my $cont_in; # currently inside of a continuation -my $cont_off; # skipping an initializer or definition -my $cont_noerr; # suppress cascading errors -my $cont_start; # the line being continued -my $cont_base; # the base indentation -my $cont_first; # this is the first line of a statement -my $cont_multiseg; # this continuation has multiple segments - -my $cont_special; # this is a C statement (if, for, etc.) -my $cont_macro; # this is a macro -my $cont_case; # this is a multi-line case - -my @cont_paren; # the stack of unmatched ( and [s we've seen - -sub -reset_indent() -{ - $cont_in = 0; - $cont_off = 0; -} - -sub -delabel($) -{ - # - # replace labels with tabs. Note that there may be multiple - # labels on a line. - # - local $_ = $_[0]; - - while (/^(\t*)( *(?:(?:\w+\s*)|(?:case\b[^:]*)): *)(.*)$/) { - my ($pre_tabs, $label, $rest) = ($1, $2, $3); - $_ = $pre_tabs; - while ($label =~ s/^([^\t]*)(\t+)//) { - $_ .= "\t" x (length($2) + length($1) / 8); - } - $_ .= ("\t" x (length($label) / 8)).$rest; - } - - return ($_); -} - -sub -process_indent($) -{ - require strict; - local $_ = $_[0]; # preserve the global $_ - - s///g; # No comments - s/\s+$//; # Strip trailing whitespace - - return if (/^$/); # skip empty lines - - # regexps used below; keywords taking (), macros, and continued cases - my $special = '(?:(?:\}\s*)?else\s+)?(?:if|for|while|switch)\b'; - my $macro = '[A-Z_][A-Z_0-9]*\('; - my $case = 'case\b[^:]*$'; - - # skip over enumerations, array definitions, initializers, etc. - if ($cont_off <= 0 && !/^\s*$special/ && - (/(?:(?:\b(?:enum|struct|union)\s*[^\{]*)|(?:\s+=\s*)){/ || - (/^\s*{/ && $prev =~ /=\s*(?:\/\*.*\*\/\s*)*$/))) { - $cont_in = 0; - $cont_off = tr/{/{/ - tr/}/}/; - return; - } - if ($cont_off) { - $cont_off += tr/{/{/ - tr/}/}/; - return; - } - - if (!$cont_in) { - $cont_start = $line; - - if (/^\t* /) { - err("non-continuation indented 4 spaces"); - $cont_noerr = 1; # stop reporting - } - $_ = delabel($_); # replace labels with tabs - - # check if the statement is complete - return if (/^\s*\}?$/); - return if (/^\s*\}?\s*else\s*\{?$/); - return if (/^\s*do\s*\{?$/); - return if (/{$/); - return if (/}[,;]?$/); - - # Allow macros on their own lines - return if (/^\s*[A-Z_][A-Z_0-9]*$/); - - # cases we don't deal with, generally non-kosher - if (/{/) { - err("stuff after {"); - return; - } - - # Get the base line, and set up the state machine - /^(\t*)/; - $cont_base = $1; - $cont_in = 1; - @cont_paren = (); - $cont_first = 1; - $cont_multiseg = 0; - - # certain things need special processing - $cont_special = /^\s*$special/? 1 : 0; - $cont_macro = /^\s*$macro/? 1 : 0; - $cont_case = /^\s*$case/? 1 : 0; - } else { - $cont_first = 0; - - # Strings may be pulled back to an earlier (half-)tabstop - unless ($cont_noerr || /^$cont_base / || - (/^\t*(?: )?(?:gettext\()?\"/ && !/^$cont_base\t/)) { - err_prefix($cont_start, - "continuation should be indented 4 spaces"); - } - } - - my $rest = $_; # keeps the remainder of the line - - # - # The split matches 0 characters, so that each 'special' character - # is processed separately. Parens and brackets are pushed and - # popped off the @cont_paren stack. For normal processing, we wait - # until a ; or { terminates the statement. "special" processing - # (if/for/while/switch) is allowed to stop when the stack empties, - # as is macro processing. Case statements are terminated with a : - # and an empty paren stack. - # - foreach $_ (split /[^\(\)\[\]\{\}\;\:]*/) { - next if (length($_) == 0); - - # rest contains the remainder of the line - my $rxp = "[^\Q$_\E]*\Q$_\E"; - $rest =~ s/^$rxp//; - - if (/\(/ || /\[/) { - push @cont_paren, $_; - } elsif (/\)/ || /\]/) { - my $cur = $_; - tr/\)\]/\(\[/; - - my $old = (pop @cont_paren); - if (!defined($old)) { - err("unexpected '$cur'"); - $cont_in = 0; - last; - } elsif ($old ne $_) { - err("'$cur' mismatched with '$old'"); - $cont_in = 0; - last; - } - - # - # If the stack is now empty, do special processing - # for if/for/while/switch and macro statements. - # - next if (@cont_paren != 0); - if ($cont_special) { - if ($rest =~ /^\s*{?$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*;$/) { - err("empty if/for/while body ". - "not on its own line"); - $cont_in = 0; - last; - } - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - # We've finished this section, start - # processing the next. - goto section_ended; - } - if ($cont_macro) { - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - } - } elsif (/\;/) { - if ($cont_case) { - err("unexpected ;"); - } elsif (!$cont_special) { - err("unexpected ;") if (@cont_paren != 0); - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*special/) { - err("if/for/while/switch not started ". - "on its own line"); - } - goto section_ended; - } - } elsif (/\{/) { - err("{ while in parens/brackets") if (@cont_paren != 0); - err("stuff after {") if ($rest =~ /[^\s}]/); - $cont_in = 0; - last; - } elsif (/\}/) { - err("} while in parens/brackets") if (@cont_paren != 0); - if (!$cont_special && $rest !~ /^\s*(while|else)\b/) { - if ($rest =~ /^$/) { - err("unexpected }"); - } else { - err("stuff after }"); - } - $cont_in = 0; - last; - } - } elsif (/\:/ && $cont_case && @cont_paren == 0) { - err("stuff after multi-line case") if ($rest !~ /$^/); - $cont_in = 0; - last; - } - next; -section_ended: - # End of a statement or if/while/for loop. Reset - # cont_special and cont_macro based on the rest of the - # line. - $cont_special = ($rest =~ /^\s*$special/)? 1 : 0; - $cont_macro = ($rest =~ /^\s*$macro/)? 1 : 0; - $cont_case = 0; - next; - } - $cont_noerr = 0 if (!$cont_in); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json deleted file mode 100644 index 29d7bd89..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563626, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "float" ] - }, -"data": - [ - { "name": "float", "float": { "length": 4 } } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json deleted file mode 100644 index f9773a14..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563631, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "int" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json deleted file mode 100644 index e0ee5e0d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json +++ /dev/null @@ -1,104 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563573, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "psinfo_t" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } }, - { "name": "char", "integer": { "length": 1, "signed": true } }, - { "name": "unsigned short", "integer": { "length": 2, "signed": false } }, - { "name": "long", "integer": { "length": 4, "signed": true } }, - { "name": "unsigned", "integer": { "length": 4, "signed": false } }, - { "name": "size_t", "typedef": "unsigned" }, - { "name": "unsigned long", "integer": { "length": 4, "signed": false } }, - { "name": "time_t", "typedef": "long" }, - { "name": "struct timespec", "struct": [ - { "name": "tv_sec", "type": "time_t" }, - { "name": "tv_nsec", "type": "long" } - ] }, - { "name": "zoneid_t", "typedef": "long" }, - { "name": "taskid_t", "typedef": "long" }, - { "name": "dev_t", "typedef": "unsigned long" }, - { "name": "uid_t", "typedef": "unsigned" }, - { "name": "gid_t", "typedef": "unsigned" }, - { "name": "timestruc_t", "typedef": "struct timespec" }, - { "name": "short", "integer": { "length": 2, "signed": true } }, - { "name": "projid_t", "typedef": "long" }, - { "name": "ushort_t", "typedef": "unsigned short" }, - { "name": "poolid_t", "typedef": "long" }, - { "name": "uintptr_t", "typedef": "unsigned" }, - { "name": "id_t", "typedef": "long" }, - { "name": "pid_t", "typedef": "long" }, - { "name": "processorid_t", "typedef": "int" }, - { "name": "psetid_t", "typedef": "int" }, - { "name": "struct lwpsinfo", "struct": [ - { "name": "pr_flag", "type": "int" }, - { "name": "pr_lwpid", "type": "id_t" }, - { "name": "pr_addr", "type": "uintptr_t" }, - { "name": "pr_wchan", "type": "uintptr_t" }, - { "name": "pr_stype", "type": "char" }, - { "name": "pr_state", "type": "char" }, - { "name": "pr_sname", "type": "char" }, - { "name": "pr_nice", "type": "char" }, - { "name": "pr_syscall", "type": "short" }, - { "name": "pr_oldpri", "type": "char" }, - { "name": "pr_cpu", "type": "char" }, - { "name": "pr_pri", "type": "int" }, - { "name": "pr_pctcpu", "type": "ushort_t" }, - { "name": "pr_pad", "type": "ushort_t" }, - { "name": "pr_start", "type": "timestruc_t" }, - { "name": "pr_time", "type": "timestruc_t" }, - { "name": "pr_clname", "type": "char [8]" }, - { "name": "pr_name", "type": "char [16]" }, - { "name": "pr_onpro", "type": "processorid_t" }, - { "name": "pr_bindpro", "type": "processorid_t" }, - { "name": "pr_bindpset", "type": "psetid_t" }, - { "name": "pr_lgrp", "type": "int" }, - { "name": "pr_filler", "type": "int [4]" } - ] }, - { "name": "lwpsinfo_t", "typedef": "struct lwpsinfo" }, - { "name": "struct psinfo", "struct": [ - { "name": "pr_flag", "type": "int" }, - { "name": "pr_nlwp", "type": "int" }, - { "name": "pr_pid", "type": "pid_t" }, - { "name": "pr_ppid", "type": "pid_t" }, - { "name": "pr_pgid", "type": "pid_t" }, - { "name": "pr_sid", "type": "pid_t" }, - { "name": "pr_uid", "type": "uid_t" }, - { "name": "pr_euid", "type": "uid_t" }, - { "name": "pr_gid", "type": "gid_t" }, - { "name": "pr_egid", "type": "gid_t" }, - { "name": "pr_addr", "type": "uintptr_t" }, - { "name": "pr_size", "type": "size_t" }, - { "name": "pr_rssize", "type": "size_t" }, - { "name": "pr_pad1", "type": "size_t" }, - { "name": "pr_ttydev", "type": "dev_t" }, - { "name": "pr_pctcpu", "type": "ushort_t" }, - { "name": "pr_pctmem", "type": "ushort_t" }, - { "name": "pr_start", "type": "timestruc_t" }, - { "name": "pr_time", "type": "timestruc_t" }, - { "name": "pr_ctime", "type": "timestruc_t" }, - { "name": "pr_fname", "type": "char [16]" }, - { "name": "pr_psargs", "type": "char [80]" }, - { "name": "pr_wstat", "type": "int" }, - { "name": "pr_argc", "type": "int" }, - { "name": "pr_argv", "type": "uintptr_t" }, - { "name": "pr_envp", "type": "uintptr_t" }, - { "name": "pr_dmodel", "type": "char" }, - { "name": "pr_pad2", "type": "char [3]" }, - { "name": "pr_taskid", "type": "taskid_t" }, - { "name": "pr_projid", "type": "projid_t" }, - { "name": "pr_nzomb", "type": "int" }, - { "name": "pr_poolid", "type": "poolid_t" }, - { "name": "pr_zoneid", "type": "zoneid_t" }, - { "name": "pr_contract", "type": "id_t" }, - { "name": "pr_filler", "type": "int [1]" }, - { "name": "pr_lwp", "type": "lwpsinfo_t" } - ] }, - { "name": "psinfo_t", "typedef": "struct psinfo" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json deleted file mode 100644 index e0542ff4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json +++ /dev/null @@ -1,19 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316563648, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "timestruc_t" ] - }, -"data": - [ - { "name": "long", "integer": { "length": 4, "signed": true } }, - { "name": "time_t", "typedef": "long" }, - { "name": "struct timespec", "struct": [ - { "name": "tv_sec", "type": "time_t" }, - { "name": "tv_nsec", "type": "long" } - ] }, - { "name": "timestruc_t", "typedef": "struct timespec" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js deleted file mode 100644 index d6a52cbb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Test several conditions that should always cause us to throw. - */ -var mod_assert = require('assert'); -var mod_ctype = require('../../ctype.js'); - -var cases = [ -{ json: { }, msg: 'bad JSON - no metadata or data' }, -{ json: { metadata: {} }, msg: 'bad JSON - bad metadata section' }, -{ json: { metadata: { 'JSON version': [] } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': 2 } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': '100.20' } }, - msg: 'bad JSON - bad JSON version' }, -{ json: { metadata: { 'JSON version': '1.0' } }, - msg: 'missing data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: 1 }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: 1.1 }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: '1.1' }, - msg: 'invalid data section' }, -{ json: { metadata: { 'JSON version': '1.0' }, data: {} }, - msg: 'invalid data section' } -]; - -function test() -{ - var ii; - - for (ii = 0; ii < cases.length; ii++) { - mod_assert.throws(function () { - mod_ctype.parseCTF(cases[ii].json); - }, Error, cases[ii].msg); - } -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js deleted file mode 100644 index f2144994..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./float.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), {}); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js deleted file mode 100644 index 0ec0f769..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./int.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'int': 'int32_t' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js deleted file mode 100644 index ca1a544c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js +++ /dev/null @@ -1,17 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -/* - * This is too unwieldly to actually write out. Just make sure we can parse it - * without errrors. - */ -function test() -{ - var data; - - data = JSON.parse(mod_fs.readFileSync('./psinfo.json').toString()); - mod_ctype.parseCTF(data, { endian: 'big' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js deleted file mode 100644 index c62f41f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js +++ /dev/null @@ -1,18 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./struct.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'long': 'int32_t', - 'time_t': 'long', - 'timestruc_t': 'struct timespec', - 'struct timespec': [ { 'tv_sec': { 'type': 'time_t' } }, - { 'tv_nsec': { 'type': 'long' } } ] }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js deleted file mode 100644 index 9006cd1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js +++ /dev/null @@ -1,15 +0,0 @@ -var mod_fs = require('fs'); -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var data, parser; - - data = JSON.parse(mod_fs.readFileSync('./typedef.json').toString()); - parser = mod_ctype.parseCTF(data, { endian: 'big' }); - mod_assert.deepEqual(parser.lstypes(), { 'bar_t': 'int', - 'int': 'int32_t' }); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json deleted file mode 100644 index 35ddb50d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json +++ /dev/null @@ -1,14 +0,0 @@ -{ "metadata": - { - "ctf2json_version": "1.0", - "created_at": 1316302348, - "derived_from": "/lib/libc.so", - "ctf_version": 2, - "requested_types": [ "bar_t" ] - }, -"data": - [ - { "name": "int", "integer": { "length": 4, "signed": true } }, - { "name": "bar_t", "typedef": "int" } - ] -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js deleted file mode 100644 index 2c9504a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js +++ /dev/null @@ -1,767 +0,0 @@ -/* - * Battery of tests to break our floating point implementation. Oh ho ho. - * - * There are a few useful ways to generate the expected output. The first is - * just write a C program and write raw bytes out and inspect with xxd. Remember - * to consider whether or not you're on a big endian or little endian machine. - * Another useful site I found to help with some of this was: - * - * http://babbage.cs.qc.edu/IEEE-754/ - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testfloat() -{ - var buffer = new Buffer(4); - /* Start off with some of the easy ones: +zero */ - buffer[0] = 0; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'big', 0)); - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'little', 0)); - - /* Test -0 */ - buffer[0] = 0x80; - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = buffer[0]; - buffer[0] = 0; - ASSERT.equal(0, mod_ctype.rfloat(buffer, 'little', 0)); - - /* Catch +infin */ - buffer[0] = 0x7f; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = 0x7f; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rfloat(buffer, 'litle', 0)); - - /* Catch -infin */ - buffer[0] = 0xff; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rfloat(buffer, 'big', 0)); - buffer[3] = 0xff; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rfloat(buffer, 'litle', 0)); - - /* Catch NaN */ - - buffer[0] = 0x7f; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'big', 0))); - buffer[3] = 0x7f; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'little', 0))); - - /* Catch -infin */ - buffer[0] = 0xff; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'big', 0))); - buffer[3] = 0xff; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x23; - ASSERT.ok(isNaN(mod_ctype.rfloat(buffer, 'little', 0))); - - /* On to some basic tests */ - /* 1.125 */ - buffer[0] = 0x3f; - buffer[1] = 0x90; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(1.125, mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x3f; - buffer[2] = 0x90; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(1.125, mod_ctype.rfloat(buffer, 'little', 0)); - - /* ff34a2b0 -2.4010576103645774e+38 */ - buffer[0] = 0xff; - buffer[1] = 0x34; - buffer[2] = 0xa2; - buffer[3] = 0xb0; - ASSERT.equal(-2.4010576103645774e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0xff; - buffer[2] = 0x34; - buffer[1] = 0xa2; - buffer[0] = 0xb0; - ASSERT.equal(-2.4010576103645774e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Denormalized tests */ - - /* 0003f89a +/- 3.6468792534053364e-40 */ - buffer[0] = 0x00; - buffer[1] = 0x03; - buffer[2] = 0xf8; - buffer[3] = 0x9a; - ASSERT.equal(3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x03; - buffer[1] = 0xf8; - buffer[0] = 0x9a; - ASSERT.equal(3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x03; - buffer[2] = 0xf8; - buffer[3] = 0x9a; - ASSERT.equal(-3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x03; - buffer[1] = 0xf8; - buffer[0] = 0x9a; - ASSERT.equal(-3.6468792534053364e-40, - mod_ctype.rfloat(buffer, 'little', 0)); - - - /* Maximum and minimum normalized and denormalized values */ - - /* Largest normalized number +/- 3.4028234663852886e+38 */ - - buffer[0] = 0x7f; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x7f; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(-3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0xff; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-3.4028234663852886e+38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Smallest normalied number +/- 1.1754943508222875e-38 */ - buffer[0] = 0x00; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x80; - buffer[2] = 0x00; - buffer[3] = 0x00; - ASSERT.equal(-1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x80; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(-1.1754943508222875e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - - /* Smallest denormalized number 1.401298464324817e-45 */ - buffer[0] = 0x00; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x01; - ASSERT.equal(1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x01; - ASSERT.equal(-1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(-1.401298464324817e-45, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Largest denormalized value +/- 1.1754942106924411e-38 */ - buffer[0] = 0x00; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x00; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x7f; - buffer[2] = 0xff; - buffer[3] = 0xff; - ASSERT.equal(-1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'big', 0)); - - buffer[3] = 0x80; - buffer[2] = 0x7f; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-1.1754942106924411e-38, - mod_ctype.rfloat(buffer, 'little', 0)); - - /* Do some quick offset testing */ - buffer = new Buffer(6); - buffer[0] = 0x7f; - buffer[1] = 0x4e; - buffer[2] = 0x8a; - buffer[3] = 0x79; - buffer[4] = 0xcd; - buffer[5] = 0x3f; - - ASSERT.equal(2.745399582697325e+38, - mod_ctype.rfloat(buffer, 'big', 0)); - ASSERT.equal(1161619072, - mod_ctype.rfloat(buffer, 'big', 1)); - ASSERT.equal(-1.2027516403607578e-32, - mod_ctype.rfloat(buffer, 'big', 2)); - - ASSERT.equal(8.97661320504413e+34, - mod_ctype.rfloat(buffer, 'little', 0)); - ASSERT.equal(-261661920, - mod_ctype.rfloat(buffer, 'little', 1)); - ASSERT.equal(1.605271577835083, - mod_ctype.rfloat(buffer, 'little', 2)); - -} - -function testdouble() -{ - var buffer = new Buffer(10); - - /* Check 0 */ - buffer[0] = 0; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'big', 0)); - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'big', 0)); - buffer[7] = 0x80; - buffer[6] = 0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(0, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Check NaN */ - buffer[0] = 0x7f; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'big', 0))); - - buffer[7] = 0x7f; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'little', 0))); - - buffer[0] = 0xff; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'big', 0))); - - buffer[7] = 0xff; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 23; - ASSERT.ok(isNaN(mod_ctype.rdouble(buffer, 'little', 0))); - - /* pos inf */ - buffer[0] = 0x7f; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7f; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(Number.POSITIVE_INFINITY, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* neg inf */ - buffer[0] = 0xff; - buffer[1] = 0xf0; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xff; - buffer[6] = 0xf0; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(Number.NEGATIVE_INFINITY, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Simple normalized values */ - - /* +/- 1.125 */ - buffer[0] = 0x3f; - buffer[1] = 0xf2; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(1.125, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x3f; - buffer[6] = 0xf2; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(1.125, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xbf; - buffer[1] = 0xf2; - buffer[2] = 0; - buffer[3] = 0; - buffer[4] = 0; - buffer[5] = 0; - buffer[6] = 0; - buffer[7] = 0; - ASSERT.equal(-1.125, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xbf; - buffer[6] = 0xf2; - buffer[5] = 0; - buffer[4] = 0; - buffer[3] = 0; - buffer[2] = 0; - buffer[1] = 0; - buffer[0] = 0; - ASSERT.equal(-1.125, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* +/- 1.4397318913736026e+283 */ - buffer[0] = 0x7a; - buffer[1] = 0xb8; - buffer[2] = 0xc9; - buffer[3] = 0x34; - buffer[4] = 0x72; - buffer[5] = 0x16; - buffer[6] = 0xf9; - buffer[7] = 0x0e; - ASSERT.equal(1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7a; - buffer[6] = 0xb8; - buffer[5] = 0xc9; - buffer[4] = 0x34; - buffer[3] = 0x72; - buffer[2] = 0x16; - buffer[1] = 0xf9; - buffer[0] = 0x0e; - ASSERT.equal(1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xfa; - buffer[1] = 0xb8; - buffer[2] = 0xc9; - buffer[3] = 0x34; - buffer[4] = 0x72; - buffer[5] = 0x16; - buffer[6] = 0xf9; - buffer[7] = 0x0e; - ASSERT.equal(-1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xfa; - buffer[6] = 0xb8; - buffer[5] = 0xc9; - buffer[4] = 0x34; - buffer[3] = 0x72; - buffer[2] = 0x16; - buffer[1] = 0xf9; - buffer[0] = 0x0e; - ASSERT.equal(-1.4397318913736026e+283, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Denormalized values */ - /* +/- 8.82521232268344e-309 */ - buffer[0] = 0x00; - buffer[1] = 0x06; - buffer[2] = 0x58; - buffer[3] = 0x94; - buffer[4] = 0x13; - buffer[5] = 0x27; - buffer[6] = 0x8a; - buffer[7] = 0xcd; - ASSERT.equal(8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x06; - buffer[5] = 0x58; - buffer[4] = 0x94; - buffer[3] = 0x13; - buffer[2] = 0x27; - buffer[1] = 0x8a; - buffer[0] = 0xcd; - ASSERT.equal(8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x06; - buffer[2] = 0x58; - buffer[3] = 0x94; - buffer[4] = 0x13; - buffer[5] = 0x27; - buffer[6] = 0x8a; - buffer[7] = 0xcd; - ASSERT.equal(-8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x06; - buffer[5] = 0x58; - buffer[4] = 0x94; - buffer[3] = 0x13; - buffer[2] = 0x27; - buffer[1] = 0x8a; - buffer[0] = 0xcd; - ASSERT.equal(-8.82521232268344e-309, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Edge cases, maximum and minimum values */ - - /* Smallest denormalized value 5e-324 */ - buffer[0] = 0x00; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x01; - ASSERT.equal(5e-324, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x00; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(5e-324, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x00; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x01; - ASSERT.equal(-5e-324, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x00; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x01; - ASSERT.equal(-5e-324, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Largest denormalized value 2.225073858507201e-308 */ - buffer[0] = 0x00; - buffer[1] = 0x0f; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x0f; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x0f; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(-2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x0f; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-2.225073858507201e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Smallest normalized value 2.2250738585072014e-308 */ - buffer[0] = 0x00; - buffer[1] = 0x10; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x00; - ASSERT.equal(2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x00; - buffer[6] = 0x10; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0x80; - buffer[1] = 0x10; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x00; - buffer[6] = 0x00; - buffer[7] = 0x00; - ASSERT.equal(-2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x80; - buffer[6] = 0x10; - buffer[5] = 0x00; - buffer[4] = 0x00; - buffer[3] = 0x00; - buffer[2] = 0x00; - buffer[1] = 0x00; - buffer[0] = 0x00; - ASSERT.equal(-2.2250738585072014e-308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Largest normalized value 1.7976931348623157e+308 */ - buffer[0] = 0x7f; - buffer[1] = 0xef; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0x7f; - buffer[6] = 0xef; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0xef; - buffer[2] = 0xff; - buffer[3] = 0xff; - buffer[4] = 0xff; - buffer[5] = 0xff; - buffer[6] = 0xff; - buffer[7] = 0xff; - ASSERT.equal(-1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'big', 0)); - - buffer[7] = 0xff; - buffer[6] = 0xef; - buffer[5] = 0xff; - buffer[4] = 0xff; - buffer[3] = 0xff; - buffer[2] = 0xff; - buffer[1] = 0xff; - buffer[0] = 0xff; - ASSERT.equal(-1.7976931348623157e+308, - mod_ctype.rdouble(buffer, 'little', 0)); - - /* Try offsets */ - buffer[0] = 0xde; - buffer[1] = 0xad; - buffer[2] = 0xbe; - buffer[3] = 0xef; - buffer[4] = 0xba; - buffer[5] = 0xdd; - buffer[6] = 0xca; - buffer[7] = 0xfe; - buffer[8] = 0x16; - buffer[9] = 0x79; - - ASSERT.equal(-1.1885958404126936e+148, - mod_ctype.rdouble(buffer, 'big', 0)); - ASSERT.equal(-2.4299184080448593e-88, - mod_ctype.rdouble(buffer, 'big', 1)); - ASSERT.equal(-0.000015130017658081283, - mod_ctype.rdouble(buffer, 'big', 2)); - - ASSERT.equal(-5.757458694845505e+302, - mod_ctype.rdouble(buffer, 'little', 0)); - ASSERT.equal(6.436459604192476e-198, - mod_ctype.rdouble(buffer, 'little', 1)); - ASSERT.equal(1.9903745632417286e+275, - mod_ctype.rdouble(buffer, 'little', 2)); -} - -testfloat(); -testdouble(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js deleted file mode 100644 index b5fd95cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js +++ /dev/null @@ -1,753 +0,0 @@ -/* - * Another place to find bugs that may yet plague us. This time with writing out - * floats to arrays. We are lazy and did basically just take the opposite of our - * test code to read in values. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - - -/* - * A useful thing to keep around for debugging - * console.log('buffer[0]: ' + buffer[0].toString(16)); - * console.log('buffer[1]: ' + buffer[1].toString(16)); - * console.log('buffer[2]: ' + buffer[2].toString(16)); - * console.log('buffer[3]: ' + buffer[3].toString(16)); - * console.log('buffer[4]: ' + buffer[4].toString(16)); - * console.log('buffer[5]: ' + buffer[5].toString(16)); - * console.log('buffer[6]: ' + buffer[6].toString(16)); - * console.log('buffer[7]: ' + buffer[7].toString(16)); - */ - -function testfloat() -{ - var buffer = new Buffer(4); - mod_ctype.wfloat(0, 'big', buffer, 0); - /* Start off with some of the easy ones: +zero */ - ASSERT.equal(0, buffer[0]); - ASSERT.equal(0, buffer[1]); - ASSERT.equal(0, buffer[2]); - ASSERT.equal(0, buffer[3]); - mod_ctype.wfloat(0, 'little', buffer, 0); - ASSERT.equal(0, buffer[0]); - ASSERT.equal(0, buffer[1]); - ASSERT.equal(0, buffer[2]); - ASSERT.equal(0, buffer[3]); - - /* Catch +infin */ - mod_ctype.wfloat(Number.POSITIVE_INFINITY, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(Number.POSITIVE_INFINITY, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Catch -infin */ - mod_ctype.wfloat(Number.NEGATIVE_INFINITY, 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(Number.NEGATIVE_INFINITY, 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Catch NaN */ - - /* - * NaN Is a litle weird in its requirements, so we're going to encode a - * bit of how we actually implement it into this test. Probably not the - * best, since technically the sign is a don't care and the mantissa - * needs to just be non-zero. - */ - mod_ctype.wfloat(NaN, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x17, buffer[3]); - mod_ctype.wfloat(NaN, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x17, buffer[0]); - - /* On to some basic tests */ - /* 1.125 */ - mod_ctype.wfloat(1.125, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x90, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(1.125, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x90, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wfloat(1.0000001192092896, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.0000001192092896, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(1.0000001192092896, 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.0000001192092896, 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(2.3283067140944524e-10, 'big', buffer, 0); - ASSERT.equal(0x2f, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(2.3283067140944524e-10, 'little', buffer, 0); - ASSERT.equal(0x2f, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - /* ff34a2b0 -2.4010576103645774e+38 */ - mod_ctype.wfloat(-2.4010576103645774e+38, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x34, buffer[1]); - ASSERT.equal(0xa2, buffer[2]); - ASSERT.equal(0xb0, buffer[3]); - mod_ctype.wfloat(-2.4010576103645774e+38, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x34, buffer[2]); - ASSERT.equal(0xa2, buffer[1]); - ASSERT.equal(0xb0, buffer[0]); - - /* Denormalized tests */ - - /* 0003f89a +/- 3.6468792534053364e-40 */ - mod_ctype.wfloat(3.6468792534053364e-40, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x03, buffer[1]); - ASSERT.equal(0xf8, buffer[2]); - ASSERT.equal(0x9a, buffer[3]); - mod_ctype.wfloat(3.6468792534053364e-40, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x03, buffer[2]); - ASSERT.equal(0xf8, buffer[1]); - ASSERT.equal(0x9a, buffer[0]); - - mod_ctype.wfloat(-3.6468792534053364e-40, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x03, buffer[1]); - ASSERT.equal(0xf8, buffer[2]); - ASSERT.equal(0x9a, buffer[3]); - mod_ctype.wfloat(-3.6468792534053364e-40, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x03, buffer[2]); - ASSERT.equal(0xf8, buffer[1]); - ASSERT.equal(0x9a, buffer[0]); - - /* Maximum and minimum normalized and denormalized values */ - - /* Largest normalized number +/- 3.4028234663852886e+38 */ - - mod_ctype.wfloat(3.4028234663852886e+38, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(3.4028234663852886e+38, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wfloat(-3.4028234663852886e+38, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(-3.4028234663852886e+38, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - /* Smallest normalied number +/- 1.1754943508222875e-38 */ - - mod_ctype.wfloat(1.1754943508222875e-38, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(1.1754943508222875e-38, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wfloat(-1.1754943508222875e-38, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x80, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wfloat(-1.1754943508222875e-38, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x80, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Smallest denormalized number 1.401298464324817e-45 */ - mod_ctype.wfloat(1.401298464324817e-45, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(1.401298464324817e-45, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wfloat(-1.401298464324817e-45, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x01, buffer[3]); - mod_ctype.wfloat(-1.401298464324817e-45, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - /* Largest denormalized value +/- 1.1754942106924411e-38 */ - - mod_ctype.wfloat(1.1754942106924411e-38, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(1.1754942106924411e-38, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wfloat(-1.1754942106924411e-38, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x7f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - mod_ctype.wfloat(-1.1754942106924411e-38, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[3]); - ASSERT.equal(0x7f, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - /* Do some quick offset testing */ - buffer = new Buffer(6); - mod_ctype.wfloat(-1.2027516403607578e-32, - 'big', buffer, 2); - ASSERT.equal(0x8a, buffer[2]); - ASSERT.equal(0x79, buffer[3]); - ASSERT.equal(0xcd, buffer[4]); - ASSERT.equal(0x3f, buffer[5]); - - mod_ctype.wfloat(-1.2027516403607578e-32, - 'little', buffer, 2); - ASSERT.equal(0x8a, buffer[5]); - ASSERT.equal(0x79, buffer[4]); - ASSERT.equal(0xcd, buffer[3]); - ASSERT.equal(0x3f, buffer[2]); - -} - -function testdouble() -{ - var buffer = new Buffer(10); - - /* Check 0 */ - mod_ctype.wdouble(0, 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(0, 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Check NaN */ - /* Similar to floats we are only generating a subset of values */ - mod_ctype.wdouble(NaN, 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x17, buffer[7]); - mod_ctype.wdouble(NaN, 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x17, buffer[0]); - - /* pos inf */ - mod_ctype.wdouble(Number.POSITIVE_INFINITY, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(Number.POSITIVE_INFINITY, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* neg inf */ - mod_ctype.wdouble(Number.NEGATIVE_INFINITY, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xf0, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - mod_ctype.wdouble(Number.NEGATIVE_INFINITY, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[7]); - ASSERT.equal(0xf0, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - /* Simple normalized values */ - - /* +/- 1.125 */ - mod_ctype.wdouble(1.125, - 'big', buffer, 0); - ASSERT.equal(0x3f, buffer[0]); - ASSERT.equal(0xf2, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(1.125, - 'little', buffer, 0); - ASSERT.equal(0x3f, buffer[7]); - ASSERT.equal(0xf2, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wdouble(-1.125, - 'big', buffer, 0); - ASSERT.equal(0xbf, buffer[0]); - ASSERT.equal(0xf2, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(-1.125, - 'little', buffer, 0); - ASSERT.equal(0xbf, buffer[7]); - ASSERT.equal(0xf2, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - - /* +/- 1.4397318913736026e+283 */ - mod_ctype.wdouble(1.4397318913736026e+283, - 'big', buffer, 0); - ASSERT.equal(0x7a, buffer[0]); - ASSERT.equal(0xb8, buffer[1]); - ASSERT.equal(0xc9, buffer[2]); - ASSERT.equal(0x34, buffer[3]); - ASSERT.equal(0x72, buffer[4]); - ASSERT.equal(0x16, buffer[5]); - ASSERT.equal(0xf9, buffer[6]); - ASSERT.equal(0x0e, buffer[7]); - - mod_ctype.wdouble(1.4397318913736026e+283, - 'little', buffer, 0); - ASSERT.equal(0x7a, buffer[7]); - ASSERT.equal(0xb8, buffer[6]); - ASSERT.equal(0xc9, buffer[5]); - ASSERT.equal(0x34, buffer[4]); - ASSERT.equal(0x72, buffer[3]); - ASSERT.equal(0x16, buffer[2]); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x0e, buffer[0]); - - mod_ctype.wdouble(-1.4397318913736026e+283, - 'big', buffer, 0); - ASSERT.equal(0xfa, buffer[0]); - ASSERT.equal(0xb8, buffer[1]); - ASSERT.equal(0xc9, buffer[2]); - ASSERT.equal(0x34, buffer[3]); - ASSERT.equal(0x72, buffer[4]); - ASSERT.equal(0x16, buffer[5]); - ASSERT.equal(0xf9, buffer[6]); - ASSERT.equal(0x0e, buffer[7]); - - mod_ctype.wdouble(-1.4397318913736026e+283, - 'little', buffer, 0); - ASSERT.equal(0xfa, buffer[7]); - ASSERT.equal(0xb8, buffer[6]); - ASSERT.equal(0xc9, buffer[5]); - ASSERT.equal(0x34, buffer[4]); - ASSERT.equal(0x72, buffer[3]); - ASSERT.equal(0x16, buffer[2]); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x0e, buffer[0]); - - /* Denormalized values */ - /* +/- 8.82521232268344e-309 */ - mod_ctype.wdouble(8.82521232268344e-309, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x06, buffer[1]); - ASSERT.equal(0x58, buffer[2]); - ASSERT.equal(0x94, buffer[3]); - ASSERT.equal(0x13, buffer[4]); - ASSERT.equal(0x27, buffer[5]); - ASSERT.equal(0x8a, buffer[6]); - ASSERT.equal(0xcd, buffer[7]); - - mod_ctype.wdouble(8.82521232268344e-309, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x06, buffer[6]); - ASSERT.equal(0x58, buffer[5]); - ASSERT.equal(0x94, buffer[4]); - ASSERT.equal(0x13, buffer[3]); - ASSERT.equal(0x27, buffer[2]); - ASSERT.equal(0x8a, buffer[1]); - ASSERT.equal(0xcd, buffer[0]); - - mod_ctype.wdouble(-8.82521232268344e-309, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x06, buffer[1]); - ASSERT.equal(0x58, buffer[2]); - ASSERT.equal(0x94, buffer[3]); - ASSERT.equal(0x13, buffer[4]); - ASSERT.equal(0x27, buffer[5]); - ASSERT.equal(0x8a, buffer[6]); - ASSERT.equal(0xcd, buffer[7]); - - mod_ctype.wdouble(-8.82521232268344e-309, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x06, buffer[6]); - ASSERT.equal(0x58, buffer[5]); - ASSERT.equal(0x94, buffer[4]); - ASSERT.equal(0x13, buffer[3]); - ASSERT.equal(0x27, buffer[2]); - ASSERT.equal(0x8a, buffer[1]); - ASSERT.equal(0xcd, buffer[0]); - - - /* Edge cases, maximum and minimum values */ - - /* Smallest denormalized value 5e-324 */ - mod_ctype.wdouble(5e-324, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x01, buffer[7]); - - mod_ctype.wdouble(5e-324, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - mod_ctype.wdouble(-5e-324, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x01, buffer[7]); - - mod_ctype.wdouble(-5e-324, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x01, buffer[0]); - - - - /* Largest denormalized value 2.225073858507201e-308 */ - mod_ctype.wdouble(2.225073858507201e-308, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x0f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(2.225073858507201e-308, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x0f, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wdouble(-2.225073858507201e-308, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x0f, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(-2.225073858507201e-308, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x0f, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - - /* Smallest normalized value 2.2250738585072014e-308 */ - mod_ctype.wdouble(2.2250738585072014e-308, - 'big', buffer, 0); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x10, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(2.2250738585072014e-308, - 'little', buffer, 0); - ASSERT.equal(0x00, buffer[7]); - ASSERT.equal(0x10, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - mod_ctype.wdouble(-2.2250738585072014e-308, - 'big', buffer, 0); - ASSERT.equal(0x80, buffer[0]); - ASSERT.equal(0x10, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wdouble(-2.2250738585072014e-308, - 'little', buffer, 0); - ASSERT.equal(0x80, buffer[7]); - ASSERT.equal(0x10, buffer[6]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[4]); - ASSERT.equal(0x00, buffer[3]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[0]); - - - /* Largest normalized value 1.7976931348623157e+308 */ - mod_ctype.wdouble(1.7976931348623157e+308, - 'big', buffer, 0); - ASSERT.equal(0x7f, buffer[0]); - ASSERT.equal(0xef, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(1.7976931348623157e+308, - 'little', buffer, 0); - ASSERT.equal(0x7f, buffer[7]); - ASSERT.equal(0xef, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - mod_ctype.wdouble(-1.7976931348623157e+308, - 'big', buffer, 0); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xef, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wdouble(-1.7976931348623157e+308, - 'little', buffer, 0); - ASSERT.equal(0xff, buffer[7]); - ASSERT.equal(0xef, buffer[6]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[4]); - ASSERT.equal(0xff, buffer[3]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[0]); - - - /* Try offsets */ - buffer[0] = 0xde; - buffer[1] = 0xad; - buffer[2] = 0xbe; - buffer[3] = 0xef; - buffer[4] = 0xba; - buffer[5] = 0xdd; - buffer[6] = 0xca; - buffer[7] = 0xfe; - buffer[8] = 0x16; - buffer[9] = 0x79; - - mod_ctype.wdouble(-0.000015130017658081283, - 'big', buffer, 2); - ASSERT.equal(0xbe, buffer[2]); - ASSERT.equal(0xef, buffer[3]); - ASSERT.equal(0xba, buffer[4]); - ASSERT.equal(0xdd, buffer[5]); - ASSERT.equal(0xca, buffer[6]); - ASSERT.equal(0xfe, buffer[7]); - ASSERT.equal(0x16, buffer[8]); - ASSERT.equal(0x79, buffer[9]); - - mod_ctype.wdouble(-0.000015130017658081283, - 'little', buffer, 2); - ASSERT.equal(0xbe, buffer[9]); - ASSERT.equal(0xef, buffer[8]); - ASSERT.equal(0xba, buffer[7]); - ASSERT.equal(0xdd, buffer[6]); - ASSERT.equal(0xca, buffer[5]); - ASSERT.equal(0xfe, buffer[4]); - ASSERT.equal(0x16, buffer[3]); - ASSERT.equal(0x79, buffer[2]); -} - -testfloat(); -testdouble(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js deleted file mode 100644 index 1ffdac09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js +++ /dev/null @@ -1,638 +0,0 @@ -/* - * Test our ability to read and write signed 64-bit integers. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testRead() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - data[6] = 0xff; - data[7] = 0xff; - data[8] = 0x89; - data[9] = 0x11; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x32654256, res[0]); - ASSERT.equal(0x23ffffff, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x65425623, res[0]); - ASSERT.equal(0xffffff89, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x425623ff, res[0]); - ASSERT.equal(0xffff8911, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(-0x000000dc, res[0]); - ASSERT.equal(-0xa9bd9ace, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(-0x76000000, res[0]); - ASSERT.equal(-0xdca9bd9b, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x1189ffff, res[0]); - ASSERT.equal(0xff235642, res[1]); - - data.fill(0x00); - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(0x00000000, res[1]); - - data.fill(0xff); - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'big', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'big', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 1); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - res = mod_ctype.rsint64(data, 'little', 2); - ASSERT.equal(0x00000000, res[0]); - ASSERT.equal(-1, res[1]); - - data[0] = 0x80; - data[1] = 0x00; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x00; - data[5] = 0x00; - data[6] = 0x00; - data[7] = 0x00; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(-0x80000000, res[0]); - ASSERT.equal(0, res[1]); - - - data[7] = 0x80; - data[6] = 0x00; - data[5] = 0x00; - data[4] = 0x00; - data[3] = 0x00; - data[2] = 0x00; - data[1] = 0x00; - data[0] = 0x00; - res = mod_ctype.rsint64(data, 'little', 0); - ASSERT.equal(-0x80000000, res[0]); - ASSERT.equal(0, res[1]); - - data[0] = 0x80; - data[1] = 0x00; - data[2] = 0x00; - data[3] = 0x00; - data[4] = 0x00; - data[5] = 0x00; - data[6] = 0x00; - data[7] = 0x01; - res = mod_ctype.rsint64(data, 'big', 0); - ASSERT.equal(-0x7fffffff, res[0]); - ASSERT.equal(-0xffffffff, res[1]); - - -} - -function testWriteZero() -{ - var data, buf; - buf = new Buffer(10); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); - - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); -} - -/* - * Also include tests that are going to force us to go into a negative value and - * insure that it's written correctly. - */ -function testWrite() -{ - var data, buf; - - buf = new Buffer(10); - data = [ 0x234456, 0x87 ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x23, buf[1]); - ASSERT.equal(0x44, buf[2]); - ASSERT.equal(0x56, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x87, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x23, buf[2]); - ASSERT.equal(0x44, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x87, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x23, buf[3]); - ASSERT.equal(0x44, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x87, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x87, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x44, buf[5]); - ASSERT.equal(0x23, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x87, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x44, buf[6]); - ASSERT.equal(0x23, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x87, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x56, buf[6]); - ASSERT.equal(0x44, buf[7]); - ASSERT.equal(0x23, buf[8]); - ASSERT.equal(0x00, buf[9]); - - data = [0x3421, 0x34abcdba]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x34, buf[2]); - ASSERT.equal(0x21, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0xab, buf[5]); - ASSERT.equal(0xcd, buf[6]); - ASSERT.equal(0xba, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xab, buf[6]); - ASSERT.equal(0xcd, buf[7]); - ASSERT.equal(0xba, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xab, buf[7]); - ASSERT.equal(0xcd, buf[8]); - ASSERT.equal(0xba, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0xba, buf[0]); - ASSERT.equal(0xcd, buf[1]); - ASSERT.equal(0xab, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xba, buf[1]); - ASSERT.equal(0xcd, buf[2]); - ASSERT.equal(0xab, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xba, buf[2]); - ASSERT.equal(0xcd, buf[3]); - ASSERT.equal(0xab, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x21, buf[6]); - ASSERT.equal(0x34, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x00, buf[9]); - - - data = [ -0x80000000, 0 ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x80, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x80, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - data = [ -0x7fffffff, -0xffffffff ]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0x80, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x01, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0x01, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x80, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - data = [ 0x0, -0x1]; - buf.fill(0x66); - mod_ctype.wsint64(data, 'big', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0xff, buf[4]); - ASSERT.equal(0xff, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wsint64(data, 'little', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0xff, buf[4]); - ASSERT.equal(0xff, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); -} - -/* - * Make sure we catch invalid writes. - */ -function testWriteInvalid() -{ - var data, buf; - - /* Buffer too small */ - buf = new Buffer(4); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 0); - }, Error, 'buffer too small'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 0); - }, Error, 'buffer too small'); - - /* Beyond the end of the buffer */ - buf = new Buffer(12); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 11); - }, Error, 'write beyond end of buffer'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 11); - }, Error, 'write beyond end of buffer'); - - /* Write fractional values */ - buf = new Buffer(12); - data = [ 3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, 3.3 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, -3.3 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, -2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, -2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ -3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - /* Signs don't match */ - buf = new Buffer(12); - data = [ 0x800000, -0x32 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x800000, 0x32 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - /* Write values that are too large */ - buf = new Buffer(12); - data = [ 0x80000000, 0 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x7fffffff, 0x100000000 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x00, 0x800000000 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0xffffffffff, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x23, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x80000000, -0xfff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ -0x80000004, -0xfff238 ]; - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wsint64(data, 'little', buf, 1); - }, Error, 'write too large'); -} - - -testRead(); -testWrite(); -testWriteZero(); -testWriteInvalid(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js deleted file mode 100644 index 5236d268..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Tests to verify we're reading in signed integers correctly - */ -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * Test 8 bit signed integers - */ -function test8() -{ - var data = new Buffer(4); - - data[0] = 0x23; - ASSERT.equal(0x23, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(0x23, mod_ctype.rsint8(data, 'little', 0)); - - data[0] = 0xff; - ASSERT.equal(-1, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(-1, mod_ctype.rsint8(data, 'little', 0)); - - data[0] = 0x87; - data[1] = 0xab; - data[2] = 0x7c; - data[3] = 0xef; - ASSERT.equal(-121, mod_ctype.rsint8(data, 'big', 0)); - ASSERT.equal(-85, mod_ctype.rsint8(data, 'big', 1)); - ASSERT.equal(124, mod_ctype.rsint8(data, 'big', 2)); - ASSERT.equal(-17, mod_ctype.rsint8(data, 'big', 3)); - ASSERT.equal(-121, mod_ctype.rsint8(data, 'little', 0)); - ASSERT.equal(-85, mod_ctype.rsint8(data, 'little', 1)); - ASSERT.equal(124, mod_ctype.rsint8(data, 'little', 2)); - ASSERT.equal(-17, mod_ctype.rsint8(data, 'little', 3)); -} - -function test16() -{ - var buffer = new Buffer(6); - buffer[0] = 0x16; - buffer[1] = 0x79; - ASSERT.equal(0x1679, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(0x7916, mod_ctype.rsint16(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0x80; - ASSERT.equal(-128, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(-32513, mod_ctype.rsint16(buffer, 'little', 0)); - - /* test offset with weenix */ - buffer[0] = 0x77; - buffer[1] = 0x65; - buffer[2] = 0x65; - buffer[3] = 0x6e; - buffer[4] = 0x69; - buffer[5] = 0x78; - ASSERT.equal(0x7765, mod_ctype.rsint16(buffer, 'big', 0)); - ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'big', 1)); - ASSERT.equal(0x656e, mod_ctype.rsint16(buffer, 'big', 2)); - ASSERT.equal(0x6e69, mod_ctype.rsint16(buffer, 'big', 3)); - ASSERT.equal(0x6978, mod_ctype.rsint16(buffer, 'big', 4)); - ASSERT.equal(0x6577, mod_ctype.rsint16(buffer, 'little', 0)); - ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'little', 1)); - ASSERT.equal(0x6e65, mod_ctype.rsint16(buffer, 'little', 2)); - ASSERT.equal(0x696e, mod_ctype.rsint16(buffer, 'little', 3)); - ASSERT.equal(0x7869, mod_ctype.rsint16(buffer, 'little', 4)); -} - -function test32() -{ - var buffer = new Buffer(6); - buffer[0] = 0x43; - buffer[1] = 0x53; - buffer[2] = 0x16; - buffer[3] = 0x79; - ASSERT.equal(0x43531679, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(0x79165343, mod_ctype.rsint32(buffer, 'little', 0)); - - buffer[0] = 0xff; - buffer[1] = 0xfe; - buffer[2] = 0xef; - buffer[3] = 0xfa; - ASSERT.equal(-69638, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(-84934913, mod_ctype.rsint32(buffer, 'little', 0)); - - buffer[0] = 0x42; - buffer[1] = 0xc3; - buffer[2] = 0x95; - buffer[3] = 0xa9; - buffer[4] = 0x36; - buffer[5] = 0x17; - ASSERT.equal(0x42c395a9, mod_ctype.rsint32(buffer, 'big', 0)); - ASSERT.equal(-1013601994, mod_ctype.rsint32(buffer, 'big', 1)); - ASSERT.equal(-1784072681, mod_ctype.rsint32(buffer, 'big', 2)); - ASSERT.equal(-1449802942, mod_ctype.rsint32(buffer, 'little', 0)); - ASSERT.equal(917083587, mod_ctype.rsint32(buffer, 'little', 1)); - ASSERT.equal(389458325, mod_ctype.rsint32(buffer, 'little', 2)); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js deleted file mode 100644 index 5488177b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Test to make sure that we properly are erroring whenever we try to write - * beyond the size of the integer. - */ - -var mod_ctio = require('../../../ctio.js'); -var mod_assert = require('assert'); -var tb = new Buffer(16); /* Largest buffer we'll need */ - -var cases = [ - { func: - function () { - mod_ctio.wsint8(0x80, 'big', tb, 0); - }, test: '+int8_t' }, - { func: - function () { - mod_ctio.wsint8(-0x81, 'big', tb, 0); - }, test: '-int8_t' }, - - { func: - function () { - mod_ctio.wsint16(0x8000, 'big', tb, 0); - }, test: '+int16_t' }, - { func: - function () { - mod_ctio.wsint16(-0x8001, 'big', tb, 0); - }, test: '-int16_t' }, - { func: - function () { - mod_ctio.wsint32(0x80000000, 'big', tb, 0); - }, test: '+int32_t' }, - { func: - function () { - mod_ctio.wsint32(-0x80000001, 'big', tb, 0); - }, test: '-int32_t' }, - { func: - function () { - mod_ctio.wsint64([ 0x80000000, 0 ], 'big', tb, 0); - }, test: '+int64_t' }, - { func: - function () { - mod_ctio.wsint64([ -0x80000000, -1 ], 'big', tb, 0); - }, test: '-int64_t' } -]; - -function test() -{ - var ii; - for (ii = 0; ii < cases.length; ii++) - mod_assert.throws(cases[ii]['func'], Error, cases[ii]['test']); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js deleted file mode 100644 index 98b6a32a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Tests to verify we're writing signed integers correctly - */ -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function test8() -{ - var buffer = new Buffer(4); - mod_ctype.wsint8(0x23, 'big', buffer, 0); - mod_ctype.wsint8(0x23, 'little', buffer, 1); - mod_ctype.wsint8(-5, 'big', buffer, 2); - mod_ctype.wsint8(-5, 'little', buffer, 3); - - ASSERT.equal(0x23, buffer[0]); - ASSERT.equal(0x23, buffer[1]); - ASSERT.equal(0xfb, buffer[2]); - ASSERT.equal(0xfb, buffer[3]); - - /* Make sure we handle truncation correctly */ - ASSERT.throws(function () { - mod_ctype.wsint8(0xabc, 'big', buffer, 0); - }); - ASSERT.throws(function () { - mod_ctype.wsint8(0xabc, 'little', buffer, 0); - }); -} - -function test16() -{ - var buffer = new Buffer(6); - mod_ctype.wsint16(0x0023, 'big', buffer, 0); - mod_ctype.wsint16(0x0023, 'little', buffer, 2); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x23, buffer[1]); - ASSERT.equal(0x23, buffer[2]); - ASSERT.equal(0x00, buffer[3]); - mod_ctype.wsint16(-5, 'big', buffer, 0); - mod_ctype.wsint16(-5, 'little', buffer, 2); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xfb, buffer[1]); - ASSERT.equal(0xfb, buffer[2]); - ASSERT.equal(0xff, buffer[3]); - - mod_ctype.wsint16(-1679, 'big', buffer, 1); - mod_ctype.wsint16(-1679, 'little', buffer, 3); - ASSERT.equal(0xf9, buffer[1]); - ASSERT.equal(0x71, buffer[2]); - ASSERT.equal(0x71, buffer[3]); - ASSERT.equal(0xf9, buffer[4]); -} - -function test32() -{ - var buffer = new Buffer(8); - mod_ctype.wsint32(0x23, 'big', buffer, 0); - mod_ctype.wsint32(0x23, 'little', buffer, 4); - ASSERT.equal(0x00, buffer[0]); - ASSERT.equal(0x00, buffer[1]); - ASSERT.equal(0x00, buffer[2]); - ASSERT.equal(0x23, buffer[3]); - ASSERT.equal(0x23, buffer[4]); - ASSERT.equal(0x00, buffer[5]); - ASSERT.equal(0x00, buffer[6]); - ASSERT.equal(0x00, buffer[7]); - - mod_ctype.wsint32(-5, 'big', buffer, 0); - mod_ctype.wsint32(-5, 'little', buffer, 4); - ASSERT.equal(0xff, buffer[0]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xff, buffer[2]); - ASSERT.equal(0xfb, buffer[3]); - ASSERT.equal(0xfb, buffer[4]); - ASSERT.equal(0xff, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xff, buffer[7]); - - mod_ctype.wsint32(-805306713, 'big', buffer, 0); - mod_ctype.wsint32(-805306713, 'litle', buffer, 4); - ASSERT.equal(0xcf, buffer[0]); - ASSERT.equal(0xff, buffer[1]); - ASSERT.equal(0xfe, buffer[2]); - ASSERT.equal(0xa7, buffer[3]); - ASSERT.equal(0xa7, buffer[4]); - ASSERT.equal(0xfe, buffer[5]); - ASSERT.equal(0xff, buffer[6]); - ASSERT.equal(0xcf, buffer[7]); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js deleted file mode 100644 index cf66ac7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Test our ability to read and write unsigned 64-bit integers. - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -function testRead() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - data[6] = 0xff; - data[7] = 0xff; - data[8] = 0x89; - data[9] = 0x11; - res = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(0x32654256, res[0]); - ASSERT.equal(0x23ffffff, res[1]); - res = mod_ctype.ruint64(data, 'big', 1); - ASSERT.equal(0x65425623, res[0]); - ASSERT.equal(0xffffff89, res[1]); - res = mod_ctype.ruint64(data, 'big', 2); - ASSERT.equal(0x425623ff, res[0]); - ASSERT.equal(0xffff8911, res[1]); - res = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(0xffffff23, res[0]); - ASSERT.equal(0x56426532, res[1]); - res = mod_ctype.ruint64(data, 'little', 1); - ASSERT.equal(0x89ffffff, res[0]); - ASSERT.equal(0x23564265, res[1]); - res = mod_ctype.ruint64(data, 'little', 2); - ASSERT.equal(0x1189ffff, res[0]); - ASSERT.equal(0xff235642, res[1]); - -} - -function testReadOver() -{ - var res, data; - data = new Buffer(10); - - data[0] = 0x80; - data[1] = 0xff; - data[2] = 0x80; - data[3] = 0xff; - data[4] = 0x80; - data[5] = 0xff; - data[6] = 0x80; - data[7] = 0xff; - data[8] = 0x80; - data[9] = 0xff; - res = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'big', 1); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); - res = mod_ctype.ruint64(data, 'big', 2); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); - res = mod_ctype.ruint64(data, 'little', 1); - ASSERT.equal(0x80ff80ff, res[0]); - ASSERT.equal(0x80ff80ff, res[1]); - res = mod_ctype.ruint64(data, 'little', 2); - ASSERT.equal(0xff80ff80, res[0]); - ASSERT.equal(0xff80ff80, res[1]); -} - -function testWriteZero() -{ - var data, buf; - buf = new Buffer(10); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); - - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - data = [0, 0]; - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0, buf[2]); - ASSERT.equal(0, buf[3]); - ASSERT.equal(0, buf[4]); - ASSERT.equal(0, buf[5]); - ASSERT.equal(0, buf[6]); - ASSERT.equal(0, buf[7]); - ASSERT.equal(0, buf[8]); - ASSERT.equal(0, buf[9]); -} - -/* - * Also include tests that are going to force us to go into a negative value and - * insure that it's written correctly. - */ -function testWrite() -{ - var data, buf; - - buf = new Buffer(10); - data = [ 0x234456, 0x87 ]; - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0x00, buf[0]); - ASSERT.equal(0x23, buf[1]); - ASSERT.equal(0x44, buf[2]); - ASSERT.equal(0x56, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x87, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x23, buf[2]); - ASSERT.equal(0x44, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x87, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x23, buf[3]); - ASSERT.equal(0x44, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x00, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x87, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0x87, buf[0]); - ASSERT.equal(0x00, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x56, buf[4]); - ASSERT.equal(0x44, buf[5]); - ASSERT.equal(0x23, buf[6]); - ASSERT.equal(0x00, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x87, buf[1]); - ASSERT.equal(0x00, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x56, buf[5]); - ASSERT.equal(0x44, buf[6]); - ASSERT.equal(0x23, buf[7]); - ASSERT.equal(0x00, buf[8]); - ASSERT.equal(0x66, buf[9]); - - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0x87, buf[2]); - ASSERT.equal(0x00, buf[3]); - ASSERT.equal(0x00, buf[4]); - ASSERT.equal(0x00, buf[5]); - ASSERT.equal(0x56, buf[6]); - ASSERT.equal(0x44, buf[7]); - ASSERT.equal(0x23, buf[8]); - ASSERT.equal(0x00, buf[9]); - - data = [0xffff3421, 0x34abcdba]; - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 0); - ASSERT.equal(0xff, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0x34, buf[2]); - ASSERT.equal(0x21, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0xab, buf[5]); - ASSERT.equal(0xcd, buf[6]); - ASSERT.equal(0xba, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xff, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xab, buf[6]); - ASSERT.equal(0xcd, buf[7]); - ASSERT.equal(0xba, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'big', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xff, buf[2]); - ASSERT.equal(0xff, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xab, buf[7]); - ASSERT.equal(0xcd, buf[8]); - ASSERT.equal(0xba, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 0); - ASSERT.equal(0xba, buf[0]); - ASSERT.equal(0xcd, buf[1]); - ASSERT.equal(0xab, buf[2]); - ASSERT.equal(0x34, buf[3]); - ASSERT.equal(0x21, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0xff, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0x66, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 1); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0xba, buf[1]); - ASSERT.equal(0xcd, buf[2]); - ASSERT.equal(0xab, buf[3]); - ASSERT.equal(0x34, buf[4]); - ASSERT.equal(0x21, buf[5]); - ASSERT.equal(0x34, buf[6]); - ASSERT.equal(0xff, buf[7]); - ASSERT.equal(0xff, buf[8]); - ASSERT.equal(0x66, buf[9]); - - buf.fill(0x66); - mod_ctype.wuint64(data, 'little', buf, 2); - ASSERT.equal(0x66, buf[0]); - ASSERT.equal(0x66, buf[1]); - ASSERT.equal(0xba, buf[2]); - ASSERT.equal(0xcd, buf[3]); - ASSERT.equal(0xab, buf[4]); - ASSERT.equal(0x34, buf[5]); - ASSERT.equal(0x21, buf[6]); - ASSERT.equal(0x34, buf[7]); - ASSERT.equal(0xff, buf[8]); - ASSERT.equal(0xff, buf[9]); -} - -/* - * Make sure we catch invalid writes. - */ -function testWriteInvalid() -{ - var data, buf; - - /* Buffer too small */ - buf = new Buffer(4); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 0); - }, Error, 'buffer too small'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 0); - }, Error, 'buffer too small'); - - /* Beyond the end of the buffer */ - buf = new Buffer(12); - data = [ 0, 0]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 11); - }, Error, 'write beyond end of buffer'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 11); - }, Error, 'write beyond end of buffer'); - - /* Write negative values */ - buf = new Buffer(12); - data = [ -3, 0 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - data = [ 0, -3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - data = [ -3, -3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write negative number'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write negative number'); - - - /* Write fractional values */ - buf = new Buffer(12); - data = [ 3.33, 0 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 0, 3.3 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - data = [ 3.33, 2.42 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write fractions'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write fractions'); - - /* Write values that are too large */ - buf = new Buffer(12); - data = [ 0xffffffffff, 23 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0xffffffffff, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); - - data = [ 0x23, 0xffffff238 ]; - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'big', buf, 1); - }, Error, 'write too large'); - ASSERT.throws(function () { - mod_ctype.wuint64(data, 'little', buf, 1); - }, Error, 'write too large'); -} - - -testRead(); -testReadOver(); -testWriteZero(); -testWrite(); -testWriteInvalid(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js deleted file mode 100644 index 87ae59b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js +++ /dev/null @@ -1,81 +0,0 @@ -/* - * A battery of tests for sucessful round-trip between writes and reads - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - - -/* - * What the heck, let's just test every value for 8-bits. - */ - -function test8() { - var data = new Buffer(1); - var i; - for (i = 0; i < 256; i++) { - mod_ctype.wuint8(i, 'big', data, 0); - ASSERT.equal(i, mod_ctype.ruint8(data, 'big', 0)); - mod_ctype.wuint8(i, 'little', data, 0); - ASSERT.equal(i, mod_ctype.ruint8(data, 'little', 0)); - } - ASSERT.ok(true); -} - -/* - * Test a random sample of 256 values in the 16-bit unsigned range - */ - -function test16() { - var data = new Buffer(2); - var i = 0; - for (i = 0; i < 256; i++) { - var value = Math.round(Math.random() * Math.pow(2, 16)); - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(value, mod_ctype.ruint16(data, 'big', 0)); - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(value, mod_ctype.ruint16(data, 'little', 0)); - } -} - -/* - * Test a random sample of 256 values in the 32-bit unsigned range - */ - -function test32() { - var data = new Buffer(4); - var i = 0; - for (i = 0; i < 256; i++) { - var value = Math.round(Math.random() * Math.pow(2, 32)); - mod_ctype.wuint32(value, 'big', data, 0); - ASSERT.equal(value, mod_ctype.ruint32(data, 'big', 0)); - mod_ctype.wuint32(value, 'little', data, 0); - ASSERT.equal(value, mod_ctype.ruint32(data, 'little', 0)); - } -} - -/* - * Test a random sample of 256 values in the 64-bit unsigned range - */ - -function test64() { - var data = new Buffer(8); - var i = 0; - for (i = 0; i < 256; i++) { - var low = Math.round(Math.random() * Math.pow(2, 32)); - var high = Math.round(Math.random() * Math.pow(2, 32)); - mod_ctype.wuint64([high, low], 'big', data, 0); - var result = mod_ctype.ruint64(data, 'big', 0); - ASSERT.equal(high, result[0]); - ASSERT.equal(low, result[1]); - mod_ctype.wuint64([high, low], 'little', data, 0); - result = mod_ctype.ruint64(data, 'little', 0); - ASSERT.equal(high, result[0]); - ASSERT.equal(low, result[1]); - } -} - -exports.test8 = test8; -exports.test16 = test16; -exports.test32 = test32; -exports.test64 = test64; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js deleted file mode 100644 index b67c077f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js +++ /dev/null @@ -1,95 +0,0 @@ -/* - * A battery of tests to help us read a series of uints - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * We need to check the following things: - * - We are correctly resolving big endian (doesn't mean anything for 8 bit) - * - Correctly resolving little endian (doesn't mean anything for 8 bit) - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test8() -{ - var data = new Buffer(4); - data[0] = 23; - data[1] = 23; - data[2] = 23; - data[3] = 23; - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 0)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 0)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 1)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 1)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 2)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 2)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'big', 3)); - ASSERT.equal(23, mod_ctype.ruint8(data, 'little', 3)); - data[0] = 255; /* If it became a signed int, would be -1 */ - ASSERT.equal(255, mod_ctype.ruint8(data, 'big', 0)); - ASSERT.equal(255, mod_ctype.ruint8(data, 'little', 0)); -} - -/* - * Test 16 bit unsigned integers. We need to verify the same set as 8 bit, only - * now some of the issues actually matter: - * - We are correctly resolving big endian - * - Correctly resolving little endian - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test16() -{ - var data = new Buffer(4); - /* Test signed values first */ - data[0] = 0; - data[1] = 0x23; - data[2] = 0x42; - data[3] = 0x3f; - - ASSERT.equal(0x23, mod_ctype.ruint16(data, 'big', 0)); - ASSERT.equal(0x2342, mod_ctype.ruint16(data, 'big', 1)); - ASSERT.equal(0x423f, mod_ctype.ruint16(data, 'big', 2)); - - ASSERT.equal(0x2300, mod_ctype.ruint16(data, 'little', 0)); - ASSERT.equal(0x4223, mod_ctype.ruint16(data, 'little', 1)); - ASSERT.equal(0x3f42, mod_ctype.ruint16(data, 'little', 2)); - - data[0] = 0xfe; - data[1] = 0xfe; - - ASSERT.equal(0xfefe, mod_ctype.ruint16(data, 'big', 0)); - ASSERT.equal(0xfefe, mod_ctype.ruint16(data, 'little', 0)); -} - -/* - * Test 32 bit unsigned integers. We need to verify the same set as 8 bit, only - * now some of the issues actually matter: - * - We are correctly resolving big endian - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test32() -{ - var data = new Buffer(8); - data[0] = 0x32; - data[1] = 0x65; - data[2] = 0x42; - data[3] = 0x56; - data[4] = 0x23; - data[5] = 0xff; - - ASSERT.equal(0x32654256, mod_ctype.ruint32(data, 'big', 0)); - ASSERT.equal(0x65425623, mod_ctype.ruint32(data, 'big', 1)); - ASSERT.equal(0x425623ff, mod_ctype.ruint32(data, 'big', 2)); - - ASSERT.equal(0x56426532, mod_ctype.ruint32(data, 'little', 0)); - ASSERT.equal(0x23564265, mod_ctype.ruint32(data, 'little', 1)); - ASSERT.equal(0xff235642, mod_ctype.ruint32(data, 'little', 2)); -} - -test8(); -test16(); -test32(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js deleted file mode 100644 index d6c4230f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * A battery of tests to help us read a series of uints - */ - -var mod_ctype = require('../../../ctio.js'); -var ASSERT = require('assert'); - -/* - * We need to check the following things: - * - We are correctly resolving big endian (doesn't mean anything for 8 bit) - * - Correctly resolving little endian (doesn't mean anything for 8 bit) - * - Correctly using the offsets - * - Correctly interpreting values that are beyond the signed range as unsigned - */ -function test8() -{ - var data = new Buffer(4); - mod_ctype.wuint8(23, 'big', data, 0); - mod_ctype.wuint8(23, 'big', data, 1); - mod_ctype.wuint8(23, 'big', data, 2); - mod_ctype.wuint8(23, 'big', data, 3); - ASSERT.equal(23, data[0]); - ASSERT.equal(23, data[1]); - ASSERT.equal(23, data[2]); - ASSERT.equal(23, data[3]); - mod_ctype.wuint8(23, 'little', data, 0); - mod_ctype.wuint8(23, 'little', data, 1); - mod_ctype.wuint8(23, 'little', data, 2); - mod_ctype.wuint8(23, 'little', data, 3); - ASSERT.equal(23, data[0]); - ASSERT.equal(23, data[1]); - ASSERT.equal(23, data[2]); - ASSERT.equal(23, data[3]); - mod_ctype.wuint8(255, 'big', data, 0); - ASSERT.equal(255, data[0]); - mod_ctype.wuint8(255, 'little', data, 0); - ASSERT.equal(255, data[0]); -} - -function test16() -{ - var value = 0x2343; - var data = new Buffer(4); - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(0x23, data[0]); - ASSERT.equal(0x43, data[1]); - mod_ctype.wuint16(value, 'big', data, 1); - ASSERT.equal(0x23, data[1]); - ASSERT.equal(0x43, data[2]); - mod_ctype.wuint16(value, 'big', data, 2); - ASSERT.equal(0x23, data[2]); - ASSERT.equal(0x43, data[3]); - - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(0x23, data[1]); - ASSERT.equal(0x43, data[0]); - - mod_ctype.wuint16(value, 'little', data, 1); - ASSERT.equal(0x23, data[2]); - ASSERT.equal(0x43, data[1]); - - mod_ctype.wuint16(value, 'little', data, 2); - ASSERT.equal(0x23, data[3]); - ASSERT.equal(0x43, data[2]); - - value = 0xff80; - mod_ctype.wuint16(value, 'little', data, 0); - ASSERT.equal(0xff, data[1]); - ASSERT.equal(0x80, data[0]); - - mod_ctype.wuint16(value, 'big', data, 0); - ASSERT.equal(0xff, data[0]); - ASSERT.equal(0x80, data[1]); -} - -function test32() -{ - var data = new Buffer(6); - var value = 0xe7f90a6d; - - mod_ctype.wuint32(value, 'big', data, 0); - ASSERT.equal(0xe7, data[0]); - ASSERT.equal(0xf9, data[1]); - ASSERT.equal(0x0a, data[2]); - ASSERT.equal(0x6d, data[3]); - - mod_ctype.wuint32(value, 'big', data, 1); - ASSERT.equal(0xe7, data[1]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0x0a, data[3]); - ASSERT.equal(0x6d, data[4]); - - mod_ctype.wuint32(value, 'big', data, 2); - ASSERT.equal(0xe7, data[2]); - ASSERT.equal(0xf9, data[3]); - ASSERT.equal(0x0a, data[4]); - ASSERT.equal(0x6d, data[5]); - - mod_ctype.wuint32(value, 'little', data, 0); - ASSERT.equal(0xe7, data[3]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0x0a, data[1]); - ASSERT.equal(0x6d, data[0]); - - mod_ctype.wuint32(value, 'little', data, 1); - ASSERT.equal(0xe7, data[4]); - ASSERT.equal(0xf9, data[3]); - ASSERT.equal(0x0a, data[2]); - ASSERT.equal(0x6d, data[1]); - - mod_ctype.wuint32(value, 'little', data, 2); - ASSERT.equal(0xe7, data[5]); - ASSERT.equal(0xf9, data[4]); - ASSERT.equal(0x0a, data[3]); - ASSERT.equal(0x6d, data[2]); -} - -function test64() -{ - var data = new Buffer(10); - var value = 0x0007cda8e7f90a6d; - var high = Math.floor(value / Math.pow(2, 32)); - var low = value - (high * Math.pow(2, 32)); - ASSERT.equal(0x0007cda8, high); - ASSERT.equal(0xe7f90a6d, low); - - mod_ctype.wuint64([high, low], 'big', data, 0); - ASSERT.equal(0x00, data[0]); - ASSERT.equal(0x07, data[1]); - ASSERT.equal(0xcd, data[2]); - ASSERT.equal(0xa8, data[3]); - ASSERT.equal(0xe7, data[4]); - ASSERT.equal(0xf9, data[5]); - ASSERT.equal(0x0a, data[6]); - ASSERT.equal(0x6d, data[7]); - - mod_ctype.wuint64([high, low], 'little', data, 0); - ASSERT.equal(0x6d, data[0]); - ASSERT.equal(0x0a, data[1]); - ASSERT.equal(0xf9, data[2]); - ASSERT.equal(0xe7, data[3]); - ASSERT.equal(0xa8, data[4]); - ASSERT.equal(0xcd, data[5]); - ASSERT.equal(0x07, data[6]); - ASSERT.equal(0x00, data[7]); -} - -test8(); -test16(); -test32(); -test64(); - -exports.test8 = test8; -exports.test16 = test16; -exports.test32 = test32; -exports.test64 = test64; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js deleted file mode 100644 index e9895152..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Simple does to see if it works at all - */ -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); -var mod_sys = require('sys'); - -function test() -{ - var ii, p, result, buffer; - - p = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer(4); - buffer[0] = 23; - buffer[3] = 42; - result = p.readData([ { x: { type: 'uint8_t' }}, - { y: { type: 'uint8_t', offset: 3 }} - ], buffer, 0); - ASSERT.equal(23, result['x']); - ASSERT.equal(42, result['y']); - - buffer = new Buffer(23); - for (ii = 0; ii < 23; ii++) - buffer[ii] = 0; - - buffer.write('Hello, world!'); - result = p.readData([ { x: { type: 'char[20]' }} ], buffer, 0); - - /* - * This is currently broken behvaior, need to redesign check - * ASSERT.equal('Hello, world!', result['x'].toString('utf-8', 0, - * result['x'].length)); - */ - - buffer = new Buffer(4); - buffer[0] = 0x03; - buffer[1] = 0x24; - buffer[2] = 0x25; - buffer[3] = 0x26; - result = p.readData([ { y: { type: 'uint8_t' }}, - { x: { type: 'uint8_t[y]' }}], buffer, 0); - console.log(mod_sys.inspect(result, true)); - - p.typedef('ssize_t', 'int32_t'); - ASSERT.deepEqual({ 'ssize_t': 'int32_t' }, p.lstypes()); - result = p.readData([ { x: { type: 'ssize_t' } } ], buffer, 0); - ASSERT.equal(0x26252403, result['x']); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js deleted file mode 100644 index 89d446f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Simple does it fucking work at all test - */ - -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); -var mod_sys = require('sys'); - -function test() -{ - var ii, p, buffer, buf2; - - p = new mod_ctype.Parser({ endian: 'big' }); - buffer = new Buffer(4); - p.writeData([ { x: { type: 'uint8_t', value: 23 }}, - { y: { type: 'uint8_t', offset: 3, value: 42 }} - ], buffer, 0); - ASSERT.equal(23, buffer[0]); - ASSERT.equal(42, buffer[3]); - - buffer = new Buffer(20); - for (ii = 0; ii < 20; ii++) - buffer[ii] = 0; - - buffer.write('Hello, world!'); - buf2 = new Buffer(22); - p.writeData([ { x: { type: 'char[20]', value: buffer }} ], buf2, 0); - for (ii = 0; ii < 20; ii++) - ASSERT.equal(buffer[ii], buf2[ii]); - /* - * This is currently broken behvaior, need to redesign check - * ASSERT.equal('Hello, world!', result['x'].toString('utf-8', 0, - * result['x'].length)); - */ - - buffer = new Buffer(4); - p.writeData([ { y: { type: 'uint8_t', value: 3 }}, - { x: { type: 'uint8_t[y]', value: [ 0x24, 0x25, 0x26] }}], - buffer, 0); - console.log(mod_sys.inspect(buffer)); - - p.typedef('ssize_t', 'int32_t'); - ASSERT.deepEqual({ 'ssize_t': 'int32_t' }, p.lstypes()); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js deleted file mode 100644 index 14d9529c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Test the different forms of reading characters: - * - * - the default, a single element buffer - * - uint8, values are uint8_ts - * - int8, values are int8_ts - */ -var mod_ctype = require('../../ctype'); -var mod_assert = require('assert'); - -function test() -{ - var p, buf, res; - - buf = new Buffer(1); - buf[0] = 255; - - p = new mod_ctype.Parser({ endian: 'little'}); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(res instanceof Buffer); - mod_assert.equal(255, res[0]); - - p = new mod_ctype.Parser({ endian: 'little', - 'char-type': 'int8' }); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(typeof (res) == 'number', 'got typeof (res): ' + - typeof (res)); - mod_assert.equal(-1, res); - - p = new mod_ctype.Parser({ endian: 'little', - 'char-type': 'uint8' }); - res = p.readData([ { c: { type: 'char' }} ], buf, 0); - res = res['c']; - mod_assert.ok(typeof (res) == 'number', 'got typeof (res): ' + - typeof (res)); - mod_assert.equal(255, res); - -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js deleted file mode 100644 index 11fc2d2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Simple test to make sure that the endian setting works. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf; - - parser = new mod_ctype.Parser({ - endian: 'little' - }); - - buf = new Buffer(2); - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x34); - mod_assert.equal(buf[1], 0x12); - parser.setEndian('big'); - - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x12); - mod_assert.equal(buf[1], 0x34); - - parser.setEndian('little'); - parser.writeData([ { key: { type: 'uint16_t' } } ], buf, 0, [ 0x1234 ]); - mod_assert.equal(buf[0], 0x34); - mod_assert.equal(buf[1], 0x12); -} - -function fail() -{ - var parser; - - parser = new mod_ctype.Parser({ - endian: 'little' - }); - mod_assert.throws(function () { - parser.setEndian('littlebigwrong'); - }); -} - -test(); -fail(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js deleted file mode 100644 index 9491cf6e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * A long overdue test to go through and verify that we can read and write - * structures as well as nested structures. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(2); - data = [ - { point: { type: 'point_t', value: [ 23, 42 ] } } - ]; - parser.writeData(data, buf, 0); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js deleted file mode 100644 index 6c490a2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Testing to ensure we're reading the expected number bytes - */ -var mod_ctype = require('../../ctype'); -var ASSERT = require('assert'); - -function testUint8() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80', 'hex'); - result = parser.readStruct([ { item: { type: 'uint8_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 1); -} - -function testSint8() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80', 'hex'); - result = parser.readStruct([ { item: { type: 'int8_t' } } ], buffer, 0); - ASSERT.equal(result['size'], 1); -} - -function testUint16() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint16_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 2); -} - -function testSint16() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000', 'hex'); - result = parser.readStruct([ { item: { type: 'int16_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 2); -} - -function testUint32() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80000000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint32_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 4); -} - -function testSint32() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('80000000', 'hex'); - result = parser.readStruct([ { item: { type: 'int32_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 4); -} - -function testUint64() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000000000000000', 'hex'); - result = parser.readStruct([ { item: { type: 'uint64_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 8); -} - -function testSint64() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('8000000000000000', 'hex'); - result = parser.readStruct([ { item: { type: 'int64_t' } } ], buffer, - 0); - ASSERT.equal(result['size'], 8); -} - -function testFloat() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('ABAAAA3E', 'hex'); - result = parser.readStruct([ { item: { type: 'float' } } ], buffer, 0); - ASSERT.equal(result['size'], 4); -} - -function testDouble() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('000000000000F03F', 'hex'); - result = parser.readStruct([ { item: { type: 'double' } } ], buffer, 0); - ASSERT.equal(result['size'], 8); -} - -function testChar() -{ - var parser, result, buffer; - parser = new mod_ctype.Parser({ endian: 'little' }); - buffer = new Buffer('t'); - result = parser.readStruct([ { item: { type: 'char' } } ], buffer, 0); - ASSERT.equal(result['size'], 1); -} - -function test() -{ - testSint8(); - testUint8(); - testSint16(); - testUint16(); - testSint32(); - testUint32(); - testSint64(); - testUint64(); - testFloat(); - testDouble(); - testChar(); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js deleted file mode 100644 index 09c1a5ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * A long overdue test to go through and verify that we can read and write - * structures as well as nested structures. - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(2); - data = [ - { point: { type: 'point_t' } } - ]; - parser.writeData(data, buf, 0, [ [ 23, 42 ] ]); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js deleted file mode 100644 index 48556667..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Test to verify that the offset is incremented when structures are written to. - * Hopefully we will not regress issue #41 - */ - -var mod_ctype = require('../../ctype.js'); -var mod_assert = require('assert'); - -function test() -{ - var parser, buf, data; - parser = new mod_ctype.Parser({ - endian: 'little' - }); - parser.typedef('point_t', [ - { x: { type: 'uint8_t' } }, - { y: { type: 'uint8_t' } } - ]); - buf = new Buffer(4); - data = [ - { point1: { type: 'point_t' } }, - { point2: { type: 'point_t' } } - ]; - parser.writeData(data, buf, 0, [ [ 23, 42 ], [ 91, 18 ] ]); - mod_assert.ok(buf[0] == 23); - mod_assert.ok(buf[1] == 42); - mod_assert.ok(buf[2] == 91); - mod_assert.ok(buf[3] == 18); -} - -test(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json deleted file mode 100644 index 94bd8e79..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/http-signature/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Joyent, Inc" - }, - "name": "http-signature", - "description": "Reference implementation of Joyent's HTTP Signature Scheme", - "version": "0.10.0", - "repository": { - "type": "git", - "url": "git://github.com/joyent/node-http-signature.git" - }, - "engines": { - "node": ">=0.8" - }, - "main": "lib/index.js", - "scripts": { - "test": "./node_modules/.bin/tap tst/*.js" - }, - "dependencies": { - "assert-plus": "0.1.2", - "asn1": "0.1.11", - "ctype": "0.5.2" - }, - "devDependencies": { - "node-uuid": "1.4.0", - "tap": "0.4.2" - }, - "readme": "# node-http-signature\n\nnode-http-signature is a node.js library that has client and server components\nfor Joyent's [HTTP Signature Scheme](http_signing.md).\n\n## Usage\n\nNote the example below signs a request with the same key/cert used to start an\nHTTP server. This is almost certainly not what you actaully want, but is just\nused to illustrate the API calls; you will need to provide your own key\nmanagement in addition to this library.\n\n### Client\n\n var fs = require('fs');\n var https = require('https');\n var httpSignature = require('http-signature');\n\n var key = fs.readFileSync('./key.pem', 'ascii');\n\n var options = {\n host: 'localhost',\n port: 8443,\n path: '/',\n method: 'GET',\n headers: {}\n };\n\n // Adds a 'Date' header in, signs it, and adds the\n // 'Authorization' header in.\n var req = https.request(options, function(res) {\n console.log(res.statusCode);\n });\n\n\n httpSignature.sign(req, {\n key: key,\n keyId: './cert.pem'\n });\n\n req.end();\n\n### Server\n\n var fs = require('fs');\n var https = require('https');\n var httpSignature = require('http-signature');\n\n var options = {\n key: fs.readFileSync('./key.pem'),\n cert: fs.readFileSync('./cert.pem')\n };\n\n https.createServer(options, function (req, res) {\n var rc = 200;\n var parsed = httpSignature.parseRequest(req);\n var pub = fs.readFileSync(parsed.keyId, 'ascii');\n if (!httpSignature.verifySignature(parsed, pub))\n rc = 401;\n\n res.writeHead(rc);\n res.end();\n }).listen(8443);\n\n## Installation\n\n npm install http-signature\n\n## License\n\nMIT.\n\n## Bugs\n\nSee <https://github.com/joyent/node-http-signature/issues>.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/joyent/node-http-signature/issues" - }, - "homepage": "https://github.com/joyent/node-http-signature", - "_id": "http-signature@0.10.0", - "_from": "http-signature@~0.10.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md deleted file mode 100644 index 5d764f3a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# json-stringify-safe - -Like JSON.stringify, but doesn't throw on circular references. - -## Usage - -Takes the same arguments as `JSON.stringify`. - -```javascript -var stringify = require('json-stringify-safe'); -var circularObj = {}; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; -console.log(stringify(circularObj, null, 2)); -``` - -Output: - -```json -{ - "circularRef": "[Circular]", - "list": [ - "[Circular]", - "[Circular]" - ] -} -``` - -## Details - -``` -stringify(obj, serializer, indent, decycler) -``` - -The first three arguments are the same as to JSON.stringify. The last -is an argument that's only used when the object has been seen already. - -The default `decycler` function returns the string `'[Circular]'`. -If, for example, you pass in `function(k,v){}` (return nothing) then it -will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`, -then cyclical objects will always be represented as `{"foo":"bar"}` in -the result. - -``` -stringify.getSerialize(serializer, decycler) -``` - -Returns a serializer that can be used elsewhere. This is the actual -function that's passed to JSON.stringify. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json deleted file mode 100644 index 322c23a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "json-stringify-safe", - "version": "5.0.0", - "description": "Like JSON.stringify, but doesn't blow up on circular refs", - "main": "stringify.js", - "scripts": { - "test": "node test.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/json-stringify-safe" - }, - "keywords": [ - "json", - "stringify", - "circular", - "safe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "license": "BSD", - "readmeFilename": "README.md", - "readme": "# json-stringify-safe\n\nLike JSON.stringify, but doesn't throw on circular references.\n\n## Usage\n\nTakes the same arguments as `JSON.stringify`.\n\n```javascript\nvar stringify = require('json-stringify-safe');\nvar circularObj = {};\ncircularObj.circularRef = circularObj;\ncircularObj.list = [ circularObj, circularObj ];\nconsole.log(stringify(circularObj, null, 2));\n```\n\nOutput:\n\n```json\n{\n \"circularRef\": \"[Circular]\",\n \"list\": [\n \"[Circular]\",\n \"[Circular]\"\n ]\n}\n```\n\n## Details\n\n```\nstringify(obj, serializer, indent, decycler)\n```\n\nThe first three arguments are the same as to JSON.stringify. The last\nis an argument that's only used when the object has been seen already.\n\nThe default `decycler` function returns the string `'[Circular]'`.\nIf, for example, you pass in `function(k,v){}` (return nothing) then it\nwill prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`,\nthen cyclical objects will always be represented as `{\"foo\":\"bar\"}` in\nthe result.\n\n```\nstringify.getSerialize(serializer, decycler)\n```\n\nReturns a serializer that can be used elsewhere. This is the actual\nfunction that's passed to JSON.stringify.\n", - "bugs": { - "url": "https://github.com/isaacs/json-stringify-safe/issues" - }, - "homepage": "https://github.com/isaacs/json-stringify-safe", - "_id": "json-stringify-safe@5.0.0", - "_from": "json-stringify-safe@~5.0.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js deleted file mode 100644 index 853ef9b2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/stringify.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = stringify; - -function getSerialize (fn, decycle) { - var seen = [], keys = []; - decycle = decycle || function(key, value) { - return '[Circular ' + getPath(value, seen, keys) + ']' - }; - return function(key, value) { - var ret = value; - if (typeof value === 'object' && value) { - if (seen.indexOf(value) !== -1) - ret = decycle(key, value); - else { - seen.push(value); - keys.push(key); - } - } - if (fn) ret = fn(key, ret); - return ret; - } -} - -function getPath (value, seen, keys) { - var index = seen.indexOf(value); - var path = [ keys[index] ]; - for (index--; index >= 0; index--) { - if (seen[index][ path[0] ] === value) { - value = seen[index]; - path.unshift(keys[index]); - } - } - return '~' + path.join('.'); -} - -function stringify(obj, fn, spaces, decycle) { - return JSON.stringify(obj, getSerialize(fn, decycle), spaces); -} - -stringify.getSerialize = getSerialize; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js deleted file mode 100644 index 991e9197..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/json-stringify-safe/test.js +++ /dev/null @@ -1,128 +0,0 @@ -var stringify = require('./stringify.js'); - -var circularObj = { a: 'b' }; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; - -////////// -// default -var testObj = { - "a": "b", - "circularRef": "[Circular ~]", - "list": [ - "[Circular ~]", - "[Circular ~]" - ] -}; - -var assert = require('assert'); -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2)); - -assert.equal(JSON.stringify(testObj, null, 2), - JSON.stringify(circularObj, stringify.getSerialize(), 2)); - - -//////// -// prune -testObj = { - "a": "b", - "list": [ - null, - null - ] -}; - -function prune(k, v) {} - -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2, prune)); - -/////////// -// re-cycle -// (throws) -function recycle(k, v) { - return v; -} - -assert.throws(function() { - stringify(circularObj, null, 2, recycle); -}); - -//////// -// fancy -testObj = { - "a": "b", - "circularRef": "circularRef{a:string,circularRef:Object,list:Array}", - "list": [ - "0{a:string,circularRef:Object,list:Array}", - "1{a:string,circularRef:Object,list:Array}" - ] -}; - -function signer(key, value) { - var ret = key + '{'; - var f = false; - for (var i in value) { - if (f) - ret += ','; - f = true; - ret += i + ':'; - var v = value[i]; - switch (typeof v) { - case 'object': - if (!v) - ret += 'null'; - else if (Array.isArray(v)) - ret += 'Array' - else - ret += v.constructor && v.constructor.name || 'Object'; - break; - default: - ret += typeof v; - break; - } - } - ret += '}'; - return ret; -} - -assert.equal(JSON.stringify(testObj, null, 2), - stringify(circularObj, null, 2, signer)); - - -/////// -//multi -var a = { x: 1 }; -a.a = a; -var b = { x: 2 }; -b.a = a; - -var c = { a: a, b: b }; -var d = { list: [ a, b, c ] }; -d.d = d; - -var multi = { - "list": [ - { - "x": 1, - "a": "[Circular ~.list.0]" - }, - { - "x": 2, - "a": "[Circular ~.list.0]" - }, - { - "a": "[Circular ~.list.0]", - "b": "[Circular ~.list.1]" - } - ], - "d": "[Circular ~]" -}; - -assert.equal(JSON.stringify(multi, null, 2), - stringify(d, null, 2)); - -//////// -// pass! -console.log('ok'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE deleted file mode 100644 index 451fc455..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md deleted file mode 100644 index 6ca19bd1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js deleted file mode 100644 index 48be0c5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/mime.js +++ /dev/null @@ -1,114 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json deleted file mode 100644 index a9759392..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.2.11", - "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.default_type\nSets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.)\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "homepage": "https://github.com/broofa/node-mime", - "_id": "mime@1.2.11", - "_from": "mime@~1.2.9" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js deleted file mode 100644 index 2cda1c7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/test.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); -var path = require('path'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); // normal file -eq('text/plain', mime.lookup('TEXT.TXT')); // uppercase -eq('text/plain', mime.lookup('dir/text.txt')); // dir + file -eq('text/plain', mime.lookup('.text.txt')); // hidden file -eq('text/plain', mime.lookup('.txt')); // nameless -eq('text/plain', mime.lookup('txt')); // extension-only -eq('text/plain', mime.lookup('/txt')); // extension-less () -eq('text/plain', mime.lookup('\\txt')); // Windows, extension-less -eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized -eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq('bin', mime.extension('application/octet-stream ')); -eq('html', mime.extension(' text/html; charset=UTF-8')); -eq('html', mime.extension('text/html; charset=UTF-8 ')); -eq('html', mime.extension('text/html; charset=UTF-8')); -eq('html', mime.extension('text/html ; charset=UTF-8')); -eq('html', mime.extension('text/html;charset=UTF-8')); -eq('html', mime.extension('text/Html;charset=UTF-8')); -eq(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -eq('application/font-woff', mime.lookup('file.woff')); -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); -eq('font/opentype', mime.lookup('file.otf')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -// -// Test for overlaps between mime.types and node.types -// - -var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime(); -apacheTypes.load(path.join(__dirname, 'types/mime.types')); -nodeTypes.load(path.join(__dirname, 'types/node.types')); - -var keys = [].concat(Object.keys(apacheTypes.types)) - .concat(Object.keys(nodeTypes.types)); -keys.sort(); -for (var i = 1; i < keys.length; i++) { - if (keys[i] == keys[i-1]) { - console.warn('Warning: ' + - 'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] + - ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]); - } -} - -console.log('\nOK'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types deleted file mode 100644 index da8cd691..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1588 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at <http://www.iana.org/assignments/media-types/>. -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types deleted file mode 100644 index 55b2cf79..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/mime/types/node.types +++ /dev/null @@ -1,77 +0,0 @@ -# What: WebVTT -# Why: To allow formats intended for marking up external text track resources. -# http://dev.w3.org/html5/webvtt/ -# Added by: niftylettuce -text/vtt vtt - -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifes ('.manifest' extension) -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Lua file types -# Why: Googling around shows de-facto consensus on these -# Added by: creationix (Issue #45) -text/x-lua lua -application/x-lua-bytecode luac - -# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax -# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown -# Added by: avoidwork -text/x-markdown markdown md mkd - -# What: ini files -# Why: because they're just text files -# Added by: Matthew Kastor -text/plain ini - -# What: DASH Adaptive Streaming manifest -# Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video -# Added by: eelcocramer -application/dash+xml mdp - -# What: OpenType font files - http://www.microsoft.com/typography/otspec/ -# Why: Browsers usually ignore the font MIME types and sniff the content, -# but Chrome, shows a warning if OpenType fonts aren't served with -# the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png. -# Added by: alrra -font/opentype otf diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md deleted file mode 100644 index f039427f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/LICENSE.md +++ /dev/null @@ -1,2 +0,0 @@ -Copyright (c) 2010-2012 Robert Kieffer -MIT License - http://opensource.org/licenses/mit-license.php diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md deleted file mode 100644 index e436a89f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/README.md +++ /dev/null @@ -1,207 +0,0 @@ -# node-uuid - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid'). -* Cryptographically strong random # generation on supporting platforms -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) - -## Getting Started - -Install it in your browser: - -```html -<script src="uuid.js"></script> -``` - -Or in node.js: - -``` -npm install node-uuid -``` - -```javascript -var uuid = require('node-uuid'); -``` - -Then create some ids ... - -```javascript -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the node-uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include <stdio.h> -#include <unistd.h> -#include <sys/time.h> -#include <uuid/uuid.h> - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json deleted file mode 100644 index ace21348..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/component.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "node-uuid", - "repo": "broofa/node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "version": "1.4.0", - "author": "Robert Kieffer <robert@broofa.com>", - "contributors": [ - {"name": "Christoph Tavan <dev@tavan.de>", "github": "https://github.com/ctavan"} - ], - "keywords": ["uuid", "guid", "rfc4122"], - "dependencies": {}, - "development": {}, - "main": "uuid.js", - "scripts": [ - "uuid.js" - ], - "license": "MIT" -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json deleted file mode 100644 index 22ea8648..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "url": "http://github.com/broofa/node-uuid", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "lib": ".", - "main": "./uuid.js", - "repository": { - "type": "git", - "url": "https://github.com/broofa/node-uuid.git" - }, - "version": "1.4.1", - "readme": "# node-uuid\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').\n* Cryptographically strong random # generation on supporting platforms\n* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n<script src=\"uuid.js\"></script>\n```\n\nOr in node.js:\n\n```\nnpm install node-uuid\n```\n\n```javascript\nvar uuid = require('node-uuid');\n```\n\nThen create some ids ...\n\n```javascript\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> <Buffer 79 7f f0 43 11 eb 11 e1 80 d6 51 09 98 75 5d 10>\nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the node-uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n### uuid.BufferClass\n\nThe class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API.\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\nnpm install uuid uuid-js\nnode benchmark/benchmark.js\n```\n\nFor a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-uuid/issues" - }, - "homepage": "https://github.com/broofa/node-uuid", - "_id": "node-uuid@1.4.1", - "_from": "node-uuid@~1.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js deleted file mode 100644 index 05af8221..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/compare_v1.js +++ /dev/null @@ -1,63 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../uuid'), - uuidjs = require('uuid-js'), - libuuid = require('uuid').generate, - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html deleted file mode 100644 index d80326ec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.html +++ /dev/null @@ -1,17 +0,0 @@ -<html> - <head> - <style> - div { - font-family: monospace; - font-size: 8pt; - } - div.log {color: #444;} - div.warn {color: #550;} - div.error {color: #800; font-weight: bold;} - </style> - <script src="../uuid.js"></script> - </head> - <body> - <script src="./test.js"></script> - </body> -</html> diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js deleted file mode 100644 index 24692256..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/test/test.js +++ /dev/null @@ -1,228 +0,0 @@ -if (!this.uuid) { - // node.js - uuid = require('../uuid'); -} - -// -// x-platform log/assert shims -// - -function _log(msg, type) { - type = type || 'log'; - - if (typeof(document) != 'undefined') { - document.write('<div class="' + type + '">' + msg.replace(/\n/g, '<br />') + '</div>'); - } - if (typeof(console) != 'undefined') { - var color = { - log: '\033[39m', - warn: '\033[33m', - error: '\033[31m' - }; - console[type](color[type] + msg + color.log); - } -} - -function log(msg) {_log(msg, 'log');} -function warn(msg) {_log(msg, 'warn');} -function error(msg) {_log(msg, 'error');} - -function assert(res, msg) { - if (!res) { - error('FAIL: ' + msg); - } else { - log('Pass: ' + msg); - } -} - -// -// Unit tests -// - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - ids = ids.map(function(id) { - return id.split('-').reverse().join('-'); - }).sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' -); - -// Verify throw if too many ids created -var thrown = false; -try { - uuid.v1({msecs: TIME, nsecs: 10000}); -} catch (e) { - thrown = true; -} -assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); - -// Verify clock regression bumps clockseq -var uidt = uuid.v1({msecs: TIME}); -var uidtb = uuid.v1({msecs: TIME - 1}); -assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' -); - -// Verify clock regression bumps clockseq -var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); -var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); -assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' -); - -// Verify explicit options produce expected id -var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] -}); -assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); - -// Verify adjacent ids across a msec boundary are 1 time unit apart -var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); -var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - -var before = u0.split('-')[0], after = u1.split('-')[0]; -var dt = parseInt(after, 16) - parseInt(before, 16); -assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); - -// -// Test parse/unparse -// - -id = '00112233445566778899aabbccddeeff'; -assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); -assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); - -// -// Perf tests -// - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js deleted file mode 100644 index 2fac6dc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/node-uuid/uuid.js +++ /dev/null @@ -1,245 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -(function() { - var _global = this; - - // Unique ID creation requires a high quality random # generator. We feature - // detect to determine the best RNG source, normalizing to a function that - // returns 128-bits of randomness, since that's what's usually required - var _rng; - - // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html - // - // Moderately fast, high quality - if (typeof(require) == 'function') { - try { - var _rb = require('crypto').randomBytes; - _rng = _rb && function() {return _rb(16);}; - } catch(e) {} - } - - if (!_rng && _global.crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - _rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; - } - - if (!_rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - _rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; - } - - // Buffer class to use - var BufferClass = typeof(Buffer) == 'function' ? Buffer : Array; - - // Maps for number <-> hex string conversion - var _byteToHex = []; - var _hexToByte = {}; - for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; - } - - // **`parse()` - Parse a UUID into it's component bytes** - function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; - } - - // **`unparse()` - Convert UUID byte array (ala parse()) into a string** - function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - - // random #'s we need to init node and clockseq - var _seedBytes = _rng(); - - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] - ]; - - // Per 4.2.2, randomize (14 bit) clockseq - var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - - // Previous uuid creation time - var _lastMSecs = 0, _lastNSecs = 0; - - // See https://github.com/broofa/node-uuid for API details - function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq != null ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs != null ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq == null) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); - } - - // **`v4()` - Generate random UUID** - - // See https://github.com/broofa/node-uuid for API details - function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); - } - - // Export public API - var uuid = v4; - uuid.v1 = v1; - uuid.v4 = v4; - uuid.parse = parse; - uuid.unparse = unparse; - uuid.BufferClass = BufferClass; - - if (typeof define === 'function' && define.amd) { - // Publish as AMD module - define(function() {return uuid;}); - } else if (typeof(module) != 'undefined' && module.exports) { - // Publish as node.js module - module.exports = uuid; - } else { - // Publish as global (in browsers) - var _previousRoot = _global.uuid; - - // **`noConflict()` - (browser only) to reset global 'uuid' var** - uuid.noConflict = function() { - _global.uuid = _previousRoot; - return uuid; - }; - - _global.uuid = uuid; - } -}).call(this); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md deleted file mode 100644 index 34c4a85d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/README.md +++ /dev/null @@ -1,4 +0,0 @@ -oauth-sign -========== - -OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js deleted file mode 100644 index e35bfa67..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/index.js +++ /dev/null @@ -1,43 +0,0 @@ -var crypto = require('crypto') - , qs = require('querystring') - ; - -function sha1 (key, body) { - return crypto.createHmac('sha1', key).update(body).digest('base64') -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') - ; -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - var querystring = Object.keys(params).sort().map(function(key){ - // big WTF here with the escape + encoding but it's what twitter wants - return escape(rfc3986(key)) + "%3D" + escape(rfc3986(params[key])) - }).join('%26') - - var base = [ - httpMethod ? httpMethod.toUpperCase() : 'GET', - rfc3986(base_uri), - querystring - ].join('&') - - var key = [ - consumer_secret, - token_secret || '' - ].map(rfc3986).join('&') - - return sha1(key, base) -} - -exports.hmacsign = hmacsign -exports.rfc3986 = rfc3986 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json deleted file mode 100644 index dc99a4ec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "oauth-sign", - "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.", - "version": "0.3.0", - "repository": { - "url": "https://github.com/mikeal/oauth-sign" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "scripts": { - "test": "node test.js" - }, - "readme": "oauth-sign\n==========\n\nOAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. \n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/oauth-sign/issues" - }, - "homepage": "https://github.com/mikeal/oauth-sign", - "_id": "oauth-sign@0.3.0", - "_from": "oauth-sign@~0.3.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js deleted file mode 100644 index 46955ff6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/oauth-sign/test.js +++ /dev/null @@ -1,49 +0,0 @@ -var hmacsign = require('./index').hmacsign - , assert = require('assert') - , qs = require('querystring') - ; - -// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth - -var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', - { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' - , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_timestamp: '1272323042' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - -console.log(reqsign) -console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') -assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') - -var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', - { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' - , oauth_timestamp: '1272323047' - , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - -console.log(accsign) -console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') -assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') - -var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , status: 'setting up my twitter ç§ã®ã•ãˆãšã‚Šã‚’設定ã™ã‚‹' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') -assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules deleted file mode 100644 index 49e31dac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "support/expresso"] - path = support/expresso - url = git://github.com/visionmedia/expresso.git -[submodule "support/should"] - path = support/should - url = git://github.com/visionmedia/should.js.git diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore deleted file mode 100644 index e85ce2af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -test -.travis.yml -benchmark.js -component.json -examples.js -History.md -Makefile diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md deleted file mode 100644 index 27e54a4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/Readme.md +++ /dev/null @@ -1,58 +0,0 @@ -# node-querystring - - query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. - -## Installation - - $ npm install qs - -## Examples - -```js -var qs = require('qs'); - -qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); -// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } - -qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) -// => user[name]=Tobi&user[email]=tobi%40learnboost.com -``` - -## Testing - -Install dev dependencies: - - $ npm install -d - -and execute: - - $ make test - -browser: - - $ open test/browser/index.html - -## License - -(The MIT License) - -Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js deleted file mode 100644 index b05938ac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/index.js +++ /dev/null @@ -1,366 +0,0 @@ -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Object#hasOwnProperty ref - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Array#indexOf shim. - */ - -var indexOf = typeof Array.prototype.indexOf === 'function' - ? function(arr, el) { return arr.indexOf(el); } - : function(arr, el) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === el) return i; - } - return -1; - }; - -/** - * Array.isArray shim. - */ - -var isArray = Array.isArray || function(arr) { - return toString.call(arr) == '[object Array]'; -}; - -/** - * Object.keys shim. - */ - -var objectKeys = Object.keys || function(obj) { - var ret = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - ret.push(key); - } - } - return ret; -}; - -/** - * Array#forEach shim. - */ - -var forEach = typeof Array.prototype.forEach === 'function' - ? function(arr, fn) { return arr.forEach(fn); } - : function(arr, fn) { - for (var i = 0; i < arr.length; i++) fn(arr[i]); - }; - -/** - * Array#reduce shim. - */ - -var reduce = function(arr, fn, initial) { - if (typeof arr.reduce === 'function') return arr.reduce(fn, initial); - var res = initial; - for (var i = 0; i < arr.length; i++) res = fn(res, arr[i]); - return res; -}; - -/** - * Cache non-integer test regexp. - */ - -var isint = /^[0-9]+$/; - -function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = {} - var t = {}; - for (var i in parent[key]) { - if (hasOwnProperty.call(parent[key], i)) { - t[i] = parent[key][i]; - } - } - parent[key] = t; - return t; -} - -function parse(parts, parent, key, val) { - var part = parts.shift(); - - // illegal - if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return; - - // end - if (!part) { - if (isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - var obj = parent[key] = parent[key] || []; - if (']' == part) { - if (isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[objectKeys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~indexOf(part, ']')) { - part = part.substr(0, part.length - 1); - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - // key - } else { - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - } - } -} - -/** - * Merge parent key/val pair. - */ - -function merge(parent, key, val){ - if (~indexOf(key, ']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - parse(parts, parent, 'base', val); - // optimize - } else { - if (!isint.test(key) && isArray(parent.base)) { - var t = {}; - for (var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return parent; -} - -/** - * Compact sparse arrays. - */ - -function compact(obj) { - if ('object' != typeof obj) return obj; - - if (isArray(obj)) { - var ret = []; - - for (var i in obj) { - if (hasOwnProperty.call(obj, i)) { - ret.push(obj[i]); - } - } - - return ret; - } - - for (var key in obj) { - obj[key] = compact(obj[key]); - } - - return obj; -} - -/** - * Parse the given obj. - */ - -function parseObject(obj){ - var ret = { base: {} }; - - forEach(objectKeys(obj), function(name){ - merge(ret, name, obj[name]); - }); - - return compact(ret.base); -} - -/** - * Parse the given str. - */ - -function parseString(str){ - var ret = reduce(String(str).split('&'), function(ret, pair){ - var eql = indexOf(pair, '=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(indexOf(val, '=') + 1, val.length); - - // ?foo - if ('' == key) key = pair, val = ''; - if ('' == key) return ret; - - return merge(ret, decode(key), decode(val)); - }, { base: {} }).base; - - return compact(ret); -} - -/** - * Parse the given query `str` or `obj`, returning an object. - * - * @param {String} str | {Object} obj - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - return 'object' == typeof str - ? parseObject(str) - : parseString(str); -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix + '=' + encodeURIComponent(String(obj)); - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '[' + i + ']')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = objectKeys(obj) - , key; - - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - if ('' == key) continue; - if (null == obj[key]) { - ret.push(encodeURIComponent(key) + '='); - } else { - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - } - - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (Object.getOwnPropertyDescriptor(Object.prototype, key)) return; - if (undefined === v) { - obj[key] = val; - } else if (isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} - -/** - * Decode `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -function decode(str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (err) { - return str; - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json deleted file mode 100644 index 313485c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/qs/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "qs", - "description": "querystring parser", - "version": "0.6.6", - "keywords": [ - "query string", - "parser", - "component" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-querystring.git" - }, - "devDependencies": { - "mocha": "*", - "expect.js": "*" - }, - "scripts": { - "test": "make test" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "index", - "engines": { - "node": "*" - }, - "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-querystring/issues" - }, - "homepage": "https://github.com/visionmedia/node-querystring", - "_id": "qs@0.6.6", - "_from": "qs@~0.6.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc deleted file mode 100644 index 8fcead4f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.jshintrc +++ /dev/null @@ -1,72 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 100, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : false, // Standard browser globals e.g. `window`, `document`. - "node" : true, - "rhino" : false, - "couch" : false, - "wsh" : false, // Windows Scripting Host. - - "jquery" : false, - "prototypejs" : false, - "mootools" : false, - "dojo" : false, - - "predef" : [ // Custom globals. - "escape", "unescape" // aren't picked up by node flag above :/ - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : true, // Allow EcmaScript 5 syntax. - "esnext" : true, // Allow ES "next" syntax, specifically 'const' (V8 has this) - "strict" : false, // Require `use strict` pragma in every file. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : false, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : true, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexp" : true, // Prohibit `.` and `[^...]` in regular expressions. - "regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`. - "scripturl" : true, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : true, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "lastsemic" : true, // Prohibit missing semicolon for the last statement in a one-line block - "newcap" : false, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nonew" : true, // Prohibit use of constructors for side-effects. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "onevar" : false, // Allow only one `var` statement per function. - "onecase" : false, // Allow switches with one case statement - "plusplus" : false, // Prohibit use of `++` & `--`. - "proto" : false, // Allow use of __proto__ - "sub" : true, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore deleted file mode 100644 index 54efff98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -.*.sw[nmop] -npm-debug.log diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 3fac4c85..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,78 +0,0 @@ -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -The following exceptions apply: - -=== - -`pubSufTest()` of generate-pubsuffix.js is in the public domain. - - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - -=== - -`public-suffix.txt` was obtained from -<https://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1> -via <http://publicsuffix.org>. - -That file contains the usual Mozilla triple-license, for which this project uses it -under the terms of the MPL 1.1: - - // ***** BEGIN LICENSE BLOCK ***** - // Version: MPL 1.1/GPL 2.0/LGPL 2.1 - // - // The contents of this file are subject to the Mozilla Public License Version - // 1.1 (the "License"); you may not use this file except in compliance with - // the License. You may obtain a copy of the License at - // http://www.mozilla.org/MPL/ - // - // Software distributed under the License is distributed on an "AS IS" basis, - // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - // for the specific language governing rights and limitations under the - // License. - // - // The Original Code is the Public Suffix List. - // - // The Initial Developer of the Original Code is - // Jo Hermans <jo.hermans@gmail.com>. - // Portions created by the Initial Developer are Copyright (C) 2007 - // the Initial Developer. All Rights Reserved. - // - // Contributor(s): - // Ruben Arakelyan <ruben@rubenarakelyan.com> - // Gervase Markham <gerv@gerv.net> - // Pamela Greene <pamg.bugs@gmail.com> - // David Triendl <david@triendl.name> - // Jothan Frakes <jothan@gmail.com> - // The kind representatives of many TLD registries - // - // Alternatively, the contents of this file may be used under the terms of - // either the GNU General Public License Version 2 or later (the "GPL"), or - // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - // in which case the provisions of the GPL or the LGPL are applicable instead - // of those above. If you wish to allow use of your version of this file only - // under the terms of either the GPL or the LGPL, and not to allow others to - // use your version of this file under the terms of the MPL, indicate your - // decision by deleting the provisions above and replace them with the notice - // and other provisions required by the GPL or the LGPL. If you do not delete - // the provisions above, a recipient may use your version of this file under - // the terms of any one of the MPL, the GPL or the LGPL. - // - // ***** END LICENSE BLOCK ***** diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md deleted file mode 100644 index fd1dbb1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,380 +0,0 @@ -[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg) - -# Synopsis - -``` javascript -var cookies = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie' -var Cookie = cookies.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new cookies.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Requires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default. - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -# API - -cookies -======= - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -parseDate(string[,strict]) ------------------ - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. "Thu, 01 Jan 1970 00:00:010 GMT" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid). - -formatDate(date) ----------------- - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -canonicalDomain(str) --------------------- - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -domainMatch(str,domStr[,canonicalize=true]) -------------------------------------------- - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not. - -defaultPath(path) ------------------ - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -pathMatch(reqPath,cookiePath) ------------------------------ - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -parse(header[,strict=false]) ----------------------------- - -alias for `Cookie.parse(header[,strict])` - -fromJSON(string) ----------------- - -alias for `Cookie.fromJSON(string)` - -getPublicSuffix(hostname) -------------------------- - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. - -cookieCompare(a,b) ------------------- - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest. - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -permuteDomain(domain) ---------------------- - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - - -permutePath(path) ------------------ - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - -Cookie -====== - -Cookie.parse(header[,strict=false]) ------------------------------------ - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(Cookie.parse); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -Cookie.fromJSON(string) ------------------------ - -Convert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects. - -Properties -========== - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _created_ - `Date` - when this cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -Construction([{options}]) ------------- - -Receives an options object that can contain any Cookie properties, uses the default for unspecified properties. - -.toString() ------------ - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -.cookieString() ---------------- - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -.setExpires(String) -------------------- - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -.setMaxAge(number) -------------------- - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -.expiryTime([now=Date.now()]) ------------------------------ - -.expiryDate([now=Date.now()]) ------------------------------ - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -.TTL([now=Date.now()]) ---------- - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -.canonicalizedDoman() ---------------------- - -.cdomain() ----------- - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -.validate() ------------ - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - -CookieJar -========= - -Construction([store = new MemoryCookieStore()][, rejectPublicSuffixes]) ------------- - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - - -Attributes ----------- - - * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`) - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie)) -------------------------------------------------------------------- - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _strict_ - boolean - default `false` - perform extra checks - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -.storeCookie(cookie, [{options},] cb(err,cookie)) -------------------------------------------------- - -__REMOVED__ removed in lieu of the CookieStore API below - -.getCookies(currentUrl, [{options},] cb(err,cookies)) ------------------------------------------------------ - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -.getCookieString(...) ---------------------- - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -.getSetCookieStrings(...) -------------------------- - -Accepts the same options as `.getCookies()` but passes an array of strings suitable for Set-Cookie headers (rather than an array of `Cookie`s) to the callback. Simply maps the cookie array via `.toString()`. - -# CookieStore API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -store.findCookie(domain, path, key, cb(err,cookie)) ---------------------------------------------------- - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -store.findCookies(domain, path, cb(err,cookies)) ------------------------------------------------- - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -store.putCookie(cookie, cb(err)) --------------------------------- - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -store.updateCookie(oldCookie, newCookie, cb(err)) -------------------------------------------------- - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -store.removeCookie(domain, path, key, cb(err)) ----------------------------------------------- - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -store.removeCookies(domain, path, cb(err)) ------------------------------------------- - -Removes matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -# TODO - - * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()` - * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891 - * better tests for `validate()`? - -# Copyright and License - -(tl;dr: MIT with some MPL/1.1) - -Copyright GoInstant, Inc. and other contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -Portions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js deleted file mode 100644 index a7fa5452..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -var fs = require('fs'); -var assert = require('assert'); -var punycode = require('punycode'); - -fs.readFile('./public-suffix.txt', 'utf8', function(err,string) { - if (err) throw err; - var lines = string.split("\n"); - process.nextTick(function() { - processList(lines); - }); -}); - -var index = {}; - -var COMMENT = new RegExp('//.+'); -function processList(lines) { - while (lines.length) { - var line = lines.shift(); - line = line.replace(COMMENT,'').trim(); - if (!line) continue; - addToIndex(index,line); - } - - pubSufTest(); - - var w = fs.createWriteStream('./lib/pubsuffix.js',{ - flags: 'w', - encoding: 'utf8', - mode: 0644, - }); - w.on('end', process.exit); - w.write("/****************************************************\n"); - w.write(" * AUTOMATICALLY GENERATED by generate-pubsuffix.js *\n"); - w.write(" * DO NOT EDIT! *\n"); - w.write(" ****************************************************/\n\n"); - - w.write("module.exports.getPublicSuffix = "); - w.write(getPublicSuffix.toString()); - w.write(";\n\n"); - - w.write("// The following generated structure is used under the MPL version 1.1\n"); - w.write("// See public-suffix.txt for more information\n\n"); - w.write("var index = module.exports.index = Object.freeze(\n"); - w.write(JSON.stringify(index)); - w.write(");\n\n"); - w.write("// END of automatically generated file\n"); - - w.end(); -} - -function addToIndex(index,line) { - var prefix = ''; - if (line.replace(/^(!|\*\.)/)) { - prefix = RegExp.$1; - line = line.slice(prefix.length); - } - line = prefix + punycode.toASCII(line); - - if (line.substr(0,1) == '!') - index[line.substr(1)] = false; - else - index[line] = true; -} - -// include the licence in the function since it gets written to pubsuffix.js -function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i<parts.length; i++) { - var part = parts[i]; - var starstr = '*'+suffix; - var partstr = part+suffix; - - if (index[starstr]) { // star rule matches - suffixLen = i+1; - if (index[partstr] === false) { // exception rule matches (NB: false, not undefined) - suffixLen--; - } - } else if (index[partstr]) { // exact match, not exception - suffixLen = i+1; - } - - suffix = '.'+part+suffix; - } - - if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp'); - return null; - } - - if (suffixLen && parts.length > suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -} - -function checkPublicSuffix(give,get) { - var got = getPublicSuffix(give); - assert.equal(got, get, give+' should be '+(get==null?'NULL':get)+' but got '+got); -} - -// pubSufTest() was converted to JavaScript from http://publicsuffix.org/list/test.txt -function pubSufTest() { - // For this function-scope and this function-scope ONLY: - // Any copyright is dedicated to the Public Domain. - // http://creativecommons.org/publicdomain/zero/1.0/ - - // NULL input. - checkPublicSuffix(null, null); - // Mixed case. - checkPublicSuffix('COM', null); - checkPublicSuffix('example.COM', 'example.com'); - checkPublicSuffix('WwW.example.COM', 'example.com'); - // Leading dot. - checkPublicSuffix('.com', null); - checkPublicSuffix('.example', null); - checkPublicSuffix('.example.com', null); - checkPublicSuffix('.example.example', null); - // Unlisted TLD. - checkPublicSuffix('example', null); - checkPublicSuffix('example.example', null); - checkPublicSuffix('b.example.example', null); - checkPublicSuffix('a.b.example.example', null); - // Listed, but non-Internet, TLD. - checkPublicSuffix('local', null); - checkPublicSuffix('example.local', null); - checkPublicSuffix('b.example.local', null); - checkPublicSuffix('a.b.example.local', null); - // TLD with only 1 rule. - checkPublicSuffix('biz', null); - checkPublicSuffix('domain.biz', 'domain.biz'); - checkPublicSuffix('b.domain.biz', 'domain.biz'); - checkPublicSuffix('a.b.domain.biz', 'domain.biz'); - // TLD with some 2-level rules. - checkPublicSuffix('com', null); - checkPublicSuffix('example.com', 'example.com'); - checkPublicSuffix('b.example.com', 'example.com'); - checkPublicSuffix('a.b.example.com', 'example.com'); - checkPublicSuffix('uk.com', null); - checkPublicSuffix('example.uk.com', 'example.uk.com'); - checkPublicSuffix('b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('a.b.example.uk.com', 'example.uk.com'); - checkPublicSuffix('test.ac', 'test.ac'); - // TLD with only 1 (wildcard) rule. - checkPublicSuffix('cy', null); - checkPublicSuffix('c.cy', null); - checkPublicSuffix('b.c.cy', 'b.c.cy'); - checkPublicSuffix('a.b.c.cy', 'b.c.cy'); - // More complex TLD. - checkPublicSuffix('jp', null); - checkPublicSuffix('test.jp', 'test.jp'); - checkPublicSuffix('www.test.jp', 'test.jp'); - checkPublicSuffix('ac.jp', null); - checkPublicSuffix('test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('www.test.ac.jp', 'test.ac.jp'); - checkPublicSuffix('kyoto.jp', null); - checkPublicSuffix('c.kyoto.jp', null); - checkPublicSuffix('b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('a.b.c.kyoto.jp', 'b.c.kyoto.jp'); - checkPublicSuffix('pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.pref.kyoto.jp', 'pref.kyoto.jp'); // Exception rule. - checkPublicSuffix('city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - checkPublicSuffix('www.city.kyoto.jp', 'city.kyoto.jp'); // Exception rule. - // TLD with a wildcard rule and exceptions. - checkPublicSuffix('om', null); - checkPublicSuffix('test.om', null); - checkPublicSuffix('b.test.om', 'b.test.om'); - checkPublicSuffix('a.b.test.om', 'b.test.om'); - checkPublicSuffix('songfest.om', 'songfest.om'); - checkPublicSuffix('www.songfest.om', 'songfest.om'); - // US K12. - checkPublicSuffix('us', null); - checkPublicSuffix('test.us', 'test.us'); - checkPublicSuffix('www.test.us', 'test.us'); - checkPublicSuffix('ak.us', null); - checkPublicSuffix('test.ak.us', 'test.ak.us'); - checkPublicSuffix('www.test.ak.us', 'test.ak.us'); - checkPublicSuffix('k12.ak.us', null); - checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us'); - checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us'); - - -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index 1d8615b5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,947 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -/*jshint regexp:false */ -var net = require('net'); -var urlParse = require('url').parse; -var pubsuffix = require('./pubsuffix'); - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); -} - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -// From RFC2616 S2.2: -var TOKEN = /[\x21\x23-\x26\x2A\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7A\x7C\x7E]/; - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; - -// The name/key cannot be empty but the value can (S5.2): -var COOKIE_PAIR_STRICT = new RegExp('^('+TOKEN.source+'+)=("?)('+COOKIE_OCTET.source+'*)\\2'); -var COOKIE_PAIR = /^([^=\s]+)\s*=\s*("?)\s*(.*)\s*\2/; - -// RFC6265 S4.1.1 defines extension-av as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var NON_CTL_SEMICOLON = /[\x20-\x3A\x3C-\x7E]+/; -var EXTENSION_AV = NON_CTL_SEMICOLON; -var PATH_VALUE = NON_CTL_SEMICOLON; - -// Used for checking whether or not there is a trailing semi-colon -var TRAILING_SEMICOLON = /;+$/; - -/* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ -var DAY_OF_MONTH = /^(0?[1-9]|[12][0-9]|3[01])$/; - -/* RFC6265 S5.1.1.5: - * [fail if] - * * the hour-value is greater than 23, - * * the minute-value is greater than 59, or - * * the second-value is greater than 59. - */ -var TIME = /(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])/; -var STRICT_TIME = /^(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/; - -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/i; -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var YEAR = /^([1-9][0-9]{1,3})$/; // 2 to 4 digits (will check range when parsing) - -var MAX_TIME = 2147483647000; // 31-bit max -var MAX_DATE = new Date(CookieJar.MAX_TIME); // 31-bit max -var MIN_TIME = 0; // 31-bit min -var MIN_DATE = new Date(CookieJar.MIN_TIME); // 31-bit min - - -// RFC6265 S5.1.1 date parser: -function parseDate(str,strict) { - if (!str) return; - var found_time, found_dom, found_month, found_year; - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) return; - - var date = new Date(); - date.setMilliseconds(0); - - for (var i=0; i<tokens.length; i++) { - var token = tokens[i].trim(); - if (!token.length) continue; - - var result; - - /* 2.1. If the found-time flag is not set and the token matches the time - * production, set the found-time flag and set the hour- value, - * minute-value, and second-value to the numbers denoted by the digits in - * the date-token, respectively. Skip the remaining sub-steps and continue - * to the next date-token. - */ - if (!found_time) { - result = (strict ? STRICT_TIME : TIME).exec(token); - if (result) { - found_time = true; - date.setUTCHours(result[1]); - date.setUTCMinutes(result[2]); - date.setUTCSeconds(result[3]); - continue; - } - } - - /* 2.2. If the found-day-of-month flag is not set and the date-token matches - * the day-of-month production, set the found-day-of- month flag and set - * the day-of-month-value to the number denoted by the date-token. Skip - * the remaining sub-steps and continue to the next date-token. - */ - if (!found_dom) { - result = DAY_OF_MONTH.exec(token); - if (result) { - found_dom = true; - date.setUTCDate(result[1]); - continue; - } - } - - /* 2.3. If the found-month flag is not set and the date-token matches the - * month production, set the found-month flag and set the month-value to - * the month denoted by the date-token. Skip the remaining sub-steps and - * continue to the next date-token. - */ - if (!found_month) { - result = MONTH.exec(token); - if (result) { - found_month = true; - date.setUTCMonth(MONTH_TO_NUM[result[1].toLowerCase()]); - continue; - } - } - - /* 2.4. If the found-year flag is not set and the date-token matches the year - * production, set the found-year flag and set the year-value to the number - * denoted by the date-token. Skip the remaining sub-steps and continue to - * the next date-token. - */ - if (!found_year) { - result = YEAR.exec(token); - if (result) { - var year = result[0]; - /* From S5.1.1: - * 3. If the year-value is greater than or equal to 70 and less - * than or equal to 99, increment the year-value by 1900. - * 4. If the year-value is greater than or equal to 0 and less - * than or equal to 69, increment the year-value by 2000. - */ - if (70 <= year && year <= 99) - year += 1900; - else if (0 <= year && year <= 69) - year += 2000; - - if (year < 1601) - return; // 5. ... the year-value is less than 1601 - - found_year = true; - date.setUTCFullYear(year); - continue; - } - } - } - - if (!(found_time && found_dom && found_month && found_year)) { - return; // 5. ... at least one of the found-day-of-month, found-month, found- - // year, or found-time flags is not set, - } - - return date; -} - -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) return null; - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) - str = punycode.toASCII(str); - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) return null; - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) return true; - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) return false; - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) return false; // it's a non-match (-1) or prefix (0) - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) // it's not a suffix - return false; - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') return false; - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") return "/"; - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") return path; - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) return "/"; - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - -/* - * "A request-path path-matches a given cookie-path if at least one of the - * following conditions holds:" - */ -function pathMatch(reqPath,cookiePath) { - // "o The cookie-path and the request-path are identical." - if (cookiePath === reqPath) - return true; - - var idx = reqPath.indexOf(cookiePath); - if (idx === 0) { - // "o The cookie-path is a prefix of the request-path, and the last - // character of the cookie-path is %x2F ("/")." - if (cookiePath.substr(-1) === "/") - return true; - - // " o The cookie-path is a prefix of the request-path, and the first - // character of the request-path that is not included in the cookie- path - // is a %x2F ("/") character." - if (reqPath.substr(cookiePath.length,1) === "/") - return true; - } - - return false; -} - -function parse(str, strict) { - str = str.trim(); - - // S4.1.1 Trailing semi-colons are not part of the specification. - // If we are not in strict mode we remove the trailing semi-colons. - var semiColonCheck = TRAILING_SEMICOLON.exec(str); - if (semiColonCheck) { - if (strict) return; - str = str.slice(0, semiColonCheck.index); - } - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRx = strict ? COOKIE_PAIR_STRICT : COOKIE_PAIR; - var result = pairRx.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) return; - - var c = new Cookie(); - c.key = result[1]; // the regexp should trim() already - c.value = result[3]; // [2] is quotes or empty-string - - if (firstSemi === -1) return c; - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) return c; - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(/\s*;\s*/); - while (cookie_avs.length) { - var av = cookie_avs.shift(); - - if (strict && !EXTENSION_AV.test(av)) return; - - var av_sep = av.indexOf('='); - var av_key, av_value; - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - if (av_value) av_value = av_value.trim(); - - switch(av_key) { - case 'expires': // S5.2.1 - if (!av_value) { if(strict){return}else{break;} } - var exp = parseDate(av_value,strict); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp == null) { if(strict){return}else{break;} } - c.expires = exp; - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - break; - - case 'max-age': // S5.2.2 - if (!av_value) { if(strict){return}else{break;} } - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (!/^-?[0-9]+$/.test(av_value)) { if(strict){return}else{break;} } - var delta = parseInt(av_value,10); - if (strict && delta <= 0) return; // S4.1.1 - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (!av_value) { if(strict){return}else{break;} } - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./,''); - if (!domain) { if(strict){return}else{break;} } // see "is empty" above - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - if (!av_value || av_value.substr(0,1) != "/") { if(strict){return}else{break;} } - c.path = av_value; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - if (av_value != null) { if(strict){return} } - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - if (av_value != null) { if(strict){return} } - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - // ensure a default date for sorting: - c.creation = new Date(); - return c; -} - -function fromJSON(str) { - if (!str) return null; - - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return null; - } - - var c = new Cookie(); - for (var i=0; i<numCookieProperties; i++) { - var prop = cookieProperties[i]; - if (obj[prop] == null) continue; - if (prop === 'expires' || - prop === 'creation' || - prop === 'lastAccessed') - { - c[prop] = obj[prop] == "Infinity" ? "Infinity" : new Date(obj[prop]); - } else { - c[prop] = obj[prop]; - } - } - - - // ensure a default date for sorting: - c.creation = c.creation || new Date(); - - return c; -} - -/* Section 5.4 part 2: - * "* Cookies with longer paths are listed before cookies with - * shorter paths. - * - * * Among cookies that have equal-length path fields, cookies with - * earlier creation-times are listed before cookies with later - * creation-times." - */ - -function cookieCompare(a,b) { - // descending for length: b CMP a - var deltaLen = (b.path ? b.path.length : 0) - (a.path ? a.path.length : 0); - if (deltaLen !== 0) return deltaLen; - // ascending for time: a CMP b - return (a.creation ? a.creation.getTime() : MAX_TIME) - - (b.creation ? b.creation.getTime() : MAX_TIME); -} - -// Gives the permutation of all possible domainMatch()es of a given domain. The -// array is in shortest-to-longest order. Handy for indexing. -function permuteDomain(domain) { - var pubSuf = pubsuffix.getPublicSuffix(domain); - if (!pubSuf) return null; - if (pubSuf == domain) return [domain]; - - var prefix = domain.slice(0,-(pubSuf.length+1)); // ".example.com" - var parts = prefix.split('.').reverse(); - var cur = pubSuf; - var permutations = [cur]; - while (parts.length) { - cur = parts.shift()+'.'+cur; - permutations.push(cur); - } - return permutations; -} - -// Gives the permutation of all possible pathMatch()es of a given path. The -// array is in longest-to-shortest order. Handy for indexing. -function permutePath(path) { - var origPath = path; - if (path === '/') return ['/']; - if (path.lastIndexOf('/') === path.length-1) - path = path.substr(0,path.length-1); - var permutations = [path]; - while (path.length > 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) break; - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - - -function Cookie (opts) { - if (typeof opts !== "object") return; - Object.keys(opts).forEach(function (key) { - if (Cookie.prototype.hasOwnProperty(key)) { - this[key] = opts[key] || Cookie.prototype[key]; - } - }.bind(this)); -} - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set - -var cookieProperties = Object.freeze(Object.keys(Cookie.prototype).map(function(p) { - if (p instanceof Function) return; - return p; -})); -var numCookieProperties = cookieProperties.length; - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -Cookie.prototype.validate = function validate() { - if (!COOKIE_OCTETS.test(this.value)) - return false; - if (this.expires != Infinity && !(this.expires instanceof Date) && !parseDate(this.expires,true)) - return false; - if (this.maxAge != null && this.maxAge <= 0) - return false; // "Max-Age=" non-zero-digit *DIGIT - if (this.path != null && !PATH_VALUE.test(this.path)) - return false; - - var cdomain = this.cdomain(); - if (cdomain) { - if (cdomain.match(/\.$/)) - return false; // S4.1.2.3 suggests that this is bad. domainMatch() tests confirm this - var suffix = pubsuffix.getPublicSuffix(cdomain); - if (suffix == null) // it's a public suffix - return false; - } - return true; -}; - -Cookie.prototype.setExpires = function setExpires(exp) { - if (exp instanceof Date) this.expires = exp; - else this.expires = parseDate(exp) || "Infinity"; -}; - -Cookie.prototype.setMaxAge = function setMaxAge(age) { - if (age === Infinity || age === -Infinity) - this.maxAge = age.toString(); // so JSON.stringify() works - else - this.maxAge = age; -}; - -// gives Cookie header format -Cookie.prototype.cookieString = function cookieString() { - var val = this.value; - if (val == null) val = ''; - if (!val.length || COOKIE_OCTETS.test(val)) - return this.key+'='+val; - else - return this.key+'="'+val+'"'; -}; - -// gives Set-Cookie header format -Cookie.prototype.toString = function toString() { - var str = this.cookieString(); - - if (this.expires != Infinity) { - if (this.expires instanceof Date) - str += '; Expires='+formatDate(this.expires); - else - str += '; Expires='+this.expires; - } - - if (this.maxAge != null && this.maxAge != Infinity) - str += '; Max-Age='+this.maxAge; - - if (this.domain && !this.hostOnly) - str += '; Domain='+this.domain; - if (this.path) - str += '; Path='+this.path; - - if (this.secure) str += '; Secure'; - if (this.httpOnly) str += '; HttpOnly'; - if (this.extensions) { - this.extensions.forEach(function(ext) { - str += '; '+ext; - }); - } - - return str; -}; - -// TTL() partially replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -// S5.3 says to give the "latest representable date" for which we use Infinity -// For "expired" we use 0 -Cookie.prototype.TTL = function TTL(now) { - /* RFC6265 S4.1.2.2 If a cookie has both the Max-Age and the Expires - * attribute, the Max-Age attribute has precedence and controls the - * expiration date of the cookie. - * (Concurs with S5.3 step 3) - */ - if (this.maxAge != null) { - return this.maxAge<=0 ? 0 : this.maxAge*1000; - } - - var expires = this.expires; - if (expires != Infinity) { - if (!(expires instanceof Date)) { - expires = parseDate(expires) || Infinity; - } - - if (expires == Infinity) - return Infinity; - - return expires.getTime() - (now || Date.now()); - } - - return Infinity; -}; - -// expiryTime() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere) -Cookie.prototype.expiryTime = function expiryTime(now) { - if (this.maxAge != null) { - var relativeTo = this.creation || now || new Date(); - var age = (this.maxAge <= 0) ? -Infinity : this.maxAge*1000; - return relativeTo.getTime() + age; - } - - if (this.expires == Infinity) return Infinity; - return this.expires.getTime(); -}; - -// expiryDate() replaces the "expiry-time" parts of S5.3 step 3 (setCookie() -// elsewhere), except it returns a Date -Cookie.prototype.expiryDate = function expiryDate(now) { - var millisec = this.expiryTime(now); - if (millisec == Infinity) return new Date(MAX_TIME); - else if (millisec == -Infinity) return new Date(MIN_TIME); - else return new Date(millisec); -}; - -// This replaces the "persistent-flag" parts of S5.3 step 3 -Cookie.prototype.isPersistent = function isPersistent() { - return (this.maxAge != null || this.expires != Infinity); -}; - -// Mostly S5.1.2 and S5.2.3: -Cookie.prototype.cdomain = -Cookie.prototype.canonicalizedDomain = function canonicalizedDomain() { - if (this.domain == null) return null; - return canonicalDomain(this.domain); -}; - - -var memstore; -function CookieJar(store, rejectPublicSuffixes) { - if (rejectPublicSuffixes != null) this.rejectPublicSuffixes = rejectPublicSuffixes; - if (!store) { - memstore = memstore || require('./memstore'); - store = new memstore.MemoryCookieStore(); - } - this.store = store; -} -CookieJar.prototype.store = null; -CookieJar.prototype.rejectPublicSuffixes = true; - -CookieJar.prototype.setCookie = function setCookie(cookie, url, options, cb) { - var err; - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - - // S5.3 step 1 - if (!(cookie instanceof Cookie)) - cookie = Cookie.parse(cookie, options.strict === true); - if (!cookie) { - err = new Error("Cookie failed to parse"); - return cb(options.ignoreError ? null : err); - } - - // S5.3 step 2 - var now = options.now || new Date(); // will assign later to save effort in the face of errors - - // S5.3 step 3: NOOP; persistent-flag and expiry-time is handled by getCookie() - - // S5.3 step 4: NOOP; domain is null by default - - // S5.3 step 5: public suffixes - if (this.rejectPublicSuffixes && cookie.domain) { - var suffix = pubsuffix.getPublicSuffix(cookie.cdomain()); - if (suffix == null) { // e.g. "com" - err = new Error("Cookie has domain set to a public suffix"); - return cb(options.ignoreError ? null : err); - } - } - - // S5.3 step 6: - if (cookie.domain) { - if (!domainMatch(host, cookie.cdomain(), false)) { - err = new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host); - return cb(options.ignoreError ? null : err); - } - - if (cookie.hostOnly == null) // don't reset if already set - cookie.hostOnly = false; - - } else { - cookie.hostOnly = true; - cookie.domain = host; - } - - // S5.3 step 7: "Otherwise, set the cookie's path to the default-path of the - // request-uri" - if (!cookie.path) { - cookie.path = defaultPath(context.pathname); - cookie.pathIsDefault = true; - } else { - if (cookie.path.length > 1 && cookie.path.substr(-1) == '/') - cookie.path = cookie.path.slice(0,-1); - } - - // S5.3 step 8: NOOP; secure attribute - // S5.3 step 9: NOOP; httpOnly attribute - - // S5.3 step 10 - if (options.http === false && cookie.httpOnly) { - err = new Error("Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - - var store = this.store; - - if (!store.updateCookie) { - store.updateCookie = function stubUpdateCookie(oldCookie, newCookie, cb) { - this.putCookie(newCookie, cb); - }; - } - - store.findCookie(cookie.domain, cookie.path, cookie.key, function(err,oldCookie) { - if (err) return cb(err); - - var next = function(err) { - if (err) return cb(err); - else cb(null, cookie); - }; - - if (oldCookie) { - // S5.3 step 11 - "If the cookie store contains a cookie with the same name, - // domain, and path as the newly created cookie:" - if (options.http === false && oldCookie.httpOnly) { // step 11.2 - err = new Error("old Cookie is HttpOnly and this isn't an HTTP API"); - return cb(options.ignoreError ? null : err); - } - cookie.creation = oldCookie.creation; // step 11.3 - cookie.lastAccessed = now; - // Step 11.4 (delete cookie) is implied by just setting the new one: - store.updateCookie(oldCookie, cookie, next); // step 12 - - } else { - cookie.creation = cookie.lastAccessed = now; - store.putCookie(cookie, next); // step 12 - } - }); -}; - -// RFC6365 S5.4 -CookieJar.prototype.getCookies = function getCookies(url, options, cb) { - var context = (url instanceof Object) ? url : urlParse(url); - if (options instanceof Function) { - cb = options; - options = {}; - } - - var host = canonicalDomain(context.hostname); - var path = context.pathname || '/'; - - var secure = options.secure; - if (secure == null && context.protocol && - (context.protocol == 'https:' || context.protocol == 'wss:')) - { - secure = true; - } - - var http = options.http; - if (http == null) http = true; - - var now = options.now || Date.now(); - var expireCheck = options.expire !== false; - var allPaths = !!options.allPaths; - var store = this.store; - - function matchingCookie(c) { - // "Either: - // The cookie's host-only-flag is true and the canonicalized - // request-host is identical to the cookie's domain. - // Or: - // The cookie's host-only-flag is false and the canonicalized - // request-host domain-matches the cookie's domain." - if (c.hostOnly) { - if (c.domain != host) return false; - } else { - if (!domainMatch(host, c.domain, false)) return false; - } - - // "The request-uri's path path-matches the cookie's path." - if (!allPaths && !pathMatch(path, c.path)) - return false; - - // "If the cookie's secure-only-flag is true, then the request-uri's - // scheme must denote a "secure" protocol" - if (c.secure && !secure) - return false; - - // "If the cookie's http-only-flag is true, then exclude the cookie if the - // cookie-string is being generated for a "non-HTTP" API" - if (c.httpOnly && !http) - return false; - - // deferred from S5.3 - // non-RFC: allow retention of expired cookies by choice - if (expireCheck && c.expiryTime() <= now) { - store.removeCookie(c.domain, c.path, c.key, function(){}); // result ignored - return false; - } - - return true; - } - - store.findCookies(host, allPaths ? null : path, function(err,cookies) { - if (err) return cb(err); - - cookies = cookies.filter(matchingCookie); - - // sorting of S5.4 part 2 - if (options.sort !== false) - cookies = cookies.sort(cookieCompare); - - // S5.4 part 3 - var now = new Date(); - cookies.forEach(function(c) { c.lastAccessed = now }); - // TODO persist lastAccessed - - cb(null,cookies); - }); -}; - -CookieJar.prototype.getCookieString = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) cb(err); - else cb(null, cookies.map(function(c){return c.cookieString()}).join('; ')); - }; - args.push(next); - this.getCookies.apply(this,args); -}; - -CookieJar.prototype.getSetCookieStrings = function(/*..., cb*/) { - var args = Array.prototype.slice.call(arguments,0); - var cb = args.pop(); - var next = function(err,cookies) { - if (err) cb(err); - else cb(null, cookies.map(function(c){return c.toString()})); - }; - args.push(next); - this.getCookies.apply(this,args); -}; - - - -module.exports = { - CookieJar: CookieJar, - Cookie: Cookie, - parseDate: parseDate, - formatDate: formatDate, - parse: parse, - fromJSON: fromJSON, - domainMatch: domainMatch, - defaultPath: defaultPath, - pathMatch: pathMatch, - getPublicSuffix: pubsuffix.getPublicSuffix, - cookieCompare: cookieCompare, - permuteDomain: permuteDomain, - permutePath: permutePath, - canonicalDomain: canonicalDomain, -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js deleted file mode 100644 index 66abb376..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/memstore.js +++ /dev/null @@ -1,102 +0,0 @@ -var tough = require('./cookie'); -var permuteDomain = tough.permuteDomain; -var permutePath = tough.permutePath; -var util = require('util'); - -function MemoryCookieStore() { - this.idx = {}; -} -module.exports.MemoryCookieStore = MemoryCookieStore; -MemoryCookieStore.prototype.idx = null; - -// force a default depth: -MemoryCookieStore.prototype.inspect = function inspect() { - return "{ idx: "+util.inspect(this.idx, false, 2)+' }'; -}; - -MemoryCookieStore.prototype.findCookie = function findCookie(domain, path, key, cb) { - if (!this.idx[domain]) return cb(null,undefined); - if (!this.idx[domain][path]) return cb(null,undefined); - return cb(null,this.idx[domain][path][key]||null); -}; - -MemoryCookieStore.prototype.findCookies = function findCookies(domain, path, cb) { - var results = []; - if (!domain) return cb(null,[]); - - var pathMatcher; - if (!path) { - // null or '/' means "all paths" - pathMatcher = function matchAll(domainIndex) { - for (var curPath in domainIndex) { - var pathIndex = domainIndex[curPath]; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - } - }; - - } else if (path === '/') { - pathMatcher = function matchSlash(domainIndex) { - var pathIndex = domainIndex['/']; - if (!pathIndex) return; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }; - - } else { - var paths = permutePath(path) || [path]; - pathMatcher = function matchRFC(domainIndex) { - paths.forEach(function(curPath) { - var pathIndex = domainIndex[curPath]; - if (!pathIndex) return; - for (var key in pathIndex) { - results.push(pathIndex[key]); - } - }); - }; - } - - var domains = permuteDomain(domain) || [domain]; - var idx = this.idx; - domains.forEach(function(curDomain) { - var domainIndex = idx[curDomain]; - if (!domainIndex) return; - pathMatcher(domainIndex); - }); - - cb(null,results); -}; - -MemoryCookieStore.prototype.putCookie = function putCookie(cookie, cb) { - if (!this.idx[cookie.domain]) this.idx[cookie.domain] = {}; - if (!this.idx[cookie.domain][cookie.path]) this.idx[cookie.domain][cookie.path] = {}; - this.idx[cookie.domain][cookie.path][cookie.key] = cookie; - cb(null); -}; - -MemoryCookieStore.prototype.updateCookie = function updateCookie(oldCookie, newCookie, cb) { - // updateCookie() may avoid updating cookies that are identical. For example, - // lastAccessed may not be important to some stores and an equality - // comparison could exclude that field. - this.putCookie(newCookie,cb); -}; - -MemoryCookieStore.prototype.removeCookie = function removeCookie(domain, path, key, cb) { - if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) { - delete this.idx[domain][path][key]; - } - cb(null); -}; - -MemoryCookieStore.prototype.removeCookies = function removeCookies(domain, path, cb) { - if (!this.idx[domain]) { - if (path) { - delete this.idx[domain][path]; - } else { - delete this.idx[domain]; - } - } - return cb(null); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js deleted file mode 100644 index a7031473..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************** - * AUTOMATICALLY GENERATED by generate-pubsuffix.js * - * DO NOT EDIT! * - ****************************************************/ - -module.exports.getPublicSuffix = function getPublicSuffix(domain) { - /* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - if (!domain) return null; - if (domain.match(/^\./)) return null; - - domain = domain.toLowerCase(); - var parts = domain.split('.').reverse(); - - var suffix = ''; - var suffixLen = 0; - for (var i=0; i<parts.length; i++) { - var part = parts[i]; - var starstr = '*'+suffix; - var partstr = part+suffix; - - if (index[starstr]) { // star rule matches - suffixLen = i+1; - if (index[partstr] === false) { // exception rule matches (NB: false, not undefined) - suffixLen--; - } - } else if (index[partstr]) { // exact match, not exception - suffixLen = i+1; - } - - suffix = '.'+part+suffix; - } - - if (index['*'+suffix]) { // *.domain exists (e.g. *.kyoto.jp for domain='kyoto.jp'); - return null; - } - - if (suffixLen && parts.length > suffixLen) { - return parts.slice(0,suffixLen+1).reverse().join('.'); - } - - return null; -}; - -// The following generated structure is used under the MPL version 1.1 -// See public-suffix.txt for more information - -var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"*.ar":true,"congresodelalengua3.ar":false,"educ.ar":false,"gobiernoelectronico.ar":false,"mecon.ar":false,"nacion.ar":false,"nic.ar":false,"promocion.ar":false,"retina.ar":false,"uba.ar":false,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"csiro.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"act.gov.au":true,"nt.gov.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"can.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mus.br":true,"net.br":true,"nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"gov.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cx":true,"gov.cx":true,"*.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"*.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"org.gg":true,"net.gg":true,"sch.gg":true,"gov.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"gm":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"*.gt":true,"www.gt":false,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"co.id":true,"go.id":true,"mil.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"*.il":true,"im":true,"co.im":true,"ltd.co.im":true,"plc.co.im":true,"net.im":true,"gov.im":true,"org.im":true,"nic.im":true,"ac.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"agrigento.it":true,"ag.it":true,"alessandria.it":true,"al.it":true,"ancona.it":true,"an.it":true,"aosta.it":true,"aoste.it":true,"ao.it":true,"arezzo.it":true,"ar.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"ap.it":true,"asti.it":true,"at.it":true,"avellino.it":true,"av.it":true,"bari.it":true,"ba.it":true,"andria-barletta-trani.it":true,"andriabarlettatrani.it":true,"trani-barletta-andria.it":true,"tranibarlettaandria.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"andria-trani-barletta.it":true,"andriatranibarletta.it":true,"trani-andria-barletta.it":true,"traniandriabarletta.it":true,"bt.it":true,"belluno.it":true,"bl.it":true,"benevento.it":true,"bn.it":true,"bergamo.it":true,"bg.it":true,"biella.it":true,"bi.it":true,"bologna.it":true,"bo.it":true,"bolzano.it":true,"bozen.it":true,"balsan.it":true,"alto-adige.it":true,"altoadige.it":true,"suedtirol.it":true,"bz.it":true,"brescia.it":true,"bs.it":true,"brindisi.it":true,"br.it":true,"cagliari.it":true,"ca.it":true,"caltanissetta.it":true,"cl.it":true,"campobasso.it":true,"cb.it":true,"carboniaiglesias.it":true,"carbonia-iglesias.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"ci.it":true,"caserta.it":true,"ce.it":true,"catania.it":true,"ct.it":true,"catanzaro.it":true,"cz.it":true,"chieti.it":true,"ch.it":true,"como.it":true,"co.it":true,"cosenza.it":true,"cs.it":true,"cremona.it":true,"cr.it":true,"crotone.it":true,"kr.it":true,"cuneo.it":true,"cn.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"ogliastra.it":true,"og.it":true,"enna.it":true,"en.it":true,"ferrara.it":true,"fe.it":true,"fermo.it":true,"fm.it":true,"firenze.it":true,"florence.it":true,"fi.it":true,"foggia.it":true,"fg.it":true,"forli-cesena.it":true,"forlicesena.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"fc.it":true,"frosinone.it":true,"fr.it":true,"genova.it":true,"genoa.it":true,"ge.it":true,"gorizia.it":true,"go.it":true,"grosseto.it":true,"gr.it":true,"imperia.it":true,"im.it":true,"isernia.it":true,"is.it":true,"laquila.it":true,"aquila.it":true,"aq.it":true,"la-spezia.it":true,"laspezia.it":true,"sp.it":true,"latina.it":true,"lt.it":true,"lecce.it":true,"le.it":true,"lecco.it":true,"lc.it":true,"livorno.it":true,"li.it":true,"lodi.it":true,"lo.it":true,"lucca.it":true,"lu.it":true,"macerata.it":true,"mc.it":true,"mantova.it":true,"mn.it":true,"massa-carrara.it":true,"massacarrara.it":true,"carrara-massa.it":true,"carraramassa.it":true,"ms.it":true,"matera.it":true,"mt.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"vs.it":true,"messina.it":true,"me.it":true,"milano.it":true,"milan.it":true,"mi.it":true,"modena.it":true,"mo.it":true,"monza.it":true,"monza-brianza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"monza-e-della-brianza.it":true,"mb.it":true,"napoli.it":true,"naples.it":true,"na.it":true,"novara.it":true,"no.it":true,"nuoro.it":true,"nu.it":true,"oristano.it":true,"or.it":true,"padova.it":true,"padua.it":true,"pd.it":true,"palermo.it":true,"pa.it":true,"parma.it":true,"pr.it":true,"pavia.it":true,"pv.it":true,"perugia.it":true,"pg.it":true,"pescara.it":true,"pe.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"pu.it":true,"piacenza.it":true,"pc.it":true,"pisa.it":true,"pi.it":true,"pistoia.it":true,"pt.it":true,"pordenone.it":true,"pn.it":true,"potenza.it":true,"pz.it":true,"prato.it":true,"po.it":true,"ragusa.it":true,"rg.it":true,"ravenna.it":true,"ra.it":true,"reggio-calabria.it":true,"reggiocalabria.it":true,"rc.it":true,"reggio-emilia.it":true,"reggioemilia.it":true,"re.it":true,"rieti.it":true,"ri.it":true,"rimini.it":true,"rn.it":true,"roma.it":true,"rome.it":true,"rm.it":true,"rovigo.it":true,"ro.it":true,"salerno.it":true,"sa.it":true,"sassari.it":true,"ss.it":true,"savona.it":true,"sv.it":true,"siena.it":true,"si.it":true,"siracusa.it":true,"sr.it":true,"sondrio.it":true,"so.it":true,"taranto.it":true,"ta.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"ot.it":true,"teramo.it":true,"te.it":true,"terni.it":true,"tr.it":true,"torino.it":true,"turin.it":true,"to.it":true,"trapani.it":true,"tp.it":true,"trento.it":true,"trentino.it":true,"tn.it":true,"treviso.it":true,"tv.it":true,"trieste.it":true,"ts.it":true,"udine.it":true,"ud.it":true,"varese.it":true,"va.it":true,"venezia.it":true,"venice.it":true,"ve.it":true,"verbania.it":true,"vb.it":true,"vercelli.it":true,"vc.it":true,"verona.it":true,"vr.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vv.it":true,"vicenza.it":true,"vi.it":true,"viterbo.it":true,"vt.it":true,"je":true,"co.je":true,"org.je":true,"net.je":true,"sch.je":true,"gov.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"*.aichi.jp":true,"*.akita.jp":true,"*.aomori.jp":true,"*.chiba.jp":true,"*.ehime.jp":true,"*.fukui.jp":true,"*.fukuoka.jp":true,"*.fukushima.jp":true,"*.gifu.jp":true,"*.gunma.jp":true,"*.hiroshima.jp":true,"*.hokkaido.jp":true,"*.hyogo.jp":true,"*.ibaraki.jp":true,"*.ishikawa.jp":true,"*.iwate.jp":true,"*.kagawa.jp":true,"*.kagoshima.jp":true,"*.kanagawa.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.kochi.jp":true,"*.kumamoto.jp":true,"*.kyoto.jp":true,"*.mie.jp":true,"*.miyagi.jp":true,"*.miyazaki.jp":true,"*.nagano.jp":true,"*.nagasaki.jp":true,"*.nagoya.jp":true,"*.nara.jp":true,"*.niigata.jp":true,"*.oita.jp":true,"*.okayama.jp":true,"*.okinawa.jp":true,"*.osaka.jp":true,"*.saga.jp":true,"*.saitama.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.shiga.jp":true,"*.shimane.jp":true,"*.shizuoka.jp":true,"*.tochigi.jp":true,"*.tokushima.jp":true,"*.tokyo.jp":true,"*.tottori.jp":true,"*.toyama.jp":true,"*.wakayama.jp":true,"*.yamagata.jp":true,"*.yamaguchi.jp":true,"*.yamanashi.jp":true,"*.yokohama.jp":true,"metro.tokyo.jp":false,"pref.aichi.jp":false,"pref.akita.jp":false,"pref.aomori.jp":false,"pref.chiba.jp":false,"pref.ehime.jp":false,"pref.fukui.jp":false,"pref.fukuoka.jp":false,"pref.fukushima.jp":false,"pref.gifu.jp":false,"pref.gunma.jp":false,"pref.hiroshima.jp":false,"pref.hokkaido.jp":false,"pref.hyogo.jp":false,"pref.ibaraki.jp":false,"pref.ishikawa.jp":false,"pref.iwate.jp":false,"pref.kagawa.jp":false,"pref.kagoshima.jp":false,"pref.kanagawa.jp":false,"pref.kochi.jp":false,"pref.kumamoto.jp":false,"pref.kyoto.jp":false,"pref.mie.jp":false,"pref.miyagi.jp":false,"pref.miyazaki.jp":false,"pref.nagano.jp":false,"pref.nagasaki.jp":false,"pref.nara.jp":false,"pref.niigata.jp":false,"pref.oita.jp":false,"pref.okayama.jp":false,"pref.okinawa.jp":false,"pref.osaka.jp":false,"pref.saga.jp":false,"pref.saitama.jp":false,"pref.shiga.jp":false,"pref.shimane.jp":false,"pref.shizuoka.jp":false,"pref.tochigi.jp":false,"pref.tokushima.jp":false,"pref.tottori.jp":false,"pref.toyama.jp":false,"pref.wakayama.jp":false,"pref.yamagata.jp":false,"pref.yamaguchi.jp":false,"pref.yamanashi.jp":false,"city.chiba.jp":false,"city.fukuoka.jp":false,"city.hiroshima.jp":false,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.kyoto.jp":false,"city.nagoya.jp":false,"city.niigata.jp":false,"city.okayama.jp":false,"city.osaka.jp":false,"city.saitama.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.shizuoka.jp":false,"city.yokohama.jp":false,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"*.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ac.ng":true,"com.ng":true,"edu.ng":true,"gov.ng":true,"net.ng":true,"org.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"*.nz":true,"*.om":true,"mediaphone.om":false,"nawrastelecom.om":false,"nawras.om":false,"omanmobile.om":false,"omanpost.om":false,"omantel.om":false,"rakpetroleum.om":false,"siemens.om":false,"songfest.om":false,"statecouncil.om":false,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"com.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"net.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"org.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"6bone.pl":true,"art.pl":true,"mbone.pl":true,"gov.pl":true,"uw.gov.pl":true,"um.gov.pl":true,"ug.gov.pl":true,"upow.gov.pl":true,"starostwo.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"po.gov.pl":true,"pa.gov.pl":true,"ngo.pl":true,"irc.pl":true,"usenet.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"siedlce.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"*.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"mosreg.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"pskov.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"sshn.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"si":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"*.sv":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"*.tr":true,"nic.tr":false,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"ac.tz":true,"co.tz":true,"go.tz":true,"mil.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"chernigov.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"ks.ua":true,"kv.ua":true,"lg.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lviv.ua":true,"mk.ua":true,"nikolaev.ua":true,"od.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rovno.ua":true,"rv.ua":true,"sebastopol.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vn.ua":true,"zaporizhzhe.ua":true,"zp.ua":true,"zhitomir.ua":true,"zt.ua":true,"co.ua":true,"pp.ua":true,"ug":true,"co.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"or.ug":true,"*.uk":true,"*.sch.uk":true,"bl.uk":false,"british-library.uk":false,"icnet.uk":false,"jet.uk":false,"mod.uk":false,"nel.uk":false,"nhs.uk":false,"nic.uk":false,"nls.uk":false,"national-library-scotland.uk":false,"parliament.uk":false,"police.uk":false,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.nd.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.sd.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wv.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wv.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"*.uy":true,"uz":true,"com.uz":true,"co.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"*.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--54b7fta0cc":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--mgb9awbf":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"*.za":true,"*.zm":true,"*.zw":true,"biz.at":true,"info.at":true,"priv.at":true,"co.ca":true,"ar.com":true,"br.com":true,"cn.com":true,"de.com":true,"eu.com":true,"gb.com":true,"gr.com":true,"hu.com":true,"jpn.com":true,"kr.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"uk.com":true,"us.com":true,"uy.com":true,"za.com":true,"gb.net":true,"jp.net":true,"se.net":true,"uk.net":true,"ae.org":true,"us.org":true,"com.de":true,"operaunite.com":true,"appspot.com":true,"iki.fi":true,"c.la":true,"za.net":true,"za.org":true,"co.nl":true,"co.no":true,"co.pl":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true}); - -// END of automatically generated file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt deleted file mode 100644 index 11dddd00..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-GPL.txt +++ /dev/null @@ -1,278 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt deleted file mode 100644 index 97067e54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Mathias Bynens <http://mathiasbynens.be/> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md deleted file mode 100644 index 6dae5c4a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js) - -A robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms. - -This JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm: - -* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C) -* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c) -* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c) -* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287) -* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072)) - -This project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc). - -## Installation - -Via [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2): - -```bash -npm install punycode -``` - -Via [Bower](http://bower.io/): - -```bash -bower install punycode -``` - -Via [Component](https://github.com/component/component): - -```bash -component install bestiejs/punycode.js -``` - -In a browser: - -```html -<script src="punycode.js"></script> -``` - -In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): - -```js -var punycode = require('punycode'); -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('punycode.js'); -``` - -Using an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require( - { - 'paths': { - 'punycode': 'path/to/punycode' - } - }, - ['punycode'], - function(punycode) { - console.log(punycode); - } -); -``` - -## API - -### `punycode.decode(string)` - -Converts a Punycode string of ASCII symbols to a string of Unicode symbols. - -```js -// decode domain name parts -punycode.decode('maana-pta'); // 'mañana' -punycode.decode('--dqo34k'); // '☃-⌘' -``` - -### `punycode.encode(string)` - -Converts a string of Unicode symbols to a Punycode string of ASCII symbols. - -```js -// encode domain name parts -punycode.encode('mañana'); // 'maana-pta' -punycode.encode('☃-⌘'); // '--dqo34k' -``` - -### `punycode.toUnicode(domain)` - -Converts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. - -```js -// decode domain names -punycode.toUnicode('xn--maana-pta.com'); // 'mañana.com' -punycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com' -``` - -### `punycode.toASCII(domain)` - -Converts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. - -```js -// encode domain names -punycode.toASCII('mañana.com'); // 'xn--maana-pta.com' -punycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com' -``` - -### `punycode.ucs2` - -#### `punycode.ucs2.decode(string)` - -Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. - -```js -punycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63] -// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: -punycode.ucs2.decode('\uD834\uDF06'); // [0x1D306] -``` - -#### `punycode.ucs2.encode(codePoints)` - -Creates a string based on an array of numeric code point values. - -```js -punycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc' -punycode.ucs2.encode([0x1D306]); // '\uD834\uDF06' -``` - -### `punycode.version` - -A string representing the current Punycode.js version number. - -[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme) - -## Unit tests & code coverage - -After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. - -Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. - -To generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`. - -Feel free to fork if you see possible improvements! - -## Author - -| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias "Follow @mathias on Twitter") | -|---| -| [Mathias Bynens](http://mathiasbynens.be/) | - -## Contributors - -| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## License - -Punycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json deleted file mode 100644 index 35237574..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "punycode", - "version": "1.2.4", - "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", - "homepage": "http://mths.be/punycode", - "main": "punycode.js", - "keywords": [ - "punycode", - "unicode", - "idn", - "idna", - "dns", - "url", - "domain" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://mths.be/mit" - }, - { - "type": "GPL", - "url": "http://mths.be/gpl" - } - ], - "author": { - "name": "Mathias Bynens", - "email": "mathias@qiwi.be", - "url": "http://mathiasbynens.be/" - }, - "contributors": [ - { - "name": "Mathias Bynens", - "email": "mathias@qiwi.be", - "url": "http://mathiasbynens.be/" - }, - { - "name": "John-David Dalton", - "email": "john.david.dalton@gmail.com", - "url": "http://allyoucanleet.com/" - } - ], - "bugs": { - "url": "https://github.com/bestiejs/punycode.js/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/bestiejs/punycode.js.git" - }, - "engines": [ - "node", - "rhino" - ], - "directories": { - "doc": "docs", - "test": "tests" - }, - "scripts": { - "test": "node tests/tests.js" - }, - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-uglify": "~0.2.2", - "grunt-shell": "~0.6.4", - "istanbul": "~0.2.4", - "qunit-clib": "~1.3.0", - "qunitjs": "~1.11.0", - "requirejs": "~2.1.6" - }, - "readme": "# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.png?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.png)](https://gemnasium.com/bestiejs/punycode.js)\n\nA robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms.\n\nThis JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:\n\n* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C)\n* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)\n* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)\n* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)\n* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))\n\nThis project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc).\n\n## Installation\n\nVia [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2):\n\n```bash\nnpm install punycode\n```\n\nVia [Bower](http://bower.io/):\n\n```bash\nbower install punycode\n```\n\nVia [Component](https://github.com/component/component):\n\n```bash\ncomponent install bestiejs/punycode.js\n```\n\nIn a browser:\n\n```html\n<script src=\"punycode.js\"></script>\n```\n\nIn [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):\n\n```js\nvar punycode = require('punycode');\n```\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload('punycode.js');\n```\n\nUsing an AMD loader like [RequireJS](http://requirejs.org/):\n\n```js\nrequire(\n {\n 'paths': {\n 'punycode': 'path/to/punycode'\n }\n },\n ['punycode'],\n function(punycode) {\n console.log(punycode);\n }\n);\n```\n\n## API\n\n### `punycode.decode(string)`\n\nConverts a Punycode string of ASCII symbols to a string of Unicode symbols.\n\n```js\n// decode domain name parts\npunycode.decode('maana-pta'); // 'mañana'\npunycode.decode('--dqo34k'); // '☃-⌘'\n```\n\n### `punycode.encode(string)`\n\nConverts a string of Unicode symbols to a Punycode string of ASCII symbols.\n\n```js\n// encode domain name parts\npunycode.encode('mañana'); // 'maana-pta'\npunycode.encode('☃-⌘'); // '--dqo34k'\n```\n\n### `punycode.toUnicode(domain)`\n\nConverts a Punycode string representing a domain name to Unicode. Only the Punycoded parts of the domain name will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.\n\n```js\n// decode domain names\npunycode.toUnicode('xn--maana-pta.com'); // 'mañana.com'\npunycode.toUnicode('xn----dqo34k.com'); // '☃-⌘.com'\n```\n\n### `punycode.toASCII(domain)`\n\nConverts a Unicode string representing a domain name to Punycode. Only the non-ASCII parts of the domain name will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII.\n\n```js\n// encode domain names\npunycode.toASCII('mañana.com'); // 'xn--maana-pta.com'\npunycode.toASCII('☃-⌘.com'); // 'xn----dqo34k.com'\n```\n\n### `punycode.ucs2`\n\n#### `punycode.ucs2.decode(string)`\n\nCreates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](http://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.\n\n```js\npunycode.ucs2.decode('abc'); // [0x61, 0x62, 0x63]\n// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:\npunycode.ucs2.decode('\\uD834\\uDF06'); // [0x1D306]\n```\n\n#### `punycode.ucs2.encode(codePoints)`\n\nCreates a string based on an array of numeric code point values.\n\n```js\npunycode.ucs2.encode([0x61, 0x62, 0x63]); // 'abc'\npunycode.ucs2.encode([0x1D306]); // '\\uD834\\uDF06'\n```\n\n### `punycode.version`\n\nA string representing the current Punycode.js version number.\n\n[Full API documentation is available.](https://github.com/bestiejs/punycode.js/tree/master/docs#readme)\n\n## Unit tests & code coverage\n\nAfter cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.\n\nOnce that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`.\n\nTo generate [the code coverage report](http://rawgithub.com/bestiejs/punycode.js/master/coverage/punycode.js/punycode.js.html), use `grunt cover`.\n\nFeel free to fork if you see possible improvements!\n\n## Author\n\n| [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](http://twitter.com/mathias \"Follow @mathias on Twitter\") |\n|---|\n| [Mathias Bynens](http://mathiasbynens.be/) |\n\n## Contributors\n\n| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](http://twitter.com/jdalton \"Follow @jdalton on Twitter\") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## License\n\nPunycode.js is dual licensed under the [MIT](http://mths.be/mit) and [GPL](http://mths.be/gpl) licenses.\n", - "readmeFilename": "README.md", - "_id": "punycode@1.2.4", - "_from": "punycode@>=0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js deleted file mode 100644 index d5b9bc21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js +++ /dev/null @@ -1,507 +0,0 @@ -/*! http://mths.be/punycode v1.2.4 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports; - var freeModule = typeof module == 'object' && module && - module.exports == freeExports && module; - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /\x2E|\u3002|\uFF0E|\uFF61/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - while (length--) { - array[length] = fn(array[length]); - } - return array; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings. - * @private - * @param {String} domain The domain name. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - return map(string.split(regexSeparators), fn).join('.'); - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see <http://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols to a Punycode string of ASCII-only - * symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name to Unicode. Only the - * Punycoded parts of the domain name will be converted, i.e. it doesn't - * matter if you call it on a string that has already been converted to - * Unicode. - * @memberOf punycode - * @param {String} domain The Punycode domain name to convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(domain) { - return mapDomain(domain, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name to Punycode. Only the - * non-ASCII parts of the domain name will be converted, i.e. it doesn't - * matter if you call it with a domain that's already in ASCII. - * @memberOf punycode - * @param {String} domain The domain name to convert, as a Unicode string. - * @returns {String} The Punycode representation of the given domain name. - */ - function toASCII(domain) { - return mapDomain(domain, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.2.4', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see <http://mathiasbynens.be/notes/javascript-encoding> - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && !freeExports.nodeType) { - if (freeModule) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js deleted file mode 100644 index 24c8af24..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! http://mths.be/punycode v1.2.4 by @mathias */ -!function(a){function b(a){throw RangeError(E[a])}function c(a,b){for(var c=a.length;c--;)a[c]=b(a[c]);return a}function d(a,b){return c(a.split(D),b).join(".")}function e(a){for(var b,c,d=[],e=0,f=a.length;f>e;)b=a.charCodeAt(e++),b>=55296&&56319>=b&&f>e?(c=a.charCodeAt(e++),56320==(64512&c)?d.push(((1023&b)<<10)+(1023&c)+65536):(d.push(b),e--)):d.push(b);return d}function f(a){return c(a,function(a){var b="";return a>65535&&(a-=65536,b+=H(a>>>10&1023|55296),a=56320|1023&a),b+=H(a)}).join("")}function g(a){return 10>a-48?a-22:26>a-65?a-65:26>a-97?a-97:t}function h(a,b){return a+22+75*(26>a)-((0!=b)<<5)}function i(a,b,c){var d=0;for(a=c?G(a/x):a>>1,a+=G(a/b);a>F*v>>1;d+=t)a=G(a/F);return G(d+(F+1)*a/(a+w))}function j(a){var c,d,e,h,j,k,l,m,n,o,p=[],q=a.length,r=0,w=z,x=y;for(d=a.lastIndexOf(A),0>d&&(d=0),e=0;d>e;++e)a.charCodeAt(e)>=128&&b("not-basic"),p.push(a.charCodeAt(e));for(h=d>0?d+1:0;q>h;){for(j=r,k=1,l=t;h>=q&&b("invalid-input"),m=g(a.charCodeAt(h++)),(m>=t||m>G((s-r)/k))&&b("overflow"),r+=m*k,n=x>=l?u:l>=x+v?v:l-x,!(n>m);l+=t)o=t-n,k>G(s/o)&&b("overflow"),k*=o;c=p.length+1,x=i(r-j,c,0==j),G(r/c)>s-w&&b("overflow"),w+=G(r/c),r%=c,p.splice(r++,0,w)}return f(p)}function k(a){var c,d,f,g,j,k,l,m,n,o,p,q,r,w,x,B=[];for(a=e(a),q=a.length,c=z,d=0,j=y,k=0;q>k;++k)p=a[k],128>p&&B.push(H(p));for(f=g=B.length,g&&B.push(A);q>f;){for(l=s,k=0;q>k;++k)p=a[k],p>=c&&l>p&&(l=p);for(r=f+1,l-c>G((s-d)/r)&&b("overflow"),d+=(l-c)*r,c=l,k=0;q>k;++k)if(p=a[k],c>p&&++d>s&&b("overflow"),p==c){for(m=d,n=t;o=j>=n?u:n>=j+v?v:n-j,!(o>m);n+=t)x=m-o,w=t-o,B.push(H(h(o+x%w,0))),m=G(x/w);B.push(H(h(m,0))),j=i(d,r,f==g),d=0,++f}++d,++c}return B.join("")}function l(a){return d(a,function(a){return B.test(a)?j(a.slice(4).toLowerCase()):a})}function m(a){return d(a,function(a){return C.test(a)?"xn--"+k(a):a})}var n="object"==typeof exports&&exports,o="object"==typeof module&&module&&module.exports==n&&module,p="object"==typeof global&&global;(p.global===p||p.window===p)&&(a=p);var q,r,s=2147483647,t=36,u=1,v=26,w=38,x=700,y=72,z=128,A="-",B=/^xn--/,C=/[^ -~]/,D=/\x2E|\u3002|\uFF0E|\uFF61/g,E={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=t-u,G=Math.floor,H=String.fromCharCode;if(q={version:"1.2.4",ucs2:{decode:e,encode:f},decode:j,encode:k,toASCII:m,toUnicode:l},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return q});else if(n&&!n.nodeType)if(o)o.exports=q;else for(r in q)q.hasOwnProperty(r)&&(n[r]=q[r]);else a.punycode=q}(this); \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json deleted file mode 100644 index e91645aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "author": { - "name": "Jeremy Stashewsky", - "email": "jeremy@goinstant.com", - "url": "https://github.com/stash" - }, - "name": "tough-cookie", - "description": "RFC6265 Cookies and Cookie Jar for node.js", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "version": "0.9.15", - "homepage": "https://github.com/goinstant/node-cookie", - "repository": { - "type": "git", - "url": "git://github.com/goinstant/node-cookie.git" - }, - "bugs": { - "url": "https://github.com/goinstant/node-cookie/issues" - }, - "main": "./lib/cookie", - "scripts": { - "test": "vows test.js" - }, - "engines": { - "node": ">=0.4.12" - }, - "dependencies": { - "punycode": ">=0.2.0" - }, - "devDependencies": { - "vows": ">=0.6.0", - "async": ">=0.1.12" - }, - "readme": "[RFC6265](http://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js\n\n![Tough Cookie](http://www.goinstant.com.s3.amazonaws.com/tough-cookie.jpg)\n\n# Synopsis\n\n``` javascript\nvar cookies = require('tough-cookie'); // note: not 'cookie', 'cookies' or 'node-cookie'\nvar Cookie = cookies.Cookie;\nvar cookie = Cookie.parse(header);\ncookie.value = 'somethingdifferent';\nheader = cookie.toString();\n\nvar cookiejar = new cookies.CookieJar();\ncookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb);\n// ...\ncookiejar.getCookies('http://example.com/otherpath',function(err,cookies) {\n res.headers['cookie'] = cookies.join('; ');\n});\n```\n\n# Installation\n\nIt's _so_ easy!\n\n`npm install tough-cookie`\n\nRequires `punycode`, which should get installed automatically for you. Note that node.js v0.6.2+ bundles punycode by default.\n\nWhy the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.\n\n# API\n\ncookies\n=======\n\nFunctions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be \"bound\".\n\nparseDate(string[,strict])\n-----------------\n\nParse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. If strict is set to true then leading/trailing non-seperator characters around the time part will cause the parsing to fail (e.g. \"Thu, 01 Jan 1970 00:00:010 GMT\" has an extra trailing zero but Chrome, an assumedly RFC-compliant browser, treats this as valid).\n\nformatDate(date)\n----------------\n\nFormat a Date into a RFC1123 string (the RFC6265-recommended format).\n\ncanonicalDomain(str)\n--------------------\n\nTransforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).\n\ndomainMatch(str,domStr[,canonicalize=true])\n-------------------------------------------\n\nAnswers \"does this real domain match the domain in a cookie?\". The `str` is the \"current\" domain-name and the `domStr` is the \"cookie\" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a \"suffix match\".\n\nThe `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.\n\ndefaultPath(path)\n-----------------\n\nGiven a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the \"directory\" of a \"file\" in the path, but is specified by Section 5.1.4 of the RFC.\n\nThe `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output.\n\npathMatch(reqPath,cookiePath)\n-----------------------------\n\nAnswers \"does the request-path path-match a given cookie-path?\" as per RFC6265 Section 5.1.4. Returns a boolean.\n\nThis is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.\n\nparse(header[,strict=false])\n----------------------------\n\nalias for `Cookie.parse(header[,strict])`\n\nfromJSON(string)\n----------------\n\nalias for `Cookie.fromJSON(string)`\n\ngetPublicSuffix(hostname)\n-------------------------\n\nReturns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.\n\nFor example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.\n\nFor further information, see http://publicsuffix.org/. This module derives its list from that site.\n\ncookieCompare(a,b)\n------------------\n\nFor use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). Longest `.path`s go first, then sorted oldest to youngest.\n\n``` javascript\nvar cookies = [ /* unsorted array of Cookie objects */ ];\ncookies = cookies.sort(cookieCompare);\n```\n\npermuteDomain(domain)\n---------------------\n\nGenerates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.\n\n\npermutePath(path)\n-----------------\n\nGenerates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.\n\nCookie\n======\n\nCookie.parse(header[,strict=false])\n-----------------------------------\n\nParses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. If in strict mode, returns `undefined` if the cookie doesn't follow the guidelines in section 4 of RFC6265. Generally speaking, strict mode can be used to validate your own generated Set-Cookie headers, but acting as a client you want to be lenient and leave strict mode off.\n\nHere's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:\n\n``` javascript\nif (res.headers['set-cookie'] instanceof Array)\n cookies = res.headers['set-cookie'].map(Cookie.parse);\nelse\n cookies = [Cookie.parse(res.headers['set-cookie'])];\n```\n\nCookie.fromJSON(string)\n-----------------------\n\nConvert a JSON string to a `Cookie` object. Does a `JSON.parse()` and converts the `.created`, `.lastAccessed` and `.expires` properties into `Date` objects.\n\nProperties\n==========\n\n * _key_ - string - the name or key of the cookie (default \"\")\n * _value_ - string - the value of the cookie (default \"\")\n * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `\"Infinity\"`). See `setExpires()`\n * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `\"Infinity\"` and `\"-Infinity\"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`\n * _domain_ - string - the `Domain=` attribute of the cookie\n * _path_ - string - the `Path=` of the cookie\n * _secure_ - boolean - the `Secure` cookie flag\n * _httpOnly_ - boolean - the `HttpOnly` cookie flag\n * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)\n \nAfter a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:\n\n * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)\n * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.\n * _created_ - `Date` - when this cookie was added to the jar\n * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.\n\nConstruction([{options}])\n------------\n\nReceives an options object that can contain any Cookie properties, uses the default for unspecified properties.\n\n.toString()\n-----------\n\nencode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.\n\n.cookieString()\n---------------\n\nencode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '=').\n\n.setExpires(String)\n-------------------\n\nsets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `\"Infinity\"` (a string) is set.\n\n.setMaxAge(number)\n-------------------\n\nsets the maxAge in seconds. Coerces `-Infinity` to `\"-Infinity\"` and `Infinity` to `\"Infinity\"` so it JSON serializes correctly.\n\n.expiryTime([now=Date.now()])\n-----------------------------\n\n.expiryDate([now=Date.now()])\n-----------------------------\n\nexpiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.\n\nMax-Age takes precedence over Expires (as per the RFC). The `.created` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.\n\nIf Expires (`.expires`) is set, that's returned.\n\nOtherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for \"Tue, 19 Jan 2038 03:14:07 GMT\" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).\n\n.TTL([now=Date.now()])\n---------\n\ncompute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.\n\nThe \"number\" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.\n\n.canonicalizedDoman()\n---------------------\n\n.cdomain()\n----------\n\nreturn the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.\n\n.validate()\n-----------\n\nStatus: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.\n\nvalidates cookie attributes for semantic correctness. Useful for \"lint\" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:\n\n``` javascript\nif (cookie.validate() === true) {\n // it's tasty\n} else {\n // yuck!\n}\n```\n\nCookieJar\n=========\n\nConstruction([store = new MemoryCookieStore()][, rejectPublicSuffixes])\n------------\n\nSimply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.\n\n\nAttributes\n----------\n\n * _rejectPublicSuffixes_ - boolean - reject cookies with domains like \"com\" and \"co.uk\" (default: `true`)\n \nSince eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.\n\n.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))\n-------------------------------------------------------------------\n\nAttempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.created`, `.lastAccessed` and `.hostOnly` properties.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _strict_ - boolean - default `false` - perform extra checks\n * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. CookieStore errors aren't ignored by this option.\n\nAs per the RFC, the `.hostOnly` property is set if there was no \"Domain=\" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).\n\n.storeCookie(cookie, [{options},] cb(err,cookie))\n-------------------------------------------------\n\n__REMOVED__ removed in lieu of the CookieStore API below\n \n.getCookies(currentUrl, [{options},] cb(err,cookies))\n-----------------------------------------------------\n\nRetrieve the list of cookies that can be sent in a Cookie header for the current url.\n\nIf an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.\n\nThe `options` object can be omitted and can have the following properties:\n\n * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.\n * _secure_ - boolean - autodetect from url - indicates if this is a \"Secure\" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.\n * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies\n * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).\n * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the CookieStore `fetchCookies` function (the default MemoryCookieStore supports it).\n\nThe `.lastAccessed` property of the returned cookies will have been updated.\n\n.getCookieString(...)\n---------------------\n\nAccepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.\n\n.getSetCookieStrings(...)\n-------------------------\n\nAccepts the same options as `.getCookies()` but passes an array of strings suitable for Set-Cookie headers (rather than an array of `Cookie`s) to the callback. Simply maps the cookie array via `.toString()`.\n\n# CookieStore API\n\nThe storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.\n\nAll `domain` parameters will have been normalized before calling.\n\nThe Cookie store must have all of the following methods.\n\nstore.findCookie(domain, path, key, cb(err,cookie))\n---------------------------------------------------\n\nRetrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.\n\nCallback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).\n\nstore.findCookies(domain, path, cb(err,cookies))\n------------------------------------------------\n\nLocates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.\n\nIf no cookies are found, the callback MUST be passed an empty array.\n\nThe resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.\n\nAs of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).\n\nstore.putCookie(cookie, cb(err))\n--------------------------------\n\nAdds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.\n\nThe `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.\n\nPass an error if the cookie cannot be stored.\n\nstore.updateCookie(oldCookie, newCookie, cb(err))\n-------------------------------------------------\n\nUpdate an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.\n\nThe `.lastAccessed` property will always be different between the two objects and `.created` will always be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are sorted (or selected for deletion).\n\nStores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.\n\nThe `newCookie` and `oldCookie` objects MUST NOT be modified.\n\nPass an error if the newCookie cannot be stored.\n\nstore.removeCookie(domain, path, key, cb(err))\n----------------------------------------------\n\nRemove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).\n\nThe implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie.\n\nstore.removeCookies(domain, path, cb(err))\n------------------------------------------\n\nRemoves matching cookies from the store. The `path` paramter is optional, and if missing means all paths in a domain should be removed.\n\nPass an error ONLY if removing any existing cookies failed.\n\n# TODO\n\n * _full_ RFC5890/RFC5891 canonicalization for domains in `cdomain()`\n * the optional `punycode` requirement implements RFC3492, but RFC6265 requires RFC5891\n * better tests for `validate()`?\n\n# Copyright and License\n\n(tl;dr: MIT with some MPL/1.1)\n\nCopyright GoInstant, Inc. and other contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n\nPortions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.\n", - "readmeFilename": "README.md", - "_id": "tough-cookie@0.9.15", - "_from": "tough-cookie@~0.9.15" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt deleted file mode 100644 index 2c201312..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/public-suffix.txt +++ /dev/null @@ -1,5229 +0,0 @@ -// ***** BEGIN LICENSE BLOCK ***** -// Version: MPL 1.1/GPL 2.0/LGPL 2.1 -// -// The contents of this file are subject to the Mozilla Public License Version -// 1.1 (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// http://www.mozilla.org/MPL/ -// -// Software distributed under the License is distributed on an "AS IS" basis, -// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -// for the specific language governing rights and limitations under the -// License. -// -// The Original Code is the Public Suffix List. -// -// The Initial Developer of the Original Code is -// Jo Hermans <jo.hermans@gmail.com>. -// Portions created by the Initial Developer are Copyright (C) 2007 -// the Initial Developer. All Rights Reserved. -// -// Contributor(s): -// Ruben Arakelyan <ruben@rubenarakelyan.com> -// Gervase Markham <gerv@gerv.net> -// Pamela Greene <pamg.bugs@gmail.com> -// David Triendl <david@triendl.name> -// Jothan Frakes <jothan@gmail.com> -// The kind representatives of many TLD registries -// -// Alternatively, the contents of this file may be used under the terms of -// either the GNU General Public License Version 2 or later (the "GPL"), or -// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -// in which case the provisions of the GPL or the LGPL are applicable instead -// of those above. If you wish to allow use of your version of this file only -// under the terms of either the GPL or the LGPL, and not to allow others to -// use your version of this file under the terms of the MPL, indicate your -// decision by deleting the provisions above and replace them with the notice -// and other provisions required by the GPL or the LGPL. If you do not delete -// the provisions above, a recipient may use your version of this file under -// the terms of any one of the MPL, the GPL or the LGPL. -// -// ***** END LICENSE BLOCK ***** - -// ===BEGIN ICANN DOMAINS=== - -// ac : http://en.wikipedia.org/wiki/.ac -ac -com.ac -edu.ac -gov.ac -net.ac -mil.ac -org.ac - -// ad : http://en.wikipedia.org/wiki/.ad -ad -nom.ad - -// ae : http://en.wikipedia.org/wiki/.ae -// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php -ae -co.ae -net.ae -org.ae -sch.ae -ac.ae -gov.ae -mil.ae - -// aero : see http://www.information.aero/index.php?id=66 -aero -accident-investigation.aero -accident-prevention.aero -aerobatic.aero -aeroclub.aero -aerodrome.aero -agents.aero -aircraft.aero -airline.aero -airport.aero -air-surveillance.aero -airtraffic.aero -air-traffic-control.aero -ambulance.aero -amusement.aero -association.aero -author.aero -ballooning.aero -broker.aero -caa.aero -cargo.aero -catering.aero -certification.aero -championship.aero -charter.aero -civilaviation.aero -club.aero -conference.aero -consultant.aero -consulting.aero -control.aero -council.aero -crew.aero -design.aero -dgca.aero -educator.aero -emergency.aero -engine.aero -engineer.aero -entertainment.aero -equipment.aero -exchange.aero -express.aero -federation.aero -flight.aero -freight.aero -fuel.aero -gliding.aero -government.aero -groundhandling.aero -group.aero -hanggliding.aero -homebuilt.aero -insurance.aero -journal.aero -journalist.aero -leasing.aero -logistics.aero -magazine.aero -maintenance.aero -marketplace.aero -media.aero -microlight.aero -modelling.aero -navigation.aero -parachuting.aero -paragliding.aero -passenger-association.aero -pilot.aero -press.aero -production.aero -recreation.aero -repbody.aero -res.aero -research.aero -rotorcraft.aero -safety.aero -scientist.aero -services.aero -show.aero -skydiving.aero -software.aero -student.aero -taxi.aero -trader.aero -trading.aero -trainer.aero -union.aero -workinggroup.aero -works.aero - -// af : http://www.nic.af/help.jsp -af -gov.af -com.af -org.af -net.af -edu.af - -// ag : http://www.nic.ag/prices.htm -ag -com.ag -org.ag -net.ag -co.ag -nom.ag - -// ai : http://nic.com.ai/ -ai -off.ai -com.ai -net.ai -org.ai - -// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 -al -com.al -edu.al -gov.al -mil.al -net.al -org.al - -// am : http://en.wikipedia.org/wiki/.am -am - -// an : http://www.una.an/an_domreg/default.asp -an -com.an -net.an -org.an -edu.an - -// ao : http://en.wikipedia.org/wiki/.ao -// http://www.dns.ao/REGISTR.DOC -ao -ed.ao -gv.ao -og.ao -co.ao -pb.ao -it.ao - -// aq : http://en.wikipedia.org/wiki/.aq -aq - -// ar : http://en.wikipedia.org/wiki/.ar -*.ar -!congresodelalengua3.ar -!educ.ar -!gobiernoelectronico.ar -!mecon.ar -!nacion.ar -!nic.ar -!promocion.ar -!retina.ar -!uba.ar - -// arpa : http://en.wikipedia.org/wiki/.arpa -// Confirmed by registry <iana-questions@icann.org> 2008-06-18 -e164.arpa -in-addr.arpa -ip6.arpa -iris.arpa -uri.arpa -urn.arpa - -// as : http://en.wikipedia.org/wiki/.as -as -gov.as - -// asia : http://en.wikipedia.org/wiki/.asia -asia - -// at : http://en.wikipedia.org/wiki/.at -// Confirmed by registry <it@nic.at> 2008-06-17 -at -ac.at -co.at -gv.at -or.at - -// au : http://en.wikipedia.org/wiki/.au -// http://www.auda.org.au/ -// 2LDs -com.au -net.au -org.au -edu.au -gov.au -csiro.au -asn.au -id.au -// Historic 2LDs (closed to new registration, but sites still exist) -info.au -conf.au -oz.au -// CGDNs - http://www.cgdn.org.au/ -act.au -nsw.au -nt.au -qld.au -sa.au -tas.au -vic.au -wa.au -// 3LDs -act.edu.au -nsw.edu.au -nt.edu.au -qld.edu.au -sa.edu.au -tas.edu.au -vic.edu.au -wa.edu.au -act.gov.au -// Removed at request of Shae.Donelan@services.nsw.gov.au, 2010-03-04 -// nsw.gov.au -nt.gov.au -qld.gov.au -sa.gov.au -tas.gov.au -vic.gov.au -wa.gov.au - -// aw : http://en.wikipedia.org/wiki/.aw -aw -com.aw - -// ax : http://en.wikipedia.org/wiki/.ax -ax - -// az : http://en.wikipedia.org/wiki/.az -az -com.az -net.az -int.az -gov.az -org.az -edu.az -info.az -pp.az -mil.az -name.az -pro.az -biz.az - -// ba : http://en.wikipedia.org/wiki/.ba -ba -org.ba -net.ba -edu.ba -gov.ba -mil.ba -unsa.ba -unbi.ba -co.ba -com.ba -rs.ba - -// bb : http://en.wikipedia.org/wiki/.bb -bb -biz.bb -com.bb -edu.bb -gov.bb -info.bb -net.bb -org.bb -store.bb - -// bd : http://en.wikipedia.org/wiki/.bd -*.bd - -// be : http://en.wikipedia.org/wiki/.be -// Confirmed by registry <tech@dns.be> 2008-06-08 -be -ac.be - -// bf : http://en.wikipedia.org/wiki/.bf -bf -gov.bf - -// bg : http://en.wikipedia.org/wiki/.bg -// https://www.register.bg/user/static/rules/en/index.html -bg -a.bg -b.bg -c.bg -d.bg -e.bg -f.bg -g.bg -h.bg -i.bg -j.bg -k.bg -l.bg -m.bg -n.bg -o.bg -p.bg -q.bg -r.bg -s.bg -t.bg -u.bg -v.bg -w.bg -x.bg -y.bg -z.bg -0.bg -1.bg -2.bg -3.bg -4.bg -5.bg -6.bg -7.bg -8.bg -9.bg - -// bh : http://en.wikipedia.org/wiki/.bh -bh -com.bh -edu.bh -net.bh -org.bh -gov.bh - -// bi : http://en.wikipedia.org/wiki/.bi -// http://whois.nic.bi/ -bi -co.bi -com.bi -edu.bi -or.bi -org.bi - -// biz : http://en.wikipedia.org/wiki/.biz -biz - -// bj : http://en.wikipedia.org/wiki/.bj -bj -asso.bj -barreau.bj -gouv.bj - -// bm : http://www.bermudanic.bm/dnr-text.txt -bm -com.bm -edu.bm -gov.bm -net.bm -org.bm - -// bn : http://en.wikipedia.org/wiki/.bn -*.bn - -// bo : http://www.nic.bo/ -bo -com.bo -edu.bo -gov.bo -gob.bo -int.bo -org.bo -net.bo -mil.bo -tv.bo - -// br : http://registro.br/dominio/dpn.html -// Updated by registry <fneves@registro.br> 2011-03-01 -br -adm.br -adv.br -agr.br -am.br -arq.br -art.br -ato.br -b.br -bio.br -blog.br -bmd.br -can.br -cim.br -cng.br -cnt.br -com.br -coop.br -ecn.br -edu.br -emp.br -eng.br -esp.br -etc.br -eti.br -far.br -flog.br -fm.br -fnd.br -fot.br -fst.br -g12.br -ggf.br -gov.br -imb.br -ind.br -inf.br -jor.br -jus.br -lel.br -mat.br -med.br -mil.br -mus.br -net.br -nom.br -not.br -ntr.br -odo.br -org.br -ppg.br -pro.br -psc.br -psi.br -qsl.br -radio.br -rec.br -slg.br -srv.br -taxi.br -teo.br -tmp.br -trd.br -tur.br -tv.br -vet.br -vlog.br -wiki.br -zlg.br - -// bs : http://www.nic.bs/rules.html -bs -com.bs -net.bs -org.bs -edu.bs -gov.bs - -// bt : http://en.wikipedia.org/wiki/.bt -bt -com.bt -edu.bt -gov.bt -net.bt -org.bt - -// bv : No registrations at this time. -// Submitted by registry <jarle@uninett.no> 2006-06-16 - -// bw : http://en.wikipedia.org/wiki/.bw -// http://www.gobin.info/domainname/bw.doc -// list of other 2nd level tlds ? -bw -co.bw -org.bw - -// by : http://en.wikipedia.org/wiki/.by -// http://tld.by/rules_2006_en.html -// list of other 2nd level tlds ? -by -gov.by -mil.by -// Official information does not indicate that com.by is a reserved -// second-level domain, but it's being used as one (see www.google.com.by and -// www.yahoo.com.by, for example), so we list it here for safety's sake. -com.by - -// http://hoster.by/ -of.by - -// bz : http://en.wikipedia.org/wiki/.bz -// http://www.belizenic.bz/ -bz -com.bz -net.bz -org.bz -edu.bz -gov.bz - -// ca : http://en.wikipedia.org/wiki/.ca -ca -// ca geographical names -ab.ca -bc.ca -mb.ca -nb.ca -nf.ca -nl.ca -ns.ca -nt.ca -nu.ca -on.ca -pe.ca -qc.ca -sk.ca -yk.ca -// gc.ca: http://en.wikipedia.org/wiki/.gc.ca -// see also: http://registry.gc.ca/en/SubdomainFAQ -gc.ca - -// cat : http://en.wikipedia.org/wiki/.cat -cat - -// cc : http://en.wikipedia.org/wiki/.cc -cc - -// cd : http://en.wikipedia.org/wiki/.cd -// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1 -cd -gov.cd - -// cf : http://en.wikipedia.org/wiki/.cf -cf - -// cg : http://en.wikipedia.org/wiki/.cg -cg - -// ch : http://en.wikipedia.org/wiki/.ch -ch - -// ci : http://en.wikipedia.org/wiki/.ci -// http://www.nic.ci/index.php?page=charte -ci -org.ci -or.ci -com.ci -co.ci -edu.ci -ed.ci -ac.ci -net.ci -go.ci -asso.ci -aéroport.ci -int.ci -presse.ci -md.ci -gouv.ci - -// ck : http://en.wikipedia.org/wiki/.ck -*.ck -!www.ck - -// cl : http://en.wikipedia.org/wiki/.cl -cl -gov.cl -gob.cl -co.cl -mil.cl - -// cm : http://en.wikipedia.org/wiki/.cm -cm -gov.cm - -// cn : http://en.wikipedia.org/wiki/.cn -// Submitted by registry <tanyaling@cnnic.cn> 2008-06-11 -cn -ac.cn -com.cn -edu.cn -gov.cn -net.cn -org.cn -mil.cn -å…¬å¸.cn -网络.cn -網絡.cn -// cn geographic names -ah.cn -bj.cn -cq.cn -fj.cn -gd.cn -gs.cn -gz.cn -gx.cn -ha.cn -hb.cn -he.cn -hi.cn -hl.cn -hn.cn -jl.cn -js.cn -jx.cn -ln.cn -nm.cn -nx.cn -qh.cn -sc.cn -sd.cn -sh.cn -sn.cn -sx.cn -tj.cn -xj.cn -xz.cn -yn.cn -zj.cn -hk.cn -mo.cn -tw.cn - -// co : http://en.wikipedia.org/wiki/.co -// Submitted by registry <tecnico@uniandes.edu.co> 2008-06-11 -co -arts.co -com.co -edu.co -firm.co -gov.co -info.co -int.co -mil.co -net.co -nom.co -org.co -rec.co -web.co - -// com : http://en.wikipedia.org/wiki/.com -com - -// coop : http://en.wikipedia.org/wiki/.coop -coop - -// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do -cr -ac.cr -co.cr -ed.cr -fi.cr -go.cr -or.cr -sa.cr - -// cu : http://en.wikipedia.org/wiki/.cu -cu -com.cu -edu.cu -org.cu -net.cu -gov.cu -inf.cu - -// cv : http://en.wikipedia.org/wiki/.cv -cv - -// cx : http://en.wikipedia.org/wiki/.cx -// list of other 2nd level tlds ? -cx -gov.cx - -// cy : http://en.wikipedia.org/wiki/.cy -*.cy - -// cz : http://en.wikipedia.org/wiki/.cz -cz - -// de : http://en.wikipedia.org/wiki/.de -// Confirmed by registry <ops@denic.de> (with technical -// reservations) 2008-07-01 -de - -// dj : http://en.wikipedia.org/wiki/.dj -dj - -// dk : http://en.wikipedia.org/wiki/.dk -// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17 -dk - -// dm : http://en.wikipedia.org/wiki/.dm -dm -com.dm -net.dm -org.dm -edu.dm -gov.dm - -// do : http://en.wikipedia.org/wiki/.do -do -art.do -com.do -edu.do -gob.do -gov.do -mil.do -net.do -org.do -sld.do -web.do - -// dz : http://en.wikipedia.org/wiki/.dz -dz -com.dz -org.dz -net.dz -gov.dz -edu.dz -asso.dz -pol.dz -art.dz - -// ec : http://www.nic.ec/reg/paso1.asp -// Submitted by registry <vabboud@nic.ec> 2008-07-04 -ec -com.ec -info.ec -net.ec -fin.ec -k12.ec -med.ec -pro.ec -org.ec -edu.ec -gov.ec -gob.ec -mil.ec - -// edu : http://en.wikipedia.org/wiki/.edu -edu - -// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B -ee -edu.ee -gov.ee -riik.ee -lib.ee -med.ee -com.ee -pri.ee -aip.ee -org.ee -fie.ee - -// eg : http://en.wikipedia.org/wiki/.eg -eg -com.eg -edu.eg -eun.eg -gov.eg -mil.eg -name.eg -net.eg -org.eg -sci.eg - -// er : http://en.wikipedia.org/wiki/.er -*.er - -// es : https://www.nic.es/site_ingles/ingles/dominios/index.html -es -com.es -nom.es -org.es -gob.es -edu.es - -// et : http://en.wikipedia.org/wiki/.et -*.et - -// eu : http://en.wikipedia.org/wiki/.eu -eu - -// fi : http://en.wikipedia.org/wiki/.fi -fi -// aland.fi : http://en.wikipedia.org/wiki/.ax -// This domain is being phased out in favor of .ax. As there are still many -// domains under aland.fi, we still keep it on the list until aland.fi is -// completely removed. -// TODO: Check for updates (expected to be phased out around Q1/2009) -aland.fi - -// fj : http://en.wikipedia.org/wiki/.fj -*.fj - -// fk : http://en.wikipedia.org/wiki/.fk -*.fk - -// fm : http://en.wikipedia.org/wiki/.fm -fm - -// fo : http://en.wikipedia.org/wiki/.fo -fo - -// fr : http://www.afnic.fr/ -// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs -fr -com.fr -asso.fr -nom.fr -prd.fr -presse.fr -tm.fr -// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels -aeroport.fr -assedic.fr -avocat.fr -avoues.fr -cci.fr -chambagri.fr -chirurgiens-dentistes.fr -experts-comptables.fr -geometre-expert.fr -gouv.fr -greta.fr -huissier-justice.fr -medecin.fr -notaires.fr -pharmacien.fr -port.fr -veterinaire.fr - -// ga : http://en.wikipedia.org/wiki/.ga -ga - -// gb : This registry is effectively dormant -// Submitted by registry <Damien.Shaw@ja.net> 2008-06-12 - -// gd : http://en.wikipedia.org/wiki/.gd -gd - -// ge : http://www.nic.net.ge/policy_en.pdf -ge -com.ge -edu.ge -gov.ge -org.ge -mil.ge -net.ge -pvt.ge - -// gf : http://en.wikipedia.org/wiki/.gf -gf - -// gg : http://www.channelisles.net/applic/avextn.shtml -gg -co.gg -org.gg -net.gg -sch.gg -gov.gg - -// gh : http://en.wikipedia.org/wiki/.gh -// see also: http://www.nic.gh/reg_now.php -// Although domains directly at second level are not possible at the moment, -// they have been possible for some time and may come back. -gh -com.gh -edu.gh -gov.gh -org.gh -mil.gh - -// gi : http://www.nic.gi/rules.html -gi -com.gi -ltd.gi -gov.gi -mod.gi -edu.gi -org.gi - -// gl : http://en.wikipedia.org/wiki/.gl -// http://nic.gl -gl - -// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm -gm - -// gn : http://psg.com/dns/gn/gn.txt -// Submitted by registry <randy@psg.com> 2008-06-17 -ac.gn -com.gn -edu.gn -gov.gn -org.gn -net.gn - -// gov : http://en.wikipedia.org/wiki/.gov -gov - -// gp : http://www.nic.gp/index.php?lang=en -gp -com.gp -net.gp -mobi.gp -edu.gp -org.gp -asso.gp - -// gq : http://en.wikipedia.org/wiki/.gq -gq - -// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html -// Submitted by registry <segred@ics.forth.gr> 2008-06-09 -gr -com.gr -edu.gr -net.gr -org.gr -gov.gr - -// gs : http://en.wikipedia.org/wiki/.gs -gs - -// gt : http://www.gt/politicas.html -*.gt -!www.gt - -// gu : http://gadao.gov.gu/registration.txt -*.gu - -// gw : http://en.wikipedia.org/wiki/.gw -gw - -// gy : http://en.wikipedia.org/wiki/.gy -// http://registry.gy/ -gy -co.gy -com.gy -net.gy - -// hk : https://www.hkdnr.hk -// Submitted by registry <hk.tech@hkirc.hk> 2008-06-11 -hk -com.hk -edu.hk -gov.hk -idv.hk -net.hk -org.hk -å…¬å¸.hk -教育.hk -敎育.hk -政府.hk -個人.hk -个人.hk -箇人.hk -網络.hk -网络.hk -组織.hk -網絡.hk -网絡.hk -组织.hk -組織.hk -組织.hk - -// hm : http://en.wikipedia.org/wiki/.hm -hm - -// hn : http://www.nic.hn/politicas/ps02,,05.html -hn -com.hn -edu.hn -org.hn -net.hn -mil.hn -gob.hn - -// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf -hr -iz.hr -from.hr -name.hr -com.hr - -// ht : http://www.nic.ht/info/charte.cfm -ht -com.ht -shop.ht -firm.ht -info.ht -adult.ht -net.ht -pro.ht -org.ht -med.ht -art.ht -coop.ht -pol.ht -asso.ht -edu.ht -rel.ht -gouv.ht -perso.ht - -// hu : http://www.domain.hu/domain/English/sld.html -// Confirmed by registry <pasztor@iszt.hu> 2008-06-12 -hu -co.hu -info.hu -org.hu -priv.hu -sport.hu -tm.hu -2000.hu -agrar.hu -bolt.hu -casino.hu -city.hu -erotica.hu -erotika.hu -film.hu -forum.hu -games.hu -hotel.hu -ingatlan.hu -jogasz.hu -konyvelo.hu -lakas.hu -media.hu -news.hu -reklam.hu -sex.hu -shop.hu -suli.hu -szex.hu -tozsde.hu -utazas.hu -video.hu - -// id : http://en.wikipedia.org/wiki/.id -// see also: https://register.pandi.or.id/ -id -ac.id -co.id -go.id -mil.id -net.id -or.id -sch.id -web.id - -// ie : http://en.wikipedia.org/wiki/.ie -ie -gov.ie - -// il : http://en.wikipedia.org/wiki/.il -*.il - -// im : https://www.nic.im/pdfs/imfaqs.pdf -im -co.im -ltd.co.im -plc.co.im -net.im -gov.im -org.im -nic.im -ac.im - -// in : http://en.wikipedia.org/wiki/.in -// see also: http://www.inregistry.in/policies/ -// Please note, that nic.in is not an offical eTLD, but used by most -// government institutions. -in -co.in -firm.in -net.in -org.in -gen.in -ind.in -nic.in -ac.in -edu.in -res.in -gov.in -mil.in - -// info : http://en.wikipedia.org/wiki/.info -info - -// int : http://en.wikipedia.org/wiki/.int -// Confirmed by registry <iana-questions@icann.org> 2008-06-18 -int -eu.int - -// io : http://www.nic.io/rules.html -// list of other 2nd level tlds ? -io -com.io - -// iq : http://www.cmc.iq/english/iq/iqregister1.htm -iq -gov.iq -edu.iq -mil.iq -com.iq -org.iq -net.iq - -// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules -// Also see http://www.nic.ir/Internationalized_Domain_Names -// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16 -ir -ac.ir -co.ir -gov.ir -id.ir -net.ir -org.ir -sch.ir -// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH) -ایران.ir -// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH) -ايران.ir - -// is : http://www.isnic.is/domain/rules.php -// Confirmed by registry <marius@isgate.is> 2008-12-06 -is -net.is -com.is -edu.is -gov.is -org.is -int.is - -// it : http://en.wikipedia.org/wiki/.it -it -gov.it -edu.it -// list of reserved geo-names : -// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf -// (There is also a list of reserved geo-names corresponding to Italian -// municipalities : http://www.nic.it/documenti/appendice-c.pdf , but it is -// not included here.) -agrigento.it -ag.it -alessandria.it -al.it -ancona.it -an.it -aosta.it -aoste.it -ao.it -arezzo.it -ar.it -ascoli-piceno.it -ascolipiceno.it -ap.it -asti.it -at.it -avellino.it -av.it -bari.it -ba.it -andria-barletta-trani.it -andriabarlettatrani.it -trani-barletta-andria.it -tranibarlettaandria.it -barletta-trani-andria.it -barlettatraniandria.it -andria-trani-barletta.it -andriatranibarletta.it -trani-andria-barletta.it -traniandriabarletta.it -bt.it -belluno.it -bl.it -benevento.it -bn.it -bergamo.it -bg.it -biella.it -bi.it -bologna.it -bo.it -bolzano.it -bozen.it -balsan.it -alto-adige.it -altoadige.it -suedtirol.it -bz.it -brescia.it -bs.it -brindisi.it -br.it -cagliari.it -ca.it -caltanissetta.it -cl.it -campobasso.it -cb.it -carboniaiglesias.it -carbonia-iglesias.it -iglesias-carbonia.it -iglesiascarbonia.it -ci.it -caserta.it -ce.it -catania.it -ct.it -catanzaro.it -cz.it -chieti.it -ch.it -como.it -co.it -cosenza.it -cs.it -cremona.it -cr.it -crotone.it -kr.it -cuneo.it -cn.it -dell-ogliastra.it -dellogliastra.it -ogliastra.it -og.it -enna.it -en.it -ferrara.it -fe.it -fermo.it -fm.it -firenze.it -florence.it -fi.it -foggia.it -fg.it -forli-cesena.it -forlicesena.it -cesena-forli.it -cesenaforli.it -fc.it -frosinone.it -fr.it -genova.it -genoa.it -ge.it -gorizia.it -go.it -grosseto.it -gr.it -imperia.it -im.it -isernia.it -is.it -laquila.it -aquila.it -aq.it -la-spezia.it -laspezia.it -sp.it -latina.it -lt.it -lecce.it -le.it -lecco.it -lc.it -livorno.it -li.it -lodi.it -lo.it -lucca.it -lu.it -macerata.it -mc.it -mantova.it -mn.it -massa-carrara.it -massacarrara.it -carrara-massa.it -carraramassa.it -ms.it -matera.it -mt.it -medio-campidano.it -mediocampidano.it -campidano-medio.it -campidanomedio.it -vs.it -messina.it -me.it -milano.it -milan.it -mi.it -modena.it -mo.it -monza.it -monza-brianza.it -monzabrianza.it -monzaebrianza.it -monzaedellabrianza.it -monza-e-della-brianza.it -mb.it -napoli.it -naples.it -na.it -novara.it -no.it -nuoro.it -nu.it -oristano.it -or.it -padova.it -padua.it -pd.it -palermo.it -pa.it -parma.it -pr.it -pavia.it -pv.it -perugia.it -pg.it -pescara.it -pe.it -pesaro-urbino.it -pesarourbino.it -urbino-pesaro.it -urbinopesaro.it -pu.it -piacenza.it -pc.it -pisa.it -pi.it -pistoia.it -pt.it -pordenone.it -pn.it -potenza.it -pz.it -prato.it -po.it -ragusa.it -rg.it -ravenna.it -ra.it -reggio-calabria.it -reggiocalabria.it -rc.it -reggio-emilia.it -reggioemilia.it -re.it -rieti.it -ri.it -rimini.it -rn.it -roma.it -rome.it -rm.it -rovigo.it -ro.it -salerno.it -sa.it -sassari.it -ss.it -savona.it -sv.it -siena.it -si.it -siracusa.it -sr.it -sondrio.it -so.it -taranto.it -ta.it -tempio-olbia.it -tempioolbia.it -olbia-tempio.it -olbiatempio.it -ot.it -teramo.it -te.it -terni.it -tr.it -torino.it -turin.it -to.it -trapani.it -tp.it -trento.it -trentino.it -tn.it -treviso.it -tv.it -trieste.it -ts.it -udine.it -ud.it -varese.it -va.it -venezia.it -venice.it -ve.it -verbania.it -vb.it -vercelli.it -vc.it -verona.it -vr.it -vibo-valentia.it -vibovalentia.it -vv.it -vicenza.it -vi.it -viterbo.it -vt.it - -// je : http://www.channelisles.net/applic/avextn.shtml -je -co.je -org.je -net.je -sch.je -gov.je - -// jm : http://www.com.jm/register.html -*.jm - -// jo : http://www.dns.jo/Registration_policy.aspx -jo -com.jo -org.jo -net.jo -edu.jo -sch.jo -gov.jo -mil.jo -name.jo - -// jobs : http://en.wikipedia.org/wiki/.jobs -jobs - -// jp : http://en.wikipedia.org/wiki/.jp -// http://jprs.co.jp/en/jpdomain.html -// Submitted by registry <yone@jprs.co.jp> 2008-06-11 -// Updated by registry <yone@jprs.co.jp> 2008-12-04 -jp -// jp organizational type names -ac.jp -ad.jp -co.jp -ed.jp -go.jp -gr.jp -lg.jp -ne.jp -or.jp -// jp geographic type names -// http://jprs.jp/doc/rule/saisoku-1.html -*.aichi.jp -*.akita.jp -*.aomori.jp -*.chiba.jp -*.ehime.jp -*.fukui.jp -*.fukuoka.jp -*.fukushima.jp -*.gifu.jp -*.gunma.jp -*.hiroshima.jp -*.hokkaido.jp -*.hyogo.jp -*.ibaraki.jp -*.ishikawa.jp -*.iwate.jp -*.kagawa.jp -*.kagoshima.jp -*.kanagawa.jp -*.kawasaki.jp -*.kitakyushu.jp -*.kobe.jp -*.kochi.jp -*.kumamoto.jp -*.kyoto.jp -*.mie.jp -*.miyagi.jp -*.miyazaki.jp -*.nagano.jp -*.nagasaki.jp -*.nagoya.jp -*.nara.jp -*.niigata.jp -*.oita.jp -*.okayama.jp -*.okinawa.jp -*.osaka.jp -*.saga.jp -*.saitama.jp -*.sapporo.jp -*.sendai.jp -*.shiga.jp -*.shimane.jp -*.shizuoka.jp -*.tochigi.jp -*.tokushima.jp -*.tokyo.jp -*.tottori.jp -*.toyama.jp -*.wakayama.jp -*.yamagata.jp -*.yamaguchi.jp -*.yamanashi.jp -*.yokohama.jp -!metro.tokyo.jp -!pref.aichi.jp -!pref.akita.jp -!pref.aomori.jp -!pref.chiba.jp -!pref.ehime.jp -!pref.fukui.jp -!pref.fukuoka.jp -!pref.fukushima.jp -!pref.gifu.jp -!pref.gunma.jp -!pref.hiroshima.jp -!pref.hokkaido.jp -!pref.hyogo.jp -!pref.ibaraki.jp -!pref.ishikawa.jp -!pref.iwate.jp -!pref.kagawa.jp -!pref.kagoshima.jp -!pref.kanagawa.jp -!pref.kochi.jp -!pref.kumamoto.jp -!pref.kyoto.jp -!pref.mie.jp -!pref.miyagi.jp -!pref.miyazaki.jp -!pref.nagano.jp -!pref.nagasaki.jp -!pref.nara.jp -!pref.niigata.jp -!pref.oita.jp -!pref.okayama.jp -!pref.okinawa.jp -!pref.osaka.jp -!pref.saga.jp -!pref.saitama.jp -!pref.shiga.jp -!pref.shimane.jp -!pref.shizuoka.jp -!pref.tochigi.jp -!pref.tokushima.jp -!pref.tottori.jp -!pref.toyama.jp -!pref.wakayama.jp -!pref.yamagata.jp -!pref.yamaguchi.jp -!pref.yamanashi.jp -!city.chiba.jp -!city.fukuoka.jp -!city.hiroshima.jp -!city.kawasaki.jp -!city.kitakyushu.jp -!city.kobe.jp -!city.kyoto.jp -!city.nagoya.jp -!city.niigata.jp -!city.okayama.jp -!city.osaka.jp -!city.saitama.jp -!city.sapporo.jp -!city.sendai.jp -!city.shizuoka.jp -!city.yokohama.jp - -// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145 -*.ke - -// kg : http://www.domain.kg/dmn_n.html -kg -org.kg -net.kg -com.kg -edu.kg -gov.kg -mil.kg - -// kh : http://www.mptc.gov.kh/dns_registration.htm -*.kh - -// ki : http://www.ki/dns/index.html -ki -edu.ki -biz.ki -net.ki -org.ki -gov.ki -info.ki -com.ki - -// km : http://en.wikipedia.org/wiki/.km -// http://www.domaine.km/documents/charte.doc -km -org.km -nom.km -gov.km -prd.km -tm.km -edu.km -mil.km -ass.km -com.km -// These are only mentioned as proposed suggestions at domaine.km, but -// http://en.wikipedia.org/wiki/.km says they're available for registration: -coop.km -asso.km -presse.km -medecin.km -notaires.km -pharmaciens.km -veterinaire.km -gouv.km - -// kn : http://en.wikipedia.org/wiki/.kn -// http://www.dot.kn/domainRules.html -kn -net.kn -org.kn -edu.kn -gov.kn - -// kp : http://www.kcce.kp/en_index.php -com.kp -edu.kp -gov.kp -org.kp -rep.kp -tra.kp - -// kr : http://en.wikipedia.org/wiki/.kr -// see also: http://domain.nida.or.kr/eng/registration.jsp -kr -ac.kr -co.kr -es.kr -go.kr -hs.kr -kg.kr -mil.kr -ms.kr -ne.kr -or.kr -pe.kr -re.kr -sc.kr -// kr geographical names -busan.kr -chungbuk.kr -chungnam.kr -daegu.kr -daejeon.kr -gangwon.kr -gwangju.kr -gyeongbuk.kr -gyeonggi.kr -gyeongnam.kr -incheon.kr -jeju.kr -jeonbuk.kr -jeonnam.kr -seoul.kr -ulsan.kr - -// kw : http://en.wikipedia.org/wiki/.kw -*.kw - -// ky : http://www.icta.ky/da_ky_reg_dom.php -// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17 -ky -edu.ky -gov.ky -com.ky -org.ky -net.ky - -// kz : http://en.wikipedia.org/wiki/.kz -// see also: http://www.nic.kz/rules/index.jsp -kz -org.kz -edu.kz -net.kz -gov.kz -mil.kz -com.kz - -// la : http://en.wikipedia.org/wiki/.la -// Submitted by registry <gavin.brown@nic.la> 2008-06-10 -la -int.la -net.la -info.la -edu.la -gov.la -per.la -com.la -org.la - -// lb : http://en.wikipedia.org/wiki/.lb -// Submitted by registry <randy@psg.com> 2008-06-17 -com.lb -edu.lb -gov.lb -net.lb -org.lb - -// lc : http://en.wikipedia.org/wiki/.lc -// see also: http://www.nic.lc/rules.htm -lc -com.lc -net.lc -co.lc -org.lc -edu.lc -gov.lc - -// li : http://en.wikipedia.org/wiki/.li -li - -// lk : http://www.nic.lk/seclevpr.html -lk -gov.lk -sch.lk -net.lk -int.lk -com.lk -org.lk -edu.lk -ngo.lk -soc.lk -web.lk -ltd.lk -assn.lk -grp.lk -hotel.lk - -// lr : http://psg.com/dns/lr/lr.txt -// Submitted by registry <randy@psg.com> 2008-06-17 -com.lr -edu.lr -gov.lr -org.lr -net.lr - -// ls : http://en.wikipedia.org/wiki/.ls -ls -co.ls -org.ls - -// lt : http://en.wikipedia.org/wiki/.lt -lt -// gov.lt : http://www.gov.lt/index_en.php -gov.lt - -// lu : http://www.dns.lu/en/ -lu - -// lv : http://www.nic.lv/DNS/En/generic.php -lv -com.lv -edu.lv -gov.lv -org.lv -mil.lv -id.lv -net.lv -asn.lv -conf.lv - -// ly : http://www.nic.ly/regulations.php -ly -com.ly -net.ly -gov.ly -plc.ly -edu.ly -sch.ly -med.ly -org.ly -id.ly - -// ma : http://en.wikipedia.org/wiki/.ma -// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf -ma -co.ma -net.ma -gov.ma -org.ma -ac.ma -press.ma - -// mc : http://www.nic.mc/ -mc -tm.mc -asso.mc - -// md : http://en.wikipedia.org/wiki/.md -md - -// me : http://en.wikipedia.org/wiki/.me -me -co.me -net.me -org.me -edu.me -ac.me -gov.me -its.me -priv.me - -// mg : http://www.nic.mg/tarif.htm -mg -org.mg -nom.mg -gov.mg -prd.mg -tm.mg -edu.mg -mil.mg -com.mg - -// mh : http://en.wikipedia.org/wiki/.mh -mh - -// mil : http://en.wikipedia.org/wiki/.mil -mil - -// mk : http://en.wikipedia.org/wiki/.mk -// see also: http://dns.marnet.net.mk/postapka.php -mk -com.mk -org.mk -net.mk -edu.mk -gov.mk -inf.mk -name.mk - -// ml : http://www.gobin.info/domainname/ml-template.doc -// see also: http://en.wikipedia.org/wiki/.ml -ml -com.ml -edu.ml -gouv.ml -gov.ml -net.ml -org.ml -presse.ml - -// mm : http://en.wikipedia.org/wiki/.mm -*.mm - -// mn : http://en.wikipedia.org/wiki/.mn -mn -gov.mn -edu.mn -org.mn - -// mo : http://www.monic.net.mo/ -mo -com.mo -net.mo -org.mo -edu.mo -gov.mo - -// mobi : http://en.wikipedia.org/wiki/.mobi -mobi - -// mp : http://www.dot.mp/ -// Confirmed by registry <dcamacho@saipan.com> 2008-06-17 -mp - -// mq : http://en.wikipedia.org/wiki/.mq -mq - -// mr : http://en.wikipedia.org/wiki/.mr -mr -gov.mr - -// ms : http://en.wikipedia.org/wiki/.ms -ms - -// mt : https://www.nic.org.mt/dotmt/ -*.mt - -// mu : http://en.wikipedia.org/wiki/.mu -mu -com.mu -net.mu -org.mu -gov.mu -ac.mu -co.mu -or.mu - -// museum : http://about.museum/naming/ -// http://index.museum/ -museum -academy.museum -agriculture.museum -air.museum -airguard.museum -alabama.museum -alaska.museum -amber.museum -ambulance.museum -american.museum -americana.museum -americanantiques.museum -americanart.museum -amsterdam.museum -and.museum -annefrank.museum -anthro.museum -anthropology.museum -antiques.museum -aquarium.museum -arboretum.museum -archaeological.museum -archaeology.museum -architecture.museum -art.museum -artanddesign.museum -artcenter.museum -artdeco.museum -arteducation.museum -artgallery.museum -arts.museum -artsandcrafts.museum -asmatart.museum -assassination.museum -assisi.museum -association.museum -astronomy.museum -atlanta.museum -austin.museum -australia.museum -automotive.museum -aviation.museum -axis.museum -badajoz.museum -baghdad.museum -bahn.museum -bale.museum -baltimore.museum -barcelona.museum -baseball.museum -basel.museum -baths.museum -bauern.museum -beauxarts.museum -beeldengeluid.museum -bellevue.museum -bergbau.museum -berkeley.museum -berlin.museum -bern.museum -bible.museum -bilbao.museum -bill.museum -birdart.museum -birthplace.museum -bonn.museum -boston.museum -botanical.museum -botanicalgarden.museum -botanicgarden.museum -botany.museum -brandywinevalley.museum -brasil.museum -bristol.museum -british.museum -britishcolumbia.museum -broadcast.museum -brunel.museum -brussel.museum -brussels.museum -bruxelles.museum -building.museum -burghof.museum -bus.museum -bushey.museum -cadaques.museum -california.museum -cambridge.museum -can.museum -canada.museum -capebreton.museum -carrier.museum -cartoonart.museum -casadelamoneda.museum -castle.museum -castres.museum -celtic.museum -center.museum -chattanooga.museum -cheltenham.museum -chesapeakebay.museum -chicago.museum -children.museum -childrens.museum -childrensgarden.museum -chiropractic.museum -chocolate.museum -christiansburg.museum -cincinnati.museum -cinema.museum -circus.museum -civilisation.museum -civilization.museum -civilwar.museum -clinton.museum -clock.museum -coal.museum -coastaldefence.museum -cody.museum -coldwar.museum -collection.museum -colonialwilliamsburg.museum -coloradoplateau.museum -columbia.museum -columbus.museum -communication.museum -communications.museum -community.museum -computer.museum -computerhistory.museum -comunicações.museum -contemporary.museum -contemporaryart.museum -convent.museum -copenhagen.museum -corporation.museum -correios-e-telecomunicações.museum -corvette.museum -costume.museum -countryestate.museum -county.museum -crafts.museum -cranbrook.museum -creation.museum -cultural.museum -culturalcenter.museum -culture.museum -cyber.museum -cymru.museum -dali.museum -dallas.museum -database.museum -ddr.museum -decorativearts.museum -delaware.museum -delmenhorst.museum -denmark.museum -depot.museum -design.museum -detroit.museum -dinosaur.museum -discovery.museum -dolls.museum -donostia.museum -durham.museum -eastafrica.museum -eastcoast.museum -education.museum -educational.museum -egyptian.museum -eisenbahn.museum -elburg.museum -elvendrell.museum -embroidery.museum -encyclopedic.museum -england.museum -entomology.museum -environment.museum -environmentalconservation.museum -epilepsy.museum -essex.museum -estate.museum -ethnology.museum -exeter.museum -exhibition.museum -family.museum -farm.museum -farmequipment.museum -farmers.museum -farmstead.museum -field.museum -figueres.museum -filatelia.museum -film.museum -fineart.museum -finearts.museum -finland.museum -flanders.museum -florida.museum -force.museum -fortmissoula.museum -fortworth.museum -foundation.museum -francaise.museum -frankfurt.museum -franziskaner.museum -freemasonry.museum -freiburg.museum -fribourg.museum -frog.museum -fundacio.museum -furniture.museum -gallery.museum -garden.museum -gateway.museum -geelvinck.museum -gemological.museum -geology.museum -georgia.museum -giessen.museum -glas.museum -glass.museum -gorge.museum -grandrapids.museum -graz.museum -guernsey.museum -halloffame.museum -hamburg.museum -handson.museum -harvestcelebration.museum -hawaii.museum -health.museum -heimatunduhren.museum -hellas.museum -helsinki.museum -hembygdsforbund.museum -heritage.museum -histoire.museum -historical.museum -historicalsociety.museum -historichouses.museum -historisch.museum -historisches.museum -history.museum -historyofscience.museum -horology.museum -house.museum -humanities.museum -illustration.museum -imageandsound.museum -indian.museum -indiana.museum -indianapolis.museum -indianmarket.museum -intelligence.museum -interactive.museum -iraq.museum -iron.museum -isleofman.museum -jamison.museum -jefferson.museum -jerusalem.museum -jewelry.museum -jewish.museum -jewishart.museum -jfk.museum -journalism.museum -judaica.museum -judygarland.museum -juedisches.museum -juif.museum -karate.museum -karikatur.museum -kids.museum -koebenhavn.museum -koeln.museum -kunst.museum -kunstsammlung.museum -kunstunddesign.museum -labor.museum -labour.museum -lajolla.museum -lancashire.museum -landes.museum -lans.museum -läns.museum -larsson.museum -lewismiller.museum -lincoln.museum -linz.museum -living.museum -livinghistory.museum -localhistory.museum -london.museum -losangeles.museum -louvre.museum -loyalist.museum -lucerne.museum -luxembourg.museum -luzern.museum -mad.museum -madrid.museum -mallorca.museum -manchester.museum -mansion.museum -mansions.museum -manx.museum -marburg.museum -maritime.museum -maritimo.museum -maryland.museum -marylhurst.museum -media.museum -medical.museum -medizinhistorisches.museum -meeres.museum -memorial.museum -mesaverde.museum -michigan.museum -midatlantic.museum -military.museum -mill.museum -miners.museum -mining.museum -minnesota.museum -missile.museum -missoula.museum -modern.museum -moma.museum -money.museum -monmouth.museum -monticello.museum -montreal.museum -moscow.museum -motorcycle.museum -muenchen.museum -muenster.museum -mulhouse.museum -muncie.museum -museet.museum -museumcenter.museum -museumvereniging.museum -music.museum -national.museum -nationalfirearms.museum -nationalheritage.museum -nativeamerican.museum -naturalhistory.museum -naturalhistorymuseum.museum -naturalsciences.museum -nature.museum -naturhistorisches.museum -natuurwetenschappen.museum -naumburg.museum -naval.museum -nebraska.museum -neues.museum -newhampshire.museum -newjersey.museum -newmexico.museum -newport.museum -newspaper.museum -newyork.museum -niepce.museum -norfolk.museum -north.museum -nrw.museum -nuernberg.museum -nuremberg.museum -nyc.museum -nyny.museum -oceanographic.museum -oceanographique.museum -omaha.museum -online.museum -ontario.museum -openair.museum -oregon.museum -oregontrail.museum -otago.museum -oxford.museum -pacific.museum -paderborn.museum -palace.museum -paleo.museum -palmsprings.museum -panama.museum -paris.museum -pasadena.museum -pharmacy.museum -philadelphia.museum -philadelphiaarea.museum -philately.museum -phoenix.museum -photography.museum -pilots.museum -pittsburgh.museum -planetarium.museum -plantation.museum -plants.museum -plaza.museum -portal.museum -portland.museum -portlligat.museum -posts-and-telecommunications.museum -preservation.museum -presidio.museum -press.museum -project.museum -public.museum -pubol.museum -quebec.museum -railroad.museum -railway.museum -research.museum -resistance.museum -riodejaneiro.museum -rochester.museum -rockart.museum -roma.museum -russia.museum -saintlouis.museum -salem.museum -salvadordali.museum -salzburg.museum -sandiego.museum -sanfrancisco.museum -santabarbara.museum -santacruz.museum -santafe.museum -saskatchewan.museum -satx.museum -savannahga.museum -schlesisches.museum -schoenbrunn.museum -schokoladen.museum -school.museum -schweiz.museum -science.museum -scienceandhistory.museum -scienceandindustry.museum -sciencecenter.museum -sciencecenters.museum -science-fiction.museum -sciencehistory.museum -sciences.museum -sciencesnaturelles.museum -scotland.museum -seaport.museum -settlement.museum -settlers.museum -shell.museum -sherbrooke.museum -sibenik.museum -silk.museum -ski.museum -skole.museum -society.museum -sologne.museum -soundandvision.museum -southcarolina.museum -southwest.museum -space.museum -spy.museum -square.museum -stadt.museum -stalbans.museum -starnberg.museum -state.museum -stateofdelaware.museum -station.museum -steam.museum -steiermark.museum -stjohn.museum -stockholm.museum -stpetersburg.museum -stuttgart.museum -suisse.museum -surgeonshall.museum -surrey.museum -svizzera.museum -sweden.museum -sydney.museum -tank.museum -tcm.museum -technology.museum -telekommunikation.museum -television.museum -texas.museum -textile.museum -theater.museum -time.museum -timekeeping.museum -topology.museum -torino.museum -touch.museum -town.museum -transport.museum -tree.museum -trolley.museum -trust.museum -trustee.museum -uhren.museum -ulm.museum -undersea.museum -university.museum -usa.museum -usantiques.museum -usarts.museum -uscountryestate.museum -usculture.museum -usdecorativearts.museum -usgarden.museum -ushistory.museum -ushuaia.museum -uslivinghistory.museum -utah.museum -uvic.museum -valley.museum -vantaa.museum -versailles.museum -viking.museum -village.museum -virginia.museum -virtual.museum -virtuel.museum -vlaanderen.museum -volkenkunde.museum -wales.museum -wallonie.museum -war.museum -washingtondc.museum -watchandclock.museum -watch-and-clock.museum -western.museum -westfalen.museum -whaling.museum -wildlife.museum -williamsburg.museum -windmill.museum -workshop.museum -york.museum -yorkshire.museum -yosemite.museum -youth.museum -zoological.museum -zoology.museum -ירושלי×.museum -иком.museum - -// mv : http://en.wikipedia.org/wiki/.mv -// "mv" included because, contra Wikipedia, google.mv exists. -mv -aero.mv -biz.mv -com.mv -coop.mv -edu.mv -gov.mv -info.mv -int.mv -mil.mv -museum.mv -name.mv -net.mv -org.mv -pro.mv - -// mw : http://www.registrar.mw/ -mw -ac.mw -biz.mw -co.mw -com.mw -coop.mw -edu.mw -gov.mw -int.mw -museum.mw -net.mw -org.mw - -// mx : http://www.nic.mx/ -// Submitted by registry <farias@nic.mx> 2008-06-19 -mx -com.mx -org.mx -gob.mx -edu.mx -net.mx - -// my : http://www.mynic.net.my/ -my -com.my -net.my -org.my -gov.my -edu.my -mil.my -name.my - -// mz : http://www.gobin.info/domainname/mz-template.doc -*.mz - -// na : http://www.na-nic.com.na/ -// http://www.info.na/domain/ -na -info.na -pro.na -name.na -school.na -or.na -dr.na -us.na -mx.na -ca.na -in.na -cc.na -tv.na -ws.na -mobi.na -co.na -com.na -org.na - -// name : has 2nd-level tlds, but there's no list of them -name - -// nc : http://www.cctld.nc/ -nc -asso.nc - -// ne : http://en.wikipedia.org/wiki/.ne -ne - -// net : http://en.wikipedia.org/wiki/.net -net - -// nf : http://en.wikipedia.org/wiki/.nf -nf -com.nf -net.nf -per.nf -rec.nf -web.nf -arts.nf -firm.nf -info.nf -other.nf -store.nf - -// ng : http://psg.com/dns/ng/ -// Submitted by registry <randy@psg.com> 2008-06-17 -ac.ng -com.ng -edu.ng -gov.ng -net.ng -org.ng - -// ni : http://www.nic.ni/dominios.htm -*.ni - -// nl : http://www.domain-registry.nl/ace.php/c,728,122,,,,Home.html -// Confirmed by registry <Antoin.Verschuren@sidn.nl> (with technical -// reservations) 2008-06-08 -nl - -// BV.nl will be a registry for dutch BV's (besloten vennootschap) -bv.nl - -// no : http://www.norid.no/regelverk/index.en.html -// The Norwegian registry has declined to notify us of updates. The web pages -// referenced below are the official source of the data. There is also an -// announce mailing list: -// https://postlister.uninett.no/sympa/info/norid-diskusjon -no -// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html -fhs.no -vgs.no -fylkesbibl.no -folkebibl.no -museum.no -idrett.no -priv.no -// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html -mil.no -stat.no -dep.no -kommune.no -herad.no -// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html -// counties -aa.no -ah.no -bu.no -fm.no -hl.no -hm.no -jan-mayen.no -mr.no -nl.no -nt.no -of.no -ol.no -oslo.no -rl.no -sf.no -st.no -svalbard.no -tm.no -tr.no -va.no -vf.no -// primary and lower secondary schools per county -gs.aa.no -gs.ah.no -gs.bu.no -gs.fm.no -gs.hl.no -gs.hm.no -gs.jan-mayen.no -gs.mr.no -gs.nl.no -gs.nt.no -gs.of.no -gs.ol.no -gs.oslo.no -gs.rl.no -gs.sf.no -gs.st.no -gs.svalbard.no -gs.tm.no -gs.tr.no -gs.va.no -gs.vf.no -// cities -akrehamn.no -Ã¥krehamn.no -algard.no -Ã¥lgÃ¥rd.no -arna.no -brumunddal.no -bryne.no -bronnoysund.no -brønnøysund.no -drobak.no -drøbak.no -egersund.no -fetsund.no -floro.no -florø.no -fredrikstad.no -hokksund.no -honefoss.no -hønefoss.no -jessheim.no -jorpeland.no -jørpeland.no -kirkenes.no -kopervik.no -krokstadelva.no -langevag.no -langevÃ¥g.no -leirvik.no -mjondalen.no -mjøndalen.no -mo-i-rana.no -mosjoen.no -mosjøen.no -nesoddtangen.no -orkanger.no -osoyro.no -osøyro.no -raholt.no -rÃ¥holt.no -sandnessjoen.no -sandnessjøen.no -skedsmokorset.no -slattum.no -spjelkavik.no -stathelle.no -stavern.no -stjordalshalsen.no -stjørdalshalsen.no -tananger.no -tranby.no -vossevangen.no -// communities -afjord.no -Ã¥fjord.no -agdenes.no -al.no -Ã¥l.no -alesund.no -Ã¥lesund.no -alstahaug.no -alta.no -áltá.no -alaheadju.no -álaheadju.no -alvdal.no -amli.no -Ã¥mli.no -amot.no -Ã¥mot.no -andebu.no -andoy.no -andøy.no -andasuolo.no -ardal.no -Ã¥rdal.no -aremark.no -arendal.no -Ã¥s.no -aseral.no -Ã¥seral.no -asker.no -askim.no -askvoll.no -askoy.no -askøy.no -asnes.no -Ã¥snes.no -audnedaln.no -aukra.no -aure.no -aurland.no -aurskog-holand.no -aurskog-høland.no -austevoll.no -austrheim.no -averoy.no -averøy.no -balestrand.no -ballangen.no -balat.no -bálát.no -balsfjord.no -bahccavuotna.no -báhccavuotna.no -bamble.no -bardu.no -beardu.no -beiarn.no -bajddar.no -bájddar.no -baidar.no -báidár.no -berg.no -bergen.no -berlevag.no -berlevÃ¥g.no -bearalvahki.no -bearalváhki.no -bindal.no -birkenes.no -bjarkoy.no -bjarkøy.no -bjerkreim.no -bjugn.no -bodo.no -bodø.no -badaddja.no -bÃ¥dÃ¥ddjÃ¥.no -budejju.no -bokn.no -bremanger.no -bronnoy.no -brønnøy.no -bygland.no -bykle.no -barum.no -bærum.no -bo.telemark.no -bø.telemark.no -bo.nordland.no -bø.nordland.no -bievat.no -bievát.no -bomlo.no -bømlo.no -batsfjord.no -bÃ¥tsfjord.no -bahcavuotna.no -báhcavuotna.no -dovre.no -drammen.no -drangedal.no -dyroy.no -dyrøy.no -donna.no -dønna.no -eid.no -eidfjord.no -eidsberg.no -eidskog.no -eidsvoll.no -eigersund.no -elverum.no -enebakk.no -engerdal.no -etne.no -etnedal.no -evenes.no -evenassi.no -evenášši.no -evje-og-hornnes.no -farsund.no -fauske.no -fuossko.no -fuoisku.no -fedje.no -fet.no -finnoy.no -finnøy.no -fitjar.no -fjaler.no -fjell.no -flakstad.no -flatanger.no -flekkefjord.no -flesberg.no -flora.no -fla.no -flÃ¥.no -folldal.no -forsand.no -fosnes.no -frei.no -frogn.no -froland.no -frosta.no -frana.no -fræna.no -froya.no -frøya.no -fusa.no -fyresdal.no -forde.no -førde.no -gamvik.no -gangaviika.no -gáŋgaviika.no -gaular.no -gausdal.no -gildeskal.no -gildeskÃ¥l.no -giske.no -gjemnes.no -gjerdrum.no -gjerstad.no -gjesdal.no -gjovik.no -gjøvik.no -gloppen.no -gol.no -gran.no -grane.no -granvin.no -gratangen.no -grimstad.no -grong.no -kraanghke.no -krÃ¥anghke.no -grue.no -gulen.no -hadsel.no -halden.no -halsa.no -hamar.no -hamaroy.no -habmer.no -hábmer.no -hapmir.no -hápmir.no -hammerfest.no -hammarfeasta.no -hámmárfeasta.no -haram.no -hareid.no -harstad.no -hasvik.no -aknoluokta.no -ákÅ‹oluokta.no -hattfjelldal.no -aarborte.no -haugesund.no -hemne.no -hemnes.no -hemsedal.no -heroy.more-og-romsdal.no -herøy.møre-og-romsdal.no -heroy.nordland.no -herøy.nordland.no -hitra.no -hjartdal.no -hjelmeland.no -hobol.no -hobøl.no -hof.no -hol.no -hole.no -holmestrand.no -holtalen.no -holtÃ¥len.no -hornindal.no -horten.no -hurdal.no -hurum.no -hvaler.no -hyllestad.no -hagebostad.no -hægebostad.no -hoyanger.no -høyanger.no -hoylandet.no -høylandet.no -ha.no -hÃ¥.no -ibestad.no -inderoy.no -inderøy.no -iveland.no -jevnaker.no -jondal.no -jolster.no -jølster.no -karasjok.no -karasjohka.no -kárášjohka.no -karlsoy.no -galsa.no -gálsá.no -karmoy.no -karmøy.no -kautokeino.no -guovdageaidnu.no -klepp.no -klabu.no -klæbu.no -kongsberg.no -kongsvinger.no -kragero.no -kragerø.no -kristiansand.no -kristiansund.no -krodsherad.no -krødsherad.no -kvalsund.no -rahkkeravju.no -ráhkkerávju.no -kvam.no -kvinesdal.no -kvinnherad.no -kviteseid.no -kvitsoy.no -kvitsøy.no -kvafjord.no -kvæfjord.no -giehtavuoatna.no -kvanangen.no -kvænangen.no -navuotna.no -návuotna.no -kafjord.no -kÃ¥fjord.no -gaivuotna.no -gáivuotna.no -larvik.no -lavangen.no -lavagis.no -loabat.no -loabát.no -lebesby.no -davvesiida.no -leikanger.no -leirfjord.no -leka.no -leksvik.no -lenvik.no -leangaviika.no -leaÅ‹gaviika.no -lesja.no -levanger.no -lier.no -lierne.no -lillehammer.no -lillesand.no -lindesnes.no -lindas.no -lindÃ¥s.no -lom.no -loppa.no -lahppi.no -láhppi.no -lund.no -lunner.no -luroy.no -lurøy.no -luster.no -lyngdal.no -lyngen.no -ivgu.no -lardal.no -lerdal.no -lærdal.no -lodingen.no -lødingen.no -lorenskog.no -lørenskog.no -loten.no -løten.no -malvik.no -masoy.no -mÃ¥søy.no -muosat.no -muosát.no -mandal.no -marker.no -marnardal.no -masfjorden.no -meland.no -meldal.no -melhus.no -meloy.no -meløy.no -meraker.no -merÃ¥ker.no -moareke.no -moÃ¥reke.no -midsund.no -midtre-gauldal.no -modalen.no -modum.no -molde.no -moskenes.no -moss.no -mosvik.no -malselv.no -mÃ¥lselv.no -malatvuopmi.no -málatvuopmi.no -namdalseid.no -aejrie.no -namsos.no -namsskogan.no -naamesjevuemie.no -nååmesjevuemie.no -laakesvuemie.no -nannestad.no -narvik.no -narviika.no -naustdal.no -nedre-eiker.no -nes.akershus.no -nes.buskerud.no -nesna.no -nesodden.no -nesseby.no -unjarga.no -unjárga.no -nesset.no -nissedal.no -nittedal.no -nord-aurdal.no -nord-fron.no -nord-odal.no -norddal.no -nordkapp.no -davvenjarga.no -davvenjárga.no -nordre-land.no -nordreisa.no -raisa.no -ráisa.no -nore-og-uvdal.no -notodden.no -naroy.no -nærøy.no -notteroy.no -nøtterøy.no -odda.no -oksnes.no -øksnes.no -oppdal.no -oppegard.no -oppegÃ¥rd.no -orkdal.no -orland.no -ørland.no -orskog.no -ørskog.no -orsta.no -ørsta.no -os.hedmark.no -os.hordaland.no -osen.no -osteroy.no -osterøy.no -ostre-toten.no -østre-toten.no -overhalla.no -ovre-eiker.no -øvre-eiker.no -oyer.no -øyer.no -oygarden.no -øygarden.no -oystre-slidre.no -øystre-slidre.no -porsanger.no -porsangu.no -porsáŋgu.no -porsgrunn.no -radoy.no -radøy.no -rakkestad.no -rana.no -ruovat.no -randaberg.no -rauma.no -rendalen.no -rennebu.no -rennesoy.no -rennesøy.no -rindal.no -ringebu.no -ringerike.no -ringsaker.no -rissa.no -risor.no -risør.no -roan.no -rollag.no -rygge.no -ralingen.no -rælingen.no -rodoy.no -rødøy.no -romskog.no -rømskog.no -roros.no -røros.no -rost.no -røst.no -royken.no -røyken.no -royrvik.no -røyrvik.no -rade.no -rÃ¥de.no -salangen.no -siellak.no -saltdal.no -salat.no -sálát.no -sálat.no -samnanger.no -sande.more-og-romsdal.no -sande.møre-og-romsdal.no -sande.vestfold.no -sandefjord.no -sandnes.no -sandoy.no -sandøy.no -sarpsborg.no -sauda.no -sauherad.no -sel.no -selbu.no -selje.no -seljord.no -sigdal.no -siljan.no -sirdal.no -skaun.no -skedsmo.no -ski.no -skien.no -skiptvet.no -skjervoy.no -skjervøy.no -skierva.no -skiervá.no -skjak.no -skjÃ¥k.no -skodje.no -skanland.no -skÃ¥nland.no -skanit.no -skánit.no -smola.no -smøla.no -snillfjord.no -snasa.no -snÃ¥sa.no -snoasa.no -snaase.no -snÃ¥ase.no -sogndal.no -sokndal.no -sola.no -solund.no -songdalen.no -sortland.no -spydeberg.no -stange.no -stavanger.no -steigen.no -steinkjer.no -stjordal.no -stjørdal.no -stokke.no -stor-elvdal.no -stord.no -stordal.no -storfjord.no -omasvuotna.no -strand.no -stranda.no -stryn.no -sula.no -suldal.no -sund.no -sunndal.no -surnadal.no -sveio.no -svelvik.no -sykkylven.no -sogne.no -søgne.no -somna.no -sømna.no -sondre-land.no -søndre-land.no -sor-aurdal.no -sør-aurdal.no -sor-fron.no -sør-fron.no -sor-odal.no -sør-odal.no -sor-varanger.no -sør-varanger.no -matta-varjjat.no -mátta-várjjat.no -sorfold.no -sørfold.no -sorreisa.no -sørreisa.no -sorum.no -sørum.no -tana.no -deatnu.no -time.no -tingvoll.no -tinn.no -tjeldsund.no -dielddanuorri.no -tjome.no -tjøme.no -tokke.no -tolga.no -torsken.no -tranoy.no -tranøy.no -tromso.no -tromsø.no -tromsa.no -romsa.no -trondheim.no -troandin.no -trysil.no -trana.no -træna.no -trogstad.no -trøgstad.no -tvedestrand.no -tydal.no -tynset.no -tysfjord.no -divtasvuodna.no -divttasvuotna.no -tysnes.no -tysvar.no -tysvær.no -tonsberg.no -tønsberg.no -ullensaker.no -ullensvang.no -ulvik.no -utsira.no -vadso.no -vadsø.no -cahcesuolo.no -Äáhcesuolo.no -vaksdal.no -valle.no -vang.no -vanylven.no -vardo.no -vardø.no -varggat.no -várggát.no -vefsn.no -vaapste.no -vega.no -vegarshei.no -vegÃ¥rshei.no -vennesla.no -verdal.no -verran.no -vestby.no -vestnes.no -vestre-slidre.no -vestre-toten.no -vestvagoy.no -vestvÃ¥gøy.no -vevelstad.no -vik.no -vikna.no -vindafjord.no -volda.no -voss.no -varoy.no -værøy.no -vagan.no -vÃ¥gan.no -voagat.no -vagsoy.no -vÃ¥gsøy.no -vaga.no -vÃ¥gÃ¥.no -valer.ostfold.no -vÃ¥ler.østfold.no -valer.hedmark.no -vÃ¥ler.hedmark.no - -// np : http://www.mos.com.np/register.html -*.np - -// nr : http://cenpac.net.nr/dns/index.html -// Confirmed by registry <technician@cenpac.net.nr> 2008-06-17 -nr -biz.nr -info.nr -gov.nr -edu.nr -org.nr -net.nr -com.nr - -// nu : http://en.wikipedia.org/wiki/.nu -nu - -// nz : http://en.wikipedia.org/wiki/.nz -*.nz - -// om : http://en.wikipedia.org/wiki/.om -*.om -!mediaphone.om -!nawrastelecom.om -!nawras.om -!omanmobile.om -!omanpost.om -!omantel.om -!rakpetroleum.om -!siemens.om -!songfest.om -!statecouncil.om - -// org : http://en.wikipedia.org/wiki/.org -org - -// pa : http://www.nic.pa/ -// Some additional second level "domains" resolve directly as hostnames, such as -// pannet.pa, so we add a rule for "pa". -pa -ac.pa -gob.pa -com.pa -org.pa -sld.pa -edu.pa -net.pa -ing.pa -abo.pa -med.pa -nom.pa - -// pe : https://www.nic.pe/InformeFinalComision.pdf -pe -edu.pe -gob.pe -nom.pe -mil.pe -org.pe -com.pe -net.pe - -// pf : http://www.gobin.info/domainname/formulaire-pf.pdf -pf -com.pf -org.pf -edu.pf - -// pg : http://en.wikipedia.org/wiki/.pg -*.pg - -// ph : http://www.domains.ph/FAQ2.asp -// Submitted by registry <jed@email.com.ph> 2008-06-13 -ph -com.ph -net.ph -org.ph -gov.ph -edu.ph -ngo.ph -mil.ph -i.ph - -// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK -pk -com.pk -net.pk -edu.pk -org.pk -fam.pk -biz.pk -web.pk -gov.pk -gob.pk -gok.pk -gon.pk -gop.pk -gos.pk -info.pk - -// pl : http://www.dns.pl/english/ -pl -// NASK functional domains (nask.pl / dns.pl) : http://www.dns.pl/english/dns-funk.html -aid.pl -agro.pl -atm.pl -auto.pl -biz.pl -com.pl -edu.pl -gmina.pl -gsm.pl -info.pl -mail.pl -miasta.pl -media.pl -mil.pl -net.pl -nieruchomosci.pl -nom.pl -org.pl -pc.pl -powiat.pl -priv.pl -realestate.pl -rel.pl -sex.pl -shop.pl -sklep.pl -sos.pl -szkola.pl -targi.pl -tm.pl -tourism.pl -travel.pl -turystyka.pl -// ICM functional domains (icm.edu.pl) -6bone.pl -art.pl -mbone.pl -// Government domains (administred by ippt.gov.pl) -gov.pl -uw.gov.pl -um.gov.pl -ug.gov.pl -upow.gov.pl -starostwo.gov.pl -so.gov.pl -sr.gov.pl -po.gov.pl -pa.gov.pl -// other functional domains -ngo.pl -irc.pl -usenet.pl -// NASK geographical domains : http://www.dns.pl/english/dns-regiony.html -augustow.pl -babia-gora.pl -bedzin.pl -beskidy.pl -bialowieza.pl -bialystok.pl -bielawa.pl -bieszczady.pl -boleslawiec.pl -bydgoszcz.pl -bytom.pl -cieszyn.pl -czeladz.pl -czest.pl -dlugoleka.pl -elblag.pl -elk.pl -glogow.pl -gniezno.pl -gorlice.pl -grajewo.pl -ilawa.pl -jaworzno.pl -jelenia-gora.pl -jgora.pl -kalisz.pl -kazimierz-dolny.pl -karpacz.pl -kartuzy.pl -kaszuby.pl -katowice.pl -kepno.pl -ketrzyn.pl -klodzko.pl -kobierzyce.pl -kolobrzeg.pl -konin.pl -konskowola.pl -kutno.pl -lapy.pl -lebork.pl -legnica.pl -lezajsk.pl -limanowa.pl -lomza.pl -lowicz.pl -lubin.pl -lukow.pl -malbork.pl -malopolska.pl -mazowsze.pl -mazury.pl -mielec.pl -mielno.pl -mragowo.pl -naklo.pl -nowaruda.pl -nysa.pl -olawa.pl -olecko.pl -olkusz.pl -olsztyn.pl -opoczno.pl -opole.pl -ostroda.pl -ostroleka.pl -ostrowiec.pl -ostrowwlkp.pl -pila.pl -pisz.pl -podhale.pl -podlasie.pl -polkowice.pl -pomorze.pl -pomorskie.pl -prochowice.pl -pruszkow.pl -przeworsk.pl -pulawy.pl -radom.pl -rawa-maz.pl -rybnik.pl -rzeszow.pl -sanok.pl -sejny.pl -siedlce.pl -slask.pl -slupsk.pl -sosnowiec.pl -stalowa-wola.pl -skoczow.pl -starachowice.pl -stargard.pl -suwalki.pl -swidnica.pl -swiebodzin.pl -swinoujscie.pl -szczecin.pl -szczytno.pl -tarnobrzeg.pl -tgory.pl -turek.pl -tychy.pl -ustka.pl -walbrzych.pl -warmia.pl -warszawa.pl -waw.pl -wegrow.pl -wielun.pl -wlocl.pl -wloclawek.pl -wodzislaw.pl -wolomin.pl -wroclaw.pl -zachpomor.pl -zagan.pl -zarow.pl -zgora.pl -zgorzelec.pl -// TASK geographical domains (www.task.gda.pl/uslugi/dns) -gda.pl -gdansk.pl -gdynia.pl -med.pl -sopot.pl -// other geographical domains -gliwice.pl -krakow.pl -poznan.pl -wroc.pl -zakopane.pl - -// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -pm - -// pn : http://www.government.pn/PnRegistry/policies.htm -pn -gov.pn -co.pn -org.pn -edu.pn -net.pn - -// pr : http://www.nic.pr/index.asp?f=1 -pr -com.pr -net.pr -org.pr -gov.pr -edu.pr -isla.pr -pro.pr -biz.pr -info.pr -name.pr -// these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr -est.pr -prof.pr -ac.pr - -// pro : http://www.nic.pro/support_faq.htm -pro -aca.pro -bar.pro -cpa.pro -jur.pro -law.pro -med.pro -eng.pro - -// ps : http://en.wikipedia.org/wiki/.ps -// http://www.nic.ps/registration/policy.html#reg -ps -edu.ps -gov.ps -sec.ps -plo.ps -com.ps -org.ps -net.ps - -// pt : http://online.dns.pt/dns/start_dns -pt -net.pt -gov.pt -org.pt -edu.pt -int.pt -publ.pt -com.pt -nome.pt - -// pw : http://en.wikipedia.org/wiki/.pw -pw -co.pw -ne.pw -or.pw -ed.pw -go.pw -belau.pw - -// py : http://www.nic.py/faq_a.html#faq_b -*.py - -// qa : http://domains.qa/en/ -qa -com.qa -edu.qa -gov.qa -mil.qa -name.qa -net.qa -org.qa -sch.qa - -// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs -re -com.re -asso.re -nom.re - -// ro : http://www.rotld.ro/ -ro -com.ro -org.ro -tm.ro -nt.ro -nom.ro -info.ro -rec.ro -arts.ro -firm.ro -store.ro -www.ro - -// rs : http://en.wikipedia.org/wiki/.rs -rs -co.rs -org.rs -edu.rs -ac.rs -gov.rs -in.rs - -// ru : http://www.cctld.ru/ru/docs/aktiv_8.php -// Industry domains -ru -ac.ru -com.ru -edu.ru -int.ru -net.ru -org.ru -pp.ru -// Geographical domains -adygeya.ru -altai.ru -amur.ru -arkhangelsk.ru -astrakhan.ru -bashkiria.ru -belgorod.ru -bir.ru -bryansk.ru -buryatia.ru -cbg.ru -chel.ru -chelyabinsk.ru -chita.ru -chukotka.ru -chuvashia.ru -dagestan.ru -dudinka.ru -e-burg.ru -grozny.ru -irkutsk.ru -ivanovo.ru -izhevsk.ru -jar.ru -joshkar-ola.ru -kalmykia.ru -kaluga.ru -kamchatka.ru -karelia.ru -kazan.ru -kchr.ru -kemerovo.ru -khabarovsk.ru -khakassia.ru -khv.ru -kirov.ru -koenig.ru -komi.ru -kostroma.ru -krasnoyarsk.ru -kuban.ru -kurgan.ru -kursk.ru -lipetsk.ru -magadan.ru -mari.ru -mari-el.ru -marine.ru -mordovia.ru -mosreg.ru -msk.ru -murmansk.ru -nalchik.ru -nnov.ru -nov.ru -novosibirsk.ru -nsk.ru -omsk.ru -orenburg.ru -oryol.ru -palana.ru -penza.ru -perm.ru -pskov.ru -ptz.ru -rnd.ru -ryazan.ru -sakhalin.ru -samara.ru -saratov.ru -simbirsk.ru -smolensk.ru -spb.ru -stavropol.ru -stv.ru -surgut.ru -tambov.ru -tatarstan.ru -tom.ru -tomsk.ru -tsaritsyn.ru -tsk.ru -tula.ru -tuva.ru -tver.ru -tyumen.ru -udm.ru -udmurtia.ru -ulan-ude.ru -vladikavkaz.ru -vladimir.ru -vladivostok.ru -volgograd.ru -vologda.ru -voronezh.ru -vrn.ru -vyatka.ru -yakutia.ru -yamal.ru -yaroslavl.ru -yekaterinburg.ru -yuzhno-sakhalinsk.ru -// More geographical domains -amursk.ru -baikal.ru -cmw.ru -fareast.ru -jamal.ru -kms.ru -k-uralsk.ru -kustanai.ru -kuzbass.ru -magnitka.ru -mytis.ru -nakhodka.ru -nkz.ru -norilsk.ru -oskol.ru -pyatigorsk.ru -rubtsovsk.ru -snz.ru -syzran.ru -vdonsk.ru -zgrad.ru -// State domains -gov.ru -mil.ru -// Technical domains -test.ru - -// rw : http://www.nic.rw/cgi-bin/policy.pl -rw -gov.rw -net.rw -edu.rw -ac.rw -com.rw -co.rw -int.rw -mil.rw -gouv.rw - -// sa : http://www.nic.net.sa/ -sa -com.sa -net.sa -org.sa -gov.sa -med.sa -pub.sa -edu.sa -sch.sa - -// sb : http://www.sbnic.net.sb/ -// Submitted by registry <lee.humphries@telekom.com.sb> 2008-06-08 -sb -com.sb -edu.sb -gov.sb -net.sb -org.sb - -// sc : http://www.nic.sc/ -sc -com.sc -gov.sc -net.sc -org.sc -edu.sc - -// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm -// Submitted by registry <admin@isoc.sd> 2008-06-17 -sd -com.sd -net.sd -org.sd -edu.sd -med.sd -gov.sd -info.sd - -// se : http://en.wikipedia.org/wiki/.se -// Submitted by registry <Patrik.Wallstrom@iis.se> 2008-06-24 -se -a.se -ac.se -b.se -bd.se -brand.se -c.se -d.se -e.se -f.se -fh.se -fhsk.se -fhv.se -g.se -h.se -i.se -k.se -komforb.se -kommunalforbund.se -komvux.se -l.se -lanbib.se -m.se -n.se -naturbruksgymn.se -o.se -org.se -p.se -parti.se -pp.se -press.se -r.se -s.se -sshn.se -t.se -tm.se -u.se -w.se -x.se -y.se -z.se - -// sg : http://www.nic.net.sg/sub_policies_agreement/2ld.html -sg -com.sg -net.sg -org.sg -gov.sg -edu.sg -per.sg - -// sh : http://www.nic.sh/rules.html -// list of 2nd level domains ? -sh - -// si : http://en.wikipedia.org/wiki/.si -si - -// sj : No registrations at this time. -// Submitted by registry <jarle@uninett.no> 2008-06-16 - -// sk : http://en.wikipedia.org/wiki/.sk -// list of 2nd level domains ? -sk - -// sl : http://www.nic.sl -// Submitted by registry <adam@neoip.com> 2008-06-12 -sl -com.sl -net.sl -edu.sl -gov.sl -org.sl - -// sm : http://en.wikipedia.org/wiki/.sm -sm - -// sn : http://en.wikipedia.org/wiki/.sn -sn -art.sn -com.sn -edu.sn -gouv.sn -org.sn -perso.sn -univ.sn - -// so : http://www.soregistry.com/ -so -com.so -net.so -org.so - -// sr : http://en.wikipedia.org/wiki/.sr -sr - -// st : http://www.nic.st/html/policyrules/ -st -co.st -com.st -consulado.st -edu.st -embaixada.st -gov.st -mil.st -net.st -org.st -principe.st -saotome.st -store.st - -// su : http://en.wikipedia.org/wiki/.su -su - -// sv : http://www.svnet.org.sv/svpolicy.html -*.sv - -// sy : http://en.wikipedia.org/wiki/.sy -// see also: http://www.gobin.info/domainname/sy.doc -sy -edu.sy -gov.sy -net.sy -mil.sy -com.sy -org.sy - -// sz : http://en.wikipedia.org/wiki/.sz -// http://www.sispa.org.sz/ -sz -co.sz -ac.sz -org.sz - -// tc : http://en.wikipedia.org/wiki/.tc -tc - -// td : http://en.wikipedia.org/wiki/.td -td - -// tel: http://en.wikipedia.org/wiki/.tel -// http://www.telnic.org/ -tel - -// tf : http://en.wikipedia.org/wiki/.tf -tf - -// tg : http://en.wikipedia.org/wiki/.tg -// http://www.nic.tg/nictg/index.php implies no reserved 2nd-level domains, -// although this contradicts wikipedia. -tg - -// th : http://en.wikipedia.org/wiki/.th -// Submitted by registry <krit@thains.co.th> 2008-06-17 -th -ac.th -co.th -go.th -in.th -mi.th -net.th -or.th - -// tj : http://www.nic.tj/policy.htm -tj -ac.tj -biz.tj -co.tj -com.tj -edu.tj -go.tj -gov.tj -int.tj -mil.tj -name.tj -net.tj -nic.tj -org.tj -test.tj -web.tj - -// tk : http://en.wikipedia.org/wiki/.tk -tk - -// tl : http://en.wikipedia.org/wiki/.tl -tl -gov.tl - -// tm : http://www.nic.tm/rules.html -// list of 2nd level tlds ? -tm - -// tn : http://en.wikipedia.org/wiki/.tn -// http://whois.ati.tn/ -tn -com.tn -ens.tn -fin.tn -gov.tn -ind.tn -intl.tn -nat.tn -net.tn -org.tn -info.tn -perso.tn -tourism.tn -edunet.tn -rnrt.tn -rns.tn -rnu.tn -mincom.tn -agrinet.tn -defense.tn -turen.tn - -// to : http://en.wikipedia.org/wiki/.to -// Submitted by registry <egullich@colo.to> 2008-06-17 -to -com.to -gov.to -net.to -org.to -edu.to -mil.to - -// tr : http://en.wikipedia.org/wiki/.tr -*.tr -!nic.tr -// Used by government in the TRNC -// http://en.wikipedia.org/wiki/.nc.tr -gov.nc.tr - -// travel : http://en.wikipedia.org/wiki/.travel -travel - -// tt : http://www.nic.tt/ -tt -co.tt -com.tt -org.tt -net.tt -biz.tt -info.tt -pro.tt -int.tt -coop.tt -jobs.tt -mobi.tt -travel.tt -museum.tt -aero.tt -name.tt -gov.tt -edu.tt - -// tv : http://en.wikipedia.org/wiki/.tv -// Not listing any 2LDs as reserved since none seem to exist in practice, -// Wikipedia notwithstanding. -tv - -// tw : http://en.wikipedia.org/wiki/.tw -tw -edu.tw -gov.tw -mil.tw -com.tw -net.tw -org.tw -idv.tw -game.tw -ebiz.tw -club.tw -網路.tw -組織.tw -商業.tw - -// tz : http://en.wikipedia.org/wiki/.tz -// Submitted by registry <randy@psg.com> 2008-06-17 -// Updated from http://www.tznic.or.tz/index.php/domains.html 2010-10-25 -ac.tz -co.tz -go.tz -mil.tz -ne.tz -or.tz -sc.tz - -// ua : http://www.nic.net.ua/ -ua -com.ua -edu.ua -gov.ua -in.ua -net.ua -org.ua -// ua geo-names -cherkassy.ua -chernigov.ua -chernovtsy.ua -ck.ua -cn.ua -crimea.ua -cv.ua -dn.ua -dnepropetrovsk.ua -donetsk.ua -dp.ua -if.ua -ivano-frankivsk.ua -kh.ua -kharkov.ua -kherson.ua -khmelnitskiy.ua -kiev.ua -kirovograd.ua -km.ua -kr.ua -ks.ua -kv.ua -lg.ua -lugansk.ua -lutsk.ua -lviv.ua -mk.ua -nikolaev.ua -od.ua -odessa.ua -pl.ua -poltava.ua -rovno.ua -rv.ua -sebastopol.ua -sumy.ua -te.ua -ternopil.ua -uzhgorod.ua -vinnica.ua -vn.ua -zaporizhzhe.ua -zp.ua -zhitomir.ua -zt.ua - -// Private registries in .ua -co.ua -pp.ua - -// ug : http://www.registry.co.ug/ -ug -co.ug -ac.ug -sc.ug -go.ug -ne.ug -or.ug - -// uk : http://en.wikipedia.org/wiki/.uk -*.uk -*.sch.uk -!bl.uk -!british-library.uk -!icnet.uk -!jet.uk -!mod.uk -!nel.uk -!nhs.uk -!nic.uk -!nls.uk -!national-library-scotland.uk -!parliament.uk -!police.uk - -// us : http://en.wikipedia.org/wiki/.us -us -dni.us -fed.us -isa.us -kids.us -nsn.us -// us geographic names -ak.us -al.us -ar.us -as.us -az.us -ca.us -co.us -ct.us -dc.us -de.us -fl.us -ga.us -gu.us -hi.us -ia.us -id.us -il.us -in.us -ks.us -ky.us -la.us -ma.us -md.us -me.us -mi.us -mn.us -mo.us -ms.us -mt.us -nc.us -nd.us -ne.us -nh.us -nj.us -nm.us -nv.us -ny.us -oh.us -ok.us -or.us -pa.us -pr.us -ri.us -sc.us -sd.us -tn.us -tx.us -ut.us -vi.us -vt.us -va.us -wa.us -wi.us -wv.us -wy.us -// The registrar notes several more specific domains available in each state, -// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat -// haphazard; in some states these domains resolve as addresses, while in others -// only subdomains are available, or even nothing at all. We include the -// most common ones where it's clear that different sites are different -// entities. -k12.ak.us -k12.al.us -k12.ar.us -k12.as.us -k12.az.us -k12.ca.us -k12.co.us -k12.ct.us -k12.dc.us -k12.de.us -k12.fl.us -k12.ga.us -k12.gu.us -// k12.hi.us Hawaii has a state-wide DOE login: bug 614565 -k12.ia.us -k12.id.us -k12.il.us -k12.in.us -k12.ks.us -k12.ky.us -k12.la.us -k12.ma.us -k12.md.us -k12.me.us -k12.mi.us -k12.mn.us -k12.mo.us -k12.ms.us -k12.mt.us -k12.nc.us -k12.nd.us -k12.ne.us -k12.nh.us -k12.nj.us -k12.nm.us -k12.nv.us -k12.ny.us -k12.oh.us -k12.ok.us -k12.or.us -k12.pa.us -k12.pr.us -k12.ri.us -k12.sc.us -k12.sd.us -k12.tn.us -k12.tx.us -k12.ut.us -k12.vi.us -k12.vt.us -k12.va.us -k12.wa.us -k12.wi.us -k12.wv.us -k12.wy.us - -cc.ak.us -cc.al.us -cc.ar.us -cc.as.us -cc.az.us -cc.ca.us -cc.co.us -cc.ct.us -cc.dc.us -cc.de.us -cc.fl.us -cc.ga.us -cc.gu.us -cc.hi.us -cc.ia.us -cc.id.us -cc.il.us -cc.in.us -cc.ks.us -cc.ky.us -cc.la.us -cc.ma.us -cc.md.us -cc.me.us -cc.mi.us -cc.mn.us -cc.mo.us -cc.ms.us -cc.mt.us -cc.nc.us -cc.nd.us -cc.ne.us -cc.nh.us -cc.nj.us -cc.nm.us -cc.nv.us -cc.ny.us -cc.oh.us -cc.ok.us -cc.or.us -cc.pa.us -cc.pr.us -cc.ri.us -cc.sc.us -cc.sd.us -cc.tn.us -cc.tx.us -cc.ut.us -cc.vi.us -cc.vt.us -cc.va.us -cc.wa.us -cc.wi.us -cc.wv.us -cc.wy.us - -lib.ak.us -lib.al.us -lib.ar.us -lib.as.us -lib.az.us -lib.ca.us -lib.co.us -lib.ct.us -lib.dc.us -lib.de.us -lib.fl.us -lib.ga.us -lib.gu.us -lib.hi.us -lib.ia.us -lib.id.us -lib.il.us -lib.in.us -lib.ks.us -lib.ky.us -lib.la.us -lib.ma.us -lib.md.us -lib.me.us -lib.mi.us -lib.mn.us -lib.mo.us -lib.ms.us -lib.mt.us -lib.nc.us -lib.nd.us -lib.ne.us -lib.nh.us -lib.nj.us -lib.nm.us -lib.nv.us -lib.ny.us -lib.oh.us -lib.ok.us -lib.or.us -lib.pa.us -lib.pr.us -lib.ri.us -lib.sc.us -lib.sd.us -lib.tn.us -lib.tx.us -lib.ut.us -lib.vi.us -lib.vt.us -lib.va.us -lib.wa.us -lib.wi.us -lib.wv.us -lib.wy.us - -// k12.ma.us contains school districts in Massachusetts. The 4LDs are -// managed indepedently except for private (PVT), charter (CHTR) and -// parochial (PAROCH) schools. Those are delegated dorectly to the -// 5LD operators. <k12-ma-hostmaster _ at _ rsuc.gweep.net> -pvt.k12.ma.us -chtr.k12.ma.us -paroch.k12.ma.us - -// uy : http://www.antel.com.uy/ -*.uy - -// uz : http://www.reg.uz/registerr.html -// are there other 2nd level tlds ? -uz -com.uz -co.uz - -// va : http://en.wikipedia.org/wiki/.va -va - -// vc : http://en.wikipedia.org/wiki/.vc -// Submitted by registry <kshah@ca.afilias.info> 2008-06-13 -vc -com.vc -net.vc -org.vc -gov.vc -mil.vc -edu.vc - -// ve : http://registro.nic.ve/nicve/registro/index.html -*.ve - -// vg : http://en.wikipedia.org/wiki/.vg -vg - -// vi : http://www.nic.vi/newdomainform.htm -// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other -// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they -// are available for registration (which they do not seem to be). -vi -co.vi -com.vi -k12.vi -net.vi -org.vi - -// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp -vn -com.vn -net.vn -org.vn -edu.vn -gov.vn -int.vn -ac.vn -biz.vn -info.vn -name.vn -pro.vn -health.vn - -// vu : http://en.wikipedia.org/wiki/.vu -// list of 2nd level tlds ? -vu - -// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -wf - -// ws : http://en.wikipedia.org/wiki/.ws -// http://samoanic.ws/index.dhtml -ws -com.ws -net.ws -org.ws -gov.ws -edu.ws - -// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf -yt - -// IDN ccTLDs -// Please sort by ISO 3166 ccTLD, then punicode string -// when submitting patches and follow this format: -// <Punicode> ("<english word>" <language>) : <ISO 3166 ccTLD> -// [optional sponsoring org] -// <URL> - -// xn--mgbaam7a8h ("Emerat" Arabic) : AE -//http://nic.ae/english/arabicdomain/rules.jsp -امارات - -// xn--54b7fta0cc ("Bangla" Bangla) : BD -বাংলা - -// xn--fiqs8s ("China" Chinese-Han-Simplified <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中国 - -// xn--fiqz9s ("China" Chinese-Han-Traditional <.Zhonggou>) : CN -// CNNIC -// http://cnnic.cn/html/Dir/2005/10/11/3218.htm -中國 - -// xn--lgbbat1ad8j ("Algeria / Al Jazair" Arabic) : DZ -الجزائر - -// xn--wgbh1c ("Egypt" Arabic .masr) : EG -// http://www.dotmasr.eg/ -مصر - -// xn--node ("ge" Georgian (Mkhedruli)) : GE -გე - -// xn--j6w193g ("Hong Kong" Chinese-Han) : HK -// https://www2.hkirc.hk/register/rules.jsp -香港 - -// xn--h2brj9c ("Bharat" Devanagari) : IN -// India -भारत - -// xn--mgbbh1a71e ("Bharat" Arabic) : IN -// India -بھارت - -// xn--fpcrj9c3d ("Bharat" Telugu) : IN -// India -భారతౠ- -// xn--gecrj9c ("Bharat" Gujarati) : IN -// India -ભારત - -// xn--s9brj9c ("Bharat" Gurmukhi) : IN -// India -ਭਾਰਤ - -// xn--45brj9c ("Bharat" Bengali) : IN -// India -ভারত - -// xn--xkc2dl3a5ee0h ("India" Tamil) : IN -// India -இநà¯à®¤à®¿à®¯à®¾ - -// xn--mgba3a4f16a ("Iran" Persian) : IR -ایران - -// xn--mgba3a4fra ("Iran" Arabic) : IR -ايران - -//xn--mgbayh7gpa ("al-Ordon" Arabic) JO -//National Information Technology Center (NITC) -//Royal Scientific Society, Al-Jubeiha -الاردن - -// xn--3e0b707e ("Republic of Korea" Hangul) : KR -한국 - -// xn--fzc2c9e2c ("Lanka" Sinhalese-Sinhala) : LK -// http://nic.lk -ලංක෠- -// xn--xkc2al3hye2a ("Ilangai" Tamil) : LK -// http://nic.lk -இலஙà¯à®•ை - -// xn--mgbc0a9azcg ("Morocco / al-Maghrib" Arabic) : MA -المغرب - -// xn--mgb9awbf ("Oman" Arabic) : OM -عمان - -// xn--ygbi2ammx ("Falasteen" Arabic) : PS -// The Palestinian National Internet Naming Authority (PNINA) -// http://www.pnina.ps -Ùلسطين - -// xn--90a3ac ("srb" Cyrillic) : RS -Ñрб - -// xn--p1ai ("rf" Russian-Cyrillic) : RU -// http://www.cctld.ru/en/docs/rulesrf.php -рф - -// xn--wgbl6a ("Qatar" Arabic) : QA -// http://www.ict.gov.qa/ -قطر - -// xn--mgberp4a5d4ar ("AlSaudiah" Arabic) : SA -// http://www.nic.net.sa/ -السعودية - -// xn--mgberp4a5d4a87g ("AlSaudiah" Arabic) variant : SA -السعودیة - -// xn--mgbqly7c0a67fbc ("AlSaudiah" Arabic) variant : SA -السعودیۃ - -// xn--mgbqly7cvafr ("AlSaudiah" Arabic) variant : SA -السعوديه - -// xn--ogbpf8fl ("Syria" Arabic) : SY -سورية - -// xn--mgbtf8fl ("Syria" Arabic) variant : SY -سوريا - -// xn--yfro4i67o Singapore ("Singapore" Chinese-Han) : SG -æ–°åŠ å¡ - -// xn--clchc0ea0b2g2a9gcd ("Singapore" Tamil) : SG -சிஙà¯à®•பà¯à®ªà¯‚ர௠- -// xn--o3cw4h ("Thai" Thai) : TH -// http://www.thnic.co.th -ไทย - -// xn--pgbs0dh ("Tunis") : TN -// http://nic.tn -تونس - -// xn--kpry57d ("Taiwan" Chinese-Han-Traditional) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -å°ç£ - -// xn--kprw13d ("Taiwan" Chinese-Han-Simplified) : TW -// http://www.twnic.net/english/dn/dn_07a.htm -å°æ¹¾ - -// xn--nnx388a ("Taiwan") variant : TW -è‡ºç£ - -// xn--j1amh ("ukr" Cyrillic) : UA -укр - -// xn--mgb2ddes ("AlYemen" Arabic) : YE -اليمن - -// xxx : http://icmregistry.com -xxx - -// ye : http://www.y.net.ye/services/domain_name.htm -*.ye - -// za : http://www.zadna.org.za/slds.html -*.za - -// zm : http://en.wikipedia.org/wiki/.zm -*.zm - -// zw : http://en.wikipedia.org/wiki/.zw -*.zw - -// ===END ICANN DOMAINS=== -// ===BEGIN PRIVATE DOMAINS=== - -// info.at : http://www.info.at/ -biz.at -info.at - -// priv.at : http://www.nic.priv.at/ -// Submitted by registry <lendl@nic.at> 2008-06-09 -priv.at - -// co.ca : http://registry.co.ca -co.ca - -// CentralNic : http://www.centralnic.com/names/domains -// Confirmed by registry <gavin.brown@centralnic.com> 2008-06-09 -ar.com -br.com -cn.com -de.com -eu.com -gb.com -gr.com -hu.com -jpn.com -kr.com -no.com -qc.com -ru.com -sa.com -se.com -uk.com -us.com -uy.com -za.com -gb.net -jp.net -se.net -uk.net -ae.org -us.org -com.de - -// Opera Software, A.S.A. -// Requested by Yngve Pettersen <yngve@opera.com> 2009-11-26 -operaunite.com - -// Google, Inc. -// Requested by Eduardo Vela <evn@google.com> 2010-09-06 -appspot.com - -// iki.fi : Submitted by Hannu Aronsson <haa@iki.fi> 2009-11-05 -iki.fi - -// c.la : http://www.c.la/ -c.la - -// ZaNiC : http://www.za.net/ -// Confirmed by registry <hostmaster@nic.za.net> 2009-10-03 -za.net -za.org - -// CoDNS B.V. -// Added 2010-05-23. -co.nl -co.no - -// Mainseek Sp. z o.o. : http://www.co.pl/ -co.pl - -// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ -dyndns-at-home.com -dyndns-at-work.com -dyndns-blog.com -dyndns-free.com -dyndns-home.com -dyndns-ip.com -dyndns-mail.com -dyndns-office.com -dyndns-pics.com -dyndns-remote.com -dyndns-server.com -dyndns-web.com -dyndns-wiki.com -dyndns-work.com -dyndns.biz -dyndns.info -dyndns.org -dyndns.tv -at-band-camp.net -ath.cx -barrel-of-knowledge.info -barrell-of-knowledge.info -better-than.tv -blogdns.com -blogdns.net -blogdns.org -blogsite.org -boldlygoingnowhere.org -broke-it.net -buyshouses.net -cechire.com -dnsalias.com -dnsalias.net -dnsalias.org -dnsdojo.com -dnsdojo.net -dnsdojo.org -does-it.net -doesntexist.com -doesntexist.org -dontexist.com -dontexist.net -dontexist.org -doomdns.com -doomdns.org -dvrdns.org -dyn-o-saur.com -dynalias.com -dynalias.net -dynalias.org -dynathome.net -dyndns.ws -endofinternet.net -endofinternet.org -endoftheinternet.org -est-a-la-maison.com -est-a-la-masion.com -est-le-patron.com -est-mon-blogueur.com -for-better.biz -for-more.biz -for-our.info -for-some.biz -for-the.biz -forgot.her.name -forgot.his.name -from-ak.com -from-al.com -from-ar.com -from-az.net -from-ca.com -from-co.net -from-ct.com -from-dc.com -from-de.com -from-fl.com -from-ga.com -from-hi.com -from-ia.com -from-id.com -from-il.com -from-in.com -from-ks.com -from-ky.com -from-la.net -from-ma.com -from-md.com -from-me.org -from-mi.com -from-mn.com -from-mo.com -from-ms.com -from-mt.com -from-nc.com -from-nd.com -from-ne.com -from-nh.com -from-nj.com -from-nm.com -from-nv.com -from-ny.net -from-oh.com -from-ok.com -from-or.com -from-pa.com -from-pr.com -from-ri.com -from-sc.com -from-sd.com -from-tn.com -from-tx.com -from-ut.com -from-va.com -from-vt.com -from-wa.com -from-wi.com -from-wv.com -from-wy.com -ftpaccess.cc -fuettertdasnetz.de -game-host.org -game-server.cc -getmyip.com -gets-it.net -go.dyndns.org -gotdns.com -gotdns.org -groks-the.info -groks-this.info -ham-radio-op.net -here-for-more.info -hobby-site.com -hobby-site.org -home.dyndns.org -homedns.org -homeftp.net -homeftp.org -homeip.net -homelinux.com -homelinux.net -homelinux.org -homeunix.com -homeunix.net -homeunix.org -iamallama.com -in-the-band.net -is-a-anarchist.com -is-a-blogger.com -is-a-bookkeeper.com -is-a-bruinsfan.org -is-a-bulls-fan.com -is-a-candidate.org -is-a-caterer.com -is-a-celticsfan.org -is-a-chef.com -is-a-chef.net -is-a-chef.org -is-a-conservative.com -is-a-cpa.com -is-a-cubicle-slave.com -is-a-democrat.com -is-a-designer.com -is-a-doctor.com -is-a-financialadvisor.com -is-a-geek.com -is-a-geek.net -is-a-geek.org -is-a-green.com -is-a-guru.com -is-a-hard-worker.com -is-a-hunter.com -is-a-knight.org -is-a-landscaper.com -is-a-lawyer.com -is-a-liberal.com -is-a-libertarian.com -is-a-linux-user.org -is-a-llama.com -is-a-musician.com -is-a-nascarfan.com -is-a-nurse.com -is-a-painter.com -is-a-patsfan.org -is-a-personaltrainer.com -is-a-photographer.com -is-a-player.com -is-a-republican.com -is-a-rockstar.com -is-a-socialist.com -is-a-soxfan.org -is-a-student.com -is-a-teacher.com -is-a-techie.com -is-a-therapist.com -is-an-accountant.com -is-an-actor.com -is-an-actress.com -is-an-anarchist.com -is-an-artist.com -is-an-engineer.com -is-an-entertainer.com -is-by.us -is-certified.com -is-found.org -is-gone.com -is-into-anime.com -is-into-cars.com -is-into-cartoons.com -is-into-games.com -is-leet.com -is-lost.org -is-not-certified.com -is-saved.org -is-slick.com -is-uberleet.com -is-very-bad.org -is-very-evil.org -is-very-good.org -is-very-nice.org -is-very-sweet.org -is-with-theband.com -isa-geek.com -isa-geek.net -isa-geek.org -isa-hockeynut.com -issmarterthanyou.com -isteingeek.de -istmein.de -kicks-ass.net -kicks-ass.org -knowsitall.info -land-4-sale.us -lebtimnetz.de -leitungsen.de -likes-pie.com -likescandy.com -merseine.nu -mine.nu -misconfused.org -mypets.ws -myphotos.cc -neat-url.com -office-on-the.net -on-the-web.tv -podzone.net -podzone.org -readmyblog.org -saves-the-whales.com -scrapper-site.net -scrapping.cc -selfip.biz -selfip.com -selfip.info -selfip.net -selfip.org -sells-for-less.com -sells-for-u.com -sells-it.net -sellsyourhome.org -servebbs.com -servebbs.net -servebbs.org -serveftp.net -serveftp.org -servegame.org -shacknet.nu -simple-url.com -space-to-rent.com -stuff-4-sale.org -stuff-4-sale.us -teaches-yoga.com -thruhere.net -traeumtgerade.de -webhop.biz -webhop.info -webhop.net -webhop.org -worse-than.tv -writesthisblog.com - -// ===END PRIVATE DOMAINS=== diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js deleted file mode 100644 index 3cce815e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tough-cookie/test.js +++ /dev/null @@ -1,1340 +0,0 @@ -/* - * Copyright GoInstant, Inc. and other contributors. All rights reserved. - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -var vows = require('vows'); -var assert = require('assert'); -var async = require('async'); - -// NOTE use require("tough-cookie") in your own code: -var tough = require('./lib/cookie'); -var Cookie = tough.Cookie; -var CookieJar = tough.CookieJar; - - -function dateVows(table) { - var theVows = { }; - var keys = Object.keys(table).forEach(function(date) { - var expect = table[date]; - theVows[date] = function() { - var got = tough.parseDate(date) ? 'valid' : 'invalid'; - assert.equal(got, expect ? 'valid' : 'invalid'); - }; - }); - return { "date parsing": theVows }; -} - -function matchVows(func,table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var dom = item[1]; - var expect = item[2]; - var label = str+(expect?" matches ":" doesn't match ")+dom; - theVows[label] = function() { - assert.equal(func(str,dom),expect); - }; - }); - return theVows; -} - -function defaultPathVows(table) { - var theVows = {}; - table.forEach(function(item) { - var str = item[0]; - var expect = item[1]; - var label = str+" gives "+expect; - theVows[label] = function() { - assert.equal(tough.defaultPath(str),expect); - }; - }); - return theVows; -} - -var atNow = Date.now(); -function at(offset) { return {now: new Date(atNow+offset)} } - -vows.describe('Cookie Jar') -.addBatch({ - "all defined": function() { - assert.ok(Cookie); - assert.ok(CookieJar); - }, -}) -.addBatch( - dateVows({ - "Wed, 09 Jun 2021 10:18:14 GMT": true, - "Wed, 09 Jun 2021 22:18:14 GMT": true, - "Tue, 18 Oct 2011 07:42:42.123 GMT": true, - "18 Oct 2011 07:42:42 GMT": true, - "8 Oct 2011 7:42:42 GMT": true, - "8 Oct 2011 7:2:42 GMT": false, - "Oct 18 2011 07:42:42 GMT": true, - "Tue Oct 18 2011 07:05:03 GMT+0000 (GMT)": true, - "09 Jun 2021 10:18:14 GMT": true, - "99 Jix 3038 48:86:72 ZMT": false, - '01 Jan 1970 00:00:00 GMT': true, - '01 Jan 1600 00:00:00 GMT': false, // before 1601 - '01 Jan 1601 00:00:00 GMT': true, - '10 Feb 81 13:00:00 GMT': true, // implicit year - 'Thu, 01 Jan 1970 00:00:010 GMT': true, // strange time, non-strict OK - 'Thu, 17-Apr-2014 02:12:29 GMT': true, // dashes - 'Thu, 17-Apr-2014 02:12:29 UTC': true, // dashes and UTC - }) -) -.addBatch({ - "strict date parse of Thu, 01 Jan 1970 00:00:010 GMT": { - topic: function() { - return tough.parseDate('Thu, 01 Jan 1970 00:00:010 GMT', true) ? true : false; - }, - "invalid": function(date) { - assert.equal(date,false); - }, - } -}) -.addBatch({ - "formatting": { - "a simple cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b'); - }, - }, - "a cookie with spaces in the value": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'beta gamma'; - return c; - }, - "doesn't validate": function(c) { - assert.ok(!c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a="beta gamma"'); - }, - }, - "with an empty value and HttpOnly": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.httpOnly = true; - return c; - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=; HttpOnly'); - } - }, - "with an expiry": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT'); - }, - "to short string": function(c) { - assert.equal(c.cookieString(), 'a=b'); - }, - }, - "with a max-age": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); // mabe this one *shouldn't*? - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345'); - }, - }, - "with a bunch of things": function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.setExpires("Oct 18 2011 07:05:03 GMT"); - c.maxAge = 12345; - c.domain = 'example.com'; - c.path = '/foo'; - c.secure = true; - c.httpOnly = true; - c.extensions = ['MyExtension']; - assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345; Domain=example.com; Path=/foo; Secure; HttpOnly; MyExtension'); - }, - "a host-only cookie": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.hostOnly = true; - c.domain = 'shouldnt-stringify.example.com'; - c.path = '/should-stringify'; - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - assert.equal(c.toString(), 'a=b; Path=/should-stringify'); - }, - }, - "minutes are '10'": { - topic: function() { - var c = new Cookie(); - c.key = 'a'; - c.value = 'b'; - c.expires = new Date(1284113410000); - return c; - }, - "validates": function(c) { - assert.ok(c.validate()); - }, - "to string": function(c) { - var str = c.toString(); - assert.notEqual(str, 'a=b; Expires=Fri, 010 Sep 2010 010:010:010 GMT'); - assert.equal(str, 'a=b; Expires=Fri, 10 Sep 2010 10:10:10 GMT'); - }, - } - } -}) -.addBatch({ - "TTL with max-age": function() { - var c = new Cookie(); - c.maxAge = 123; - assert.equal(c.TTL(), 123000); - assert.equal(c.expiryTime(new Date(9000000)), 9123000); - }, - "TTL with zero max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = 0; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with negative max-age": function() { - var c = new Cookie(); - c.key = 'a'; c.value = 'b'; - c.maxAge = -1; // should be treated as "earliest representable" - assert.equal(c.TTL(), 0); - assert.equal(c.expiryTime(new Date(9000000)), -Infinity); - assert.ok(!c.validate()); // not valid, really: non-zero-digit *DIGIT - }, - "TTL with max-age and expires": function() { - var c = new Cookie(); - c.maxAge = 123; - c.expires = new Date(Date.now()+9000); - assert.equal(c.TTL(), 123000); - assert.ok(c.isPersistent()); - }, - "TTL with expires": function() { - var c = new Cookie(); - var now = Date.now(); - c.expires = new Date(now+9000); - assert.equal(c.TTL(now), 9000); - assert.equal(c.expiryTime(), c.expires.getTime()); - }, - "TTL with old expires": function() { - var c = new Cookie(); - c.setExpires('17 Oct 2010 00:00:00 GMT'); - assert.ok(c.TTL() < 0); - assert.ok(c.isPersistent()); - }, - "default TTL": { - topic: function() { return new Cookie() }, - "is Infinite-future": function(c) { assert.equal(c.TTL(), Infinity) }, - "is a 'session' cookie": function(c) { assert.ok(!c.isPersistent()) }, - }, -}).addBatch({ - "Parsing": { - "simple": { - topic: function() { - return Cookie.parse('a=bcd',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "no path": function(c) { assert.equal(c.path, null) }, - "no domain": function(c) { assert.equal(c.domain, null) }, - "no extensions": function(c) { assert.ok(!c.extensions) }, - }, - "with expiry": { - topic: function() { - return Cookie.parse('a=bcd; Expires=Tue, 18 Oct 2011 07:05:03 GMT',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'a') }, - "value": function(c) { assert.equal(c.value, 'bcd') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - }, - "with expiry and path": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc',true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "no httponly or secure": function(c) { - assert.ok(!c.httpOnly); - assert.ok(!c.secure); - }, - }, - "with everything": { - topic: function() { - return Cookie.parse('abc="xyzzy!"; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Path=/aBc; Domain=example.com; Secure; HTTPOnly; Max-Age=1234; Foo=Bar; Baz', true) || null; - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'abc') }, - "value": function(c) { assert.equal(c.value, 'xyzzy!') }, - "has expires": function(c) { - assert.ok(c.expires !== Infinity, 'expiry is infinite when it shouldn\'t be'); - assert.equal(c.expires.getTime(), 1318921503000); - }, - "has path": function(c) { assert.equal(c.path, '/aBc'); }, - "has domain": function(c) { assert.equal(c.domain, 'example.com'); }, - "has httponly": function(c) { assert.equal(c.httpOnly, true); }, - "has secure": function(c) { assert.equal(c.secure, true); }, - "has max-age": function(c) { assert.equal(c.maxAge, 1234); }, - "has extensions": function(c) { - assert.ok(c.extensions); - assert.equal(c.extensions[0], 'Foo=Bar'); - assert.equal(c.extensions[1], 'Baz'); - }, - }, - "invalid expires": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Expires=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Expires=xyzzy"); - assert.ok(c); - assert.equal(c.expires, Infinity); - }, - }, - "zero max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=0", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=0"); - assert.ok(c); - assert.equal(c.maxAge, 0); - }, - }, - "negative max-age": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Max-Age=-1", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Max-Age=-1"); - assert.ok(c); - assert.equal(c.maxAge, -1); - }, - }, - "empty domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain="); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "dot domain": { - "strict": function() { assert.ok(!Cookie.parse("a=b; domain=.", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; domain=."); - assert.ok(c); - assert.equal(c.domain, null); - }, - }, - "uppercase domain": { - "strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - "non-strict lowercases": function() { - var c = Cookie.parse("a=b; domain=EXAMPLE.COM"); - assert.ok(c); - assert.equal(c.domain, 'example.com'); - }, - }, - "trailing dot in domain": { - topic: function() { - return Cookie.parse("a=b; Domain=example.com.", true) || null; - }, - "has the domain": function(c) { assert.equal(c.domain,"example.com.") }, - "but doesn't validate": function(c) { assert.equal(c.validate(),false) }, - }, - "empty path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path="); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "no-slash path": { - "strict": function() { assert.ok(!Cookie.parse("a=b; path=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; path=xyzzy"); - assert.ok(c); - assert.equal(c.path, null); - }, - }, - "trailing semi-colons after path": { - topic: function () { - return [ - "a=b; path=/;", - "c=d;;;;" - ]; - }, - "strict": function (t) { - assert.ok(!Cookie.parse(t[0], true)); - assert.ok(!Cookie.parse(t[1], true)); - }, - "non-strict": function (t) { - var c1 = Cookie.parse(t[0]); - var c2 = Cookie.parse(t[1]); - assert.ok(c1); - assert.ok(c2); - assert.equal(c1.path, '/'); - } - }, - "secure-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; Secure=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; Secure=xyzzy"); - assert.ok(c); - assert.equal(c.secure, true); - }, - }, - "httponly-with-value": { - "strict": function() { assert.ok(!Cookie.parse("a=b; HttpOnly=xyzzy", true)) }, - "non-strict": function() { - var c = Cookie.parse("a=b; HttpOnly=xyzzy"); - assert.ok(c); - assert.equal(c.httpOnly, true); - }, - }, - "garbage": { - topic: function() { - return Cookie.parse("\x08", true) || null; - }, - "doesn't parse": function(c) { assert.equal(c,null) }, - }, - "public suffix domain": { - topic: function() { - return Cookie.parse("a=b; domain=kyoto.jp", true) || null; - }, - "parses fine": function(c) { - assert.ok(c); - assert.equal(c.domain, 'kyoto.jp'); - }, - "but fails validation": function(c) { - assert.ok(c); - assert.ok(!c.validate()); - }, - }, - "Ironically, Google 'GAPS' cookie has very little whitespace": { - topic: function() { - return Cookie.parse("GAPS=1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-;Path=/;Expires=Thu, 17-Apr-2014 02:12:29 GMT;Secure;HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'GAPS') }, - "value": function(c) { assert.equal(c.value, '1:A1aaaaAaAAa1aaAaAaaAAAaaa1a11a:aaaAaAaAa-aaaA1-') }, - "path": function(c) { - assert.notEqual(c.path, '/;Expires'); // BUG - assert.equal(c.path, '/'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "secure": function(c) { assert.ok(c.secure) }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - }, - "lots of equal signs": { - topic: function() { - return Cookie.parse("queryPref=b=c&d=e; Path=/f=g; Expires=Thu, 17 Apr 2014 02:12:29 GMT; HttpOnly"); - }, - "parsed": function(c) { assert.ok(c) }, - "key": function(c) { assert.equal(c.key, 'queryPref') }, - "value": function(c) { assert.equal(c.value, 'b=c&d=e') }, - "path": function(c) { - assert.equal(c.path, '/f=g'); - }, - "expires": function(c) { - assert.notEqual(c.expires, Infinity); - assert.equal(c.expires.getTime(), 1397700749000); - }, - "httponly": function(c) { assert.ok(c.httpOnly) }, - } - } -}) -.addBatch({ - "domain normalization": { - "simple": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.com"; - assert.equal(c.canonicalizedDomain(), "example.com"); - }, - "extra dots": function() { - var c = new Cookie(); - c.domain = ".EXAMPLE.com"; - assert.equal(c.cdomain(), "example.com"); - }, - "weird trailing dot": function() { - var c = new Cookie(); - c.domain = "EXAMPLE.ca."; - assert.equal(c.canonicalizedDomain(), "example.ca."); - }, - "weird internal dots": function() { - var c = new Cookie(); - c.domain = "EXAMPLE...ca."; - assert.equal(c.canonicalizedDomain(), "example...ca."); - }, - "IDN": function() { - var c = new Cookie(); - c.domain = "δοκιμή.δοκιμή"; // "test.test" in greek - assert.equal(c.canonicalizedDomain(), "xn--jxalpdlp.xn--jxalpdlp"); - } - } -}) -.addBatch({ - "Domain Match":matchVows(tough.domainMatch, [ - // str, dom, expect - ["example.com", "example.com", true], - ["eXaMpLe.cOm", "ExAmPlE.CoM", true], - ["no.ca", "yes.ca", false], - ["wwwexample.com", "example.com", false], - ["www.example.com", "example.com", true], - ["example.com", "www.example.com", false], - ["www.subdom.example.com", "example.com", true], - ["www.subdom.example.com", "subdom.example.com", true], - ["example.com", "example.com.", false], // RFC6265 S4.1.2.3 - ["192.168.0.1", "168.0.1", false], // S5.1.3 "The string is a host name" - [null, "example.com", null], - ["example.com", null, null], - [null, null, null], - [undefined, undefined, null], - ]) -}) -.addBatch({ - "default-path": defaultPathVows([ - [null,"/"], - ["/","/"], - ["/file","/"], - ["/dir/file","/dir"], - ["noslash","/"], - ]) -}) -.addBatch({ - "Path-Match": matchVows(tough.pathMatch, [ - // request, cookie, match - ["/","/",true], - ["/dir","/",true], - ["/","/dir",false], - ["/dir/","/dir/", true], - ["/dir/file","/dir/",true], - ["/dir/file","/dir",true], - ["/directory","/dir",false], - ]) -}) -.addBatch({ - "Cookie Sorting": { - topic: function() { - var cookies = []; - var now = Date.now(); - cookies.push(Cookie.parse("a=0; Domain=example.com")); - cookies.push(Cookie.parse("b=1; Domain=www.example.com")); - cookies.push(Cookie.parse("c=2; Domain=example.com; Path=/pathA")); - cookies.push(Cookie.parse("d=3; Domain=www.example.com; Path=/pathA")); - cookies.push(Cookie.parse("e=4; Domain=example.com; Path=/pathA/pathB")); - cookies.push(Cookie.parse("f=5; Domain=www.example.com; Path=/pathA/pathB")); - - // force a stable creation time consistent with the order above since - // some may have been created at now + 1ms. - var i = cookies.length; - cookies.forEach(function(cookie) { - cookie.creation = new Date(now - 100*(i--)); - }); - - // weak shuffle: - cookies = cookies.sort(function(){return Math.random()-0.5}); - - cookies = cookies.sort(tough.cookieCompare); - return cookies; - }, - "got": function(cookies) { - assert.lengthOf(cookies, 6); - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['e','f','c','d','a','b']); - }, - } -}) -.addBatch({ - "CookieJar": { - "Setting a basic cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, // C is for Cookie, good enough for me - "gets timestamped": function(c) { - assert.ok(c.creation); - assert.ok(Date.now() - c.creation.getTime() < 5000); // recently stamped - assert.ok(c.lastAccessed); - assert.equal(c.creation, c.lastAccessed); - assert.equal(c.TTL(), Infinity); - assert.ok(!c.isPersistent()); - }, - }, - "Setting a no-path cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "path is /": function(c) { assert.equal(c.path, '/') }, - "path was derived": function(c) { assert.strictEqual(c.pathIsDefault, true) }, - }, - "Setting a cookie already marked as host-only": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com"); - assert.strictEqual(c.hostOnly, null); - assert.instanceOf(c.creation, Date); - assert.strictEqual(c.lastAccessed, null); - c.creation = new Date(Date.now()-10000); - c.hostOnly = true; - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "domain": function(c) { assert.equal(c.domain, 'example.com') }, - "still hostOnly": function(c) { assert.strictEqual(c.hostOnly, true) }, - }, - "Setting a session cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b"); - assert.strictEqual(c.path, null); - cj.setCookie(c, 'http://www.example.com/dir/index.html', this.callback); - }, - "works": function(c) { assert.instanceOf(c,Cookie) }, - "gets the domain": function(c) { assert.equal(c.domain, 'www.example.com') }, - "gets the default path": function(c) { assert.equal(c.path, '/dir') }, - "is 'hostOnly'": function(c) { assert.ok(c.hostOnly) }, - }, - "Setting wrong domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=fooxample.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting sub-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=www.example.com; Path=/"); - cj.setCookie(c, 'http://example.com/index.html', this.callback); - }, - "fails": function(err,c) { - assert.ok(err.message.match(/domain/i)); - assert.ok(!c); - }, - }, - "Setting super-domain cookie": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/"); - cj.setCookie(c, 'http://www.app.example.com/index.html', this.callback); - }, - "success": function(err,c) { - assert.ok(!err); - assert.equal(c.domain, 'example.com'); - }, - }, - "Setting HttpOnly cookie over non-HTTP API": { - topic: function() { - var cj = new CookieJar(); - var c = Cookie.parse("a=b; Domain=example.com; Path=/; HttpOnly"); - cj.setCookie(c, 'http://example.com/index.html', {http:false}, this.callback); - }, - "fails": function(err,c) { - assert.match(err.message, /HttpOnly/i); - assert.ok(!c); - }, - }, - }, - "Cookie Jar store eight cookies": { - topic: function() { - var cj = new CookieJar(); - var ex = 'http://example.com/index.html'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('a=1; Domain=example.com; Path=/',ex,at(0),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Domain=example.com; Path=/; HttpOnly',ex,at(1000),next); - }); - tasks.push(function(next) { - cj.setCookie('c=3; Domain=example.com; Path=/; Secure',ex,at(2000),next); - }); - tasks.push(function(next) { // path - cj.setCookie('d=4; Domain=example.com; Path=/foo',ex,at(3000),next); - }); - tasks.push(function(next) { // host only - cj.setCookie('e=5',ex,at(4000),next); - }); - tasks.push(function(next) { // other domain - cj.setCookie('f=6; Domain=nodejs.org; Path=/','http://nodejs.org',at(5000),next); - }); - tasks.push(function(next) { // expired - cj.setCookie('g=7; Domain=example.com; Path=/; Expires=Tue, 18 Oct 2011 00:00:00 GMT',ex,at(6000),next); - }); - tasks.push(function(next) { // expired via Max-Age - cj.setCookie('h=8; Domain=example.com; Path=/; Max-Age=1',ex,next); - }); - var cb = this.callback; - async.parallel(tasks, function(err,results){ - setTimeout(function() { - cb(err,cj,results); - }, 2000); // so that 'h=8' expires - }); - }, - "setup ok": function(err,cj,results) { - assert.ok(1); - }, - "then retrieving for http://nodejs.org": { - topic: function(cj,results) { - cj.getCookies('http://nodejs.org',this.callback); - }, - "get a nodejs cookie": function(cookies) { - assert.lengthOf(cookies, 1); - var cookie = cookies[0]; - assert.equal(cookie.domain, 'nodejs.org'); - }, - }, - "then retrieving for https://example.com": { - topic: function(cj,results) { - cj.getCookies('https://example.com',{secure:true},this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for https://example.com (missing options)": { - topic: function(cj,results) { - cj.getCookies('https://example.com',this.callback); - }, - "get a secure example cookie with others": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','c','e']); - }, - }, - "then retrieving for http://example.com": { - topic: function(cj,results) { - cj.getCookies('http://example.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://EXAMPlE.com": { - topic: function(cj,results) { - cj.getCookies('http://EXAMPlE.com',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','b','e']); - }, - }, - "then retrieving for http://example.com, non-HTTP": { - topic: function(cj,results) { - cj.getCookies('http://example.com',{http:false},this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['a','e']); - }, - }, - "then retrieving for http://example.com/foo/bar": { - topic: function(cj,results) { - cj.getCookies('http://example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b','e']); - }, - }, - "then retrieving for http://example.com as a string": { - topic: function(cj,results) { - cj.getCookieString('http://example.com',this.callback); - }, - "get a single string": function(cookieHeader) { - assert.equal(cookieHeader, "a=1; b=2; e=5"); - }, - }, - "then retrieving for http://example.com as a set-cookie header": { - topic: function(cj,results) { - cj.getSetCookieStrings('http://example.com',this.callback); - }, - "get a single string": function(cookieHeaders) { - assert.lengthOf(cookieHeaders, 3); - assert.equal(cookieHeaders[0], "a=1; Domain=example.com; Path=/"); - assert.equal(cookieHeaders[1], "b=2; Domain=example.com; Path=/; HttpOnly"); - assert.equal(cookieHeaders[2], "e=5; Path=/"); - }, - }, - "then retrieving for http://www.example.com/": { - topic: function(cj,results) { - cj.getCookies('http://www.example.com/foo/bar',this.callback); - }, - "get a bunch of cookies": function(cookies) { - var names = cookies.map(function(c) {return c.key}); - assert.deepEqual(names, ['d','a','b']); // note lack of 'e' - }, - }, - }, - "Repeated names": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com/'; - var sc = cj.setCookie; - var tasks = []; - var now = Date.now(); - tasks.push(sc.bind(cj,'aaaa=xxxx',ex,at(0))); - tasks.push(sc.bind(cj,'aaaa=1111; Domain=www.example.com',ex,at(1000))); - tasks.push(sc.bind(cj,'aaaa=2222; Domain=example.com',ex,at(2000))); - tasks.push(sc.bind(cj,'aaaa=3333; Domain=www.example.com; Path=/pathA',ex,at(3000))); - async.series(tasks,function(err,results) { - results = results.filter(function(e) {return e !== undefined}); - cb(err,{cj:cj, cookies:results, now:now}); - }); - }, - "all got set": function(err,t) { - assert.lengthOf(t.cookies,4); - }, - "then getting 'em back": { - topic: function(t) { - var cj = t.cj; - cj.getCookies('http://www.example.com/pathA',this.callback); - }, - "there's just three": function (err,cookies) { - var vals = cookies.map(function(c) {return c.value}); - // may break with sorting; sorting should put 3333 first due to longest path: - assert.deepEqual(vals, ['3333','1111','2222']); - } - }, - }, - "CookieJar setCookie errors": { - "public-suffix domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('i=9; Domain=kyoto.jp; Path=/','kyoto.jp',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /public suffix/i); - }, - }, - "wrong domain": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('j=10; Domain=google.com; Path=/','google.ca',this.callback); - }, - "errors": function(err,cookie) { - assert.ok(err); - assert.ok(!cookie); - assert.match(err.message, /not in this host's domain/i); - }, - }, - "old cookie is HttpOnly": { - topic: function() { - var cb = this.callback; - var next = function (err,c) { - return cb(err,cj); - }; - var cj = new CookieJar(); - cj.setCookie('k=11; Domain=example.ca; Path=/; HttpOnly','http://example.ca',{http:true},next); - }, - "initial cookie is set": function(err,cj) { - assert.ok(!err); - }, - "but when trying to overwrite": { - topic: function(cj) { - var cb = this.callback; - cj.setCookie('k=12; Domain=example.ca; Path=/','http://example.ca',{http:false},function(err,c) {cb(null,err)}); - }, - "it's an error": function(err) { - assert.ok(err); - }, - "then, checking the original": { - topic: function(ignored,cj) { - assert.ok(cj instanceof CookieJar); - cj.getCookies('http://example.ca',{http:true},this.callback); - }, - "cookie has original value": function(err,cookies) { - assert.equal(err,null); - assert.lengthOf(cookies, 1); - assert.equal(cookies[0].value,11); - }, - }, - }, - }, - }, -}) -.addBatch({ - "JSON": { - "serialization": { - topic: function() { - var c = Cookie.parse('alpha=beta; Domain=example.com; Path=/foo; Expires=Tue, 19 Jan 2038 03:14:07 GMT; HttpOnly'); - return JSON.stringify(c); - }, - "gives a string": function(str) { - assert.equal(typeof str, "string"); - }, - "date is in ISO format": function(str) { - assert.match(str, /"expires":"2038-01-19T03:14:07\.000Z"/, 'expires is in ISO format'); - }, - }, - "deserialization": { - topic: function() { - var json = '{"key":"alpha","value":"beta","domain":"example.com","path":"/foo","expires":"2038-01-19T03:14:07.000Z","httpOnly":true,"lastAccessed":2000000000123}'; - return Cookie.fromJSON(json); - }, - "works": function(c) { - assert.ok(c); - }, - "key": function(c) { assert.equal(c.key, "alpha") }, - "value": function(c) { assert.equal(c.value, "beta") }, - "domain": function(c) { assert.equal(c.domain, "example.com") }, - "path": function(c) { assert.equal(c.path, "/foo") }, - "httpOnly": function(c) { assert.strictEqual(c.httpOnly, true) }, - "secure": function(c) { assert.strictEqual(c.secure, false) }, - "hostOnly": function(c) { assert.strictEqual(c.hostOnly, null) }, - "expires is a date object": function(c) { - assert.equal(c.expires.getTime(), 2147483647000); - }, - "lastAccessed is a date object": function(c) { - assert.equal(c.lastAccessed.getTime(), 2000000000123); - }, - "creation defaulted": function(c) { - assert.ok(c.creation.getTime()); - } - }, - "null deserialization": { - topic: function() { - return Cookie.fromJSON(null); - }, - "is null": function(cookie) { - assert.equal(cookie,null); - }, - }, - }, - "expiry deserialization": { - "Infinity": { - topic: Cookie.fromJSON.bind(null, '{"expires":"Infinity"}'), - "is infinite": function(c) { - assert.strictEqual(c.expires, "Infinity"); - assert.equal(c.expires, Infinity); - }, - }, - }, - "maxAge serialization": { - topic: function() { - return function(toSet) { - var c = new Cookie(); - c.key = 'foo'; c.value = 'bar'; - c.setMaxAge(toSet); - return JSON.stringify(c); - }; - }, - "zero": { - topic: function(f) { return f(0) }, - "looks good": function(str) { - assert.match(str, /"maxAge":0/); - }, - }, - "Infinity": { - topic: function(f) { return f(Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"Infinity"/); - }, - }, - "-Infinity": { - topic: function(f) { return f(-Infinity) }, - "looks good": function(str) { - assert.match(str, /"maxAge":"-Infinity"/); - }, - }, - "null": { - topic: function(f) { return f(null) }, - "looks good": function(str) { - assert.match(str, /"maxAge":null/); - }, - }, - }, - "maxAge deserialization": { - "number": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":123}'), - "is the number": function(c) { - assert.strictEqual(c.maxAge, 123); - }, - }, - "null": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":null}'), - "is null": function(c) { - assert.strictEqual(c.maxAge, null); - }, - }, - "less than zero": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":-123}'), - "is -123": function(c) { - assert.strictEqual(c.maxAge, -123); - }, - }, - "Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "Infinity"); - }, - }, - "-Infinity": { - topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"-Infinity"}'), - "is inf-as-string": function(c) { - assert.strictEqual(c.maxAge, "-Infinity"); - }, - }, - } -}) -.addBatch({ - "permuteDomain": { - "base case": { - topic: tough.permuteDomain.bind(null,'example.com'), - "got the domain": function(list) { - assert.deepEqual(list, ['example.com']); - }, - }, - "two levels": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.com'), - "got three things": function(list) { - assert.deepEqual(list, ['example.com','bar.example.com','foo.bar.example.com']); - }, - }, - "invalid domain": { - topic: tough.permuteDomain.bind(null,'foo.bar.example.localduhmain'), - "got three things": function(list) { - assert.equal(list, null); - }, - }, - }, - "permutePath": { - "base case": { - topic: tough.permutePath.bind(null,'/'), - "just slash": function(list) { - assert.deepEqual(list,['/']); - }, - }, - "single case": { - topic: tough.permutePath.bind(null,'/foo'), - "two things": function(list) { - assert.deepEqual(list,['/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo',e)); - }); - }, - }, - "double case": { - topic: tough.permutePath.bind(null,'/foo/bar'), - "four things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar',e)); - }); - }, - }, - "trailing slash": { - topic: tough.permutePath.bind(null,'/foo/bar/'), - "three things": function(list) { - assert.deepEqual(list,['/foo/bar','/foo','/']); - }, - "path matching": function(list) { - list.forEach(function(e) { - assert.ok(tough.pathMatch('/foo/bar/',e)); - }); - }, - }, - } -}) -.addBatch({ - "Issue 1": { - topic: function() { - var cj = new CookieJar(); - cj.setCookie('hello=world; path=/some/path/', 'http://domain/some/path/file', function(err,cookie) { - this.callback(err,{cj:cj, cookie:cookie}); - }.bind(this)); - }, - "stored a cookie": function(t) { - assert.ok(t.cookie); - }, - "cookie's path was modified to remove unnecessary slash": function(t) { - assert.equal(t.cookie.path, '/some/path'); - }, - "getting it back": { - topic: function(t) { - t.cj.getCookies('http://domain/some/path/file', function(err,cookies) { - this.callback(err, {cj:t.cj, cookies:cookies||[]}); - }.bind(this)); - }, - "got one cookie": function(t) { - assert.lengthOf(t.cookies, 1); - }, - "it's the right one": function(t) { - var c = t.cookies[0]; - assert.equal(c.key, 'hello'); - assert.equal(c.value, 'world'); - }, - } - } -}) -.addBatch({ - "expiry option": { - topic: function() { - var cb = this.callback; - var cj = new CookieJar(); - cj.setCookie('near=expiry; Domain=example.com; Path=/; Max-Age=1','http://www.example.com',at(-1), function(err,cookie) { - - cb(err, {cj:cj, cookie:cookie}); - }); - }, - "set the cookie": function(t) { - assert.ok(t.cookie, "didn't set?!"); - assert.equal(t.cookie.key, 'near'); - }, - "then, retrieving": { - topic: function(t) { - var cb = this.callback; - setTimeout(function() { - t.cj.getCookies('http://www.example.com', {http:true, expire:false}, function(err,cookies) { - t.cookies = cookies; - cb(err,t); - }); - },2000); - }, - "got the cookie": function(t) { - assert.lengthOf(t.cookies, 1); - assert.equal(t.cookies[0].key, 'near'); - }, - } - } -}) -.addBatch({ - "trailing semi-colon set into cj": { - topic: function () { - var cb = this.callback; - var cj = new CookieJar(); - var ex = 'http://www.example.com'; - var tasks = []; - tasks.push(function(next) { - cj.setCookie('broken_path=testme; path=/;',ex,at(-1),next); - }); - tasks.push(function(next) { - cj.setCookie('b=2; Path=/;;;;',ex,at(-1),next); - }); - async.parallel(tasks, function (err, cookies) { - cb(null, { - cj: cj, - cookies: cookies - }); - }); - }, - "check number of cookies": function (t) { - assert.lengthOf(t.cookies, 2, "didn't set"); - }, - "check *broken_path* was set properly": function (t) { - assert.equal(t.cookies[0].key, "broken_path"); - assert.equal(t.cookies[0].value, "testme"); - assert.equal(t.cookies[0].path, "/"); - }, - "check *b* was set properly": function (t) { - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - "retrieve the cookie": { - topic: function (t) { - var cb = this.callback; - t.cj.getCookies('http://www.example.com', {}, function (err, cookies) { - t.cookies = cookies; - cb(err, t); - }); - }, - "get the cookie": function(t) { - assert.lengthOf(t.cookies, 2); - assert.equal(t.cookies[0].key, 'broken_path'); - assert.equal(t.cookies[0].value, 'testme'); - assert.equal(t.cookies[1].key, "b"); - assert.equal(t.cookies[1].value, "2"); - assert.equal(t.cookies[1].path, "/"); - }, - }, - } -}) -.addBatch({ - "Constructor":{ - topic: function () { - return new Cookie({ - key: 'test', - value: 'b', - maxAge: 60 - }); - }, - 'check for key property': function (c) { - assert.ok(c); - assert.equal(c.key, 'test'); - }, - 'check for value property': function (c) { - assert.equal(c.value, 'b'); - }, - 'check for maxAge': function (c) { - assert.equal(c.maxAge, 60); - }, - 'check for default values for unspecified properties': function (c) { - assert.equal(c.expires, "Infinity"); - assert.equal(c.secure, false); - assert.equal(c.httpOnly, false); - } - } -}) -.addBatch({ - "allPaths option": { - topic: function() { - var cj = new CookieJar(); - var tasks = []; - tasks.push(cj.setCookie.bind(cj, 'nopath_dom=qq; Path=/; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_dom=qq; Path=/foo; Domain=example.com', 'http://example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'nopath_host=qq; Path=/', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'path_host=qq; Path=/foo', 'http://www.example.com', {})); - tasks.push(cj.setCookie.bind(cj, 'other=qq; Path=/', 'http://other.example.com/', {})); - tasks.push(cj.setCookie.bind(cj, 'other2=qq; Path=/foo', 'http://other.example.com/foo', {})); - var cb = this.callback; - async.parallel(tasks, function(err,results) { - cb(err, {cj:cj, cookies: results}); - }); - }, - "all set": function(t) { - assert.equal(t.cookies.length, 6); - assert.ok(t.cookies.every(function(c) { return !!c })); - }, - "getting without allPaths": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found just two cookies": function(t) { - assert.equal(t.cookies.length, 2); - }, - "all are path=/": function(t) { - assert.ok(t.cookies.every(function(c) { return c.path === '/' })); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting without allPaths for /foo": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/foo', {}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - "getting with allPaths:true": { - topic: function(t) { - var cb = this.callback; - var cj = t.cj; - cj.getCookies('http://www.example.com/', {allPaths:true}, function(err,cookies) { - cb(err, {cj:cj, cookies:cookies}); - }); - }, - "found four cookies": function(t) { - assert.equal(t.cookies.length, 4); - }, - "no 'other' cookies": function(t) { - assert.ok(!t.cookies.some(function(c) { return (/^other/).test(c.name) })); - }, - }, - } -}) -.export(module); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -Apache License - -Version 2.0, January 2004 - -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - -If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d56..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js deleted file mode 100644 index 3f7bbb90..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,227 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port) { - var self = this - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: host, port: port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createSocket({host: host, port: port, request: req}, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - req.onSocket(socket) - - function onFree() { - self.emit('free', socket, host, port) - } - - function onCloseOrRemove(err) { - self.removeSocket() - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket) - }) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json deleted file mode 100644 index 3d7492aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "tunnel-agent", - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "version": "0.3.0", - "repository": { - "url": "https://github.com/mikeal/tunnel-agent" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "tunnel-agent\n============\n\nHTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "homepage": "https://github.com/mikeal/tunnel-agent", - "_id": "tunnel-agent@0.3.0", - "_from": "tunnel-agent@~0.3.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json deleted file mode 100755 index 2fee74c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "request", - "description": "Simplified HTTP request client.", - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.31.0", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - "repository": { - "type": "git", - "url": "http://github.com/mikeal/request.git" - }, - "bugs": { - "url": "http://github.com/mikeal/request/issues" - }, - "engines": [ - "node >= 0.8.0" - ], - "main": "index.js", - "dependencies": { - "qs": "~0.6.0", - "json-stringify-safe": "~5.0.0", - "forever-agent": "~0.5.0", - "node-uuid": "~1.4.0", - "mime": "~1.2.9", - "tough-cookie": "~0.9.15", - "form-data": "~0.1.0", - "tunnel-agent": "~0.3.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.3.0", - "hawk": "~1.0.0", - "aws-sign2": "~0.5.0" - }, - "optionalDependencies": { - "tough-cookie": "~0.9.15", - "form-data": "~0.1.0", - "tunnel-agent": "~0.3.0", - "http-signature": "~0.10.0", - "oauth-sign": "~0.3.0", - "hawk": "~1.0.0", - "aws-sign2": "~0.5.0" - }, - "scripts": { - "test": "node tests/run.js" - }, - "readme": "# Request -- Simplified HTTP client\n\n[![NPM](https://nodei.co/npm/request.png)](https://nodei.co/npm/request/)\n\n## Super simple to use\n\nRequest is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default.\n\n```javascript\nvar request = require('request');\nrequest('http://www.google.com', function (error, response, body) {\n if (!error && response.statusCode == 200) {\n console.log(body) // Print the google web page.\n }\n})\n```\n\n## Streaming\n\nYou can stream any response to a file stream.\n\n```javascript\nrequest('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))\n```\n\nYou can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one).\n\n```javascript\nfs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))\n```\n\nRequest can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers.\n\n```javascript\nrequest.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))\n```\n\nNow let’s get fancy.\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n if (req.method === 'PUT') {\n req.pipe(request.put('http://mysite.com/doodle.png'))\n } else if (req.method === 'GET' || req.method === 'HEAD') {\n request.get('http://mysite.com/doodle.png').pipe(resp)\n }\n }\n})\n```\n\nYou can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do:\n\n```javascript\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n var x = request('http://mysite.com/doodle.png')\n req.pipe(x)\n x.pipe(resp)\n }\n})\n```\n\nAnd since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :)\n\n```javascript\nreq.pipe(request('http://mysite.com/doodle.png')).pipe(resp)\n```\n\nAlso, none of this new functionality conflicts with requests previous features, it just expands them.\n\n```javascript\nvar r = request.defaults({'proxy':'http://localproxy.com'})\n\nhttp.createServer(function (req, resp) {\n if (req.url === '/doodle.png') {\n r.get('http://google.com/doodle.png').pipe(resp)\n }\n})\n```\n\nYou can still use intermediate proxies, the requests will still follow HTTP forwards, etc.\n\n## Forms\n\n`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API.\n\nURL-encoded forms are simple.\n\n```javascript\nrequest.post('http://service.com/upload', {form:{key:'value'}})\n// or\nrequest.post('http://service.com/upload').form({key:'value'})\n```\n\nFor `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). You don’t need to worry about piping the form object or setting the headers, `request` will handle that for you.\n\n```javascript\nvar r = request.post('http://service.com/upload')\nvar form = r.form()\nform.append('my_field', 'my_value')\nform.append('my_buffer', new Buffer([1, 2, 3]))\nform.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png'))\nform.append('remote_file', request('http://google.com/doodle.png'))\n```\n\n## HTTP Authentication\n\n```javascript\nrequest.get('http://some.server.com/').auth('username', 'password', false);\n// or\nrequest.get('http://some.server.com/', {\n 'auth': {\n 'user': 'username',\n 'pass': 'password',\n 'sendImmediately': false\n }\n});\n```\n\nIf passed as an option, `auth` should be a hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). The method form takes parameters `auth(username, password, sendImmediately)`.\n\n`sendImmediately` defaults to `true`, which causes a basic authentication header to be sent. If `sendImmediately` is `false`, then `request` will retry with a proper authentication header after receiving a `401` response from the server (which must contain a `WWW-Authenticate` header indicating the required authentication method).\n\nDigest authentication is supported, but it only works with `sendImmediately` set to `false`; otherwise `request` will send basic authentication on the initial request, which will probably cause the request to fail.\n\n## OAuth Signing\n\n```javascript\n// Twitter OAuth\nvar qs = require('querystring')\n , oauth =\n { callback: 'http://mysite.com/callback/'\n , consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n }\n , url = 'https://api.twitter.com/oauth/request_token'\n ;\nrequest.post({url:url, oauth:oauth}, function (e, r, body) {\n // Ideally, you would take the body in the response\n // and construct a URL that a user clicks on (like a sign in button).\n // The verifier is only available in the response after a user has\n // verified with twitter that they are authorizing your app.\n var access_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: access_token.oauth_token\n , verifier: access_token.oauth_verifier\n }\n , url = 'https://api.twitter.com/oauth/access_token'\n ;\n request.post({url:url, oauth:oauth}, function (e, r, body) {\n var perm_token = qs.parse(body)\n , oauth =\n { consumer_key: CONSUMER_KEY\n , consumer_secret: CONSUMER_SECRET\n , token: perm_token.oauth_token\n , token_secret: perm_token.oauth_token_secret\n }\n , url = 'https://api.twitter.com/1.1/users/show.json?'\n , params =\n { screen_name: perm_token.screen_name\n , user_id: perm_token.user_id\n }\n ;\n url += qs.stringify(params)\n request.get({url:url, oauth:oauth, json:true}, function (e, r, user) {\n console.log(user)\n })\n })\n})\n```\n\n### Custom HTTP Headers\n\nHTTP Headers, such as `User-Agent`, can be set in the `options` object.\nIn the example below, we call the github API to find out the number\nof stars and forks for the request repository. This requires a\ncustom `User-Agent` header as well as https.\n\n```javascript\nvar request = require('request');\n\nvar options = {\n\turl: 'https://api.github.com/repos/mikeal/request',\n\theaders: {\n\t\t'User-Agent': 'request'\n\t}\n};\n\nfunction callback(error, response, body) {\n\tif (!error && response.statusCode == 200) {\n\t\tvar info = JSON.parse(body);\n\t\tconsole.log(info.stargazers_count + \" Stars\");\n\t\tconsole.log(info.forks_count + \" Forks\");\n\t}\n}\n\nrequest(options, callback);\n```\n\n### request(options, callback)\n\nThe first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional.\n\n* `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()`\n* `qs` - object containing querystring values to be appended to the `uri`\n* `method` - http method (default: `\"GET\"`)\n* `headers` - http headers (default: `{}`)\n* `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`.\n* `form` - when passed an object, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded; charset=utf-8` header. When passed no options, a `FormData` instance is returned (and is piped to request).\n* `auth` - A hash containing values `user` || `username`, `password` || `pass`, and `sendImmediately` (optional). See documentation above.\n* `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON.\n* `multipart` - (experimental) array of objects which contains their own headers and `body` attribute. Sends `multipart/related` request. See example below.\n* `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`)\n* `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`)\n* `maxRedirects` - the maximum number of redirects to follow (default: `10`)\n* `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`.\n* `pool` - A hash object containing the agents for these requests. If omitted, the request will use the global pool (which is set to node's default `maxSockets`)\n* `pool.maxSockets` - Integer containing the maximum amount of sockets in the pool.\n* `timeout` - Integer containing the number of milliseconds to wait for a request to respond before aborting the request\n* `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`)\n* `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above.\n* `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example).\n* `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option.\n* `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section)\n* `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services)\n* `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options.\n* `localAddress` - Local interface to bind for network connections.\n\n\nThe callback argument gets 3 arguments: \n\n1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object)\n2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object\n3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied)\n\n## Convenience methods\n\nThere are also shorthand methods for different HTTP METHODs and some other conveniences.\n\n### request.defaults(options)\n\nThis method returns a wrapper around the normal request API that defaults to whatever options you pass in to it.\n\n### request.put\n\nSame as `request()`, but defaults to `method: \"PUT\"`.\n\n```javascript\nrequest.put(url)\n```\n\n### request.patch\n\nSame as `request()`, but defaults to `method: \"PATCH\"`.\n\n```javascript\nrequest.patch(url)\n```\n\n### request.post\n\nSame as `request()`, but defaults to `method: \"POST\"`.\n\n```javascript\nrequest.post(url)\n```\n\n### request.head\n\nSame as request() but defaults to `method: \"HEAD\"`.\n\n```javascript\nrequest.head(url)\n```\n\n### request.del\n\nSame as `request()`, but defaults to `method: \"DELETE\"`.\n\n```javascript\nrequest.del(url)\n```\n\n### request.get\n\nSame as `request()` (for uniformity).\n\n```javascript\nrequest.get(url)\n```\n### request.cookie\n\nFunction that creates a new cookie.\n\n```javascript\nrequest.cookie('cookie_string_here')\n```\n### request.jar\n\nFunction that creates a new cookie jar.\n\n```javascript\nrequest.jar()\n```\n\n\n## Examples:\n\n```javascript\n var request = require('request')\n , rand = Math.floor(Math.random()*100000000).toString()\n ;\n request(\n { method: 'PUT'\n , uri: 'http://mikeal.iriscouch.com/testjs/' + rand\n , multipart:\n [ { 'content-type': 'application/json'\n , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}})\n }\n , { body: 'I am an attachment' }\n ]\n }\n , function (error, response, body) {\n if(response.statusCode == 201){\n console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand)\n } else {\n console.log('error: '+ response.statusCode)\n console.log(body)\n }\n }\n )\n```\n\nCookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`).\n\n```javascript\nvar request = request.defaults({jar: true})\nrequest('http://www.google.com', function () {\n request('http://images.google.com')\n})\n```\n\nTo use a custom cookie jar (instead `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`)\n\n```javascript\nvar j = request.jar()\nvar request = request.defaults({jar:j})\nrequest('http://www.google.com', function () {\n request('http://images.google.com')\n})\n```\nOR\n\nNote that `setCookie` requires at least three parameters, and the last is required to be a callback.\n\n```javascript\nvar j = request.jar()\nvar cookie = request.cookie('your_cookie_here')\nj.setCookie(cookie, uri, function (err, cookie){})\nrequest({url: 'http://www.google.com', jar: j}, function () {\n request('http://images.google.com')\n})\n```\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/mikeal/request", - "_id": "request@2.31.0", - "_from": "request@~2.31.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js deleted file mode 100644 index 3c03c47d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/request/request.js +++ /dev/null @@ -1,1260 +0,0 @@ -var optional = require('./lib/optional') - , http = require('http') - , https = optional('https') - , tls = optional('tls') - , url = require('url') - , util = require('util') - , stream = require('stream') - , qs = require('qs') - , querystring = require('querystring') - , crypto = require('crypto') - - , oauth = optional('oauth-sign') - , hawk = optional('hawk') - , aws = optional('aws-sign') - , httpSignature = optional('http-signature') - , uuid = require('node-uuid') - , mime = require('mime') - , tunnel = optional('tunnel-agent') - , _safeStringify = require('json-stringify-safe') - - , ForeverAgent = require('forever-agent') - , FormData = optional('form-data') - - , Cookie = optional('tough-cookie') - , CookieJar = Cookie && Cookie.CookieJar - , cookieJar = CookieJar && new CookieJar - - , copy = require('./lib/copy') - , debug = require('./lib/debug') - , getSafe = require('./lib/getSafe') - ; - -function safeStringify (obj) { - var ret - try { ret = JSON.stringify(obj) } - catch (e) { ret = _safeStringify(obj) } - return ret -} - -var globalPool = {} -var isUrl = /^https?:/i - - -// Hacky fix for pre-0.4.4 https -if (https && !https.Agent) { - https.Agent = function (options) { - http.Agent.call(this, options) - } - util.inherits(https.Agent, http.Agent) - https.Agent.prototype._getConnection = function (host, port, cb) { - var s = tls.connect(port, host, this.options, function () { - // do other checks here? - if (cb) cb() - }) - return s - } -} - -function isReadStream (rs) { - if (rs.readable && rs.path && rs.mode) { - return true - } -} - -function toBase64 (str) { - return (new Buffer(str || "", "ascii")).toString("base64") -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function Request (options) { - stream.Stream.call(this) - this.readable = true - this.writable = true - - if (typeof options === 'string') { - options = {uri:options} - } - - var reserved = Object.keys(Request.prototype) - for (var i in options) { - if (reserved.indexOf(i) === -1) { - this[i] = options[i] - } else { - if (typeof options[i] === 'function') { - delete options[i] - } - } - } - - if (options.method) { - this.explicitMethod = true - } - - this.canTunnel = options.tunnel !== false && tunnel; - - this.init(options) -} -util.inherits(Request, stream.Stream) -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) options = {} - - if (!self.method) self.method = options.method || 'GET' - self.localAddress = options.localAddress - - debug(options) - if (!self.pool && self.pool !== false) self.pool = globalPool - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) return // Print a warning maybe? - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - if (self.url && !self.uri) { - // People use this property instead all the time so why not just support it. - self.uri = self.url - delete self.url - } - - if (!self.uri) { - // this will throw if unhandled but is handleable when in a redirect - return self.emit('error', new Error("options.uri is a required argument")) - } else { - if (typeof self.uri == "string") self.uri = url.parse(self.uri) - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (self.proxy) { - if (typeof self.proxy == 'string') self.proxy = url.parse(self.proxy) - - // do the HTTP CONNECT dance using koichik/node-tunnel - if (http.globalAgent && self.uri.protocol === "https:" && self.canTunnel) { - var tunnelFn = self.proxy.protocol === "http:" - ? tunnel.httpsOverHttp : tunnel.httpsOverHttps - - var tunnelOptions = { proxy: { host: self.proxy.hostname - , port: +self.proxy.port - , proxyAuth: self.proxy.auth - , headers: { Host: self.uri.hostname + ':' + - (self.uri.port || self.uri.protocol === 'https:' ? 443 : 80) }} - , rejectUnauthorized: self.rejectUnauthorized - , ca: this.ca } - - self.agent = tunnelFn(tunnelOptions) - self.tunnel = true - } - } - - if (!self.uri.pathname) {self.uri.pathname = '/'} - - if (!self.uri.host) { - // Invalid URI: it may generate lot of bad errors, like "TypeError: Cannot call method 'indexOf' of undefined" in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - self.emit('error', new Error(message)) - return // This error was fatal - } - - self._redirectsFollowed = self._redirectsFollowed || 0 - self.maxRedirects = (self.maxRedirects !== undefined) ? self.maxRedirects : 10 - self.followRedirect = (self.followRedirect !== undefined) ? self.followRedirect : true - self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false - if (self.followRedirect || self.followAllRedirects) - self.redirects = self.redirects || [] - - self.headers = self.headers ? copy(self.headers) : {} - - self.setHost = false - if (!self.hasHeader('host')) { - self.setHeader('host', self.uri.hostname) - if (self.uri.port) { - if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') && - !(self.uri.port === 443 && self.uri.protocol === 'https:') ) - self.setHeader('host', self.getHeader('host') + (':'+self.uri.port) ) - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol == 'http:') {self.uri.port = 80} - else if (self.uri.protocol == 'https:') {self.uri.port = 443} - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - self.clientErrorHandler = function (error) { - if (self._aborted) return - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' - && self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) - } - - self._parserErrorHandler = function (error) { - if (this.res) { - if (this.res.request) { - this.res.request.emit('error', error) - } else { - this.res.emit('error', error) - } - } else { - this._httpMessage.emit('error', error) - } - } - - if (options.form) { - self.form(options.form) - } - - if (options.qs) self.qs(options.qs) - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || "") - } - - if (self.path.length === 0) self.path = '/' - - - // Auth must happen last in case signing is dependent on other headers - if (options.oauth) { - self.oauth(options.oauth) - } - - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) options.auth.user = options.auth.username - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) options.auth.pass = options.auth.password - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately - ) - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var authPieces = self.uri.auth.split(':').map(function(item){ return querystring.unescape(item) }) - self.auth(authPieces[0], authPieces.slice(1).join(':'), true) - } - if (self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization') && !self.tunnel) { - self.setHeader('proxy-authorization', "Basic " + toBase64(self.proxy.auth.split(':').map(function(item){ return querystring.unescape(item)}).join(':'))) - } - - - if (self.proxy && !self.tunnel) self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - - if (options.json) { - self.json(options.json) - } else if (options.multipart) { - self.boundary = uuid() - self.multipart(options.multipart) - } - - if (self.body) { - var length = 0 - if (!Buffer.isBuffer(self.body)) { - if (Array.isArray(self.body)) { - for (var i = 0; i < self.body.length; i++) { - length += self.body[i].length - } - } else { - self.body = new Buffer(self.body) - length = self.body.length - } - } else { - length = self.body.length - } - if (length) { - if (!self.hasHeader('content-length')) self.setHeader('content-length', length) - } else { - throw new Error('Argument error, options.body.') - } - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - , defaultModules = {'http:':http, 'https:':https} - , httpModules = self.httpModules || {} - ; - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) return this.emit('error', new Error("Invalid protocol")) - - if (options.ca) self.ca = options.ca - - if (!self.agent) { - if (options.agentOptions) self.agentOptions = options.agentOptions - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getAgent() - if (self.maxSockets) { - // Don't use our pooling if node has the refactored client - self.agent.maxSockets = self.maxSockets - } - if (self.pool.maxSockets) { - // Don't use our pooling if node has the refactored client - self.agent.maxSockets = self.pool.maxSockets - } - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) throw new Error("You cannot pipe to this stream after the outbound request has started.") - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) self.setHeader('content-type', mime.lookup(src.path)) - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) - self.setHeader('content-type', 'application/json') - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error("You have already piped to this stream. Pipeing twice is likely to break the request.") - // }) - }) - - process.nextTick(function () { - if (self._aborted) return - - if (self._form) { - self.setHeaders(self._form.getHeaders()) - self._form.pipe(self) - } - if (self.body) { - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } else if (self.requestBodyStream) { - console.warn("options.requestBodyStream is deprecated, please pass the request object to stream.pipe.") - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - self.ntick = true - }) -} - -// Must call this when following a redirect from https to http or vice versa -// Attempts to keep everything as identical as possible, but update the -// httpModule, Tunneling agent, and/or Forever Agent in use. -Request.prototype._updateProtocol = function () { - var self = this - var protocol = self.uri.protocol - - if (protocol === 'https:') { - // previously was doing http, now doing https - // if it's https, then we might need to tunnel now. - if (self.proxy && self.canTunnel) { - self.tunnel = true - var tunnelFn = self.proxy.protocol === 'http:' - ? tunnel.httpsOverHttp : tunnel.httpsOverHttps - var tunnelOptions = { proxy: { host: self.proxy.hostname - , port: +self.proxy.port - , proxyAuth: self.proxy.auth } - , rejectUnauthorized: self.rejectUnauthorized - , ca: self.ca } - self.agent = tunnelFn(tunnelOptions) - return - } - - self.httpModule = https - switch (self.agentClass) { - case ForeverAgent: - self.agentClass = ForeverAgent.SSL - break - case http.Agent: - self.agentClass = https.Agent - break - default: - // nothing we can do. Just hope for the best. - return - } - - // if there's an agent, we need to get a new one. - if (self.agent) self.agent = self.getAgent() - - } else { - // previously was doing https, now doing http - // stop any tunneling. - if (self.tunnel) self.tunnel = false - self.httpModule = http - switch (self.agentClass) { - case ForeverAgent.SSL: - self.agentClass = ForeverAgent - break - case https.Agent: - self.agentClass = http.Agent - break - default: - // nothing we can do. just hope for the best - return - } - - // if there's an agent, then get a new one. - if (self.agent) { - self.agent = null - self.agent = self.getAgent() - } - } -} - -Request.prototype.getAgent = function () { - var Agent = this.agentClass - var options = {} - if (this.agentOptions) { - for (var i in this.agentOptions) { - options[i] = this.agentOptions[i] - } - } - if (this.ca) options.ca = this.ca - if (this.ciphers) options.ciphers = this.ciphers - if (this.secureProtocol) options.secureProtocol = this.secureProtocol - if (typeof this.rejectUnauthorized !== 'undefined') options.rejectUnauthorized = this.rejectUnauthorized - - if (this.cert && this.key) { - options.key = this.key - options.cert = this.cert - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== this.httpModule.Agent) { - poolKey += Agent.name - } - - if (!this.httpModule.globalAgent) { - // node 0.4.x - options.host = this.host - options.port = this.port - if (poolKey) poolKey += ':' - poolKey += this.host + ':' + this.port - } - - // ca option is only relevant if proxy or destination are https - var proxy = this.proxy - if (typeof proxy === 'string') proxy = url.parse(proxy) - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - if (isHttps) { - if (options.ca) { - if (poolKey) poolKey += ':' - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) poolKey += ':' - poolKey += options.rejectUnauthorized - } - - if (options.cert) - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - - if (options.ciphers) { - if (poolKey) poolKey += ':' - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) poolKey += ':' - poolKey += options.secureProtocol - } - } - - if (this.pool === globalPool && !poolKey && Object.keys(options).length === 0 && this.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return this.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = this.uri.protocol + poolKey - - // already generated an agent for this setting - if (this.pool[poolKey]) return this.pool[poolKey] - - return this.pool[poolKey] = new Agent(options) -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self._aborted) return - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - self.req = self.httpModule.request(reqOptions, self.onResponse.bind(self)) - - if (self.timeout && !self.timeoutTimer) { - self.timeoutTimer = setTimeout(function () { - self.req.abort() - var e = new Error("ETIMEDOUT") - e.code = "ETIMEDOUT" - self.emit("error", e) - }, self.timeout) - - // Set additional timeout on socket - in case if remote - // server freeze after sending headers - if (self.req.setTimeout) { // only works on node 0.6+ - self.req.setTimeout(self.timeout, function () { - if (self.req) { - self.req.abort() - var e = new Error("ESOCKETTIMEDOUT") - e.code = "ESOCKETTIMEDOUT" - self.emit("error", e) - } - }) - } - } - - self.req.on('error', self.clientErrorHandler) - self.req.on('drain', function() { - self.emit('drain') - }) - self.on('end', function() { - if ( self.req.connection ) self.req.connection.removeListener('error', self._parserErrorHandler) - }) - self.emit('request', self.req) -} -Request.prototype.onResponse = function (response) { - var self = this - debug('onResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function() { - debug('response end', self.uri.href, response.statusCode, response.headers) - }); - - if (response.connection.listeners('error').indexOf(self._parserErrorHandler) === -1) { - response.connection.once('error', self._parserErrorHandler) - } - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - if (self._paused) response.pause() - else response.resume() - - self.response = response - response.request = self - response.toJSON = toJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && - !response.client.authorized) { - debug('strict ssl error', self.uri.href) - var sslErr = response.client.authorizationError - self.emit('error', new Error('SSL Error: '+ sslErr)) - return - } - - if (self.setHost && self.hasHeader('host')) delete self.headers[self.hasHeader('host')] - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var addCookie = function (cookie) { - if (self._jar){ - var targetCookieJar = self._jar.setCookie?self._jar:cookieJar; - - //set the cookie if it's domain in the href's domain. - targetCookieJar.setCookie(cookie, self.uri.href, function(err){ - if (err){ - console.warn('set cookie failed,'+ err) - } - }) - } - - } - - if (hasHeader('set-cookie', response.headers) && (!self._disableCookies)) { - var headerName = hasHeader('set-cookie', response.headers) - if (Array.isArray(response.headers[headerName])) response.headers[headerName].forEach(addCookie) - else addCookie(response.headers[headerName]) - } - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && hasHeader('location', response.headers)) { - var location = response.headers[hasHeader('location', response.headers)] - debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirect) { - switch (self.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode == 401 && self._hasAuth && !self._sentAuth) { - var authHeader = response.headers[hasHeader('www-authenticate', response.headers)] - var authVerb = authHeader && authHeader.split(' ')[0] - debug('reauth', authVerb) - - switch (authVerb) { - case 'Basic': - self.auth(self._user, self._pass, true) - redirectTo = self.uri - break - - case 'Digest': - // TODO: More complete implementation of RFC 2617. - // - check challenge.algorithm - // - support algorithm="MD5-sess" - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) break - challenge[match[1]] = match[2] || match[3]; - } - - var ha1 = md5(self._user + ':' + challenge.realm + ':' + self._pass) - var ha2 = md5(self.method + ':' + self.uri.path) - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var digestResponse = qop ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self._user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: self.uri.path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (!authValues[k]) { - //ignore - } else if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.setHeader('authorization', authHeader) - self._sentAuth = true - - redirectTo = self.uri - break - } - } - - if (redirectTo) { - debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - if (self._paused) response.resume() - - if (self._redirectsFollowed >= self.maxRedirects) { - self.emit('error', new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+self.uri.href)) - return - } - self._redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(self.uri.href, redirectTo) - } - - var uriPrev = self.uri - self.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (self.uri.protocol !== uriPrev.protocol) { - self._updateProtocol() - } - - self.redirects.push( - { statusCode : response.statusCode - , redirectUri: redirectTo - } - ) - if (self.followAllRedirects && response.statusCode != 401) self.method = 'GET' - // self.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete self.src - delete self.req - delete self.agent - delete self._started - if (response.statusCode != 401) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete self.body - delete self._form - if (self.headers) { - if (self.hasHeader('host')) delete self.headers[self.hasHeader('host')] - if (self.hasHeader('content-type')) delete self.headers[self.hasHeader('content-type')] - if (self.hasHeader('content-length')) delete self.headers[self.hasHeader('content-length')] - } - } - - self.emit('redirect'); - - self.init() - return // Ignore the rest of the response - } else { - self._redirectsFollowed = self._redirectsFollowed || 0 - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) self.response.emit('end') - }) - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error("Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.") - } else { - response.setEncoding(self.encoding) - } - } - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - response.on("data", function (chunk) { - self._destdata = true - self.emit("data", chunk) - }) - response.on("end", function (chunk) { - self._ended = true - self.emit("end", chunk) - }) - response.on("close", function () {self.emit("close")}) - - if (self.callback) { - var buffer = [] - var bodyLen = 0 - self.on("data", function (chunk) { - buffer.push(chunk) - bodyLen += chunk.length - }) - self.on("end", function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - - if (buffer.length && Buffer.isBuffer(buffer[0])) { - debug('has body', self.uri.href, bodyLen) - var body = new Buffer(bodyLen) - var i = 0 - buffer.forEach(function (chunk) { - chunk.copy(body, i, 0, chunk.length) - i += chunk.length - }) - if (self.encoding === null) { - response.body = body - } else { - response.body = body.toString(self.encoding) - } - } else if (buffer.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && buffer[0].length > 0 && buffer[0][0] === "\uFEFF") { - buffer[0] = buffer[0].substring(1) - } - response.body = buffer.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body) - } catch (e) {} - } - debug('emitting complete', self.uri.href) - if(response.body == undefined && !self._json) { - response.body = ""; - } - self.emit('complete', response, response.body) - }) - } - //if no callback - else{ - self.on("end", function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response); - }); - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.abort = function () { - this._aborted = true - - if (this.req) { - this.req.abort() - } - else if (this.response) { - this.response.abort() - } - - this.emit("abort") -} - -Request.prototype.pipeDest = function (dest) { - var response = this.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (hasHeader('content-type', response.headers)) { - var ctname = hasHeader('content-type', response.headers) - if (dest.setHeader) dest.setHeader(ctname, response.headers[ctname]) - else dest.headers[ctname] = response.headers[ctname] - } - - if (hasHeader('content-length', response.headers)) { - var clname = hasHeader('content-length', response.headers) - if (dest.setHeader) dest.setHeader(clname, response.headers[clname]) - else dest.headers[clname] = response.headers[clname] - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - dest.setHeader(i, response.headers[i]) - } - dest.statusCode = response.statusCode - } - if (this.pipefilter) this.pipefilter(response, dest) -} - -// Composable API -Request.prototype.setHeader = function (name, value, clobber) { - if (clobber === undefined) clobber = true - if (clobber || !this.hasHeader(name)) this.headers[name] = value - else this.headers[this.hasHeader(name)] += ',' + value - return this -} -Request.prototype.setHeaders = function (headers) { - for (var i in headers) {this.setHeader(i, headers[i])} - return this -} -Request.prototype.hasHeader = function (header, headers) { - var headers = Object.keys(headers || this.headers) - , lheaders = headers.map(function (h) {return h.toLowerCase()}) - ; - header = header.toLowerCase() - for (var i=0;i<lheaders.length;i++) { - if (lheaders[i] === header) return headers[i] - } - return false -} - -var hasHeader = Request.prototype.hasHeader - -Request.prototype.qs = function (q, clobber) { - var base - if (!clobber && this.uri.query) base = qs.parse(this.uri.query) - else base = {} - - for (var i in q) { - base[i] = q[i] - } - - if (qs.stringify(base) === ''){ - return this - } - - this.uri = url.parse(this.uri.href.split('?')[0] + '?' + qs.stringify(base)) - this.url = this.uri - this.path = this.uri.path - - return this -} -Request.prototype.form = function (form) { - if (form) { - this.setHeader('content-type', 'application/x-www-form-urlencoded; charset=utf-8') - this.body = qs.stringify(form).toString('utf8') - return this - } - // create form-data object - this._form = new FormData() - return this._form -} -Request.prototype.multipart = function (multipart) { - var self = this - self.body = [] - - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - var headerName = self.hasHeader('content-type'); - self.setHeader(headerName, self.headers[headerName].split(';')[0] + '; boundary=' + self.boundary) - } - - if (!multipart.forEach) throw new Error('Argument error, options.multipart.') - - if (self.preambleCRLF) { - self.body.push(new Buffer('\r\n')) - } - - multipart.forEach(function (part) { - var body = part.body - if(body == null) throw Error('Body attribute missing in multipart.') - delete part.body - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - self.body.push(new Buffer(preamble)) - self.body.push(new Buffer(body)) - self.body.push(new Buffer('\r\n')) - }) - self.body.push(new Buffer('--' + self.boundary + '--')) - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) self.setHeader('accept', 'application/json') - - this._json = true - if (typeof val === 'boolean') { - if (typeof this.body === 'object') { - this.body = safeStringify(this.body) - self.setHeader('content-type', 'application/json') - } - } else { - this.body = safeStringify(val) - self.setHeader('content-type', 'application/json') - } - return this -} -Request.prototype.getHeader = function (name, headers) { - var result, re, match - if (!headers) headers = this.headers - Object.keys(headers).forEach(function (key) { - re = new RegExp(name, 'i') - match = key.match(re) - if (match) result = headers[key] - }) - return result -} -var getHeader = Request.prototype.getHeader - -Request.prototype.auth = function (user, pass, sendImmediately) { - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - throw new Error('auth() received invalid user or password') - } - this._user = user - this._pass = pass - this._hasAuth = true - var header = typeof pass !== 'undefined' ? user + ':' + pass : user - if (sendImmediately || typeof sendImmediately == 'undefined') { - this.setHeader('authorization', 'Basic ' + toBase64(header)) - this._sentAuth = true - } - return this -} -Request.prototype.aws = function (opts, now) { - if (!now) { - this._aws = opts - return this - } - var date = new Date() - this.setHeader('date', date.toUTCString()) - var auth = - { key: opts.key - , secret: opts.secret - , verb: this.method.toUpperCase() - , date: date - , contentType: this.getHeader('content-type') || '' - , md5: this.getHeader('content-md5') || '' - , amazonHeaders: aws.canonicalizeHeaders(this.headers) - } - if (opts.bucket && this.path) { - auth.resource = '/' + opts.bucket + this.path - } else if (opts.bucket && !this.path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && this.path) { - auth.resource = this.path - } else if (!opts.bucket && !this.path) { - auth.resource = '/' - } - auth.resource = aws.canonicalizeResource(auth.resource) - this.setHeader('authorization', aws.authorization(auth)) - - return this -} -Request.prototype.httpSignature = function (opts) { - var req = this - httpSignature.signRequest({ - getHeader: function(header) { - return getHeader(header, req.headers) - }, - setHeader: function(header, value) { - req.setHeader(header, value) - }, - method: this.method, - path: this.path - }, opts) - debug('httpSignature authorization', this.getHeader('authorization')) - - return this -} - -Request.prototype.hawk = function (opts) { - this.setHeader('Authorization', hawk.client.header(this.uri, this.method, opts).field) -} - -Request.prototype.oauth = function (_oauth) { - var form - if (this.hasHeader('content-type') && - this.getHeader('content-type').slice(0, 'application/x-www-form-urlencoded'.length) === - 'application/x-www-form-urlencoded' - ) { - form = qs.parse(this.body) - } - if (this.uri.query) { - form = qs.parse(this.uri.query) - } - if (!form) form = {} - var oa = {} - for (var i in form) oa[i] = form[i] - for (var i in _oauth) oa['oauth_'+i] = _oauth[i] - if (!oa.oauth_version) oa.oauth_version = '1.0' - if (!oa.oauth_timestamp) oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() - if (!oa.oauth_nonce) oa.oauth_nonce = uuid().replace(/-/g, '') - - oa.oauth_signature_method = 'HMAC-SHA1' - - var consumer_secret = oa.oauth_consumer_secret - delete oa.oauth_consumer_secret - var token_secret = oa.oauth_token_secret - delete oa.oauth_token_secret - var timestamp = oa.oauth_timestamp - - var baseurl = this.uri.protocol + '//' + this.uri.host + this.uri.pathname - var signature = oauth.hmacsign(this.method, baseurl, oa, consumer_secret, token_secret) - - // oa.oauth_signature = signature - for (var i in form) { - if ( i.slice(0, 'oauth_') in _oauth) { - // skip - } else { - delete oa['oauth_'+i] - if (i !== 'x_auth_mode') delete oa[i] - } - } - oa.oauth_timestamp = timestamp - var authHeader = 'OAuth '+Object.keys(oa).sort().map(function (i) {return i+'="'+oauth.rfc3986(oa[i])+'"'}).join(',') - authHeader += ',oauth_signature="' + oauth.rfc3986(signature) + '"' - this.setHeader('Authorization', authHeader) - return this -} -Request.prototype.jar = function (jar) { - var cookies - - if (this._redirectsFollowed === 0) { - this.originalCookieHeader = this.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - this._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString)?jar:cookieJar; - var urihref = this.uri.href - - //fetch cookie in the Specified host - targetCookieJar.getCookieString(urihref, function(err, hrefCookie){ - if (err){ - console.warn('get cookieString failed,' +err) - } else { - cookies = hrefCookie - } - }) - - } - - //if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (this.originalCookieHeader) { - // Don't overwrite existing Cookie header - this.setHeader('cookie', this.originalCookieHeader + '; ' + cookies) - } else { - this.setHeader('cookie', cookies) - } - } - this._jar = jar - return this -} - - -// Stream API -Request.prototype.pipe = function (dest, opts) { - if (this.response) { - if (this._destdata) { - throw new Error("You cannot pipe after data has been emitted from the response.") - } else if (this._ended) { - throw new Error("You cannot pipe after the response has been ended.") - } else { - stream.Stream.prototype.pipe.call(this, dest, opts) - this.pipeDest(dest) - return dest - } - } else { - this.dests.push(dest) - stream.Stream.prototype.pipe.call(this, dest, opts) - return dest - } -} -Request.prototype.write = function () { - if (!this._started) this.start() - return this.req.write.apply(this.req, arguments) -} -Request.prototype.end = function (chunk) { - if (chunk) this.write(chunk) - if (!this._started) this.start() - this.req.end() -} -Request.prototype.pause = function () { - if (!this.response) this._paused = true - else this.response.pause.apply(this.response, arguments) -} -Request.prototype.resume = function () { - if (!this.response) this._paused = false - else this.response.resume.apply(this.response, arguments) -} -Request.prototype.destroy = function () { - if (!this._ended) this.end() - else if (this.response) this.response.destroy() -} - -function toJSON () { - return getSafe(this, '__' + (((1+Math.random())*0x10000)|0).toString(16)) -} - -Request.prototype.toJSON = toJSON - - -module.exports = Request diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc deleted file mode 100644 index c8ef3ca4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ ] - , "bitwise": false - , "camelcase": false - , "curly": false - , "eqeqeq": false - , "forin": false - , "immed": false - , "latedef": false - , "noarg": true - , "noempty": true - , "nonew": true - , "plusplus": false - , "quotmark": true - , "regexp": false - , "undef": true - , "unused": true - , "strict": false - , "trailing": true - , "maxlen": 120 - , "asi": true - , "boss": true - , "debug": true - , "eqnull": true - , "esnext": true - , "evil": true - , "expr": true - , "funcscope": false - , "globalstrict": false - , "iterator": false - , "lastsemic": true - , "laxbreak": true - , "laxcomma": true - , "loopfunc": true - , "multistr": false - , "onecase": false - , "proto": false - , "regexdash": false - , "scripturl": true - , "smarttabs": false - , "shadow": false - , "sub": true - , "supernew": false - , "validthis": true - , "browser": true - , "couch": false - , "devel": false - , "dojo": false - , "mootools": false - , "node": true - , "nonstandard": true - , "prototypejs": false - , "rhino": false - , "worker": true - , "wsh": false - , "nomen": false - , "onevar": false - , "passfail": false -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml deleted file mode 100644 index 12b1a310..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: node_js -node_js: -- '0.8' -- '0.10' -- '0.11' -branches: - only: - - master -notifications: - email: - - rod@vagg.org -script: npm test -env: - global: - - SAUCE_USER=through2-sauce - - secure: A8KyygIlklZOcTwTGhZHpkOu7Cn4tI1QQasg75CTSjudczGzkuh1pG2RDIkWqGcrWv9o5CjI6fFYYx0JvQu8o5PO+ZAtV1Z0AlnM965vE8kAx0XEC7giAV323bibfnHwyQu74vIhbOfdes7E4/cYerV2kAjK0T375D4DYEpDuvw= - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs License - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md deleted file mode 100644 index c9388b38..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# through2 - -<!-- - -soon ... - -[![Build Status](https://secure.travis-ci.org/rvagg/through2.png)](http://travis-ci.org/rvagg/through2) - -[![Build Status](https://saucelabs.com/browser-matrix/through2-sauce.svg)](https://travis-ci.org/rvagg/through2) - ---> - -[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) - -<!-- -not happy with these, we need to peg to readable-stream@1.0.x so it'll always report out-of-date - -[![david-dm](https://david-dm.org/rvagg/through2.png)](https://david-dm.org/rvagg/through2/) -[![david-dm](https://david-dm.org/rvagg/through2/dev-status.png)](https://david-dm.org/rvagg/through2#info=devDependencies/) ---> - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - - this.push(data) - - callback() - - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b> - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) { - - this.push(new Buffer('wut?')) - cb() - - }) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -If you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b> - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md deleted file mode 100644 index 34c11897..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index a2e0d8e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; -var util = require('util'); -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -Object.keys(Writable.prototype).forEach(function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 330c247d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); -var util = require('util'); -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 9a57f147..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,928 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -module.exports = Readable; -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -var Stream = require('stream'); -var util = require('util'); -var Buffer = require('buffer').Buffer; -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || n === null) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode && - !er) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (Array.isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - state.pipes.forEach(write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = state.pipes.indexOf(dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - if (!chunk || !state.objectMode && !chunk.length) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - events.forEach(function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 707e4b3b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); -var util = require('util'); -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 32fbab77..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,378 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; -Writable.WritableState = WritableState; - -var util = require('util'); -var Buffer = require('buffer').Buffer; -var assert = require('assert'); -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320cc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa001..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index 2e44a03e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,200 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - this.charBuffer = new Buffer(6); - this.charReceived = 0; - this.charLength = 0; -}; - - -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - var offset = 0; - - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var i = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, offset, i); - this.charReceived += (i - offset); - offset = i; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (i == buffer.length) return charStr; - - // otherwise cut off the characters end from the beginning of this buffer - buffer = buffer.slice(i, buffer.length); - break; - } - - var lenIncomplete = this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - lenIncomplete, end); - this.charReceived = lenIncomplete; - end -= lenIncomplete; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - this.charBuffer.write(charStr.charAt(charStr.length - 1), this.encoding); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - - return i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 2; - this.charLength = incomplete ? 2 : 0; - return incomplete; -} - -function base64DetectIncompleteChar(buffer) { - var incomplete = this.charReceived = buffer.length % 3; - this.charLength = incomplete ? 3 : 0; - return incomplete; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 7f5d0011..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.25-1", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.25-1", - "_from": "string_decoder@~0.10.x" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json deleted file mode 100644 index 6e20ea26..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "readable-stream", - "version": "1.0.26-2", - "description": "An exploration of a new kind of readable streams for Node.js", - "main": "readable.js", - "dependencies": { - "string_decoder": "~0.10.x" - }, - "devDependencies": { - "tap": "~0.2.6" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# readable-stream\n\n***Node-core streams for userland***\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png)](https://nodei.co/npm/readable-stream/)\n\nThis package is a mirror of the Streams2 and Streams3 implementations in Node-core.\n\nIf you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core.\n\n**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.\n\n**readable-stream** uses proper patch-level versioning so if you pin to `\"~1.0.0\"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `\"~1.1.0\"`\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "homepage": "https://github.com/isaacs/readable-stream", - "_id": "readable-stream@1.0.26-2", - "_from": "readable-stream@~1.0.17" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js deleted file mode 100644 index 4d1ddfc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,6 +0,0 @@ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile deleted file mode 100644 index d583fcf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -browser: - node ./support/compile - -.PHONY: browser \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md deleted file mode 100644 index 389adae3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# xtend - -[![browser support][3]][4] - -Extend like a boss - -xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence. - -## Examples - -```js -var extend = require("xtend") - -var combination = extend({ - a: "a" -}, { - b: "b" -}) -// { a: "a", b: "b" } -``` - - -## MIT Licenced - - - [3]: http://ci.testling.com/Raynos/xtend.png - [4]: http://ci.testling.com/Raynos/xtend diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js deleted file mode 100644 index 62391e78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/has-keys.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = hasKeys - -function hasKeys(source) { - return source !== null && - (typeof source === "object" || - typeof source === "function") -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js deleted file mode 100644 index 20937d19..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js deleted file mode 100644 index 17454ae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/mutable.js +++ /dev/null @@ -1,25 +0,0 @@ -var Keys = require("object-keys") -var hasKeys = require("./has-keys") - -module.exports = extend - -function extend(target) { - var sources = [].slice.call(arguments, 1) - - for (var i = 0; i < sources.length; i++) { - var source = sources[i] - - if (!hasKeys(source)) { - continue - } - - var keys = Keys(source) - - for (var j = 0; j < keys.length; j++) { - var name = keys[j] - target[name] = source[name] - } - } - - return target -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml deleted file mode 100644 index 60d00ce1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.8" - - "0.6" diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md deleted file mode 100644 index ab32d0ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/README.md +++ /dev/null @@ -1,39 +0,0 @@ -#object-keys <sup>[![Version Badge][2]][1]</sup> - -[![Build Status][3]][4] [![dependency status][5]][6] - -[![browser support][7]][8] - -An Object.keys shim. Uses Object.keys if available. - -## Example - -```js -var keys = require('object-keys'); -var assert = require('assert'); -var obj = { - a: true, - b: true, - c: true -}; - -assert.equal(keys(obj), ['a', 'b', 'c']); -``` - -## Source -Implementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]). - -## Tests -Simply clone the repo, `npm install`, and run `npm test` - -[1]: https://npmjs.org/package/object-keys -[2]: http://vb.teelaun.ch/ljharb/object-keys.svg -[3]: https://travis-ci.org/ljharb/object-keys.png -[4]: https://travis-ci.org/ljharb/object-keys -[5]: https://david-dm.org/ljharb/object-keys.png -[6]: https://david-dm.org/ljharb/object-keys -[7]: https://ci.testling.com/ljharb/object-keys.png -[8]: https://ci.testling.com/ljharb/object-keys -[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589 -[10]: https://github.com/bestiejs/lodash - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js deleted file mode 100644 index db32d458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/foreach.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = Object.prototype.hasOwnProperty; -var toString = Object.prototype.toString; - -var isFunction = function (fn) { - var isFunc = (typeof fn === 'function' && !(fn instanceof RegExp)) || toString.call(fn) === '[object Function]'; - if (!isFunc && typeof window !== 'undefined') { - isFunc = fn === window.setTimeout || fn === window.alert || fn === window.confirm || fn === window.prompt; - } - return isFunc; -}; - -module.exports = function forEach(obj, fn) { - if (!isFunction(fn)) { - throw new TypeError('iterator must be a function'); - } - var i, k, - isString = typeof obj === 'string', - l = obj.length, - context = arguments.length > 2 ? arguments[2] : null; - if (l === +l) { - for (i = 0; i < l; i++) { - if (context === null) { - fn(isString ? obj.charAt(i) : obj[i], i, obj); - } else { - fn.call(context, isString ? obj.charAt(i) : obj[i], i, obj); - } - } - } else { - for (k in obj) { - if (hasOwn.call(obj, k)) { - if (context === null) { - fn(obj[k], k, obj); - } else { - fn.call(context, obj[k], k, obj); - } - } - } - } -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js deleted file mode 100644 index f5b24b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = Object.keys || require('./shim'); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js deleted file mode 100644 index 74a09897..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/isArguments.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = Object.prototype.toString; - -module.exports = function isArguments(value) { - var str = toString.call(value); - var isArguments = str === '[object Arguments]'; - if (!isArguments) { - isArguments = str !== '[object Array]' - && value !== null - && typeof value === 'object' - && typeof value.length === 'number' - && value.length >= 0 - && toString.call(value.callee) === '[object Function]'; - } - return isArguments; -}; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json deleted file mode 100644 index 1de9cbb3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "object-keys", - "version": "0.4.0", - "author": { - "name": "Jordan Harband" - }, - "description": "An Object.keys replacement, in case Object.keys is not available. From https://github.com/kriskowal/es5-shim", - "license": "MIT", - "main": "index.js", - "scripts": { - "test": "node test/index.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/ljharb/object-keys.git" - }, - "keywords": [ - "Object.keys", - "keys", - "ES5", - "shim" - ], - "dependencies": {}, - "devDependencies": { - "foreach": "~2.0.3", - "is": "~0.2.6", - "tape": "~1.0.4", - "indexof": "~0.0.1" - }, - "testling": { - "files": "test/index.js", - "browsers": [ - "iexplore/6.0..latest", - "firefox/3.0..6.0", - "firefox/15.0..latest", - "firefox/nightly", - "chrome/4.0..10.0", - "chrome/20.0..latest", - "chrome/canary", - "opera/10.0..latest", - "opera/next", - "safari/4.0..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2" - ] - }, - "readme": "#object-keys <sup>[![Version Badge][2]][1]</sup>\n\n[![Build Status][3]][4] [![dependency status][5]][6]\n\n[![browser support][7]][8]\n\nAn Object.keys shim. Uses Object.keys if available.\n\n## Example\n\n```js\nvar keys = require('object-keys');\nvar assert = require('assert');\nvar obj = {\n\ta: true,\n\tb: true,\n\tc: true\n};\n\nassert.equal(keys(obj), ['a', 'b', 'c']);\n```\n\n## Source\nImplementation taken directly from [es5-shim]([9]), with modifications, including from [lodash]([10]).\n\n## Tests\nSimply clone the repo, `npm install`, and run `npm test`\n\n[1]: https://npmjs.org/package/object-keys\n[2]: http://vb.teelaun.ch/ljharb/object-keys.svg\n[3]: https://travis-ci.org/ljharb/object-keys.png\n[4]: https://travis-ci.org/ljharb/object-keys\n[5]: https://david-dm.org/ljharb/object-keys.png\n[6]: https://david-dm.org/ljharb/object-keys\n[7]: https://ci.testling.com/ljharb/object-keys.png\n[8]: https://ci.testling.com/ljharb/object-keys\n[9]: https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js#L542-589\n[10]: https://github.com/bestiejs/lodash\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ljharb/object-keys/issues" - }, - "homepage": "https://github.com/ljharb/object-keys", - "_id": "object-keys@0.4.0", - "_from": "object-keys@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js deleted file mode 100644 index b88421be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/shim.js +++ /dev/null @@ -1,62 +0,0 @@ -(function () { - "use strict"; - - // modified from https://github.com/kriskowal/es5-shim - var has = Object.prototype.hasOwnProperty, - toString = Object.prototype.toString, - forEach = require('./foreach'), - isArgs = require('./isArguments'), - hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'), - hasProtoEnumBug = (function () {}).propertyIsEnumerable('prototype'), - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - keysShim; - - keysShim = function keys(object) { - var isObject = object !== null && typeof object === 'object', - isFunction = toString.call(object) === '[object Function]', - isArguments = isArgs(object), - theKeys = []; - - if (!isObject && !isFunction && !isArguments) { - throw new TypeError("Object.keys called on a non-object"); - } - - if (isArguments) { - forEach(object, function (value) { - theKeys.push(value); - }); - } else { - var name, - skipProto = hasProtoEnumBug && isFunction; - - for (name in object) { - if (!(skipProto && name === 'prototype') && has.call(object, name)) { - theKeys.push(name); - } - } - } - - if (hasDontEnumBug) { - var ctor = object.constructor, - skipConstructor = ctor && ctor.prototype === object; - - forEach(dontEnums, function (dontEnum) { - if (!(skipConstructor && dontEnum === 'constructor') && has.call(object, dontEnum)) { - theKeys.push(dontEnum); - } - }); - } - return theKeys; - }; - - module.exports = keysShim; -}()); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js deleted file mode 100644 index f29f065a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/foreach.js +++ /dev/null @@ -1,156 +0,0 @@ -var test = require('tape'); -var forEach = require('../foreach.js'); - -test('second argument: iterator', function (t) { - var arr = []; - t.throws(function () { forEach(arr); }, TypeError, 'undefined is not a function'); - t.throws(function () { forEach(arr, null); }, TypeError, 'null is not a function'); - t.throws(function () { forEach(arr, ''); }, TypeError, 'string is not a function'); - t.throws(function () { forEach(arr, /a/); }, TypeError, 'regex is not a function'); - t.throws(function () { forEach(arr, true); }, TypeError, 'true is not a function'); - t.throws(function () { forEach(arr, false); }, TypeError, 'false is not a function'); - t.throws(function () { forEach(arr, NaN); }, TypeError, 'NaN is not a function'); - t.throws(function () { forEach(arr, 42); }, TypeError, '42 is not a function'); - t.doesNotThrow(function () { forEach(arr, function () {}); }, 'function is a function'); - t.doesNotThrow(function () { forEach(arr, setTimeout); }, 'setTimeout is a function'); - if (typeof window !== 'undefined') { - t.doesNotThrow(function () { forEach(arr, window.alert); }, 'alert is a function'); - } - t.end(); -}); - -test('array', function (t) { - var arr = [1, 2, 3]; - - t.test('iterates over every item', function (st) { - var index = 0; - forEach(arr, function () { index += 1; }); - st.equal(index, arr.length, 'iterates ' + arr.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(arr.length); - forEach(arr, function (item) { - st.equal(arr[index], item, 'item ' + index + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(arr.length); - forEach(arr, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(arr.length); - forEach(arr, function (item, index, array) { - st.deepEqual(arr, array, 'array is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(arr.length); - forEach(arr, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - -test('object', function (t) { - var obj = { - a: 1, - b: 2, - c: 3 - }; - var keys = ['a', 'b', 'c']; - - var F = function () { - this.a = 1; - this.b = 2; - }; - F.prototype.c = 3; - var fKeys = ['a', 'b']; - - t.test('iterates over every object literal key', function (st) { - var counter = 0; - forEach(obj, function () { counter += 1; }); - st.equal(counter, keys.length, 'iterated ' + counter + ' times'); - st.end(); - }); - - t.test('iterates only over own keys', function (st) { - var counter = 0; - forEach(new F(), function () { counter += 1; }); - st.equal(counter, fKeys.length, 'iterated ' + fKeys.length + ' times'); - st.end(); - }); - - t.test('first iterator argument', function (st) { - var index = 0; - st.plan(keys.length); - forEach(obj, function (item) { - st.equal(obj[keys[index]], item, 'item at key ' + keys[index] + ' is passed as first argument'); - index += 1; - }); - st.end(); - }); - - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(keys.length); - forEach(obj, function (item, key) { - st.equal(keys[counter], key, 'key ' + key + ' is passed as second argument'); - counter += 1; - }); - st.end(); - }); - - t.test('third iterator argument', function (st) { - st.plan(keys.length); - forEach(obj, function (item, key, object) { - st.deepEqual(obj, object, 'object is passed as third argument'); - }); - st.end(); - }); - - t.test('context argument', function (st) { - var context = {}; - st.plan(1); - forEach({foo: 'bar'}, function () { - st.equal(this, context, '"this" is the passed context'); - }, context); - st.end(); - }); - - t.end(); -}); - - -test('string', function (t) { - var str = 'str'; - t.test('second iterator argument', function (st) { - var counter = 0; - st.plan(str.length * 2 + 1); - forEach(str, function (item, index) { - st.equal(counter, index, 'index ' + index + ' is passed as second argument'); - st.equal(str.charAt(index), item); - counter += 1; - }); - st.equal(counter, str.length, 'iterates ' + str.length + ' times'); - }); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js deleted file mode 100644 index 8b77b1fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -require('./foreach'); -require('./isArguments'); - -require('./shim'); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js deleted file mode 100644 index 62a07c2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/isArguments.js +++ /dev/null @@ -1,10 +0,0 @@ -var test = require('tape'); -var isArguments = require('../isArguments'); - -test('is.arguments', function (t) { - t.notOk(isArguments([]), 'array is not arguments'); - (function () { t.ok(isArguments(arguments), 'arguments is arguments'); }()); - (function () { t.notOk(isArguments(Array.prototype.slice.call(arguments)), 'sliced arguments is not arguments'); }()); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js deleted file mode 100644 index 9d932712..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/node_modules/object-keys/test/shim.js +++ /dev/null @@ -1,134 +0,0 @@ -var test = require('tape'); -var shimmedKeys = require('../index.js'); -var is = require('is'); -var keys = require('../shim.js'); -var forEach = require('foreach'); -var indexOf = require('indexof'); - -var obj = { - "str": "boz", - "obj": {}, - "arr": [], - "bool": true, - "num": 42, - "aNull": null, - "undef": undefined -}; -var objKeys = ['str', 'obj', 'arr', 'bool', 'num', 'aNull', 'undef']; - -test('exports a function', function (t) { - if (Object.keys) { - t.equal(Object.keys, shimmedKeys, 'Object.keys is supported and exported'); - } else { - t.equal(keys, shimmedKeys, 'Object.keys is not supported; shim is exported'); - } - t.end(); -}); - -test('working with actual shim', function (t) { - t.notEqual(Object.keys, keys, 'keys shim is not native Object.keys'); - t.end(); -}); - -test('works with an object literal', function (t) { - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, objKeys, 'Object has expected keys'); - t.end(); -}); - -test('works with an array', function (t) { - var arr = [1, 2, 3]; - var theKeys = keys(arr); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['0', '1', '2'], 'Array has expected keys'); - t.end(); -}); - -test('works with a function', function (t) { - var foo = function () {}; - foo.a = true; - - t.doesNotThrow(function () { return keys(foo); }, 'does not throw an error'); - t.deepEqual(keys(foo), ['a'], 'returns expected keys'); - t.end(); -}); - -test('returns names which are own properties', function (t) { - forEach(keys(obj), function (name) { - t.equal(obj.hasOwnProperty(name), true, name + ' should be returned'); - }); - t.end(); -}); - -test('returns names which are enumerable', function (t) { - var k, loopedValues = []; - for (k in obj) { - loopedValues.push(k); - } - forEach(keys(obj), function (name) { - t.notEqual(indexOf(loopedValues, name), -1, name + ' is not enumerable'); - }); - t.end(); -}); - -test('throws an error for a non-object', function (t) { - t.throws( - function () { return keys(42); }, - new TypeError('Object.keys called on a non-object'), - 'throws on a non-object' - ); - t.end(); -}); - -test('works with an object instance', function (t) { - var Prototype = function () {}; - Prototype.prototype.foo = true; - var obj = new Prototype(); - obj.bar = true; - var theKeys = keys(obj); - t.equal(is.array(theKeys), true, 'returns an array'); - t.deepEqual(theKeys, ['bar'], 'Instance has expected keys'); - t.end(); -}); - -test('works in iOS 5 mobile Safari', function (t) { - var Foo = function () {}; - Foo.a = function () {}; - - // the bug is keys(Foo) => ['a', 'prototype'] instead of ['a'] - t.deepEqual(keys(Foo), ['a'], 'has expected keys'); - t.end(); -}); - -test('works in environments with the dontEnum bug (IE < 9)', function (t) { - var Foo = function () {}; - Foo.prototype.a = function () {}; - - // the bug is keys(Foo.prototype) => ['a', 'constructor'] instead of ['a'] - t.deepEqual(keys(Foo.prototype), ['a'], 'has expected keys'); - t.end(); -}); - -test('shadowed properties', function (t) { - var shadowedProps = [ - 'dummyControlProp', /* just to be sure */ - 'constructor', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'toLocaleString', - 'toString', - 'valueOf' - ]; - shadowedProps.sort(); - var shadowedObject = {}; - forEach(shadowedProps, function (value, index) { - shadowedObject[value] = index; - }); - var shadowedObjectKeys = keys(shadowedObject); - shadowedObjectKeys.sort(); - t.deepEqual(shadowedObjectKeys, shadowedProps, 'troublesome shadowed properties are keys of object literals'); - t.end(); -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json deleted file mode 100644 index c52e4efc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "xtend", - "version": "2.1.2", - "description": "extend like a boss", - "keywords": [ - "extend", - "merge", - "options", - "opts", - "object", - "array" - ], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/xtend.git" - }, - "main": "index", - "scripts": { - "test": "node test" - }, - "dependencies": { - "object-keys": "~0.4.0" - }, - "devDependencies": { - "tape": "~1.1.0" - }, - "homepage": "https://github.com/Raynos/xtend", - "contributors": [ - { - "name": "Jake Verbaten" - }, - { - "name": "Matt Esch" - } - ], - "bugs": { - "url": "https://github.com/Raynos/xtend/issues", - "email": "raynos2@gmail.com" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/raynos/xtend/raw/master/LICENSE" - } - ], - "testling": { - "files": "test.js", - "browsers": [ - "ie/7..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ] - }, - "engines": { - "node": ">=0.4" - }, - "readme": "# xtend\n\n[![browser support][3]][4]\n\nExtend like a boss\n\nxtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence.\n\n## Examples\n\n```js\nvar extend = require(\"xtend\")\n\nvar combination = extend({\n a: \"a\"\n}, {\n b: \"b\"\n})\n// { a: \"a\", b: \"b\" }\n```\n\n\n## MIT Licenced\n\n\n [3]: http://ci.testling.com/Raynos/xtend.png\n [4]: http://ci.testling.com/Raynos/xtend\n", - "readmeFilename": "README.md", - "_id": "xtend@2.1.2", - "_from": "xtend@~2.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js deleted file mode 100644 index 3369d796..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/node_modules/xtend/test.js +++ /dev/null @@ -1,63 +0,0 @@ -var test = require("tape") -var extend = require("./") -var mutableExtend = require("./mutable") - -test("merge", function(assert) { - var a = { a: "foo" } - var b = { b: "bar" } - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("replace", function(assert) { - var a = { a: "foo" } - var b = { a: "bar" } - - assert.deepEqual(extend(a, b), { a: "bar" }) - assert.end() -}) - -test("undefined", function(assert) { - var a = { a: undefined } - var b = { b: "foo" } - - assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) - assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) - assert.end() -}) - -test("handle 0", function(assert) { - var a = { a: "default" } - var b = { a: 0 } - - assert.deepEqual(extend(a, b), { a: 0 }) - assert.deepEqual(extend(b, a), { a: "default" }) - assert.end() -}) - -test("is immutable", function (assert) { - var record = {} - - extend(record, { foo: "bar" }) - assert.equal(record.foo, undefined) - assert.end() -}) - -test("null as argument", function (assert) { - var a = { foo: "bar" } - var b = null - var c = void 0 - - assert.deepEqual(extend(b, a, c), { foo: "bar" }) - assert.end() -}) - -test("mutable", function (assert) { - var a = { foo: "bar" } - - mutableExtend(a, { bar: "baz" }) - - assert.equal(a.bar, "baz") - assert.end() -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json deleted file mode 100644 index 3d0e0c8b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "through2", - "version": "0.4.1", - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "main": "through2.js", - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/rvagg/through2.git" - }, - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "author": { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - "license": "MIT", - "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - }, - "devDependencies": { - "tape": "~2.3.0", - "bl": "~0.6.0", - "stream-spigot": "~3.0.1", - "brtapsauce": "~0.2.2" - }, - "readme": "# through2\n\n<!--\n\nsoon ...\n\n[![Build Status](https://secure.travis-ci.org/rvagg/through2.png)](http://travis-ci.org/rvagg/through2)\n\n[![Build Status](https://saucelabs.com/browser-matrix/through2-sauce.svg)](https://travis-ci.org/rvagg/through2)\n\n-->\n\n[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) \n\n<!--\nnot happy with these, we need to peg to readable-stream@1.0.x so it'll always report out-of-date\n\n[![david-dm](https://david-dm.org/rvagg/through2.png)](https://david-dm.org/rvagg/through2/)\n[![david-dm](https://david-dm.org/rvagg/through2/dev-status.png)](https://david-dm.org/rvagg/through2#info=devDependencies/)\n-->\n\n**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise**\n\nInspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`.\n\n```js\nfs.createReadStream('ex.txt')\n .pipe(through2(function (chunk, enc, callback) {\n\n for (var i = 0; i < chunk.length; i++)\n if (chunk[i] == 97)\n chunk[i] = 122 // swap 'a' for 'z'\n\n this.push(chunk)\n \n callback()\n\n }))\n .pipe(fs.createWriteStream('out.txt'))\n```\n\nOr object streams:\n\n```js\nvar all = []\n\nfs.createReadStream('data.csv')\n .pipe(csv2())\n .pipe(through2.obj(function (chunk, enc, callback) {\n\n var data = {\n name : chunk[0]\n , address : chunk[3]\n , phone : chunk[10]\n }\n \n this.push(data)\n \n callback()\n\n }))\n .on('data', function (data) {\n all.push(data)\n })\n .on('end', function () {\n doSomethingSpecial(all)\n })\n```\n\nNote that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`.\n\n## API\n\n<b><code>through2([ options, ] [ transformFunction ] [, flushFunction ])</code></b>\n\nConsult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`).\n\n### options\n\nThe options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`).\n\nThe `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call:\n\n```js\nfs.createReadStream('/tmp/important.dat')\n .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) {\n\n this.push(new Buffer('wut?'))\n cb()\n\n })\n .pipe(fs.createWriteStream('/tmp/wut.txt'))\n```\n\n### transformFunction\n\nThe `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk.\n\nTo queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on.\n\nIf you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream.\n\n### flushFunction\n\nThe optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress.\n\n<b><code>through2.ctor([ options, ] transformFunction[, flushFunction ])</code></b>\n\nInstead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances.\n\n```js\nvar FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) {\n if (record.temp != null && record.unit = \"F\") {\n record.temp = ( ( record.temp - 32 ) * 5 ) / 9\n record.unit = \"C\"\n }\n this.push(record)\n callback()\n})\n\n// Create instances of FToC like so:\nvar converter = new FToC()\n// Or:\nvar converter = FToC()\n// Or specify/override options when you instantiate, if you prefer:\nvar converter = FToC({objectMode: true})\n```\n\n## License\n\n**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "homepage": "https://github.com/rvagg/through2", - "_id": "through2@0.4.1", - "_from": "through2@~0.4.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js deleted file mode 100644 index 9d137c7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/basic-test.js +++ /dev/null @@ -1,334 +0,0 @@ -const test = require('tape') - , through2 = require('../') - , crypto = require('crypto') - , bl = require('bl') - , spigot = require('stream-spigot') - -test('plain through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('pipeable through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - // bl() acts like a proper streams2 stream and passes as much as it's - // asked for, so we really only get one write with such a small amount - // of data - t.equal(s, 'aaaaaaaaaaaaaaaaaaaaaaaaa', 'got transformed string') - t.end() - })) - - var bufs = bl() - bufs.append(crypto.randomBytes(10)) - bufs.append(crypto.randomBytes(5)) - bufs.append(crypto.randomBytes(10)) - bufs.pipe(th2) -}) - -test('object through', function (t) { - t.plan(3) - - var th2 = through2({ objectMode: true}, function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object through with through2.obj', function (t) { - t.plan(3) - - var th2 = through2.obj(function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('flushing through', function (t) { - var th2 = through2(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }, function (callback) { - this.push(new Buffer([ 101, 110, 100 ])) - callback() - }) - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal(s, 'aaaaaaaaaabbbbbccccccccccend', 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('plain through ctor', function (t) { - var Th2 = through2.ctor(function (chunk, enc, callback) { - if (!this._i) - this._i = 97 // 'a' - else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - var th2 = new Th2() - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - t.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('reuse through ctor', function (t) { - t.plan(4) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - if (!this._i) { - t.ok(1, 'did not contain previous instance data (this._i)') - this._i = 97 // 'a' - } else - this._i++ - var b = new Buffer(chunk.length) - for (var i = 0; i < chunk.length; i++) - b[i] = this._i - this.push(b) - callback() - }) - - var th2 = Th2() - - th2.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaaaaabbbbbcccccccccc', s, 'got transformed string') - - var newInstance = Th2() - newInstance.pipe(bl(function (err, b) { - var s = b.toString('ascii') - t.equal('aaaaaaabbbbccccccc', s, 'got transformed string') - })) - - newInstance.write(crypto.randomBytes(7)) - newInstance.write(crypto.randomBytes(4)) - newInstance.write(crypto.randomBytes(7)) - newInstance.end() - })) - - th2.write(crypto.randomBytes(10)) - th2.write(crypto.randomBytes(5)) - th2.write(crypto.randomBytes(10)) - th2.end() -}) - -test('object through ctor', function (t) { - t.plan(3) - - var Th2 = through2.ctor({ objectMode: true}, function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = new Th2() - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('pipeable object through ctor', function (t) { - t.plan(4) - - var Th2 = through2.ctor({ objectMode: true}, function (record, enc, callback) { - if (record.temp != null && record.unit == 'F') { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = 'C' - } - this.push(record) - callback() - }) - - var th2 = Th2() - - var expect = [-19, -40, 100, 22] - th2.on('data', function (o) { - t.deepEqual(o, { temp: expect.shift(), unit: 'C' }, 'got transformed object') - }) - - spigot({objectMode: true}, [ - {temp: -2.2, unit: 'F'}, - {temp: -40, unit: 'F'}, - {temp: 212, unit: 'F'}, - {temp: 22, unit: 'C'} - ]).pipe(th2) -}) - -test('object through ctor override', function (t) { - t.plan(3) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({objectMode: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object settings available in transform', function (t) { - t.plan(6) - - var Th2 = through2.ctor({objectMode: true, peek: true}, function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2() - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object settings available in transform override', function (t) { - t.plan(6) - - var Th2 = through2.ctor(function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({objectMode: true, peek: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) - -test('object override extends options', function (t) { - t.plan(6) - - var Th2 = through2.ctor({objectMode: true}, function (chunk, enc, callback) { - t.ok(this.options.peek, "reading options from inside _transform") - this.push({ out: chunk.in + 1 }) - callback() - }) - - var th2 = Th2({peek: true}) - - var e = 0 - th2.on('data', function (o) { - t.deepEqual(o, { out: e === 0 ? 102 : e == 1 ? 203 : -99 }, 'got transformed object') - e++ - }) - - th2.write({ in: 101 }) - th2.write({ in: 202 }) - th2.write({ in: -100 }) - th2.end() -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js deleted file mode 100644 index cc10868b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/bench.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -on rvagg@fletcher: - @0.2.3: Ran 36719 iterations in 10000 ms -*/ - -const through2 = require('../') - , bl = require('bl') - , crypto = require('crypto') - , assert = require('assert') - -function run (callback) { - var bufs = Array.apply(null, Array(10)).map(function () { return crypto.randomBytes(32) }) - , stream = through2(function (chunk, env, callback) { - callback(null, chunk.toString('hex')) - }) - - stream.pipe(bl(function (err, data) { - assert(!err) - assert.equal(data.toString(), Buffer.concat(bufs).toString('hex')) - callback() - })) - - bufs.forEach(function (b) { - stream.write(b) - }) - stream.end() -} - -var count = 0 - , start = Date.now() - -;(function exec () { - count++ - run(function () { - if (Date.now() - start < 1000 * 10) { - return setImmediate(exec) - } - console.log('Ran', count, 'iterations in', Date.now() - start, 'ms') - }) -}()) - -console.log('Running for ~10s') \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js deleted file mode 100644 index a6d28625..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/sauce.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node - -const user = process.env.SAUCE_USER - , key = process.env.SAUCE_KEY - , path = require('path') - , brtapsauce = require('brtapsauce') - , testFile = path.join(__dirname, 'basic-test.js') - - , capabilities = [ - { browserName: 'chrome' , platform: 'Windows XP', version: '' } - , { browserName: 'firefox' , platform: 'Windows 8' , version: '' } - , { browserName: 'firefox' , platform: 'Windows XP', version: '4' } - , { browserName: 'internet explorer' , platform: 'Windows 8' , version: '10' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '9' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '8' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '7' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '6' } - , { browserName: 'safari' , platform: 'Windows 7' , version: '5' } - , { browserName: 'safari' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '11' } - , { browserName: 'ipad' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'android' , platform: 'Linux' , version: '4.0', 'device-type': 'tablet' } - ] - -if (!user) - throw new Error('Must set a SAUCE_USER env var') -if (!key) - throw new Error('Must set a SAUCE_KEY env var') - -brtapsauce({ - name : 'Traversty' - , user : user - , key : key - , brsrc : testFile - , capabilities : capabilities - , options : { timeout: 60 * 6 } -}) \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js deleted file mode 100644 index aa9b4877..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/test/test.js +++ /dev/null @@ -1,9 +0,0 @@ -require('./basic-test') - -if (!process.env.SAUCE_KEY || !process.env.SAUCE_USER) - return console.log('SAUCE_KEY and/or SAUCE_USER not set, not running sauce tests') - -if (!/v0\.10/.test(process.version)) - return console.log('Not Node v0.10.x, not running sauce tests') - -require('./sauce.js') \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js deleted file mode 100644 index c1104848..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/node_modules/through2/through2.js +++ /dev/null @@ -1,78 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new Transform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - Transform.call(this, this.options) - } - - inherits(Through2, Transform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new Transform(xtend({ objectMode: true }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/package.json deleted file mode 100644 index 35533273..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/download/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "download", - "version": "0.1.10", - "description": "Download and extract files effortlessly", - "keywords": [ - "url", - "http", - "download", - "extract" - ], - "homepage": "https://github.com/kevva/download", - "bugs": { - "url": "https://github.com/kevva/download/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/download.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "download.js", - "files": [ - "download.js" - ], - "dependencies": { - "decompress": "~0.1.5", - "each-async": "~0.1.1", - "mkdirp": "~0.3.5", - "request": "~2.31.0", - "through2": "~0.4.0" - }, - "devDependencies": { - "mocha": "~1.17.0", - "nock": "~0.27.1", - "rimraf": "~2.2.5" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# download [![Build Status](https://secure.travis-ci.org/kevva/download.png?branch=master)](http://travis-ci.org/kevva/download)\n\nDownload and extract files effortlessly in Node.js.\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/download): `npm install download`\n\n## Examples\n\nIf you're fetching an archive you can set `extract: true` in options and\nit'll extract it for you.\n\n```js\nvar download = require('download');\n\n// download and extract `foo.tar.gz` into `bar/`\ndownload('foo.tar.gz', 'bar', { extract: true });\n\n// download and save `foo.exe` into `bar/foo.exe` with mode `0755`\ndownload('foo.exe', 'bar', { mode: '0755' });\n\n// download and save `foo.zip` into `bar/foobar.zip`\ndownload({ url: 'foo.zip', name: 'foobar.zip' }, 'bar');\n\n// download and save an array of files in `bar/`\nvar files = ['foo.jpg', 'bar.jpg', 'cat.jpg'];\ndownload(files, 'bar');\n\n// download, save and rename an array of files in `bar/`\nvar files = [{\n url: 'foo.jpg',\n name: 'foobar.jpg'\n}, {\n url: 'cat.jpg',\n name: 'dog.jpg'\n}];\ndownload(files, 'bar');\n```\n\n## API\n\n### download(url, dest, opts)\n\nDownload a file or an array of files to a given destination. Returns an EventEmitter \nthat emits the following possible events:\n\n* `response` — Relayed when the underlying `http.ClientRequest` emits the same \nevent. Listeners called with a `http.IncomingMessage` instance.\n* `data` — Relayed when the underlying `http.IncomingMessage` emits the same \nevent. Listeners called with a `Buffer` instance.\n* `error` — Relayed when the underlying `http.ClientRequest` emits the same event \nor when the response status code is not in the 200s. Listeners called with an \n`Error` instance (in the first case) or the response status code.\n* `close` — Relayed when the underlying `stream.Duplex` emits the same event.\n\n## Options\n\nYou can define options accepted by the [request](https://github.com/mikeal/request/) module besides from the options below.\n\n### extract\n\nType: `Boolean` \nDefault: `false`\n\nIf set to `true`, try extracting the file using [decompress](https://github.com/kevva/decompress/).\n\n### mode\n\nType: `String` \nDefault: `undefined`\n\nSet mode on the downloaded files.\n\n### strip\n\nType: `Number` \nDefault: `0`\n\nEquivalent to `--strip-components` for tar.\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "download@0.1.10", - "_from": "download@~0.1.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore deleted file mode 100644 index 2ccbe465..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules/ diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml deleted file mode 100644 index c1ffcb31..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/History.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/History.md deleted file mode 100644 index d1fa5334..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/History.md +++ /dev/null @@ -1,20 +0,0 @@ - -0.0.2 / 2013-05-29 -================== - - * Updated github url - * Fix bug calling isbin with list of paths - * Add tests for sync version - * Added travis CI passing image to readme - * Added node engines and keywords - * Added travis CI config - * Added basic readme - * Added basic test suite and Makefile - * Add async version - * Some refactorings using 'some' function - * Fixed issue with wrong paths if called multiple times - -0.0.1 / 2012-12-06 -================== - - * Initial release diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile deleted file mode 100644 index 1a2444a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -REPORTER ?= dot - -test: - @NODE_ENV=test ./node_modules/mocha/bin/mocha -R $(REPORTER) - -.PHONY: test diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/README.md deleted file mode 100644 index 5224d614..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/README.md +++ /dev/null @@ -1,59 +0,0 @@ -[![Build Status](https://secure.travis-ci.org/mbehrendt/isbin.png?branch=master)](https://travis-ci.org/mbehrendt/isbin) - -# Isbin - -Tiny little helper library to determine if a certain binary is available within $PATH or any additional folder. - -# Installation - -```bash -$ npm install isbin -``` - -# Usage - -```js -var isbin = require('isbin'); - -// Test against $PATH -isbin('mysql', function(exists) { - console.log(exists); // ==> Boolean -}); - -// With additional path to test -isbin('mysql', '/usr/local/bin', function(exists) { - console.log(exists); // ==> Boolean -}); - -// Or multiple ones -isbin('mysql', ['/usr/local/bin', '/home/me/bins'], function(exists) { - console.log(exists); // ==> Boolean -}); -``` - -There are also synchronous versions available - -```js -var exists = isbin('mysql'); -var exists = isbin('mysql', '/usr/local/bin'); -var exists = isbin('mysql', ['/usr/local/bin', '/home/me/bins']); -``` - -# Running the tests - -```bash -$ npm install -$ make test -``` - -# License - -(The MIT License) - -Copyright (c) 2012 Mario Behrendt info@mario-behrendt.de, Stephan Hoyer <ste.hoyer@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/index.js deleted file mode 100644 index bb0a047c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js deleted file mode 100644 index 1b8a5cac..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/lib/index.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Require dependencies - */ - -var fs = require('fs') - , async = require('async'); - -/** - * Check if given binary exists - * - * @param {String} bin Binary to test - * @param {String|Array} additional Additional paths to check - * @param {Function(result)} isbinChecked Callback when check is done async, optional - * @return {Boolean} True if binary was found - */ - -function isbin(bin, additional, isbinChecked) { - // isbin(bin, cb) - if (!isbinChecked) isbinChecked = additional; - - // Read $PATH to get set up bin folders - var paths = process.env.PATH.split(':') || []; - - // isbin(bin, 'path', cb) - if ('string' === typeof additional) { - paths.push(additional); - } - - // isbin(bin, ['path1', 'path2'], cb) - if ('object' === typeof additional && additional.length !== null) { - paths.concat(additional); - } - - // async check - if ('function' === typeof isbinChecked) { - return async.some(paths, function(path, pathChecked) { - fs.exists(path + '/' + bin, pathChecked); - }, isbinChecked); - } - - // sync check - return paths.reverse().some(function(path) { - return fs.existsSync(path + '/' + bin); - }); -}; - -/** - * Expose module - */ - -module.exports = isbin; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules deleted file mode 100644 index a9aae984..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "deps/nodeunit"] - path = deps/nodeunit - url = git://github.com/caolan/nodeunit.git -[submodule "deps/UglifyJS"] - path = deps/UglifyJS - url = https://github.com/mishoo/UglifyJS.git -[submodule "deps/nodelint"] - path = deps/nodelint - url = https://github.com/tav/nodelint.git diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore deleted file mode 100644 index 9bdfc97c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -deps -dist -test -nodelint.cfg \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE deleted file mode 100644 index b7f9d500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile deleted file mode 100644 index bad647c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -PACKAGE = asyncjs -NODEJS = $(if $(shell test -f /usr/bin/nodejs && echo "true"),nodejs,node) -CWD := $(shell pwd) -NODEUNIT = $(CWD)/node_modules/nodeunit/bin/nodeunit -UGLIFY = $(CWD)/node_modules/uglify-js/bin/uglifyjs -NODELINT = $(CWD)/node_modules/nodelint/nodelint - -BUILDDIR = dist - -all: clean test build - -build: $(wildcard lib/*.js) - mkdir -p $(BUILDDIR) - $(UGLIFY) lib/async.js > $(BUILDDIR)/async.min.js - -test: - $(NODEUNIT) test - -clean: - rm -rf $(BUILDDIR) - -lint: - $(NODELINT) --config nodelint.cfg lib/async.js - -.PHONY: test build all diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md deleted file mode 100644 index 1bbbc477..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/README.md +++ /dev/null @@ -1,1021 +0,0 @@ -# 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. - -Async provides around 20 functions that include the usual 'functional' -suspects (map, reduce, filter, forEach…) 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 - - 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'], path.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. - - -## Download - -Releases are available for download from -[GitHub](http://github.com/caolan/async/downloads). -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) - 17.5kb Uncompressed - -__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped - - -## In the Browser - -So far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage: - - <script type="text/javascript" src="async.js"></script> - <script type="text/javascript"> - - async.map(data, asyncProcess, function(err, results){ - alert(results); - }); - - </script> - - -## Documentation - -### Collections - -* [forEach](#forEach) -* [map](#map) -* [filter](#filter) -* [reject](#reject) -* [reduce](#reduce) -* [detect](#detect) -* [sortBy](#sortBy) -* [some](#some) -* [every](#every) -* [concat](#concat) - -### Control Flow - -* [series](#series) -* [parallel](#parallel) -* [whilst](#whilst) -* [until](#until) -* [waterfall](#waterfall) -* [queue](#queue) -* [auto](#auto) -* [iterator](#iterator) -* [apply](#apply) -* [nextTick](#nextTick) - -### Utils - -* [memoize](#memoize) -* [unmemoize](#unmemoize) -* [log](#log) -* [dir](#dir) -* [noConflict](#noConflict) - - -## Collections - -<a name="forEach" /> -### forEach(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 forEach 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 which must be called once it has completed. -* callback(err) - A callback which is called after all the iterator functions - have finished, or an error has occurred. - -__Example__ - - // assuming openFiles is an array of file names and saveFile is a function - // to save the modified contents of that file: - - async.forEach(openFiles, saveFile, function(err){ - // if any of the saves produced an error, err would equal that error - }); - ---------------------------------------- - -<a name="forEachSeries" /> -### forEachSeries(arr, iterator, callback) - -The same as forEach 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" /> -### forEachLimit(arr, limit, iterator, callback) - -The same as forEach only the iterator is applied to batches of items in the -array, in series. The next batch of iterators is only called once the current -one has completed processing. - -__Arguments__ - -* arr - An array to iterate over. -* limit - How many items should be in each batch. -* iterator(item, callback) - A function to apply to each item in the array. - The iterator is passed a callback which must be called once it has completed. -* callback(err) - A callback which is called after all the iterator functions - have finished, or an error has occurred. - -__Example__ - - // Assume documents is an array of JSON objects and requestApi is a - // function that interacts with a rate-limited REST api. - - async.forEachLimit(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 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__ - - 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="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 path.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 which must be called once it has completed. -* callback(results) - A callback which is called after all the iterator - functions have finished. - -__Example__ - - async.filter(['file1','file2','file3'], path.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 filter, 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 its 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 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__ - - 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 which must be called 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__ - - async.detect(['file1','file2','file3'], path.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 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__ - - 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 path.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 which must be called 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__ - - async.some(['file1','file2','file3'], path.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 path.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 which must be called 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__ - - async.every(['file1','file2','file3'], path.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 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__ - - 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 it must call on completion. -* callback(err, results) - An optional callback to run once all the functions - have completed. This function gets an array of all the arguments passed to - the callbacks used in the array. - -__Example__ - - 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 it must call on completion. -* callback(err, results) - An optional callback to run once all the functions - have completed. This function gets an array of all the arguments passed to - the callbacks used in the array. - -__Example__ - - 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="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 which must be called once it has completed with an optional - error as the first argument. -* callback(err) - A callback which is called after the test fails and repeated - execution of fn has stopped. - -__Example__ - - var count = 0; - - async.whilst( - function () { return count < 5; }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } - ); - - ---------------------------------------- - -<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="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 it - must call on completion. -* 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__ - - 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="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. -* 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. -* 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__ - - // 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'); - }); - - ---------------------------------------- - -<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. - -__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 - syntax is easier to understand by looking at the example. -* 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. If all tasks complete - successfully, it will receive an object containing their results. - -__Example__ - - 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: - - 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(results){ - async.series([ - function(callback){ - // once there is some data and the directory exists, - // write the data to a file in the directory - }, - email_link: 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. Its 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, each function is passed a callback it - must call on completion. - -__Example__ - - 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__ - - // 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: - - 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 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__ - - var call_order = []; - async.nextTick(function(){ - call_order.push('two'); - // call_order now equals ['one','two] - }); - call_order.push('one') - - -## 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. - -__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__ - - 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__ - - var hello = function(name, callback){ - setTimeout(function(){ - callback(null, 'hello ' + name); - }, 1000); - }; - - 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__ - - var hello = function(name, callback){ - setTimeout(function(){ - callback(null, {hello: name}); - }, 1000); - }; - - 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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js deleted file mode 100644 index 8e238453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/index.js +++ /dev/null @@ -1,3 +0,0 @@ -// This file is just added for convenience so this repository can be -// directly checked out into a project's deps folder -module.exports = require('./lib/async'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js deleted file mode 100644 index 7cc4f5ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/lib/async.js +++ /dev/null @@ -1,692 +0,0 @@ -/*global setTimeout: false, console: false */ -(function () { - - var async = {}; - - // global on the server, window in the browser - var root = this, - previous_async = root.async; - - if (typeof module !== 'undefined' && module.exports) { - module.exports = async; - } - else { - root.async = async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - //// cross-browser compatiblity functions //// - - var _forEach = 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 = []; - _forEach(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); - } - _forEach(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)) { - async.nextTick = function (fn) { - setTimeout(fn, 0); - }; - } - else { - async.nextTick = process.nextTick; - } - - async.forEach = function (arr, iterator, callback) { - callback = callback || function () {}; - if (!arr.length) { - return callback(); - } - var completed = 0; - _forEach(arr, function (x) { - iterator(x, function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(null); - } - } - }); - }); - }; - - async.forEachSeries = 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.forEachLimit = function (arr, limit, 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.forEach].concat(args)); - }; - }; - var doSeries = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEachSeries].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); - - - // 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.forEachSeries(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.forEach(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.forEach(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 () { - _forEach(listeners.slice(0), function (fn) { - fn(); - }); - }; - - addListener(function () { - if (_keys(results).length === keys.length) { - callback(null, results); - callback = function () {}; - } - }); - - _forEach(keys, function (k) { - var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; - var taskCallback = function (err) { - if (err) { - callback(err); - // stop subsequent errors hitting callback multiple times - callback = function () {}; - } - else { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - 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.length) { - return callback(); - } - var wrapIterator = function (iterator) { - return function (err) { - if (err) { - callback(err); - 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.nextTick(function () { - iterator.apply(null, args); - }); - } - }; - }; - wrapIterator(async.iterator(tasks))(); - }; - - async.parallel = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.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 = {}; - async.forEach(_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.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.forEachSeries(_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.until = function (test, iterator, callback) { - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.queue = function (worker, concurrency) { - var workers = 0; - var q = { - tasks: [], - concurrency: concurrency, - saturated: null, - empty: null, - drain: null, - push: function (data, callback) { - if(data.constructor !== Array) { - data = [data]; - } - _forEach(data, function(task) { - q.tasks.push({ - data: task, - callback: typeof callback === 'function' ? callback : null - }); - if (q.saturated && q.tasks.length == concurrency) { - q.saturated(); - } - async.nextTick(q.process); - }); - }, - 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; - worker(task.data, function () { - workers -= 1; - if (task.callback) { - task.callback.apply(task, arguments); - } - if(q.drain && q.tasks.length + workers == 0) q.drain(); - q.process(); - }); - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - } - }; - return q; - }; - - 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]) { - _forEach(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.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - -}()); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json deleted file mode 100644 index 5c6bf41e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/node_modules/async/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "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": "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" - }, - "readme": "# Async.js\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), it can also be used directly in the\nbrowser.\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, forEach…) 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 async.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n });\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n async.parallel([\n function(){ ... },\n function(){ ... }\n ], callback);\n\n async.series([\n function(){ ... },\n function(){ ... }\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\n## Download\n\nReleases are available for download from\n[GitHub](http://github.com/caolan/async/downloads).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 17.5kb Uncompressed\n\n__Production:__ [async.min.js](https://github.com/caolan/async/raw/master/dist/async.min.js) - 1.7kb Packed and Gzipped\n\n\n## In the Browser\n\nSo far its been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\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* [forEach](#forEach)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [until](#until)\n* [waterfall](#waterfall)\n* [queue](#queue)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n### forEach(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, 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 this callback, the main\ncallback for the forEach 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.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // assuming openFiles is an array of file names and saveFile is a function\n // to save the modified contents of that file:\n\n async.forEach(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n### forEachSeries(arr, iterator, callback)\n\nThe same as forEach only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n### forEachLimit(arr, limit, iterator, callback)\n\nThe same as forEach only the iterator is applied to batches of items in the\narray, in series. The next batch of iterators is only called once the current\none has completed processing.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - How many items should be in each batch.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n // Assume documents is an array of JSON objects and requestApi is a\n // function that interacts with a rate-limited REST api.\n\n async.forEachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n });\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled 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, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n async.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<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n async.filter(['file1','file2','file3'], path.exists, function(results){\n // results now equals an array of the existing files\n });\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The 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. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as filter, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then its 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 which accepts an optional error as its first argument, and the state\n of the reduction as the second. If an error is passed to the callback, the\n reduction is stopped and the main callback is immediately called with the\n error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n async.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<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator 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 array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at 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 the array.\n The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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.\n\n__Example__\n\n async.detect(['file1','file2','file3'], path.exists, function(result){\n // result now equals the first file in the list that exists\n });\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (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 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 the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and a value to use as the sort criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n async.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---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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__Example__\n\n async.some(['file1','file2','file3'], path.exists, function(result){\n // if result is true then at least one of the files exists\n });\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like path.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 The iterator is passed a callback which must be called once it has completed.\n* callback(result) - 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__Example__\n\n async.every(['file1','file2','file3'], path.exists, function(result){\n // if result is true then every file exists\n });\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators 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 the arguments 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 the array.\n The iterator is passed a callback which must be called once it has completed\n with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n async.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<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions 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 the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\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\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.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\n function(err, results){\n // results is now equal to ['one', 'two']\n });\n\n\n // an example using an object instead of an array\n async.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 },\n function(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 an 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\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed a\n callback it must call on completion.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets an array of all the arguments passed to\n the callbacks used in the array.\n\n__Example__\n\n async.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\n function(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\n async.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 },\n function(err, results) {\n // results is now equals to: {one: 1, two: 2}\n });\n\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the 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 to call each time the test passes. The function is\n passed a callback which must be called once it has completed with an optional\n error as the first 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 var count = 0;\n\n async.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=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the 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 callback it\n must call on completion.\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 async.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\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\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\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* 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, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks 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\n__Example__\n\n // create a queue object with concurrency 2\n\n var q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n }, 2);\n\n\n // assign a callback\n q.drain = function() {\n console.log('all items have been processed');\n }\n\n // add some items to the queue\n\n q.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n });\n q.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n });\n\n // add some items to the queue (batch-wise)\n\n q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n });\n\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The\n syntax is easier to understand by looking at the example.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. If all tasks complete\n successfully, it will receive an object containing their results.\n\n__Example__\n\n async.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\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 },\n write_file: ['get_data', 'make_folder', function(callback){\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 // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\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 async.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\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 }\n ],\n function(results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n email_link: function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n });\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. Its also possible to\n'peek' the next iterator by doing 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, each function is passed a callback it\n must call on completion.\n\n__Example__\n\n var iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n ]);\n\n node> var iterator2 = iterator();\n 'one'\n node> var iterator3 = iterator2();\n 'two'\n node> iterator3();\n 'three'\n node> var nextfn = iterator2.next();\n node> 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, a useful\nshorthand 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 // using apply\n\n async.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\n async.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n },\n ]);\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n node> var fn = async.apply(sys.puts, 'one');\n node> fn('two', 'three');\n one\n two\n three\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setTimeout(callback, 0),\nwhich means other higher priority events may precede the execution of the 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 var call_order = [];\n async.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two]\n });\n call_order.push('one')\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\n__Arguments__\n\n* fn - the function you 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 var slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n };\n var fn = async.memoize(slow_fn);\n\n // fn can now be used as if it were slow_fn\n fn('some name', function () {\n // callback\n });\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\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 var hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n };\n\n node> 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 var hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n };\n\n node> 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\nasync object.\n", - "readmeFilename": "README.md", - "homepage": "https://github.com/caolan/async", - "_id": "async@0.1.22", - "_from": "async@0.1.22" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/package.json deleted file mode 100644 index f24b8f9a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "isbin", - "version": "0.0.2", - "description": "Checks for available binaries on unix machines", - "main": "index.js", - "engines": { - "node": ">= 0.8.0" - }, - "keywords": [ - "fs", - "bin", - "binary", - "exists", - "check", - "path" - ], - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/behrendtio/isbin.git" - }, - "author": "", - "license": "MIT", - "dependencies": { - "async": "0.1.22" - }, - "devDependencies": { - "mocha": "1.7.3", - "should": "1.2.1" - }, - "readme": "[![Build Status](https://secure.travis-ci.org/mbehrendt/isbin.png?branch=master)](https://travis-ci.org/mbehrendt/isbin)\n\n# Isbin\n\nTiny little helper library to determine if a certain binary is available within $PATH or any additional folder.\n\n# Installation\n\n```bash\n$ npm install isbin\n```\n\n# Usage\n\n```js\nvar isbin = require('isbin');\n\n// Test against $PATH\nisbin('mysql', function(exists) {\n console.log(exists); // ==> Boolean\n});\n\n// With additional path to test\nisbin('mysql', '/usr/local/bin', function(exists) {\n console.log(exists); // ==> Boolean\n});\n\n// Or multiple ones\nisbin('mysql', ['/usr/local/bin', '/home/me/bins'], function(exists) {\n console.log(exists); // ==> Boolean\n});\n```\n\nThere are also synchronous versions available\n\n```js\nvar exists = isbin('mysql');\nvar exists = isbin('mysql', '/usr/local/bin');\nvar exists = isbin('mysql', ['/usr/local/bin', '/home/me/bins']);\n```\n\n# Running the tests\n\n```bash\n$ npm install\n$ make test\n```\n\n# License\n\n(The MIT License)\n\nCopyright (c) 2012 Mario Behrendt info@mario-behrendt.de, Stephan Hoyer <ste.hoyer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/behrendtio/isbin/issues" - }, - "homepage": "https://github.com/behrendtio/isbin", - "_id": "isbin@0.0.2", - "_from": "isbin@0.0.2" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js deleted file mode 100644 index 068a38a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/isbin.js +++ /dev/null @@ -1,39 +0,0 @@ -var isbin = require('../'); - -describe('isbin', function() { - it('accepts binary, additional path and callback', function(done) { - isbin('ls', '/etc', function(exists) { - exists.should.be.a('boolean'); - done(); - }) - }); - - it('accepts array of paths', function(done) { - isbin('ls', ['/etc', '/home'], function(exists) { - exists.should.be.a('boolean'); - done(); - }); - }); - - it('accepts just binary and callback', function(done) { - isbin('ls', function(exists) { - exists.should.be.a('boolean'); - done(); - }); - }); - - it('accepts binary, additional path and callback', function() { - var exists = isbin('ls', '/etc'); - exists.should.be.a('boolean'); - }); - - it('accepts array of paths', function() { - var exists = isbin('ls', ['/etc', '/home']); - exists.should.be.a('boolean'); - }); - - it('accepts just binary', function() { - var exists = isbin('ls'); - exists.should.be.a('boolean'); - }); -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts deleted file mode 100644 index e5eb9f87..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/isbin/test/mocha.opts +++ /dev/null @@ -1,4 +0,0 @@ ---require should ---bail ---ui bdd ---slow 100 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig deleted file mode 100644 index e036e247..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -; EditorConfig is awesome: http://EditorConfig.org - -; top-most EditorConfig file -root = true - -; base rules -[*] -end_of_line = lf -insert_final_newline = false -indent_style = space -indent_size = 4 -charset = utf-8 -trim_trailing_whitespace = true - -; The default indent on package.json is 2 spaces, better to keep it so we can -; use `npm install --save` and other features that rewrites the package.json -; file automatically -[package.json] -indent_style = space -indent_size = 2 diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc deleted file mode 100644 index bbdb29cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.jshintrc +++ /dev/null @@ -1,69 +0,0 @@ -{ - // Settings - "passfail" : false, // Stop on first error. - "maxerr" : 50, // Maximum error before stopping. - - - // Predefined globals whom JSHint will ignore. - "browser" : true, // Standard browser globals e.g. `window`, `document`. - "couch" : false, - "dojo" : false, - "jquery" : true, - "mootools" : false, - "node" : false, - "prototypejs" : false, - "rhino" : false, - "wsh" : false, - - // Custom globals. - "predef" : [ - "define", - "require" - ], - - - // Development. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "devel" : false, // Allow developments statements e.g. `console.log();`. - - - // EcmaScript 5. - "es5" : false, // Allow EcmaScript 5 syntax. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - "strict" : false, // Require `use strict` pragma in every file. - - - // The Good Parts. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "bitwise" : false, // Prohibit bitwise operators (&, |, ^, etc.). - "boss" : true, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "curly" : false, // Require {} for every new block or scope. - "eqeqeq" : true, // Require triple equals i.e. `===`. - "eqnull" : true, // Tolerate use of `== null`. - "evil" : false, // Tolerate use of `eval`. - "expr" : false, // Tolerate `ExpressionStatement` as Programs. - "forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : false, // Prohibit variable use before definition. - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "loopfunc" : false, // Allow functions to be defined within loops. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "regexdash" : true, // Tolerate unescaped last dash i.e. `[-...]`. - "regexp" : false, // Prohibit `.` and `[^...]` in regular expressions. - "scripturl" : false, // Tolerate script-targeted URLs. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "undef" : false, // Require all non-global variables be declared before they are used. - - - // Personal styling prefrences. - "newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`. - "noempty" : true, // Prohipit use of empty blocks. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "nonew" : true, // Prohibit use of constructors for side-effects. - "onevar" : false, // Allow only one `var` statement per function. - "plusplus" : false, // Prohibit use of `++` & `--`. - "sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "trailing" : true, // Prohibit trailing whitespaces. - "white" : false // Check against strict whitespace and indentation rules. -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore deleted file mode 100644 index 1341acd9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.npmignore +++ /dev/null @@ -1,30 +0,0 @@ -# dumb files -# ========== - -.tmp* -.project -.settings/ -.livereload -.DS_Store? -ehthumbs.db -Icon? -Thumbs.db - - -# stuff not needed by node -# ======================== - -node_modules/ -tests/ -_build/ -doc_html/ -coverage/ - -# we keep the doc/ folder in case npm decides to display it in the future -# also good in case user is using an old version or working offline - -# we also keep the src/ folder in case the user still needs the AMD modules -# after build (see issue #102) - -bower.json -build.js diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml deleted file mode 100644 index 36de1532..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ - language: node_js - node_js: - - "0.8" - script: "npm test --coverage" - notifications: - irc: - channels: - - "irc.freenode.org#moutjs" - on_success: always - on_failure: always - use_notice: true - skip_join: true - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md deleted file mode 100644 index 0f5eac12..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CHANGELOG.md +++ /dev/null @@ -1,93 +0,0 @@ -mout changelog -============== - -v0.6.0 (2013/05/22) -------------------- - - - add optional delimeter to `string/unCamelCase` - - allow custom char on `number/pad` - - allow underscore characters in `string/removeNonWord` - - accept `level` on `array/flatten` instead of a flag - - convert underscores to camelCase in `string/camelCase` - - remove `create()` from number/currencyFormat - - add `date/dayOfTheYear` - - add `date/diff` - - add `date/isSame` - - add `date/startOf` - - add `date/strftime` - - add `date/timezoneAbbr` - - add `date/timezoneOffset` - - add `date/totalDaysInYear` - - add `date/weekOfTheYear` - - add `function/timeout` - - add `object/bindAll` - - add `object/functions` - - add `time/convert` - - -v0.5.0 (2013/04/04) -------------------- - - - add `array/collect` - - add `callback` parameter to `object/equals` and `object/deepEquals` to allow - custom compare operations. - - normalize behavior in `array/*` methods to treat `null` values as empty - arrays when reading from array - - add `date/parseIso` - - add `date/isLeapYear` - - add `date/totalDaysInMonth` - - add `object/deepMatches` - - change `function/makeIterator_` to use `deepMatches` (affects nearly all - iteration methods) - - add `thisObj` parameter to `array/min` and `array/max` - - -v0.4.0 (2013/02/26) -------------------- - - - add `object/equals` - - add `object/deepEquals` - - add `object/matches`. - - add `lang/is` and `lang/isnt`. - - add `lang/isInteger`. - - add `array/findIndex`. - - add shorthand syntax to `array/*`, `object/*` and `collection/*` methods. - - improve `number/sign` behavior when value is NaN or +0 or -0. - - improve `lang/isNaN` to actually check if value *is not a number* without - coercing value; so `[]`, `""`, `null` and `"12"` are considered NaN (#39). - - improve `string/contains` to match ES6 behavior (add fromIndex argument). - - -v0.3.0 (2013/02/01) -------------------- - - - add `lang/clone`. - - add `lang/toString`. - - add `string/replace`. - - add `string/WHITE_SPACES` - - rename `function/curry` to `function/partial`. - - allow custom chars in `string/trim`, `ltrim`, and `rtrim`. - - convert values to strings in the `string/*` functions. - - -v0.2.0 (2013/01/13) -------------------- - - - fix bug in `math/ceil` for negative radixes. - - change `object/deepFillIn` and `object/deepMixIn` to recurse only if both - existing and new values are plain objects. Will not recurse into arrays - or objects not created by the Object constructor. - - add `lang/isPlainObject` to check if a file is a valid object and is created - by the Object constructor - - change `lang/clone` behavior when dealing with custom types (avoid cloning - it by default) and add second argument to allow custom behavior if needed. - - rename `lang/clone` to `lang/deepClone`. - - add VERSION property to index.js - - simplify `math/floor`, `math/round`, `math/ceil` and `math/countSteps`. - - -v0.1.0 (2013/01/09) -------------------- - -- Rename project from "amd-utils" to "mout" - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md deleted file mode 100644 index 65d9add1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/CONTRIBUTING.md +++ /dev/null @@ -1,61 +0,0 @@ -# Contributing - -Fork the repo at https://github.com/mout/mout - - > "Write clearly, don't be too clever" - The Elements of Programming Style - -Avoid unnamed functions and follow the other modules structure. By only using named functions it will be easier to extract the code from the AMD module if needed and it will also give better error messages, JavaScript minifiers like [Google Closure Compiler](http://code.google.com/closure/compiler/) and [UglifyJS](https://github.com/mishoo/UglifyJS) will make sure code is as small/optimized as possible. - - > "Make it clear before you make it faster." - The Elements of Programming Style - -Be sure to always create tests for each proposed module. Features will only be merged if they contain proper tests and documentation. - - > "Good code is its own best documentation." - Steve McConnell - -We should do a code review before merging to make sure names makes sense and implementation is as good as possible. - -Try to split your pull requests into logical groups, the smaller the easier to be reviewed/merged. - - - -## Tests & Code Coverage ## - -Tests can be found inside the `tests` folder, to execute them in the browser open the `tests/runner.html`. The same tests also work on node.js by running `npm test`. - -We should have tests for all methods and ensure we have a high code coverage through our continuous integration server ([travis](https://travis-ci.org/mout/mout)). When you ask for a pull request Travis will automatically run the tests on node.js and check the code coverage as well. - -We run `node build pkg` automatically before any `npm test`, so specs and packages should always be in sync. (will avoid human mistakes) - -To check code coverage run `npm test --coverage`, it will generate the reports inside the `coverage` folder and also log the results. Please note that node.js doesn't execute all code branches since we have some conditionals that are only met on old JavaScript engines (eg. IE 7-8), so we will never have 100% code coverage (but should be close to it). - - - -## Build Script ## - -The [build script](https://github.com/mout/mout/wiki/Build-Script) can be extremely helpful and can avoid human mistakes, use it. - - - -## Admins / Pull Requests ## - -Even if you are an admin (have commit rights) please do pull requests when adding new features or changing current behavior, that way we can review the work and discuss. Feel free to push changes that doesn't affect behavior without asking for a pull request (readme, changelog, build script, typos, refactoring, ...). - - - -## Large changes ## - -If you are proposing some major change, please create an issue to discuss it first. (maybe it's outside the scope of the project) - - - -## Questions / IRC / Wiki / Issue Tracker ## - -When in doubt ask someone on IRC to help you ([#moutjs on irc.freenode.net](http://webchat.freenode.net/?channels=moutjs)) or create a [new issue](http://github.com/mout/mout/issues). - -The [project wiki](https://github.com/mout/mout/wiki) can also be a good resource of information. - - ---- - -Check the [contributors list at github](https://github.com/mout/mout/contributors). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md deleted file mode 100644 index e9ccc2be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) -## Copyright (c) 2012, 2013 moutjs team and contributors (http://moutjs.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/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/README.md deleted file mode 100644 index 872943bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/README.md +++ /dev/null @@ -1,63 +0,0 @@ -![mout](http://moutjs.com/logo.png "Modular JavaScript Utilties") - -http://moutjs.com/ - -[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout) - -All code is library agnostic and consist mostly of helper methods that aren't -directly related with the DOM, the purpose of this library isn't to replace -Dojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common -problems that aren't solved by most of them. Consider it as a crossbrowser -JavaScript standard library. - - - -## Main goals ## - - - increase code reuse; - - be clear (code should be clean/readable); - - be easy to debug; - - be easy to maintain; - - follow best practices; - - follow standards when possible; - - **don't convert JavaScript into another language!** - - be compatible with other frameworks; - - be modular; - - have unit tests for all modules; - - work on multiple environments (IE7+, modern browsers, node.js); - - - -## What shouldn't be here ## - - - UI components; - - CSS selector engine; - - Event system - pub/sub; - - Template engine; - - Anything that isn't generic enough to be on a standard library; - - Anything that could be a separate library and/or isn't a modular utility... - - - -## API Documentation ## - -Online documentation can be found at http://moutjs.com/ or inside the -`doc` folder. - - - -## FAQ / Wiki / IRC ## - -For more info about project structure, design decisions, tips, how to -contribute, build system, etc, please check the [project -wiki](https://github.com/mout/mout/wiki). - -We also have an IRC channel [#moutjs on -irc.freenode.net](http://webchat.freenode.net/?channels=moutjs) - - - -## License ## - -Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php). - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array.js deleted file mode 100644 index 89d388ba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array.js +++ /dev/null @@ -1,46 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js deleted file mode 100644 index bf74037e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ - - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - module.exports = append; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js deleted file mode 100644 index 58637493..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/collect.js +++ /dev/null @@ -1,27 +0,0 @@ -var append = require('./append'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - module.exports = collect; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js deleted file mode 100644 index d66e6212..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - module.exports = combine; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js deleted file mode 100644 index 74c176ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -var filter = require('./filter'); - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - module.exports = compact; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js deleted file mode 100644 index 92bb6ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js deleted file mode 100644 index d0570510..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/difference.js +++ /dev/null @@ -1,22 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var some = require('./some'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = difference; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js deleted file mode 100644 index ac598832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - module.exports = every; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js deleted file mode 100644 index ebeb58dc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/filter.js +++ /dev/null @@ -1,27 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js deleted file mode 100644 index b4a73131..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -var findIndex = require('./findIndex'); - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js deleted file mode 100644 index 53f22a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - module.exports = findIndex; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js deleted file mode 100644 index aa9757ab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/flatten.js +++ /dev/null @@ -1,43 +0,0 @@ -var isArray = require('../lang/isArray'); -var append = require('./append'); - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - module.exports = flatten; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js deleted file mode 100644 index 268e506f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - module.exports = forEach; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js deleted file mode 100644 index 6a9ac832..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - module.exports = indexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js deleted file mode 100644 index f1f95b75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/insert.js +++ /dev/null @@ -1,15 +0,0 @@ -var difference = require('./difference'); -var toArray = require('../lang/toArray'); - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - module.exports = insert; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js deleted file mode 100644 index e6170062..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/intersection.js +++ /dev/null @@ -1,23 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var every = require('./every'); -var contains = require('./contains'); - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - module.exports = intersection; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js deleted file mode 100644 index c01aab1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - module.exports = invoke; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js deleted file mode 100644 index 71d8bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -var filter = require('./filter'); - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - module.exports = join; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js deleted file mode 100644 index ee44a25b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - module.exports = lastIndexOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js deleted file mode 100644 index 54064f6b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js deleted file mode 100644 index 183b10ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/max.js +++ /dev/null @@ -1,35 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = max; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js deleted file mode 100644 index dd00b6cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/min.js +++ /dev/null @@ -1,35 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - module.exports = min; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js deleted file mode 100644 index 6a54846c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pick.js +++ /dev/null @@ -1,14 +0,0 @@ -var randInt = require('../random/randInt'); - - /** - * Remove a random item from the Array and return it - */ - function pick(arr){ - if (arr == null || !arr.length) return; - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js deleted file mode 100644 index fef4043b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js deleted file mode 100644 index 31d3c770..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - module.exports = range; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js deleted file mode 100644 index 1a350c6e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -var forEach = require('./forEach'); - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - module.exports = reduce; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js deleted file mode 100644 index e36fd4aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ - - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - module.exports = reduceRight; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js deleted file mode 100644 index 685f2918..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/reject.js +++ /dev/null @@ -1,26 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - module.exports = reject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js deleted file mode 100644 index aa6517db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - module.exports = remove; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js deleted file mode 100644 index d5f7f3b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -var indexOf = require('./indexOf'); - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - module.exports = removeAll; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js deleted file mode 100644 index 97805ec8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/shuffle.js +++ /dev/null @@ -1,29 +0,0 @@ -var randInt = require('../random/randInt'); -var forEach = require('./forEach'); - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - module.exports = shuffle; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js deleted file mode 100644 index 8d17772b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -var makeIterator = require('../function/makeIterator_'); - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - module.exports = some; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js deleted file mode 100644 index 7807339b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ - - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - module.exports = mergeSort; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js deleted file mode 100644 index 4f3ba50c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ - - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - module.exports = split; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js deleted file mode 100644 index ce4c55dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -var isFunction = require('../lang/isFunction'); - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - module.exports = toLookup; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js deleted file mode 100644 index f1334a91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/union.js +++ /dev/null @@ -1,19 +0,0 @@ -var unique = require('./unique'); -var append = require('./append'); - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - module.exports = union; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js deleted file mode 100644 index 0192b2df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/unique.js +++ /dev/null @@ -1,17 +0,0 @@ -var indexOf = require('./indexOf'); -var filter = require('./filter'); - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - module.exports = unique; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js deleted file mode 100644 index c125a996..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/xor.js +++ /dev/null @@ -1,26 +0,0 @@ -var unique = require('./unique'); -var filter = require('./filter'); -var contains = require('./contains'); - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - module.exports = xor; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js deleted file mode 100644 index 931eb818..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/array/zip.js +++ /dev/null @@ -1,29 +0,0 @@ -var max = require('./max'); -var pluck = require('./pluck'); -var map = require('./map'); - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1, - item; - while (++i < len) { - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - module.exports = zip; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection.js deleted file mode 100644 index d5cf6cad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection.js +++ /dev/null @@ -1,22 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js deleted file mode 100644 index a73f994b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/contains.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrContains = require('../array/contains'); -var objContains = require('../object/contains'); - - /** - */ - module.exports = make(arrContains, objContains); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js deleted file mode 100644 index 300e03c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/every.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrEvery = require('../array/every'); -var objEvery = require('../object/every'); - - /** - */ - module.exports = make(arrEvery, objEvery); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js deleted file mode 100644 index 38757005..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/filter.js +++ /dev/null @@ -1,23 +0,0 @@ -var forEach = require('./forEach'); -var makeIterator = require('../function/makeIterator_'); - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - module.exports = filter; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js deleted file mode 100644 index 14317e64..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/find.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrFind = require('../array/find'); -var objFind = require('../object/find'); - - /** - * Find value that returns true on iterator check. - */ - module.exports = make(arrFind, objFind); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js deleted file mode 100644 index 6e28dcb1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/forEach.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrForEach = require('../array/forEach'); -var objForEach = require('../object/forOwn'); - - /** - */ - module.exports = make(arrForEach, objForEach); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js deleted file mode 100644 index 029d27bf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ - - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - module.exports = makeCollectionMethod; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js deleted file mode 100644 index fc157f53..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/map.js +++ /dev/null @@ -1,23 +0,0 @@ -var isObject = require('../lang/isObject'); -var values = require('../object/values'); -var arrMap = require('../array/map'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - module.exports = map; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js deleted file mode 100644 index a8490e7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/max.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMax = require('../array/max'); -var objMax = require('../object/max'); - - /** - * Get maximum value inside collection - */ - module.exports = make(arrMax, objMax); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js deleted file mode 100644 index 51d9f148..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/min.js +++ /dev/null @@ -1,10 +0,0 @@ -var make = require('./make_'); -var arrMin = require('../array/min'); -var objMin = require('../object/min'); - - /** - * Get minimum value inside collection. - */ - module.exports = make(arrMin, objMin); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js deleted file mode 100644 index 9b283776..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -var map = require('./map'); - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js deleted file mode 100644 index 4c075735..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reduce.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrReduce = require('../array/reduce'); -var objReduce = require('../object/reduce'); - - /** - */ - module.exports = make(arrReduce, objReduce); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js deleted file mode 100644 index 2a92e3b3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js deleted file mode 100644 index 244e33e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/size.js +++ /dev/null @@ -1,19 +0,0 @@ -var isArray = require('../lang/isArray'); -var objSize = require('../object/size'); - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js deleted file mode 100644 index 48fd252e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/collection/some.js +++ /dev/null @@ -1,9 +0,0 @@ -var make = require('./make_'); -var arrSome = require('../array/some'); -var objSome = require('../object/some'); - - /** - */ - module.exports = make(arrSome, objSome); - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date.js deleted file mode 100644 index 1cde1a95..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js deleted file mode 100644 index 85905c5a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - module.exports = dayOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js deleted file mode 100644 index 1131cdcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/diff.js +++ /dev/null @@ -1,130 +0,0 @@ -var totalDaysInMonth = require('./totalDaysInMonth'); -var totalDaysInYear = require('./totalDaysInYear'); -var convert = require('../time/convert'); - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - module.exports = diff; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js deleted file mode 100644 index f9526ce4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ - - // en-US (English, United States) - module.exports = { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js deleted file mode 100644 index 71ebadb5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ - - // pt-BR (Brazillian Portuguese) - module.exports = { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js deleted file mode 100644 index 723fc103..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/i18n_.js +++ /dev/null @@ -1,14 +0,0 @@ -var mixIn = require('../object/mixIn'); -var enUS = require('./i18n/en-US'); - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - module.exports = activeLocale; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js deleted file mode 100644 index 4212870b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -var isDate = require('../lang/isDate'); - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - module.exports = isLeapYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js deleted file mode 100644 index 4097d29b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -var startOf = require('./startOf'); - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - module.exports = isSame; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js deleted file mode 100644 index 8ea2b171..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -var some = require('../array/some'); - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - var match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else if ((match = TIME_ZONE.exec(str))) { - var match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - module.exports = parseISO8601; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js deleted file mode 100644 index 072bc0ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -var clone = require('../lang/clone'); - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - module.exports = startOf; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js deleted file mode 100644 index f033d10f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/strftime.js +++ /dev/null @@ -1,118 +0,0 @@ -var pad = require('../number/pad'); -var i18n = require('./i18n_'); -var dayOfTheYear = require('./dayOfTheYear'); -var timezoneOffset = require('./timezoneOffset'); -var timezoneAbbr = require('./timezoneAbbr'); -var weekOfTheYear = require('./weekOfTheYear'); - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - module.exports = strftime; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js deleted file mode 100644 index b1006875..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -var timezoneOffset = require('./timezoneOffset'); - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - module.exports = timezoneAbbr; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js deleted file mode 100644 index 9492dceb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -var pad = require('../number/pad'); - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - module.exports = timezoneOffset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js deleted file mode 100644 index 8aafeb84..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInMonth.js +++ /dev/null @@ -1,25 +0,0 @@ -var isDate = require('../lang/isDate'); -var isLeapYear = require('./isLeapYear'); - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - module.exports = totalDaysInMonth; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js deleted file mode 100644 index b4b7e9b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -var isLeapYear = require('./isLeapYear'); - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - module.exports = totalDaysInYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js deleted file mode 100644 index dd51b7f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -var dayOfTheYear = require('./dayOfTheYear'); - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - module.exports = weekOfTheYear; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md deleted file mode 100644 index 1f390fbc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/array.md +++ /dev/null @@ -1,773 +0,0 @@ -# array # - -Array utilities. - - - - -## append(arr1, arr2):Array - -Appends an array to the end of the other. -The first array will be modified and will contain the appended items. - -See: [`union()`](#union), [`combine()`](#combine) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -append(foo, bar); // ['a', 'b', 'b', 'd'] -``` - - - -## collect(arr, callback, [thisObj]):Array - -Maps the items in `arr` and concatenates the resulting arrays. - -See: [`map()`](#map) - -```js -collect([1, 2, 3], function(val) { - return [val, val % 2]; -}); // [1, 1, 2, 0, 3, 1]; - -collect(['a', 'bb', ''], function(val) { - return val.split(''); -}); // ['a', 'b', 'b'] -``` - -It also supports a shorthand syntax: - -```js -var items = [{ a: [1] }, { b: 'foo' }, { a: [2, 3] }]; -collect(items, 'a'); // [1, 2, 3]; -``` - - - -## combine(arr1, arr2):Array - -Combines an array with all the items of another. -The first array will be modified and will contain the combined items. -Does not allow duplicates and is case and type sensitive. - -See: [`union()`](#union), [`append()`](#append) - -```js -var foo = ['a', 'b'], - bar = ['b', 'd']; - -combine(foo, bar); // ['a', 'b', 'd'] -``` - - - -## compact(arr):Array - -Returns a new Array without any `null` or `undefined` values. Note that it will -keep empty strings and other falsy values (simillar to Ruby Array#compact). - -```js -var arr = [0, 1, null, false, '', 'foo', undefined, 'bar']; -compact(arr); // [0, 1, false, '', 'foo', 'bar']; -``` - - - -## contains(arr, value):Boolean - -Checks if Array contains value. Alias to `indexOf(arr, val) !== -1`. - -```js -var arr = [1, 2, 3]; -contains(arr, 2); // true -contains(arr, 'foo'); // false -``` - - - -## difference(...arrs):Array - -Return a new Array with elements that aren't present in the other Arrays -besides the first one. - -Works like [Python set#difference](http://docs.python.org/library/stdtypes.html#set.difference). - -It will remove duplicates. - -See: [`xor()`](#xor), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -difference(a, b); // ['a', 'b'] -``` - - - -## every(arr, callback, [thisObj]):Array - -Crossbrowser `Array.every()`. - -Tests whether all elements in the array pass the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -every(items, isString); // false -every(items, isFunction); // false -every(items, function(val, key, arr){ - return val != null; -}); // true -``` - -more info at [MDN Array#every](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:true}, {id:8, active:true}]; -// all items with `id === 8` -every(items, {id:8}); // false -// `active` is truthy on all items -every(items, 'active'); // true -``` - - - -## filter(arr, callback, [thisObj]):Array - -Crossbrowser `Array.filter()`. - -Creates a new array with all elements that pass the callback test. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var nums = [1, 2, 3, 4, 5, 6]; -var oddNumbers = filter(nums, function(val, key, arr){ - return (val % 2) !== 0; -}); -// > [1, 3, 5] -``` - -more info at [MDN Array#filter](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter) - -Filter also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// filter item that matches all properties/values pairs -filter(arr, {name:'john', beard:false}); -// > [{name:'john', surnname:'connor', beard:false}] -// items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'doe', beard:true}] -``` - -See [`reject()`](#reject) - - - -## find(arr, callback, [thisObj]):void - -Loops through all the items in the Array and returns the first one that passes -a truth test (callback). - -```js -var arr = [123, {a:'b'}, 'foo', 'bar']; -find(arr, isString); // "foo" -find(arr, isNumber); // 123 -find(arr, isObject); // {a:'b'} -``` - -Find also supports shorthand notation: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true} -]; -// first item that matches all properties/values pairs -find(arr, {name:'john'}); // {name:'john', surnname:'connor', beard:false} -// first item where 'beard' is a truthy value -find(arr, 'beard'); // {name:'john', surnname:'doe', beard:true} -``` - -See: [findIndex()](#findIndex) - - - -## findIndex(arr, iterator, [thisObj]):Number - -Loops through the items in the Array and returns the index of the first one -that passes a truth test (callback). - -Returns `-1` if no item was found that passes the truth test. - -```js -var arr = [1, { a: 1 }, 'foo', 'bar']; -findIndex(arr, isString); // 2 -findIndex(arr, isNumber); // 0 -findIndex(arr, isObject); // 1 -findIndex(arr, isRegExp); // -1 -``` - -`findIndex` also supports shorthand notation: - -```js -var pets = [ - { pet: 'dog', name: 'Sam' }, - { pet: 'dog', name: 'Maggie' } -]; - -findIndex(pets, { pet: 'dog' }); // 0 -findIndex(pets, { name: 'Maggie' }); // 1 -``` - -See: [find()](#find) - - - -## flatten(arr, [level]):Array - -Recursively flattens an array. A new array containing all the elements is -returned. If `level` is specified, it will only flatten up to that level. - -### Example - -```js -flatten([1, [2], [3, [4, 5]]]); -// > [1, 2, 3, 4, 5] -flatten([1, [2], [3, [4, 5]]], 1); -// > [1, 2, 3, [4, 5]] -``` - - - -## forEach(arr, callback, [thisObj]):void - -Crossbrowser `Array.forEach()`. - -It allows exiting the iteration early by returning `false` on the callback. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = ['foo', 'bar', 'lorem', 'ipsum']; -forEach(items, function(val, key, arr){ - console.log(key +' : '+ val); - if (val === 'lorem') { - // stop iteration (break) - return false; - } -}); -``` - -more info at [MDN Array#forEach](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach) - - - -## indexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.indexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#indexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf) - - - - -## insert(arr, ...items):Number - -Push items into array only if they aren't contained by it. Returns the new -`length` of the array. - -See: [`remove()`](#remove), [`removeAll()`](#removeAll), -[`contains()`](#contains) - -```js -var arr = ['a', 'b']; -insert(arr, 'a'); // 2 : ['a', 'b'] -insert(arr, 'c'); // 3 : ['a', 'b', 'c'] -insert(arr, 1, 2, 'b'); // 5 : ['a', 'b', 'c', 1, 2] -``` - - - -## intersection(...arrs):Array - -Return a new Array with elements common to all Arrays. - -Similar to Python set#intersection and underscore.js intersection. - -It will remove duplicates. - -See: [`difference()`](#difference), [`xor()`](#xor) - -```js -var a = ['a', 'b', 1], - b = ['c', 1], - c = [1, 2, 3]; -intersection(a, b, c); // [1] -``` - - - -## invoke(arr, methodName[, ...args]):Array - -Call `methodName` on each item of the array passing custom arguments if needed. - -```js -invoke([[3,2,1], [9,5,2]], 'sort'); // [[1,2,3], [2,5,9]] -``` - - - -## join(arr, [separator]):String - -Joins the strings in `arr`, inserting `separator` between each value. - -This ignores null values and empty strings that are in the array. `separator` -defaults to an empty string. This will convert all non-string objects in the -array to a string. - -### Example - -```js -join(['a', 'b', 'c']); // 'abc' -join(['foo', 'bar'], ', '); // 'foo, bar' -join([null, 'foo', '', 'bar', undefined], ':'); // 'foo:bar' -``` - - - -## lastIndexOf(arr, item, [fromIndex]):Number - -Crossbrowser `Array.lastIndexOf()`. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#lastIndexOf](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf) - - - -## map(arr, callback, [thisObj]]):Array - -Crossbrowser `Array.map()`. - -Creates a new array with the results of calling a provided function on every -element in this array. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -See: [`collect()`](#collect) - -```js -var nums = [1,2,3,4]; -var double = map(nums, function(val, key, arr){ - return val * 2; -}); -// > [2, 4, 6, 8] -``` - -more info at [MDN Array#map](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map) - -It also supports a shorthand notation which can be used to achieve same result -as [`array/pluck`](#pluck): - -```js -var src = ['lorem', 'ipsum', 'foo', 'amet']; -// grab the "length" property of all items -var lengths = map(src, 'length'); // [5, 5, 3, 4] -``` - - - -## max(arr, [iterator], [thisObj]):* - -Returns maximum value inside array or use a custom iterator to define how items -should be compared. - -See: [`min()`](#min) - -```js -max([10, 2, 7]); // 10 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - -It also supports a shorthand notation: - -```js -max(['foo', 'lorem', 'amet'], 'length'); // "lorem" -``` - - - -## min(arr, [iterator], [thisObj]):* - -Returns minimum value inside array or use a custom iterator to define how items -should be compared. - -See: [`max()`](#max) - -```js -min([10, 2, 7]); // 2 -min(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'foo' -``` - -It also supports a shorthand notation: - -```js -min(['foo', 'lorem', 'amet'], 'length'); // "foo" -``` - - - -## pick(arr):* - -Gets a random item and remove it from the array. - -### Example: - - var arr = [1, 2, 3, 4, 5, 6]; - var item_1 = pick(arr); // 4 - var item_2 = pick(arr); // 1 - console.log(arr); // [2, 3, 5, 6] - - - -## pluck(arr, propName):Array - -Extract a list of property values. - -See: [`function/prop()`](function.html#prop) - -```js -var users = [{name : 'John', age: 21}, {name: 'Jane', age : 27}]; -var names = pluck(users, 'name'); // ["John", "Jane"] -var ages = pluck(users, 'age'); // [21, 27] -``` - - - -## range([start], stop[, step]):Array - -Creates a new Array with all the values inside the range. Works similarly to -Python#range or PHP#range. - -### Arguments - - 1. `[start]` (Number) : Range start. Default is `0`. - 2. `stop` (Number) : Range limit. - 3. `[step]` (Number) : Step size. Default is `1`. - -### Example - -```js -range(5); // [0, 1, 2, 3, 4, 5] -range(0, 5); // [0, 1, 2, 3, 4, 5] -range(0, 5, 2); // [0, 2, 4] -range(20, 40, 5); // [20, 25, 30, 35, 40] -``` - - - -## reduce(arr, fn):* - -Crossbrowser `Array.reduce()`. - -Apply a function against an accumulator and each value of the array (from -left-to-right) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduce](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce) - - - -## reduceRight(arr, fn):* - -Crossbrowser `Array.reduceRight()`. - -Apply a function simultaneously against two values of the array (from -right-to-left) as to reduce it to a single value. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -more info at [MDN Array#reduceRight](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduceRight) - - - -## reject(arr, fn, thisObj):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var numbers = [1, 2, 3, 4, 5, 6]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4, 6] -``` - -It also supports a shorthand syntax: - -```js -var users = [ - {name:'john', surname:'connor', beard:false}, - {name:'john', surname:'doe', beard:true}, - {name:'jane', surname:'doe', beard:false} -]; -// reject items that matches all properties/values pairs -reject(arr, {name:'john'}); -// > [{name:'jane', surnname:'doe', beard:false}] -// reject items where 'beard' is a truthy value -filter(arr, 'beard'); -// > [{name:'john', surnname:'connor', beard:false}, -// {name:'jane', surname:'doe', beard:false}] -``` - - - -## remove(arr, item):void - -Remove a single item from the array. - -IMPORTANT: it won't remove duplicates, just a single item. - -### Example - -```js -var foo = [1, 2, 3, 4]; -remove(foo, 2); -console.log(foo); // [1, 3, 4] -``` - - - -## removeAll(arr, item):void - -Remove all instances of an item from the array. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2]; -removeAll(foo, 2); -console.log(foo); // [1, 3, 4]; -``` - - - -## shuffle(arr):Array - -Returns a new Array with items randomly sorted (shuffled). Similar to Ruby Array#shuffle. - -### Example - -```js -var arr = ['a', 'b', 'c', 'd', 'e']; -shuffle(arr); // ['b', 'd', 'e', 'c', 'a'] -``` - - - -## some(arr, callback, [thisObj]):Array - -Crossbrowser `Array.some()`. - -Tests whether some element in the array passes the test implemented by the provided function. - -It differs from ES5 since it will also loop over sparse items in the array to -normalize the behavior across browsers (avoid inconsistencies). - -```js -var items = [1, 'foo', 'bar']; -some(items, isString); // true -some(items, isFunction); // false -``` - -more info at [MDN Array#some](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some) - -It also supports a shorthand syntax: - -```js -var items = [{id:1, active:true}, {id:3, active:false}, {id:8, active:false}]; -// at least one item with `id === 8` -some(items, {id:8}); // true -// `active` is truthy on at least one item -some(items, 'active'); // true -``` - -see also: [`object/matches`](object.html#matches) - - - -## sort(arr, [compareFn]):Array - -Returns a sorted Array using the [Merge Sort](http://en.wikipedia.org/wiki/Merge_sort) algorithm (stable sort). - -The `Array.prototype.sort` browser implementations differ since the sorting algorithm isn't described in the ES spec - [in V8 it isn't stable](http://code.google.com/p/v8/issues/detail?id=90) and [on Firefox it is stable](https://bugzilla.mozilla.org/show_bug.cgi?id=224128) - so this function doesn't use the browser native implementation and is recommended in cases where a stable sort is required (items should preserve same order if already sorted). - -**Important:** It does logical comparisson by default (greater/less than) and -not a string comparisson like the native `Array#sort`. - -### compareFn - -If `compareFn` is supplied elements are sorted based on the value returned by -the `compareFn`. - - - If `compareFn(a, b)` is less than `0`, sort `a` to a lower index than `b`. - - If `compareFn(a, b)` returns `0`, leave `a` and `b` unchanged with respect - to each other, but sorted with respect to all different elements. - - If `compareFn(a, b)` is greater than `0`, sort `b` to a lower index than - `a`. - -### Example - -```js -sort([187, 23, 47, 987, 12, 59, 0]); // [0, 12, 23, 47, 59, 187, 987] -sort(['a', 'z', 'c', 'beta', 'b']); // ['a', 'b', 'beta', 'c', 'z'] - -// ['sit', 'amet', 'lorem', 'ipsum'] -sort(['lorem', 'ipsum', 'sit', 'amet'], function(a, b){ - // sort by length, items with same length - // will keep the relative order (stable) - return a.length - b.length; -}); - -// [4, 3, 2, 1] -sort([2, 3, 1, 4], function(a, b){ - // reverse sort - return b - a; -}); -``` - - - -## split(arr, [segments]):Array - -Splits an array into a fixed number of segments. - -The number of segments is specified by `segments` and defaults to 2. If the -array cannot be evenly split, the first segments will contain the extra items. -If `arr` is empty, an empty array is returned. If `arr.length` is less than -`segments`, then the resulting array will have `arr.length` number of -single-element arrays. - -### Example -```js -split([1, 2, 3, 4, 5], 3) // [ [1, 2], [3, 4], [5] ] -split([1, 2, 3, 4, 5]) // [ [1, 2, 3], [4, 5] ] -split([]) // [] -split([1, 2], 3) // [ [1], [2] ] -``` - - - -## toLookup(arr, key):Object - -Create an object that indexes the items in the array by a key. If `key` is a function, the key for each value in the resulting object will be the result of calling the function with the value as an argument. Otherwise `key` specifies the property on each value to use as the key. - -### Example - -```js -var foo = [{ name: 'a', thing: 1 }, { name: 'b', thing: 2 }]; -// { a: { name: 'a', thing: 1 }, b: { name: 'b', thing: 2 } } -toLookup(foo, 'name'); -// same as above -toLookup(foo, function (value) { return value.name; }); -``` - - - -## union(...arrs):Array - -Concat multiple arrays removing duplicates. - -```js -var a = ['a', 'b'], - b = ['c', 'a'], - c = [1, 'b', 2, 3, 'a']; - -//note that unique remove from begin to end -union(a, b, c); // ['c', 1, 'b', 2, 3, 'a'] -``` - - - -## unique(arr):Array - -Return a new Array of unique items. - -### Example - -```js -var foo = [1, 2, 3, 4, 2, 2, 3, 4]; -var bar = unique(foo); -console.log(foo); // [1, 2, 3, 4]; -``` - - - -## xor(arr1, arr2):Array - -Exclusive OR. Returns items that are present in a single array. - -Works like [Python set#symmetric_difference](http://docs.python.org/library/stdtypes.html#set.symmetric_difference) renamed for brevity. - -It will remove duplicates. - -See: [`difference()`](#difference), [`intersection()`](#intersection) - -```js -var a = ['a', 'b', 1]; -var b = ['c', 1]; -xor(a, b); // ['a', 'b', 'c'] -``` - - - -## zip(...arrs):Array - -Groups the elements of each array at their corresponding indexes. - -Useful for separate data sources that are coordinated through matching array -indexes. For a matrix of nested arrays, `zip.apply(...)` can transpose the -matrix in a similar fashion. - -```js -// [['moe', 30, true], ['larry', 40, false], ['curly', 50, false]] -zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); -``` - - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md deleted file mode 100644 index 2ffcab10..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/collection.md +++ /dev/null @@ -1,233 +0,0 @@ -# collection # - -Methods for dealing with collections (Array or Objects). - - - -## contains(list, value):Boolean - -Checks if collection contains value. - -```js -contains({a: 1, b: 2, c: 'bar'}, 2); // true -contains([1, 2, 3], 'foo'); // false -``` - -See: [array/contains](array.html#contains), [object/contains](object.html#contains) - - - -## every(list, callback, [thisObj]):Boolean - -Tests whether all values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - -See: [array/every](array.html#every), [object/every](object.html#every) - - - -## filter(list, callback, [thisObj]):Array - -Filter collection properties. - -See: [array/filter](array.html#filter), [object/filter](object.html#filter) - - - -## find(list, callback, [thisObj]):* - -Loops through all the values in the collection and returns the first one that -passes a truth test (callback). - -**Important:** loop order over objects properties isn't guaranteed to be the -same on all environments. - -```js -find({a: 'foo', b: 12}, isString); // 'foo' -find(['foo', 12], isNumber); // 12 -``` - -See: [array/find](array.html#find), [object/find](object.html#find) - - - -## forEach(list, callback, [thisObj]) - -Loop through all values of the collection. - -See: [array/forEach](array.html#forEach), [object/forOwn](object.html#forOwn) - - - -## map(list, callback, [thisObj]):Array - -Returns a new collection where the properties values are the result of calling -the callback for each property in the original collection. - -See: [array/map](array.html#map), [object/map](object.html#map) - - - -## max(list, [iterator]):* - -Returns maximum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`min()`](#min), [array/max](array.html#max), [object/max](object.html#max) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max(['foo', 'lorem', 'amet'], function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(list, [iterator]):* - -Returns minimum value inside collection or use a custom iterator to define how -items should be compared. - -See: [`max()`](#max), [array/min](array.html#min), [object/min](object.html#min) - -```js -min([10, 2, 7]); // 2 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## pluck(list, propName):Array - -Extract a list of property values. - -```js -var users = [ - { - name : 'John', - age : 21 - }, - { - name : 'Jane', - age : 27 - } -]; - -pluck(users, 'name'); // ["John", "Jane"] -pluck(users, 'age'); // [21, 27] - -users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // ['John', 'Mary'] -``` - -See: [array/pluck](array.html#pluck), [object/pluck](object.html#pluck) - - - -## reduce(list, callback, initial, [thisObj]):* - -Apply a function against an accumulator and each value in the collection as to -reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - -See: [array/reduce](array.html#reduce), [object/reduce](object.html#reduce) - - - -## reject(list, fn, [thisObj]):Array - -Creates a new array with all the elements that do **not** pass the truth test. -Opposite of [`filter()`](#filter). - -### Example - -```js -var numbers = [1, 2, 3, 4, 5]; -reject(numbers, function(x) { return (x % 2) !== 0; }); // [2, 4] - -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // [2, 4] -``` - -See: [array/reject](array.html#reject), [object/reject](object.html#reject) - - - -## size(list):Number - -Returns the number of values in the collection. - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -size([1,2,3]); // 3 -size(null); // 0 -``` - -See: [object/size](object.html#size) - - - -## some(list, callback, [thisObj]):Boolean - -Tests whether any values in the collection pass the test implemented by the -provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -some(obj, isString); // true -some([1, 2, 3], isNumber) // true -some([1, 2, 3], isString) // false -``` - -See: [array/some](array.html#some), [object/some](object.html#some) - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md deleted file mode 100644 index b3f7f40e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/date.md +++ /dev/null @@ -1,295 +0,0 @@ -# date # - -Date utilities. - - -## dayOfTheYear(date):Number - -How many days elapsed since begining of the year (following gregorian -calendar). - -```js -// Jan 1st -dayOfTheYear(new Date(2013, 0, 1)); // 1 -// Dec 31th -dayOfTheYear(new Date(2013, 11, 31)); // 364 -``` - - - -## diff(date1, date2, [unitName]):Number - -Calculate the difference between dates (range). - -The returned value is always positive. The default `unitName` is `"ms"`. - -Available units: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`, -`millisecond`. - -See: [`time/convert()`](time.html#convert) - -```js -var d1 = new Date(2012, 4, 5); -var d2 = new Date(2013, 4, 8); -diff(d1, d2); // 31795200000 -diff(d1, d2, 'hour'); // 8832 -diff(d1, d2, 'week'); // 52.57142857142857 -diff(d1, d2, 'month'); // 12.096774193548388 -diff(d1, d2, 'year'); // 1.0082191780821919 -``` - - - -## isLeapYear(fullYear|date):Boolean - -Checks if it's a [leap year](http://en.wikipedia.org/wiki/Leap_year) according -to the Gregorian calendar. - -see: [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -isLeapYear(2012); // true -isLeapYear(2013); // false -isLeapYear(new Date(2012, 2, 28)); // true -``` - - -## isSame(date1, date2[, period]):Boolean - -Check if both dates are the "same". - -You can pass an optional *period* used to set the comparisson precision. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -var date1 = new Date(2013, 1, 3); -var date2 = new Date(2013, 2, 9); -isSame(date1, date2); // false -isSame(date1, date2, 'day'); // false -isSame(date1, date2, 'month'); // false -isSame(date1, date2, 'year'); // true -``` - - - -## parseIso(str):Number - -Parses an [ISO8601](http://en.wikipedia.org/wiki/Iso8601) date and returns the -number of milliseconds since January 1, 1970, 00:00:00 UTC, or `NaN` if it is -not a valid ISO8601 date. - -This parses *all* ISO8601 dates, including dates without times, [ordinal -dates](https://en.wikipedia.org/wiki/ISO_8601#Ordinal_dates), and the compact -representation (omitting delimeters). The only exception is [ISO week -dates](https://en.wikipedia.org/wiki/ISO_week_date), which are not parsed. - -If no time zone offset is specified, it assumes UTC time. - -```js -// Jan 01, 1970 00:00 GMT -parseIso('1970-01-01T00:00:00') // 0 -parseIso('1970-001') // 0 -parseIso('1970-01-01') // 0 -parseIso('19700101T000000.00') // 0 -parseIso('1970-01-01T02:00+02:00') // 0 - -// Jan 02, 2000 20:10 GMT+04:00 -parseIso('2000-01-02T20:10+04:00') // 946829400000 -``` - - - -## startOf(date, period):Date - -Get a new Date at the start of the period. - -Available periods: `year`, `month`, `week`, `day`, `hour`, `minute`, `second`. - -```js -// Apr 05 2013 11:27:43 -var date = new Date(2013, 3, 5, 11, 27, 43, 123); -startOf(date, 'year'); // Jan 01 2013 00:00:00 -startOf(date, 'month'); // Apr 01 2013 00:00:00 -startOf(date, 'day'); // Apr 05 2013 00:00:00 -startOf(date, 'hour'); // Apr 05 2013 11:00:00 -``` - - - -## strftime(date, format, [l10n]):String - -Format date based on strftime format. - -Replaced tokens: - -<dl> -<dt>%a</dt><dd> locale's abbreviated weekday name.</dd> -<dt>%A</dt><dd> locale's full weekday name.</dd> -<dt>%b</dt><dd> locale's abbreviated month name.</dd> -<dt>%B</dt><dd> locale's full month name.</dd> -<dt>%c</dt><dd> locale's appropriate date and time representation.</dd> -<dt>%C</dt><dd> century number (the year divided by 100 and truncated -to an integer) as a decimal number [00..99].</dd> -<dt>%d</dt><dd> day of the month as a decimal number [01..31].</dd> -<dt>%D</dt><dd>same as %m/%d/%y.</dd> -<dt>%e</dt><dd> day of the month as a decimal number [1..31]; -a single digit is preceded by a space.</dd> -<dt>%F</dt><dd>The ISO 8601 date format (%Y-%m-%d)</dd> -<dt>%h</dt><dd>same as %b.</dd> -<dt>%H</dt><dd> hour (24-hour clock) as a decimal number [00..23].</dd> -<dt>%I</dt><dd> hour (12-hour clock) as a decimal number [01..12].</dd> -<dt>%j</dt><dd> day of the year as a decimal number [001..366].</dd> -<dt>%L</dt><dd> zero-padded milliseconds [000..999]</dd> -<dt>%m</dt><dd> month as a decimal number [01..12].</dd> -<dt>%M</dt><dd> minute as a decimal number [00..59].</dd> -<dt>%n</dt><dd> newline character.</dd> -<dt>%p</dt><dd> locale's equivalent of either "am" or "pm"</dd> -<dt>%P</dt><dd> locale's equivalent of either "AM" or "PM"</dd> -<dt>%r</dt><dd> time in a.m. and -p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p.</dd> -<dt>%R</dt><dd> time in 24 hour notation (%H:%M).</dd> -<dt>%s</dt><dd> seconds since Epoch (1970-01-01 00:00:00 UTC)</dd> -<dt>%S</dt><dd> second as a decimal number [00..60].</dd> -<dt>%t</dt><dd> tab character.</dd> -<dt>%T</dt><dd> time (%H:%M:%S).</dd> -<dt>%u</dt><dd> weekday as a decimal number [1..7], with 1 representing -Monday.</dd> -<dt>%U</dt><dd> week number of the year (Sunday as the first day of -the week) as a decimal number [00..53].</dd> -<del><dt>%V</dt><dd> week number of the year (Monday as the first day of the -week) as a decimal number [01..53]. If the week containing 1 January has -four or more days in the new year, then it is considered week 1. Otherwise, -it is the last week of the previous year, and the next week is week 1.</dd></del> -<dt>%w</dt><dd> weekday as a decimal number [0..6], with 0 representing -Sunday.</dd> -<dt>%W</dt><dd> week number of the year (Monday as the first day of -the week) as a decimal number [00..53]. All days in a new year preceding -the first Monday are considered to be in week 0.</dd> -<dt>%x</dt><dd> locale's appropriate date representation.</dd> -<dt>%X</dt><dd> locale's appropriate time representation.</dd> -<dt>%y</dt><dd> year without century as a decimal number [00..99].</dd> -<dt>%Y</dt><dd> year with century as a decimal number.</dd> -<dt>%Z</dt><dd> timezone name or abbreviation, or by no bytes -if no timezone information exists.</dd> -<dt>%%</dt><dd>is replaced by %.</dd> -</dl> - -```js -var date = new Date(2013, 3, 8, 9, 2, 4); -strftime(date, '%Y-%m-%d'); // "2013-04-08" -strftime(date, '%R'); // "09:02" -strftime(date, '%Y-%m-%dT%H:%M:%S%z'); // "2013-04-08T09:02:04+0000" -``` - -You can also set a custom locale: - -```js -var ptBr = require('mout/date/i18n/pt-BR'); -strftime(date, '%a, %d %b', ptBr); // 'Seg, 08 Abr' -strftime(date, '%A, %d %B', ptBr); // 'Segunda, 08 Abril' -``` - -To set it globally: - -```js -require('mout/date/i18n_').set( customLocaleData ); -``` - -See [date/i18n](https://github.com/mout/mout/tree/master/src/date/i18n) -for localization examples. - - - -## timezoneAbbr(date):String - -Return timezone abbreviation or similar data. - -The result will vary based on the OS/browser since some environments doesn't -provide enough info about the current locale. - -```js -// IE 7-8 -timezoneAbbr(new Date()); // "-0500" -// Chrome, FF, V8 -timezoneAbbr(new Date()); // "EST" -``` - - - -## timezoneOffset(date):String - -Return time zone as hour and minute offset from UTC (e.g. +0900). - -It's important to note that JavaScript Date object will use the system locale -info to determinate the [timezone -offset](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) -and that daylight saving time affects the result. - -```js -// if system locale is EST -timezoneOffset(new Date()); // -0500 -``` - - - -## totalDaysInMonth(fullYear, monthIndex):Number - -Returns the amount of days in the month taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear) - -```js -totalDaysInMonth(2008, 1); // 29 (leap year) -totalDaysInMonth(2009, 1); // 28 - -// you can also pass a Date object as single argument -totalDaysInMonth( new Date(2013, 0, 1) ); // 31 -``` - - -## totalDaysInYear(fullYear):Number - -Returns the amount of days in the year taking into consideration leap years -(following Gregorian calendar). - -see: [`isLeapYear()`](#isLeapYear), [`totalDaysInMonth()`](#totalDaysInMonth) - -```js -totalDaysInYear(2008); // 366 (leap year) -totalDaysInYear(2009); // 365 - -// you can also pass a Date object as single argument -totalDaysInYear( new Date(2013, 0, 1) ); // 365 -``` - - - -## weekOfTheYear(date, [firstDayOfWeek]):Number - -Returns how many weeks elapsed since start of the year (`0..53`). - -`firstDayOfWeek` can be `0` (Sunday) or `1` (Monday). By default weeks start at -Sunday. - -It will return `0` if `date` is before the first `firstDayOfWeek` of the year. - -```js -// Tue Jan 01 2013 -weekOfTheYear( new Date(2013,0,1) ); // 0 -// Wed Jan 09 2013 -weekOfTheYear( new Date(2013,0,9) ); // 1 -// Sun Jan 01 2012 -weekOfTheYear( new Date(2012,0,1) ); // 1 -// Mon Jan 09 2012 -weekOfTheYear( new Date(2012,0,9) ); // 2 -``` - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md deleted file mode 100644 index 2695a025..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/function.md +++ /dev/null @@ -1,174 +0,0 @@ -# function # - -Function*(al)* utilities. - - - -## bind(fn, context, [...args]):Function - -Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - -### Arguments - - 1. `fn` (Function) : Target Function - 2. `context` (Object) : Execution context (object used as `this`) - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`partial()`](#partial), [object/bindAll](./object.html#bindAll) - - - -## compose(...fn):Function - -Returns the composition of a list of functions, where each function consumes -the return value of the function that follows. In math terms, composing the -functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - -```js -function add2(x) { return x + 2 } -function multi2(x) { return x * 2 } -map([1, 2, 3], compose(add2, multi2)); // [4, 6, 8] - -//same as -map([1, 2, 3], function(x){ - return add2( multi2(x) ); -}); -``` - - - -## debounce(fn, delay[, isAsap]):Function - -Creates a function that will delay the execution of `fn` until after `delay` -milliseconds have elapsed since the last time it was invoked. - -Subsequent calls to the debounced function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = debounce(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a debounced-function call and `X` is the actual -callback execution: - - Default - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - - Debounced with `isAsap == true`: - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X - -See: [`throttle()`](#throttle) - - -## func(name):Function - -Returns a function that calls a method with given `name` on supplied object. -Useful for iteration methods like `array/map` and `array/forEach`. - -See: [`prop()`](#prop) - -```js -// will call the method `getName()` for each `user` -var names = map(users, func('getName')); -``` - - - -## partial(fn, [...args]):Function - -Return a partially applied function supplying default arguments. - -This method is similar to [`bind`](#bind), except it does not alter the this -binding. - -### Arguments - - 1. `fn` (Function) : Target Function - 3. `[...args]` (*) : Arguments (0...n arguments) - -See: [`bind()`](#bind) - -```js -function add(a, b){ return a + b } -var add10 = partial(add, 10); -console.log( add10(2) ); // 12 -``` - - - -## prop(name):Function - -Returns a function that gets a property with given `name` from supplied object. -Useful for using in conjunction with `array/map` and/or for creating getters. - -See: [`array/pluck()`](array.html#pluck) - -```js -var users = [{name:"John", age:21}, {name:"Jane", age:25}]; -// ["John", "Jane"] -var names = map(users, prop('name')); -``` - - - -## series(...fn):Function - -Returns a function that will execute all the supplied functions in order and -passing the same parameters to all of them. Useful for combining multiple -`array/forEach` into a single one and/or for debugging. - - -```js -// call `console.log()` and `doStuff()` for each item item in the array -forEach(arr, series(console.log, doStuff)); -``` - - - -## throttle(fn, interval):Function - -Creates a function that, when executed, will only call the `fn` function at -most once per every `interval` milliseconds. - -If the throttled function is invoked more than once during the wait timeout, -`fn` will also be called on the trailing edge of the timeout. - -Subsequent calls to the throttled function will return the result of the last -`fn` call. - -```js -// sometimes less is more -var lazyRedraw = throttle(redraw, 300); -foo.on.resize.add(lazyRedraw); -``` - -In this visualization, `|` is a throttled-function call and `X` is the actual -`fn` execution: - - ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| - X X X X X X X X X X X X - -See: [`debounce()`](#debounce) - - -## timeout(fn, millis, context, [...args]):Number - -Functions as a wrapper for `setTimeout`. Calls a the function `fn` after a given delay `millis` in milliseconds. -The function is called within the specified context. The return value can be used to clear the timeout using `clearTimeout`. - -```js -var id = timeout(doStuff, 300, this); - -clearTimeout(id); -``` - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md deleted file mode 100644 index 56d7879b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/lang.md +++ /dev/null @@ -1,385 +0,0 @@ -# lang # - -Language Utilities. Easier inheritance, scope handling, type checks. - - - -## clone(val):* - -Clone native types like Object, Array, RegExp, Date and primitives. - -This method will not clone values that are referenced within `val`. It will -only copy the value reference to the new value. If the value is not a plain -object but is an object, it will return the value unchanged. - -### Example - -```js -var a = { foo: 'bar' }; -var b = clone(a); -console.log(a === b); // false -console.log(a.foo === b.foo); // true - -var c = [1, 2, 3]; -var d = clone(b); -console.log(c === d); // false -console.log(c); // [1, 2, 3] -``` - -See: [`deepClone()`](#deepClone) - - - -## createObject(parent, [props]):Object - -Create Object using prototypal inheritance and setting custom properties. - -Mix between [Douglas Crockford Prototypal Inheritance](http://javascript.crockford.com/prototypal.html) and the EcmaScript 5 `Object.create()` method. - -### Arguments - - 1. `parent` (Object) : Parent Object - 2. `[props]` (Object) : Object properties - -### Example - -```js -var base = { - trace : function(){ - console.log(this.name); - } -}; - -var myObj = createObject(base, { - name : 'Lorem Ipsum' -}); - -myObject.trace(); // "Lorem Ipsum" -``` - - - -## ctorApply(constructor, args):Object - -Do `Function.prototype.apply()` on a constructor while maintaining prototype -chain. - -```js -function Person(name, surname) { - this.name = name; - this.surname = surname; -} - -Person.prototype.walk = function(){ - console.log(this.name +' is walking'); -}; - -var args = ['John', 'Doe']; - -// "similar" effect as calling `new Person("John", "Doe")` -var john = ctorApply(Person, args); -john.walk(); // "John is walking" -``` - - - -## deepClone(val, [instanceClone]):* - -Deep clone native types like Object, Array, RegExp, Date and primitives. - -The `instanceClone` function will be invoked to clone objects that are not -"plain" objects (as defined by [`isPlainObject`](#isPlainObject)) if it is -provided. If `instanceClone` is not specified, it will not attempt to clone -non-plain objects, and will copy the object reference. - -### Example - -```js -var a = {foo:'bar', obj: {a:1, b:2}}; -var b = deepClone(a); // {foo:'bar', obj: {a:1, b:2}} -console.log( a === b ); // false -console.log( a.obj === b.obj ); // false - -var c = [1, 2, [3, 4]]; -var d = deepClone(c); // [1, 2, [3, 4]] -var e = c.concat(); // [1, 2, [3, 4]] - -console.log( c[2] === d[2] ); // false -// concat doesn't do a deep clone, arrays are passed by reference -console.log( e[2] === d[2] ); // true - -function Custom() { } -function cloneCustom(x) { return new Custom(); } -var f = { test: new Custom() }; -var g = deepClone(f, cloneCustom); -g.test === f.test // false, since new Custom instance will be created -``` - -See: [`clone()`](#clone) - - - -## defaults(val, ...defaults):void - -Return first value that isn't `null` or `undefined`. - - function doSomethingAwesome(foo, bar) { - // default arguments - foo = defaults(foo, 'lorem'); - bar = defaults(bar, 123); - // ... - } - - - -## inheritPrototype(child, parent):void - -Inherit prototype from another Object. - -```js -function Foo(name){ - this.name = name; -} -Foo.prototype = { - getName : function(){ - return this.name; - } -}; - -function Bar(name){ - this.name = name; -} -//should be called before calling constructor -inheritPrototype(Bar, Foo); - -var myObj = new Bar('lorem ipsum'); -myObj.getName(); // "lorem ipsum" -``` - - -## is(x, y):Boolean - -Check if both values are identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -is(NaN, NaN); // true -is(-0, +0); // false -is('a', 'b'); // false -``` - -See: [`isnt()`](#isnt) - - - -## isnt(x, y):Boolean - -Check if both values are not identical/egal. - -```js -// wtfjs -NaN === NaN; // false --0 === +0; // true - -isnt(NaN, NaN); // false -isnt(-0, +0); // true -isnt('a', 'b'); // true -``` - -See: [`is()`](#is) - - - - -## isArguments(val):Boolean - -If value is an "Arguments" object. - - - -## isArray(val):Boolean - -If value is an Array. Uses native ES5 `Array.isArray()` if available. - - - -## isBoolean(val):Boolean - -If value is a Boolean. - - - -## isDate(val):Boolean - -If value is a Date. - - - -## isEmpty(val):Boolean - -Checks if Array/Object/String is empty. - - -```js -isEmpty(''); // true -isEmpty('bar'); // false -isEmpty([]); // true -isEmpty([1, 2]); // false -isEmpty({}); // true -isEmpty({a:1, b:2}); // false -``` - - -## isFinite(val):Boolean - -Checks if value is Finite. - -Note: This is not the same as native `isFinite`, which will return `true` for -booleans and empty strings. See http://es5.github.com/#x15.1.2.5. - - - -## isFunction(val):Boolean - -If value is a Function. - - - -## isKind(val, kind):Boolean - -If value is of "kind". (used internally by some of the *isSomething* checks). - -Favor the other methods since strings are commonly mistyped and also because -some "kinds" can only be accurately checked by using other methods (e.g. -`Arguments`), some of the other checks are also faster. - -```js -isKind([1,2], 'Array'); // true -isKind(3, 'Array'); // false -isKind(3, 'Number'); // true -``` - -See: [`kindOf()`](#kindOf) - - - -## isInteger(val):Boolean - -Check if value is an integer. - -```js -isInteger(123); // true -isInteger(123.45); // false -isInteger({}); // false -isInteger('foo'); // false -isInteger('123'); // false -``` - - - -## isNaN(val):Boolean - -Check if value is `NaN`. - -Note: This is not the same as native `isNaN`, which will return `true` for -`undefined` and other values. See [ES5 isNaN](http://es5.github.com/#x15.1.2.4) - - - -## isNull(val):Boolean - -If value is `null`. - - - -## isNumber(val):Boolean - -If value is a Number. - - - -## isObject(val):Boolean - -If value is an Object. - - - -## isPlainObject(val):Boolean - -If the value is an Object created by the Object constructor. - - - -## isRegExp(val):Boolean - -If value is a RegExp. - - - -## isString(val):Boolean - -If value is a String. - - - -## isUndefined(val):Boolean - -If value is `undefined`. - - - -## kindOf(val):String - -Gets kind of value (e.g. "String", "Number", "RegExp", "Null", "Date"). -Used internally by `isKind()` and most of the other *isSomething* checks. - -```js -kindOf([1,2]); // "Array" -kindOf('foo'); // "String" -kindOf(3); // "Number" -``` - -See: [`isKind()`](#isKind) - - -## toArray(val):Array - -Convert array-like object into Array or wrap value into Array. - -```js -toArray({ - "0" : "foo", - "1" : "bar", - "length" : 2 -}); // ["foo", "bar"] - -function foo(){ - return toArray(arguments); -} -foo("lorem", 123); // ["lorem", 123] - -toArray("lorem ipsum"); // ["lorem ipsum"] -toArray(window); // [window] -toArray({foo:"bar", lorem:123}); // [{foo:"bar", lorem:123}] -``` - -See: object/values() - - - -## toString(val):String - -Convert any value to its string representation. - -Will return an empty string for `undefined` or `null`, otherwise will convert -the value to its string representation. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md deleted file mode 100644 index f45be3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/math.md +++ /dev/null @@ -1,298 +0,0 @@ -# math # - -Math utilities. - - -## ceil(val[, step]):Number - -Round value up to full steps. Similar to `Math.ceil()` but can round value -to an arbitrary *radix*. - - ceil(7.2); // 8 - ceil(7.8); // 8 - ceil(7, 5); // 10 - ceil(11, 5); // 15 - ceil(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`floor()`](#floor), [`countSteps()`](#countSteps) - - - -## clamp(val, min, max):Number - -Clamps value inside range. - -`clamp()` is extremely useful in cases where you need to limit a value inside -a certain range. So instead of doing a complex `if/else` to filter/process the -value you can restrict it to always be inside the desired range: - - clamp(-5, 0, 10); // 0 - clamp(7, 1, 10); // 7 - clamp(8, 1, 10); // 8 - clamp(10, 1, 10); // 10 - clamp(11, 1, 10); // 10 - -If the value is smaller than `min` it returns the `min`, if `val` is higher -than `max` it returns `max`. - -### Common use cases - -Any situation where you need to limit a number inside a range like: slider -position, image galleries <small>(so user can't skip to an image that doesn't -exist)</small>, drag and drop, scroll boundaries, etc. - -See: [`loop()`](#loop) - - - - -## countSteps(val, step[, overflow]):Number - -Count number of full steps. - -### Arguments: - - 1. `val` (Number) : Value. - 2. `step` (Number) : Step size. - 3. `[overflow]` (Number) : Maximum number of steps, nSteps will loop if -`>=` than overflow. - - -Count steps is very useful for cases where you need to know how many "full -steps" the number *completed*. Think of it as a division that only returns -integers and ignore remainders. - - countSteps(3, 5); // 0 - countSteps(6, 5); // 1 - countSteps(12, 5); // 2 - countSteps(18, 5); // 3 - countSteps(21, 5); // 4 - -You can also set an `overflow` which will reset the *counter* before reaching -this number. - - countSteps(3, 5, 3); // 0 - countSteps(6, 5, 3); // 1 - countSteps(12, 5, 3); // 2 - countSteps(18, 5, 3); // 0 - countSteps(21, 5, 3); // 1 - -### Common use cases - -#### How many items fit inside an area: - - var containerWidth = 100; - var itemWidth = 8; - var howManyFit = countSteps(containerWidth, itemWidth); // 12 - -#### Split value into different scales or convert value from one scale to another - -From [mout/time/parseMs](time.html#parseMs): - - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - // {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} - parseMs(2348765454); - - - -## floor(val[, step]):Number - -Round value down to full steps. Similar to `Math.floor()` but can round value -to an arbitrary *radix*. (formerly `snap`) - - floor(7.2); // 7 - floor(7.8); // 7 - floor(7, 5); // 5 - floor(11, 5); // 10 - floor(15, 5); // 15 - -### Common use cases - -Round values by increments of 5/10/1000/etc. - -See: [`round()`](#round), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -## inRange(val, min, max[, threshold]):Boolean - -Checks if value is inside the range. - - inRange(-6, 1, 10); // false - inRange( 5, 1, 10); // true - inRange(12, 1, 10); // false - -The threshold can be useful when you want granular control of what should match -and/or the precision could change at runtime or by some configuration option, -avoids the clutter of adding/subtracting the `threshold` from `mix` and `max`. - - inRange(12, 1, 10, 2); // true - inRange(13, 1, 10, 2); // false - -### Common use cases - -Anything that needs to check if value is inside a range, be it collision -detection, limiting interaction by mouse position, ignoring parts of the logic -that shouldn't happen if value isn't valid, simplify `if/else` conditions, -making code more readable, etc... - - - - -## isNear(val, target, threshold):Boolean - -Check if value is close to target. - -Similar to `inRange()` but used to check if value is close to a certain value -or match the desired value. Basically to simplify `if/else` conditions and to -make code clearer. - - isNear( 10.2, 10, 0.5); // true - isNear( 10.5, 10, 0.5); // true - isNear(10.51, 10, 0.5); // false - -### Common use cases - -Games where a certain action should happen if an *actor* is close to a target, -gravity fields, any numeric check that has some tolerance. - - - - -## lerp(ratio, start, end):Number - -Linear interpolation. - - lerp(0.5, 0, 10); // 5 - lerp(0.75, 0, 10); // 7.5 - -### Common use cases - -Linear interpolation is commonly used to create animations of elements moving -from one point to another, where you simply update the current ratio (which in -this case represents time) and get back the position of the element at that -"frame". - -The core idea of `lerp` is that you are using a number that goes from `0` to -`1` to specify a ratio inside that scale. This concept can be applied to -convert numbers from different scales easily. - -See: [`map()`](#map), [`norm()`](#norm) - - - - -## loop(val, min, max):Number - -Loops value inside range. Will return `min` if `val > max` and `max` if `val -< min`, otherwise it returns `val`. - - loop(-1, 0, 10); // 10 - loop( 1, 0, 10); // 1 - loop( 5, 0, 10); // 5 - loop( 9, 0, 10); // 9 - loop(10, 0, 10); // 10 - loop(11, 0, 10); // 0 - -Similar to [`clamp()`](#clamp) but *loops* the value inside the range when an -overflow occurs. - -### Common use cases - -Image galleries, infinite scroll, any kind of logic that requires that the -first item should be displayed after the last one or the last one should be -displayed after first if going on the opposite direction. - -See: [`clamp()`](#clamp) - - - - -## map(val, min1, max1, min2, max2):Number - -Maps a number from one scale to another. - - map(3, 0, 4, -1, 1) // 0.5 - map(3, 0, 10, 0, 100) // 30 - -### Common use cases - -Very useful to convert values from/to multiple scales. - -Let's suppose we have a slider that needs to go from `2000` to `5000` and that slider -has `300px` of width, here is how we would translate the knob position into the -current value: - - var knobX = 123; - var sliderWid = 300; - var minVal = 2000; - var maxVal = 5000; - - var curVal = map(knobX, 0, sliderWid, minVal, maxVal); // 3230 - -See: [`lerp()`](#lerp), [`norm()`](#norm) - - - - -## norm(val, min, max):Number - -Gets normalized ratio of value inside range. - - norm(50, 0, 100); // 0.5 - norm(75, 0, 100); // 0.75 - -### Common use cases - -Convert values between scales, used by [`map()`](#map) internally. Direct -opposite of [`lerp()`](#lerp). - -See: [`lerp()`](#lerp), [`map()`](#map) - - - -## round(val[, step]):Number - -Round value to full steps. Similar to `Math.round()` but allow setting an -arbitrary *radix*. - - // default - round(0.22); // 0 - round(0.49); // 0 - round(0.51); // 1 - - // custom radix - round(0.22, 0.5); // 0 - round(0.49, 0.5); // 0.5 - round(0.51, 0.5); // 0.5 - round(0.74, 0.5); // 0.5 - round(0.75, 0.5); // 1 - round(1.24, 0.5); // 1 - round(1.25, 0.5); // 1.5 - round(1.74, 0.5); // 1.5 - -### Common use cases - -Round values by increments of 0.5/5/10/1000/etc. - -See: [`floor()`](#floor), [`ceil()`](#ceil), [`countSteps()`](#countSteps) - - - -------------------------------------------------------------------------------- - -For more usage more info check the specs and source code. - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md deleted file mode 100644 index 8d93865b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/number.md +++ /dev/null @@ -1,225 +0,0 @@ -# number # - -Number utilities. - - -## abbreviate(val[, nDecimalDigits, dictionary]):String - -Abbreviate number to thousands (K), millions (M) or billions (B). - -The default value for `nDecimalDigits` is `1`. - -### Example - - abbreviate(123456); // "123.5K" - abbreviate(12345678); // "12.3M" - abbreviate(1234567890); // "1.2B" - -You can set the amount of decimal digits (default is `1`): - - abbreviate(543); // "0.5K" - abbreviate(543, 1); // "0.5K" - abbreviate(543, 2); // "0.54K" - abbreviate(543, 3); // "0.543K" - -You can customize the abbreviation by passing a custom "dictionary": - - var _ptbrDict = { - thousands : ' mil', - millions : ' Mi', - billions : ' Bi' - }; - function customAbbr(val) { - return abbreviate(val, 1, _ptbrDict); - } - - customAbbr(123456); // "123.5 mil" - customAbbr(12345678); // "12.3 Mi" - customAbbr(1234567890); // "1.2 Bi" - - - -## currencyFormat(val[, nDecimalDigits, decimalSeparator, thousandsSeparator]):String - -Format a number as currency. - -### Example: - - currencyFormat(1000); // "1,000.00" - currencyFormat(1000, 1); // "1,000.0" - currencyFormat(1000, 2, ',', '.'); // "1.000,00" - - - -## enforcePrecision(val, nDecimalDigits):Number - -Enforce a specific amount of decimal digits and also fix floating point -rounding issues. - -### Example: - -```js -enforcePrecision(0.615, 2); // 0.62 -enforcePrecision(0.625, 2); // 0.63 -//floating point rounding "error" (rounds to odd number) -+(0.615).toFixed(2); // 0.61 -+(0.625).toFixed(2); // 0.63 -``` - - - -## MAX_INT:Number - -Maximum 32-bit signed integer value. `Math.pow(2, 31) - 1` - -### Example: - -```js -console.log( MAX_INT ); // 2147483647 -``` - - -## MAX_UINT:Number - -Maximum 32-bit unsigned integer value. `Math.pow(2, 32) - 1` - -### Example: - -```js -console.log( MAX_UINT ); // 4294967295 -``` - - -## MIN_INT:Number - -Minimum 32-bit signed integer value. `Math.pow(2, 31) * -1`. - -### Example: - -```js -console.log( MIN_INT ); // -2147483648 -``` - - -## pad(n, minLength[, char]):String - -Add padding zeros if `n.length` < `minLength`. - -### Example: - -```js -pad(1, 5); // "00001" -pad(12, 5); // "00012" -pad(123, 5); // "00123" -pad(1234, 5); // "01234" -pad(12345, 5); // "12345" -pad(123456, 5); // "123456" - -// you can also specify the "char" used for padding -pad(12, 5, '_'); // "___12" -``` - -see: [string/lpad](./string.html#lpad) - - - -## rol(val, shift):Number - -Bitwise circular shift left. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## ror(val, shift):Number - -Bitwise circular shift right. - -More info at [Wikipedia#Circular_shift](http://en.wikipedia.org/wiki/Circular_shift) - - - -## sign(val):Number - -Returns `-1` if value is negative, `0` if the value is `0` and `1` if value is positive. Useful for -multiplications. - -```js -sign(-123); // -1 -sign(123); // 1 -sign(0); // 0 -``` - - - -## toInt(val):Number - -"Convert" value into an 32-bit integer. Works like `Math.floor` if `val > 0` and -`Math.ceil` if `val < 0`. - -**IMPORTANT:** val will wrap at [number/MIN_INT](#MIN_INT) and -[number/MAX_INT](#MAX_INT). - -Created because most people don't know bitwise operations and also because this -feature is commonly needed. - -[Perf tests](http://jsperf.com/vs-vs-parseint-bitwise-operators/7) - -### Example: - -```js -toInt(1.25); // 1 -toInt(0.75); // 0 -toInt(-0.55); // 0 -toInt(-5.0001) // -5 -``` - - - -## toUInt(val):Number - -"Convert" value into an 32-bit unsigned integer. - -Works like AS3#uint(). - -**IMPORTANT:** val will wrap at 2^32. - -### Example: - -```js -toUInt(1.25); // 1 -toUInt(0.75); // 0 -toUInt(-0.55); // 0 -toUInt(-5.0001); // 4294967291 -toUInt(Math.pow(2,32) - 0.5); // 4294967295 -toUInt(Math.pow(2,32) + 0.5); // 0 -``` - - -## toUInt31(val):Number - -"Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - -Useful since all bitwise operators besides `>>>` treat numbers as signed -integers. - -**IMPORTANT:** val will wrap at 2^31 and negative numbers will be treated as -`zero`. - -### Example: - -```js -toUInt31(1.25); // 1 -toUInt31(0.75); // 0 -toUInt31(-0.55); // 0 -toUInt31(-5.0001); // 0 -toUInt31(Math.pow(2,31) - 0.5); // 21474836470 -toUInt31(Math.pow(2,31) + 0.5); // 0 -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md deleted file mode 100644 index b4d5e483..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/object.md +++ /dev/null @@ -1,780 +0,0 @@ -# object # - -Object utilities. - - - -## bindAll(obj, [...methodNames]):void - -Bind methods of the target object to always execute on its own context -(ovewritting the original function). - -See: [function/bind](./function.html#bind) - -```js -var view = { - name: 'Lorem Ipsum', - logNameOnClick: function() { - console.log(this.name); - } -}; - -// binds all methods by default -bindAll(view); -jQuery('#docs').on('click', view.logNameOnClick); -``` - -You can also specify the list of methods that you want to bind (in case you -just want to bind a few of them). - -```js -// only the listed methods will be bound to `obj` context -bindAll(obj, 'logNameOnClick', 'doAwesomeStuffOnDrag'); -``` - - - -## contains(obj, value):Boolean - -Similar to [Array/contains](array.html#contains). Checks if Object contains -value. - -```js -var obj = { - a: 1, - b: 2, - c: 'bar' -}; -contains(obj, 2); // true -contains(obj, 'foo'); // false -``` - - - -## deepEquals(a, b, [callback]):Boolean - -Recursively tests whether two objects contain the same keys and equal values. - -`callback` specifies the equality comparison function used to compare -non-object values. It defaults to using the strict equals (`===`) operator. - -If the values are both an object, it will recurse into the objects, checking if -their keys/values are equal. It will only check the keys and values contained -by the objects; it will not check the objects' prototypes. If the either of -the values are not objects, they will be checked using the `callback` function. - -Example: - -```js -deepEquals({ a: 1 }, { a: 1 }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 1 } }); // true -deepEquals({ value: { a: 1 } }, { value: { a: 2 } }); // false -deepEquals({ value: { a: 1 } }, { value: { a: 1, b: 2 } }); // false -deepEquals({}, null); // false -deepEquals(null, null); // true -deepEquals( - { a: { b: 1 } }, - { a: { b: '1' } }, - function(a, b) { return a == b; }); // true -``` - -See: [`equals()`](#equals) - - - -## deepFillIn(target, ...objects):Object - -Fill missing properties recursively. - -It's different from `deepMixIn` since it won't override any existing property. -It's also different from `merge` since it won't clone child objects during the -process. - -It returns the target object and mutates it in place. - -See: [`fillIn()`](#fillIn), [`deepMixIn()`](#deepMixIn), [`merge()`](#merge) - -```js -var base = { - foo : { - bar : 123 - }, - lorem : 'ipsum' -}; -var options = deepFillIn({foo : { baz : 45 }, lorem : 'amet'}, base); -// > {foo: {bar:123, baz : 45}, lorem : 'amet'} -``` - - - -## deepMatches(target, pattern):Boolean - -Recursively checks if object contains all properties/value pairs. When both -the target and pattern values are arrays, it checks that the target value -contain matches for all the items in the pattern array (independent of order). - -```js -var john = { - name: 'John', - age: 22, - pets: [ - { type: 'cat', name: 'Grumpy Cat' }, - { type: 'dog', name: 'Hawk' } - ] -}; - -deepMatches(john, { name: 'John' }); // true -deepMatches(john, { age: 21 }); // false -deepMatches(john, { pets: [ { type: 'cat' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hawk' } ] }); // true -deepMatches(john, { pets: [ { name: 'Hairball' } ] }); // false -``` - -See [`matches()`](#matches) - - - -## deepMixIn(target, ...objects):Object - -Mixes objects into the target object, recursively mixing existing child objects -as well. - -It will only recursively mix objects if both (existing and new) values are -plain objects. - -Returns the target object. Like [`merge()`](#merge), but mutates the target -object, and does not clone child objects. - -```js -var target = { - foo: { - name: "foo", - id: 1 - } -}; - -deepMixIn(target, { foo: { id: 2 } }); -console.log(target); // { foo: { name: "foo", id: 2 } } -``` - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## equals(a, b, [callback]):Boolean - -Tests whether two objects contain the same keys and values. - -`callback` specifies the equality comparison function used to compare the -values. It defaults to using the strict equals (`===`) operator. - -It will only check the keys and values contained by the objects; it will not -check the objects' prototypes. If either of the values are not objects, they -will be compared using the `callback` function. - -```js -equals({}, {}); // true -equals({ a: 1 }, { a: 1 }); // true -equals({ a: 1 }, { a: 2 }); // false -equals({ a: 1, b: 2 }, { a: 1 }); // false -equals({ a: 1 }, { a: 1, b: 2 }); // false -equals(null, null); // true -equals(null, {}); // false -equals({ a: 1 }, { a: '1' }, function(a, b) { return a == b; }); // true -``` - - - -## every(obj, callback, [thisObj]):Boolean - -Similar to [Array/every](array.html#every). Tests whether all properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -every(obj, isNumber); // false -``` - - - -## fillIn(obj, ...default):Object - -Fill in missing properties in object with values from the *defaults* objects. - - var base = { - foo : 'bar', - num : 123 - }; - - fillIn({foo:'ipsum'}, base); // {foo:'ipsum', num:123} - -PS: it allows merging multiple objects at once, the first ones will take -precedence. - -See: [`mixIn()`](#mixIn), [`merge()`](#merge), [`deepFillIn()`](#deepFillIn) - - - -## filter(obj, callback, [thisObj]) - -Returns a new object containing all properties where `callback` returns true, -similar to Array/filter. It does not use properties from the object's -prototype. - -Callback receives the same arguments as `forOwn()`. - -See: [`forOwn()`](#forOwn), [`forIn()`](#forIn), [`pick()`](#pick) - -```js -var obj = { - foo: 'value', - bar: 'bar value' -}; - -// returns { bar: 'bar value' } -filter(obj, function(v) { return value.length > 5; }); - -// returns { foo: 'value' } -filter(obj, function(v, k) { return k === 'foo'; }); -``` - - - -## find(obj, callback, [thisObj]) - -Loops through all the properties in the Object and returns the first one that -passes a truth test (callback), similar to [Array/find](array.html#find). -Unlike Array/find, order of iteration is not guaranteed. - -```js -var obj = { - a: 'foo', - b: 12 -}; - -find(obj, isString); // 'foo' -find(obj, isNumber); // 12 -``` - - - -## forIn(obj, callback[, thisObj]) - -Iterate over all properties of an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -It **will** iterate over inherited (enumerable) properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forIn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 7 -console.log(keys); // ['foo', 'bar', 'lorem'] -``` - - - -## forOwn(obj, callback[, thisObj]) - -Iterate over all own properties from an Object, similar to -[Array/forEach](array.html#forEach). - -It [avoids don't enum bug on IE](https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug). -Notice that it **won't** iterate over properties from the prototype. - -It allows exiting the iteration early by returning `false` on the callback. - -See: [`forIn()`](#forIn), [`keys()`](#keys), [`values()`](#values) - -### Callback arguments - -Callback will receive the following arguments: - - 1. Property Value (*) - 2. Key name (String) - 3. Target object (Object) - -### Example - -```js -function Foo(){ - this.foo = 1; - this.bar = 2; -} - -// will be ignored -Foo.prototype.lorem = 4; - -var obj = new Foo(); - -var result = 0; -var keys = []; - -forOwn(obj, function(val, key, o){ - result += val; - keys.push(key); -}); - -console.log(result); // 3 -console.log(keys); // ['foo', 'bar'] -``` - - - -## functions(obj):Array - -Returns a sorted list of all enumerable properties that have function values -(including inherited properties). - -```js -var obj = { - foo : function(){}, - bar : 'baz' -}; -functions(obj); // ['foo'] -``` - - - -## get(obj, propName):* - -Returns nested property value. Will return `undefined` if property doesn't -exist. - -See: [`set()`](#set), [`namespace()`](#namespace), [`has()`](#has) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -get(lorem, 'ipsum.dolor.sit'); // "amet" -get(lorem, 'foo.bar'); // undefined -``` - - - -## has(obj, propName):Boolean - -Checks if object contains a child property. Useful for cases where you need to -check if an object contain a *nested* property. It will get properties -inherited by the prototype. - -see: [`hasOwn()`](#hasOwn), [`get()`](#get) - -```js -var a = { - b : { - c : 123 - } - }; - -has(a, 'b.c'); // true -has(a, 'foo.c'); // false -``` - -### Common use case - -```js -if( has(a, 'foo.c') ){ // false - // ... -} - -if( a.foo.c ){ // ReferenceError: `foo` is not defined - // ... -} -``` - - - -## hasOwn(obj, propName):Boolean - -Safer `Object.hasOwnProperty`. Returns a boolean indicating whether the object -has the specified property. - -see: [`has()`](#has) - -```js -var obj = { - foo: 1, - hasOwnProperty : 'bar' -}; - -obj.hasOwnProperty('foo'); // ERROR! hasOwnProperty is not a function - -hasOwn(obj, 'foo'); // true -hasOwn(obj, 'hasOwnProperty'); // true -hasOwn(obj, 'toString'); // false -``` - - - -## keys(obj):Array - -Returns an array of all own enumerable properties found upon a given object. -It will use the native `Object.keys` if present. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`values()`](#values) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -keys(obj); // ['foo', 'bar', 'lorem'] -``` - - - -## map(obj, callback, [thisObj]):Object - -Returns a new object where the property values are the result of calling the -callback for each property in the original object, similar to Array/map. - -The callback function receives the same arguments as in `forOwn()`. - -See: [`forOwn()`](#forOwn) - -```js -var obj = { foo: 1, bar: 2 }, - data = { foo: 0, bar: 1 }; - -map(obj, function(v) { return v + 1; }); // { foo: 2, bar: 3 } -map(obj, function(v, k) { return k; }); // { foo: "foo", bar: "bar" } -map(obj, function(v, k) { return this[k]; }, data); // { foo: 0, bar: 1 } -``` - - - -## matches(obj, props):Boolean - -Checks if object contains all properties/values pairs. Useful for validation -and filtering. - -```js -var john = {age:25, hair:'long', beard:true}; -var mark = {age:27, hair:'short', beard:false}; -var hippie = {hair:'long', beard:true}; -matches(john, hippie); // true -matches(mark, hippie); // false -``` - -See [`deepMatches()`](#deepMatches) - - - -## merge(...objects):Object - -Deep merges objects. Note that objects and properties will be cloned during the -process to avoid undesired side effects. It return a new object and won't -affect source objects. - -```js -var obj1 = {a: {b: 1, c: 1, d: {e: 1, f: 1}}}; -var obj2 = {a: {b: 2, d : {f : 'yeah'} }}; - -merge(obj1, obj2); // {a: {b : 2, c : 1, d : {e : 1, f : 'yeah'}}} -``` - -See: [`deepMixIn()`](#deppMixIn), [`deepFillIn()`](#deepFillIn) - - - -## max(obj[, iterator]):* - -Returns maximum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/max](array.html#max). - -See: [`min()`](#min) - -```js -max({a: 100, b: 2, c: 1, d: 3, e: 200}); // 200 -max({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'lorem' -``` - - - -## min(obj[, iterator]):* - -Returns minimum value inside object or use a custom iterator to define how -items should be compared. Similar to [Array/min](array.html#min). - -See: [`max()`](#max) - -```js -min({a: 100, b: 2, c: 1, d: 3, e: 200}); // 1 -min({a: 'foo', b: 'lorem', c: 'amet'}, function(val){ - return val.length; -}); // 'foo' -``` - - - -## mixIn(target, ...objects):Object - -Combine properties from all the objects into first one. - -This method affects target object in place, if you want to create a new Object -pass an empty object as first parameter. - -### Arguments - - 1. `target` (Object) : Target Object. - 2. `...objects` (...Object) : Objects to be combined (0...n objects). - -### Example - -```js -var a = {foo: "bar"}; -var b = {lorem: 123}; - -mixIn({}, a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar"} - -mixIn(a, b); // {foo: "bar", lorem: 123} -console.log(a); // {foo: "bar", lorem: 123} -``` - -See: [`fillIn()`](#fillIn), [`merge()`](#merge) - - - - -## namespace(obj, propName):Object - -Creates an empty object inside namespace if not existent. Will return created -object or existing object. - -See: [`get()`](#get), [`set()`](#set) - -```js -var obj = {}; -namespace(obj, 'foo.bar'); // {} -console.log(obj); // {foo:{bar:{}}} -``` - - - -## pick(obj, ...keys):Object - -Return a copy of the object that contains only the whitelisted keys. - -See: [`filter()`](#filter) - -```js -var user = { - firstName : 'John', - lastName : 'Doe', - dob : '1985/07/23', - gender : 'male' -}; - -// can pass an array of keys as second argument -var keys = ['firstName', 'dob'] -pick(user, keys); // {firstName:"John", dob: "1985/07/23"} - -// or multiple arguments -pick(user, 'firstName', 'lastName'); // {firstName:"John", lastName: "Doe"} -``` - - - -## pluck(obj, propName):Object - -Extract an object containing property values with keys as they appear in the -passed object. - -```js -var users = { - first: { - name : 'John', - age : 21 - }, - second: { - name : 'Mary', - age : 25 - } -}; - -pluck(users, 'name'); // {first: 'John', second: 'Mary'} ); -pluck(users, 'age'); // {first: 21, second: 25} ); -``` - - - -## reduce(obj, callback, initial, [thisObj]):* - -Similar to [Array/reduce](array.html#reduce). - -Apply a function against an accumulator and each property of the object (order -is undefined) as to reduce it to a single value. - -```js -var obj = {a: 1, b: 2, c: 3, d: 4}; - -function sum(prev, cur, key, list) { - compare1.push(prev); - return prev + cur; -} - -reduce(obj, sum); // 10 -``` - - - -## reject(obj, callback, thisObj):Object - -Returns a new object containing all properties where `callback` returns true, -similar to [Array/reject](array.html#reject). It does not use properties from -the object's prototype. Opposite of [`filter()`](#filter). - -See [`filter()`](#filter) - -### Example - -```js -var obj = {a: 1, b: 2, c: 3, d: 4, e: 5}; -reject(obj, function(x) { return (x % 2) !== 0; }); // {b: 2, d: 4} -``` - - - -## values(obj):Array - -Returns an array of all own enumerable properties values found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -values(obj); // [1, 2, 3] -``` - - - -## set(obj, propName, value) - -Sets a nested property value. - -See: [`get()`](#get), [`namespace()`](#namespace) - -```js -var obj = {}; -set(obj, 'foo.bar', 123); -console.log(obj.foo.bar); // 123 -console.log(obj); // {foo:{bar:123}} -``` - - - -## size(obj):Number - -Returns the count of own enumerable properties found upon a given object. - -PS: it won't return properties from the prototype. - -See: [`forOwn()`](#forOwn), [`keys()`](#keys) - -```js -var obj = { - foo : 1, - bar : 2, - lorem : 3 -}; -size(obj); // 3 -``` - - - -## some(obj, callback, [thisObj]):Boolean - -Similar to [Array/some](array.html#some). Tests whether any properties in the -object pass the test implemented by the provided callback. - -```js -var obj = { - a: 1, - b: 2, - c: 3, - d: 'string' -}; - -some(obj, isNumber); // true -``` - - - -## unset(obj, propName):Boolean - -Delete object property if existent and returns a boolean indicating succes. It -will also return `true` if property doesn't exist. - -Some properties can't be deleted, to understand why [check this -article](http://perfectionkills.com/understanding-delete/). - -See: [`set()`](#set) - -```js -var lorem = { - ipsum : { - dolor : { - sit : 'amet' - } - } - }; - -unset(lorem, 'ipsum.dolor.sit'); // true -console.log(lorem.ipsum.dolor); // {} -unset(lorem, 'foo.bar'); // true -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md deleted file mode 100644 index 1be3c102..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/queryString.md +++ /dev/null @@ -1,115 +0,0 @@ -# queryString # - -Utilities for query string manipulation. - - - -## contains(url, paramName):Boolen - -Checks if query string contains parameter. - -### Arguments: - - 1. `url` (String) : URL or query string. - 2. `paramName` (String) : Parameter name. - -### Example: - -```js -var url = 'example.com/?lorem=ipsum'; -contains(url, 'lorem'); // true -contains(url, 'foo'); //false -``` - - - -## decode(queryStr[, shouldTypecast]):Object - -Parses query string and creates an object of keys => vals. - -Will typecast value with [`string/typecast`](string.html#typecast) by default -and decode string parameters using `decodeURIComponent()`. - -```js -var query = '?foo=bar&lorem=123'; -decode(query); // {foo: "bar", lorem: 123} -decode(query, false); // {foo: "bar", lorem: "123"} -``` - - -## encode(obj):String - -Encode object into a query string. - -Will encode parameters with `encodeURIComponent()`. - -```js -encode({foo: "bar", lorem: 123}); // "?foo=bar&lorem=123" -``` - - -## getParam(url, param[, shouldTypecast]):* - -Get query parameter value. - -Will typecast value with [`string/typecast`](string.html#typecast) by default. - -See: [`setParam()`](#setParam) - -### Arguments: - - 1. `url` (String) : Url. - 2. `param` (String) : Parameter name. - 3. `[shouldTypecast]` (Boolean) : If it should typecast value. - -### Example: - -```js -var url = 'example.com/?foo=bar&lorem=123&ipsum=false'; -getParam(url, 'dolor'); // "amet" -getParam(url, 'lorem'); // 123 -getParam(url, 'lorem', false); // "123" -``` - - -## parse(url[, shouldTypecast]):Object - -Parses URL, extracts query string and decodes it. - -It will typecast all properties of the query object unless second argument is -`false`. - -Alias to: `decode(getQuery(url))`. - -```js -var url = 'example.com/?lorem=ipsum&a=123'; -parse(url); // {lorem: "ipsum", a: 123} -parse(url, false); // {lorem: "ipsum", a: "123"} -``` - - -## getQuery(url):String - -Gets full query as string with all special chars decoded. - -```js -getQuery('example.com/?lorem=ipsum'); // "?lorem=ipsum" -``` - - -## setParam(url, paramName, value):String - -Add new query string parameter to URL or update existing value. - -See: [`getParam()`](#getParam) - -```js -setParam('?foo=bar&lorem=0', 'lorem', 'ipsum'); // '?foo=bar&lorem=ipsum' -setParam('?lorem=1', 'foo', 123); // '?lorem=1&foo=123' -``` - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md deleted file mode 100644 index b058b4e0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/random.md +++ /dev/null @@ -1,218 +0,0 @@ -# random # - -Pseudo-random generators. - -mout uses `Math.random` by default on all the pseudo-random generators, if -you need a seeded random or a better algorithm see the [`random()`](#random) -documentation for instructions. - - - -## choice(...items):* - -Returns a random element from the supplied arguments or from an array if single -argument is an array. - -### Example: - -```js -choice(1, 2, 3, 4, 5); // 3 - -var arr = ['lorem', 'ipsum', 'dolor']; -choice(arr); // 'dolor' -``` - - - -## guid():String - -Generates a pseudo-random [Globally Unique Identifier](http://en.wikipedia.org/wiki/Globally_unique_identifier) (v4). - -Since the total number of GUIDs is 2<sup>122</sup> the chance of generating the -same value twice is negligible. - -**Important:** this method uses `Math.random` by default so the UUID isn't -*safe* (sequence of outputs can be predicted in some cases), check the -[`random()`](#random) documentation for more info on how to replace the default -PRNG if you need extra safety or need *seeded* results. - -See: [`randHex()`](#randHex), [`random()`](#random) - -### Example: - -```js -guid(); // 830e9f50-ac7f-4369-a14f-ed0e62b2fa0b -guid(); // 5de3d09b-e79c-4727-932b-48c49228d508 -``` - - - -## rand([min], [max]):Number - -Gets a random number inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -rand(); // 448740433.55274725 -rand(); // -31797596.097682 -rand(0, 10); // 7.369723 -rand(0, 10); // 5.987042 -``` - -See: [`random()`](#random) - - - -## randBit():Number - -Returns a random "bit" (0 or 1). Useful for addition/subtraction. - -It's slightly faster than `choice(0, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randBit(); // 1 -randBit(); // 0 - -//same effect as -choice(0, 1); -``` - - - -## randHex([size]):String - -Returns a random hexadecimal string. - -The default `size` is `6`. - -### Example: - -```js -randHex(); // "dd8575" -randHex(); // "e6baeb" -randHex(2); // "a2" -randHex(30); // "effd7e2ad9a4a3067e30525fab983a" -``` - - - -## randInt([min], [max]):Number - -Gets a random integer inside range or snap to min/max values. - -### Arguments: - - 1. `[min]` (Number) : Minimum value. Defaults to `number/MIN_INT`. - 2. `[max]` (Number) : Maximum value. Defaults to `number/MAX_INT`. - - -### Example: - -```js -randInt(); // 448740433 -randInt(); // -31797596 -randInt(0, 10); // 7 -randInt(0, 10); // 5 -``` - - - -## randSign():Number - -Returns a random "sign" (-1 or 1). Useful for multiplications. - -It's slightly faster than `choice(-1, 1)` since implementation is simpler (not -that it will make a huge difference in most cases). - -See: [`choice()`](#choice) - -### Example: - -```js -randSign(); // -1 -randSign(); // 1 - -//same effect as -choice(-1, 1); -``` - - - -## random():Number - -Returns a random number between `0` and `1`. Same as `Math.random()`. - -```js -random(); // 0.35435103671625257 -random(); // 0.8768321881070733 -``` - -**Important:** No methods inside mout should call `Math.random()` -directly, they all use `random/random` as a proxy, that way we can -inject/replace the pseudo-random number generator if needed (ie. in case we -need a seeded random or a better algorithm than the native one). - -### Replacing the PRNG - -In some cases we might need better/different algorithms than the one provided -by `Math.random` (ie. safer, seeded). - -Because of licensing issues, file size limitations and different needs we -decided to **not** implement a custom PRNG and instead provide a easy way to -override the default behavior. - [issue #99](https://github.com/millermedeiros/amd-utils/issues/99) - -If you are using mout with a loader that supports the [AMD map -config](https://github.com/amdjs/amdjs-api/wiki/Common-Config), such as -[RequireJS](http://requirejs.org/), you can use it to replace the PRNG -(recommended approach): - -```js -requirejs.config({ - map : { - // all modules will load "my_custom_prng" instead of - // "mout/random/random" - '*' : { - 'mout/random/random' : 'my_custom_prng' - } - } -}); -``` - -You also have the option to override `random.get` in case you are using -mout on node.js or with a loader which doesn't support the map config: - -```js -// replace the PRNG -var n = 0; -random.get = function(){ - return ++n % 2? 0 : 1; // not so random :P -}; -random(); // 0 -random(); // 1 -random(); // 0 -random(); // 1 -``` - -See this [detailed explanation about PRNG in -JavaScript](http://baagoe.org/en/w/index.php/Better_random_numbers_for_javascript) -to understand the issues with the native `Math.random` and also for a list of -algorithms that could be used instead. - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md deleted file mode 100644 index 2b282315..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/string.md +++ /dev/null @@ -1,594 +0,0 @@ -# string # - -String utilities. - - -## camelCase(str):String - -Convert string to "camelCase" text. - -See: [`pascalCase()`](#pascalCase), [`unCamelCase()`](#unCamelCase) - -### Example - -```js -camelCase('lorem-ipsum-dolor'); // "loremIpsumDolor" -camelCase('lorem ipsum dolor'); // "loremIpsumDolor" -``` - - - -## contains(str, substring, [fromIndex]):Boolean - -Checks if string contains the given substring. - -See: [`startsWith()`](#startsWith), [`endsWith()`](#endsWith) - -### Example - -```js -contains('lorem', 'or'); // true -contains('lorem', 'bar'); // false -``` - - - -## crop(str, maxChars, [append]):String - -Truncate string at full words. Alias to `truncate(str, maxChars, append, true);`. - -See: [`truncate()`](#truncate) - -### Example - -```js -crop('lorem ipsum dolor', 10); // "lorem..." -crop('lorem ipsum dolor', 10, '+'); // "lorem+" -``` - - - -## endsWith(str, suffix):Boolean - -Checks if string ends with specified suffix. - -See: [`startsWith()`](#startsWith), [`contains()`](#contains) - -### Example - -```js -endsWith('lorem ipsum', 'lorem'); // false -endsWith('lorem ipsum', 'ipsum'); // true -``` - - - -## escapeHtml(str):String - -Escapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`unescapeHtml()`](#unescapeHtml) - -### Example - -```js -escapeHtml('lorem & "ipsum"'); // "lorem &amp; &quot;ipsum&quot;" -``` - - - -## escapeRegExp(str):String - -Escape special chars to be used as literals in RegExp constructors. - -### Example - -```js -str = escapeRegExp('[lorem.ipsum]'); // "\\[lorem\\.ipsum\\]" -reg = new RegExp(str); // /\[lorem\.ipsum\]/ -``` - - - -## escapeUnicode(str[, shouldEscapePrintable]):String - -Unicode escape chars. - -It will only escape non-printable ASCII chars unless `shouldEscapePrintable` is -set to `true`. - -See: [`unescapeUnicode()`](#unescapeUnicode) - -```js -escapeUnicode('føo bÃ¥r'); -// > "f\u00f8o b\u00e5r" -escapeUnicode('føo bÃ¥r', true); -// > "\u0066\u00f8\u006f\u0020\u0062\u00e5\u0072" -``` - - - -## hyphenate(str):String - -Replaces spaces with hyphens, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`underscore()`](#underscore), -[`unhyphenate`](#unhyphenate) - -```js -hyphenate(' %# lorem ipsum ? $ dolor'); // "lorem-ipsum-dolor" -hyphenate('spéçïãl çhârs'); // "special-chars" -hyphenate('loremIpsum'); // "lorem-ipsum" -``` - - - -## interpolate(str, replacements[, syntax]):String - -String interpolation. Format/replace tokens with object properties. - -```js -var tmpl = 'Hello {{name}}!'; -interpolate(tmpl, {name: 'World'}); // "Hello World!" -interpolate(tmpl, {name: 'Lorem Ipsum'}); // "Hello Lorem Ipsum!" -``` - -It uses a mustache-like syntax by default but you can set your own format if -needed. You can also use Arrays for the replacements (since Arrays are -objects as well): - -```js -// matches everything inside "${}" -var syntax = /\$\{([^}]+)\}/g; -var tmpl = "Hello ${0}!"; -interpolate(tmpl, ['Foo Bar'], syntax); // "Hello Foo Bar!" -``` - - - -## lowerCase(str):String - -"Safer" `String.toLowerCase()`. (Used internally) - -### Example - -```js -(null).toLowerCase(); // Error! -(undefined).toLowerCase(); // Error! -lowerCase(null); // "" -lowerCase(undefined); // "" -``` - - - -## lpad(str, minLength[, char]):String - -Pad string from left with `char` if its' length is smaller than `minLen`. - -See: [`rpad()`](#rpad) - -### Example - -```js -lpad('a', 5); // " a" -lpad('a', 5, '-'); // "----a" -lpad('abc', 3, '-'); // "abc" -lpad('abc', 4, '-'); // "-abc" -``` - - - -## ltrim(str, [chars]):String - -Remove chars or white-spaces from beginning of string. - -`chars` is an array of chars to remove from the beginning of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`rtrim()`](#rtrim), [`trim()`](#trim) - -### Example - -```js -ltrim(' lorem ipsum '); // "lorem ipsum " -ltrim('--lorem ipsum--', ['-']); // "lorem ipsum--" -``` - - - -## makePath(...args):String - -Group arguments as path segments, if any of the args is `null` or `undefined` -it will be ignored from resulting path. It will also remove duplicate "/". - -See: [`array/join()`](array.html#join) - -### Example - -```js -makePath('lorem', 'ipsum', null, 'dolor'); // "lorem/ipsum/dolor" -makePath('foo///bar/'); // "foo/bar/" -``` - - - -## normalizeLineBreaks(str, [lineBreak]):String - -Normalize line breaks to a single format. Defaults to Unix `\n`. - -It handles DOS (`\r\n`), Mac (`\r`) and Unix (`\n`) formats. - -### Example - -```js -// "foo\nbar\nlorem\nipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum'); - -// "foo\rbar\rlorem\ripsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', '\r'); - -// "foo bar lorem ipsum" -normalizeLineBreaks('foo\nbar\r\nlorem\ripsum', ' '); -``` - - - -## pascalCase(str):String - -Convert string to "PascalCase" text. - -See: [`camelCase()`](#camelCase) - -### Example - -```js -pascalCase('lorem-ipsum-dolor'); // "LoremIpsumDolor" -pascalCase('lorem ipsum dolor'); // "LoremIpsumDolor" -``` - - - -## properCase(str):String - -UPPERCASE first char of each word, lowercase other chars. - -### Example - -```js -properCase('loRem iPSum'); // "Lorem Ipsum" -``` - - - -## removeNonASCII(str):String - -Remove [non-printable ASCII -chars](http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters). - -### Example - -```js -removeNonASCII('äÄçÇéÉêlorem-ipsumöÖÃþúÚ'); // "lorem-ipsum" -``` - - - -## removeNonWord(str):String - -Remove non-word chars. - -### Example - -```js -var str = 'lorem ~!@#$%^&*()_+`-={}[]|\\:";\'/?><., ipsum'; -removeNonWord(str); // "lorem - ipsum" -``` - - - -## repeat(str, n):String - -Repeat string n-times. - -### Example - -```js -repeat('a', 3); // "aaa" -repeat('bc', 2); // "bcbc" -repeat('a', 0); // "" -``` - - - -## replace(str, search, replacements):String - -Replace string(s) with the replacement(s) in the source. - -`search` and `replacements` can be an array, or a single item. For every item -in `search`, it will call `str.replace` with the search item and the matching -replacement in `replacements`. If `replacements` only contains one replacement, -it will be used for all the searches, otherwise it will use the replacement at -the same index as the search. - -### Example - -```js -replace('foo bar', 'foo', 'test'); // "test bar" -replace('test 1 2', ['1', '2'], 'n'); // "test n n" -replace('test 1 2', ['1', '2'], ['one', 'two']); // "test one two" -replace('123abc', [/\d/g, /[a-z]/g], ['0', '.']); // "000..." -``` - - - -## replaceAccents(str):String - -Replaces all accented chars with regular ones. - -**Important:** Only covers **Basic Latin** and **Latin-1** unicode chars. - -### Example - -```js -replaceAccents('spéçïãl çhârs'); // "special chars" -``` - - - -## rpad(str, minLength[, char]):String - -Pad string from right with `char` if its' length is smaller than `minLen`. - -See: [`lpad()`](#lpad) - -### Example - -```js -rpad('a', 5); // "a " -rpad('a', 5, '-'); // "a----" -rpad('abc', 3, '-'); // "abc" -rpad('abc', 4, '-'); // "abc-" -``` - - - -## rtrim(str, [chars]):String - -Remove chars or white-spaces from end of string. - -`chars` is an array of chars to remove from the end of the string. If -`chars` is not specified, Unicode whitespace chars will be used instead. - -See: [`trim()`](#trim), [`ltrim()`](#ltrim) - -### Example - -```js -rtrim(' lorem ipsum '); // " lorem ipsum" -rtrim('--lorem ipsum--', ['-']); // "--lorem ipsum" -``` - - - -## sentenceCase(str):String - -UPPERCASE first char of each sentence and lowercase other chars. - -### Example - -```js -var str = 'Lorem IpSum DoLOr. maeCeNnas Ullamcor.'; -sentenceCase(str); // "Lorem ipsum dolor. Maecennas ullamcor." -``` - - - -## stripHtmlTags(str):String - -Remove HTML/XML tags from string. - -### Example - -```js -var str = '<p><em>lorem</em> <strong>ipsum</strong></p>'; -stripHtmlTags(str); // "lorem ipsum" -``` - - - -## startsWith(str, prefix):Boolean - -Checks if string starts with specified prefix. - -See: [`endsWith()`](#endsWith), [`contains()`](#contains) - -### Example - -```js -startsWith('lorem ipsum', 'lorem'); // true -startsWith('lorem ipsum', 'ipsum'); // false -``` - - - -## slugify(str[, delimeter]):String - -Convert to lower case, remove accents, remove non-word chars and replace spaces -with the delimeter. The default delimeter is a hyphen. - -Note that this does not split camelCase text. - -See: [`hyphenate()`](#hyphenate) and [`underscore()`](#underscore) - -### Example - -```js -var str = 'loremIpsum dolor spéçïãl chârs'; -slugify(str); // "loremipsum-dolor-special-chars" -slugify(str, '_'); // "loremipsum_dolor_special_chars" -``` - - - -## trim(str, [chars]):String - -Remove chars or white-spaces from beginning and end of string. - -`chars` is an array of chars to remove from the beginning and end of the -string. If `chars` is not specified, Unicode whitespace chars will be used -instead. - -See: [`rtrim()`](#rtrim), [`ltrim()`](#ltrim) - -### Example - -```js -trim(' lorem ipsum '); // "lorem ipsum" -trim('-+-lorem ipsum-+-', ['-', '+']); // "lorem ipsum" -``` - - - -## truncate(str, maxChars, [append], [onlyFullWords]):String - -Limit number of chars. Returned string `length` will be `<= maxChars`. - -See: [`crop()`](#crop) - -### Arguments - - 1. `str` (String) : String - 2. `maxChars` (Number) : Maximum number of characters including `append.length`. - 3. `[append]` (String) : Value that should be added to the end of string. - Defaults to "...". - 4. `[onlyFullWords]` (Boolean) : If it shouldn't break words. Default is - `false`. (favor [`crop()`](#crop) since code will be clearer). - -### Example - -```js -truncate('lorem ipsum dolor', 11); // "lorem ip..." -truncate('lorem ipsum dolor', 11, '+'); // "lorem ipsu+" -truncate('lorem ipsum dolor', 11, null, true); // "lorem..." -``` - - - -## typecast(str):* - -Parses string and convert it into a native value. - -### Example - -```js -typecast('lorem ipsum'); // "lorem ipsum" -typecast('123'); // 123 -typecast('123.45'); // 123.45 -typecast('false'); // false -typecast('true'); // true -typecast('null'); // null -typecast('undefined'); // undefined -``` - - - -## unCamelCase(str, [delimiter]):String - -Add the delimiter between camelCase text and convert first char of each word to -lower case. - -The delimiter defaults to a space character. - -See: [`camelCase()`][#camelCase] - -### Example - -```js -unCamelCase('loremIpsumDolor'); // "lorem ipsum dolor" -unCamelCase('loremIpsumDolor', '-'); // "lorem-ipsum-color" -``` - - -## underscore(str):String - -Replaces spaces with underscores, split camelCase text, remove non-word chars, -remove accents and convert to lower case. - -See: [`slugify()`](#slugify), [`hyphenate()`](#hyphenate) - -```js -underscore(' %# lorem ipsum ? $ dolor'); // "lorem_ipsum_dolor" -underscore('spéçïãl çhârs'); // "special_chars" -underscore('loremIpsum'); // "lorem_ipsum" -``` - - - -## unescapeHtml(str):String - -Unescapes HTML special chars (`>`, `<`, `&`, `"`, `'`). - -See: [`escapeHtml()`](#escapeHtml) - -### Example - -```js -unescapeHtml('lorem &amp; &quot;ipsum&quot;'); // 'lorem & "ipsum"' -``` - - - -## unescapeUnicode(str):String - -Unescapes unicode char sequences. - -See: [`escapeUnicode()`](#escapeUnicode) - -```js -unescapeUnicode('\\u0066\\u00f8\\u006f\\u0020\\u0062\\u00e5\\u0072'); -// > 'føo bÃ¥r' -``` - - - -## unhyphenate(str):String - -Replaces hyphens with spaces. (only hyphens between word chars) - -See : [`hyphenate()`](#hyphenate) - -### Example - -```js -unhyphenate('lorem-ipsum-dolor'); // "lorem ipsum dolor" -``` - - -## upperCase(str):String - -"Safer" `String.toUpperCase()`. (Used internally) - -### Example - -```js -(null).toUpperCase(); // Error! -(undefined).toUpperCase(); // Error! -upperCase(null); // "" -upperCase(undefined); // "" -``` - - - -## WHITE_SPACES:Array - -Constant array of all [Unicode white-space -characters](http://en.wikipedia.org/wiki/Whitespace_character). - - - -------------------------------------------------------------------------------- - -For more usage examples check specs inside `/tests` folder. Unit tests are the -best documentation you can get... - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md deleted file mode 100644 index 628c2a9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/doc/time.md +++ /dev/null @@ -1,64 +0,0 @@ -# time # - -Utilities for time manipulation. - - -## convert(value, sourceUnit, [destinationUnit]):Number - -Converts time between units. - -Available units: `millisecond`, `second`, `minute`, `hour`, `day`, `week`. -Abbreviations: `ms`, `s`, `m`, `h`, `d`, `w`. - -We do **not** support year and month as a time unit since their values are not -fixed. - -The default `destinationUnit` is `ms`. - -```js -convert(1, 'minute'); // 60000 -convert(2.5, 's', 'ms'); // 2500 -convert(2, 'm', 's'); // 120 -convert(500, 'ms', 's'); // 0.5 -``` - - - -## now():Number - -Returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. -Uses `Date.now()` if available. - -### Example - -```js -now(); // 1335449614650 -``` - - - -## parseMs(ms):Object - -Parse timestamp (milliseconds) into an object `{milliseconds:number, -seconds:number, minutes:number, hours:number, days:number}`. - -### Example - -```js -// {days:27, hours:4, minutes:26, seconds:5, milliseconds:454} -parseMs(2348765454); -``` - - - -## toTimeString(ms):String - -Convert timestamp (milliseconds) into a time string in the format "[H:]MM:SS". - -### Example - -```js -toTimeString(12513); // "00:12" -toTimeString(951233); // "15:51" -toTimeString(8765235); // "2:26:05" -``` diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function.js deleted file mode 100644 index 43a16ef4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function.js +++ /dev/null @@ -1,18 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js deleted file mode 100644 index 71bc1257..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - module.exports = bind; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js deleted file mode 100644 index 8cd5c5f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - module.exports = compose; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js deleted file mode 100644 index a0ed07f5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/debounce.js +++ /dev/null @@ -1,29 +0,0 @@ - - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - return debounced; - } - - module.exports = debounce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js deleted file mode 100644 index b81bf0a8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - module.exports = func; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js deleted file mode 100644 index 767610a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/makeIterator_.js +++ /dev/null @@ -1,34 +0,0 @@ -var prop = require('./prop'); -var deepMatches = require('../object/deepMatches'); - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'object': - // typeof null == "object" - return (src != null)? function(val, key, target){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - case 'function': - if (typeof thisObj === 'undefined') { - return src; - } else { - return function(val, i, arr){ - return src.call(thisObj, val, i, arr); - }; - } - default: - return src; - } - } - - module.exports = makeIterator; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js deleted file mode 100644 index d63ff1be..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - module.exports = partial; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js deleted file mode 100644 index 734acb7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - module.exports = prop; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js deleted file mode 100644 index 25159c2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ - - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - module.exports = series; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js deleted file mode 100644 index 619dc540..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/throttle.js +++ /dev/null @@ -1,32 +0,0 @@ -var now = require('../time/now'); - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - return throttled; - } - - module.exports = throttle; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js deleted file mode 100644 index e0d21a66..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ - - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - module.exports = timeout; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/index.js deleted file mode 100644 index 32a1c639..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/**@license - * mout v0.6.0 | http://moutjs.com | MIT license - */ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'VERSION' : '0.6.0', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang.js deleted file mode 100644 index b9816218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang.js +++ /dev/null @@ -1,36 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toString' : require('./lang/toString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js deleted file mode 100644 index 33c4e949..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/clone.js +++ /dev/null @@ -1,49 +0,0 @@ -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); -var mixIn = require('../object/mixIn'); - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - module.exports = clone; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js deleted file mode 100644 index bbc14c1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -var mixIn = require('../object/mixIn'); - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - module.exports = createObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js deleted file mode 100644 index d68dc506..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ - - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - module.exports = ctorApply; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js deleted file mode 100644 index 25fd95f1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/deepClone.js +++ /dev/null @@ -1,48 +0,0 @@ -var clone = require('./clone'); -var forOwn = require('../object/forOwn'); -var kindOf = require('./kindOf'); -var isPlainObject = require('./isPlainObject'); - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - module.exports = deepClone; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js deleted file mode 100644 index 1111b2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/defaults.js +++ /dev/null @@ -1,17 +0,0 @@ -var toArray = require('./toArray'); -var find = require('../array/find'); - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - module.exports = defaults; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js deleted file mode 100644 index cd8a379e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/inheritPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -var createObject = require('./createObject'); - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - } - - module.exports = inheritPrototype; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js deleted file mode 100644 index 4a835739..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ - - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - module.exports = is; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js deleted file mode 100644 index f7b08ba4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -var isKind = require('./isKind'); - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - module.exports = isArgs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js deleted file mode 100644 index 262ee400..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - module.exports = isArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js deleted file mode 100644 index 86557cb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - module.exports = isBoolean; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js deleted file mode 100644 index 4a5130f2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - module.exports = isDate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js deleted file mode 100644 index 0e9f77da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isEmpty.js +++ /dev/null @@ -1,24 +0,0 @@ -var forOwn = require('../object/forOwn'); -var isArray = require('./isArray'); - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - module.exports = isEmpty; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js deleted file mode 100644 index 6d4006f9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -var isNumber = require('./isNumber'); - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - module.exports = isFinite; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js deleted file mode 100644 index 216879f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - module.exports = isFunction; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js deleted file mode 100644 index 29f95d96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - module.exports = isInteger; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js deleted file mode 100644 index 02301e04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -var kindOf = require('./kindOf'); - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - module.exports = isKind; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js deleted file mode 100644 index f6efeb1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNaN.js +++ /dev/null @@ -1,15 +0,0 @@ -var isNumber = require('./isNumber'); - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - return !isNumber(val) || val != +val; - } - - module.exports = isNaN; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js deleted file mode 100644 index 6252f9ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - */ - function isNull(val){ - return val === null; - } - module.exports = isNull; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js deleted file mode 100644 index 126c1cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - module.exports = isNumber; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js deleted file mode 100644 index 7350c891..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - module.exports = isObject; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js deleted file mode 100644 index 0d2d7b65..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isPlainObject.js +++ /dev/null @@ -1,14 +0,0 @@ - - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value - && typeof value === 'object' - && value.constructor === Object); - } - - module.exports = isPlainObject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js deleted file mode 100644 index fc5459a9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - module.exports = isRegExp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js deleted file mode 100644 index f8906584..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -var isKind = require('./isKind'); - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - module.exports = isString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js deleted file mode 100644 index fb2261df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ - - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - module.exports = isUndef; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js deleted file mode 100644 index 9dad58ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -var is = require('./is'); - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - module.exports = isnt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js deleted file mode 100644 index 663464d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ - - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - module.exports = kindOf; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js deleted file mode 100644 index e39b8734..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -var kindOf = require('./kindOf'); - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - module.exports = toArray; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js deleted file mode 100644 index ae5c2b0f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - module.exports = toString; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math.js deleted file mode 100644 index c6ee889b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math.js +++ /dev/null @@ -1,19 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js deleted file mode 100644 index a279e158..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - module.exports = ceil; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js deleted file mode 100644 index e929a9a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - module.exports = clamp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js deleted file mode 100644 index 60ac90c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ - - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - module.exports = countSteps; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js deleted file mode 100644 index 9de50531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - module.exports = floor; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js deleted file mode 100644 index 763218f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - module.exports = inRange; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js deleted file mode 100644 index 45486b6d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - module.exports = isNear; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js deleted file mode 100644 index 111e2717..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ - - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - module.exports = lerp; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js deleted file mode 100644 index 35207c1a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - module.exports = loop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js deleted file mode 100644 index 96c4b787..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/map.js +++ /dev/null @@ -1,11 +0,0 @@ -var lerp = require('./lerp'); -var norm = require('./norm'); - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - module.exports = map; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js deleted file mode 100644 index 54caf78a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ - - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - module.exports = norm; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js deleted file mode 100644 index d108e6cd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - module.exports = round; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number.js deleted file mode 100644 index 0b6186cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number.js +++ /dev/null @@ -1,21 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js deleted file mode 100644 index 1d6f0e48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ - - module.exports = 2147483647; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js deleted file mode 100644 index 700da0f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ - - module.exports = 4294967295; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js deleted file mode 100644 index b34ab2ce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ - - module.exports = -2147483648; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js deleted file mode 100644 index dd6716b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -var enforcePrecision = require('./enforcePrecision'); - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - module.exports = abbreviateNumber; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js deleted file mode 100644 index 1cf02497..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/currencyFormat.js +++ /dev/null @@ -1,26 +0,0 @@ - - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - module.exports = currencyFormat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js deleted file mode 100644 index f73a92d7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/enforcePrecision.js +++ /dev/null @@ -1,13 +0,0 @@ - - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) -> - * 0.61` - */ - function enforcePrecision(val, nDecimalDigits){ - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - module.exports = enforcePrecision; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js deleted file mode 100644 index da752706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -var lpad = require('../string/lpad'); - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - return lpad(''+ n, minLength, char || '0'); - } - - module.exports = pad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js deleted file mode 100644 index ecd58da4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - module.exports = rol; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js deleted file mode 100644 index 2eda81da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ - - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - module.exports = ror; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js deleted file mode 100644 index b854a4ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * Get sign of the value. - */ - function sign(val) { - var num = Number(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - module.exports = sign; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js deleted file mode 100644 index bcefae0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toInt.js +++ /dev/null @@ -1,15 +0,0 @@ - - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - return ~~val; - } - - module.exports = toInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js deleted file mode 100644 index 5290b627..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - return val >>> 0; - } - - module.exports = toUInt; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js deleted file mode 100644 index fcc5a97c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/number/toUInt31.js +++ /dev/null @@ -1,13 +0,0 @@ -var MAX_INT = require('./MAX_INT'); - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - module.exports = toUInt31; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object.js deleted file mode 100644 index 76c06424..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object.js +++ /dev/null @@ -1,42 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js deleted file mode 100644 index b2f27d08..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/bindAll.js +++ /dev/null @@ -1,18 +0,0 @@ -var functions = require('./functions'); -var bind = require('../function/bind'); -var forEach = require('../array/forEach'); - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - module.exports = bindAll; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js deleted file mode 100644 index 8076e2c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -var some = require('./some'); - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js deleted file mode 100644 index fcde9449..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepEquals.js +++ /dev/null @@ -1,27 +0,0 @@ -var isObject = require('../lang/isObject'); -var equals = require('./equals'); - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - module.exports = deepEquals; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js deleted file mode 100644 index d27db44d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepFillIn.js +++ /dev/null @@ -1,32 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) - && isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - module.exports = deepFillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js deleted file mode 100644 index 3366c52d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMatches.js +++ /dev/null @@ -1,55 +0,0 @@ -var forOwn = require('./forOwn'); -var isArray = require('../lang/isArray'); - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - module.exports = deepMatches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js deleted file mode 100644 index a97e98d0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/deepMixIn.js +++ /dev/null @@ -1,34 +0,0 @@ -var forOwn = require('./forOwn'); -var isPlainObject = require('../lang/isPlainObject'); - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - module.exports = deepMixIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js deleted file mode 100644 index f50cbe4e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/equals.js +++ /dev/null @@ -1,36 +0,0 @@ -var hasOwn = require('./hasOwn'); -var every = require('./every'); -var isObject = require('../lang/isObject'); - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - module.exports = equals; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js deleted file mode 100644 index 01106e5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/every.js +++ /dev/null @@ -1,23 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - module.exports = every; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js deleted file mode 100644 index 80dcdf07..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/fillIn.js +++ /dev/null @@ -1,20 +0,0 @@ -var forEach = require('../array/forEach'); -var forOwn = require('./forOwn'); - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - module.exports = fillIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js deleted file mode 100644 index 3a83a92f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/filter.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - module.exports = filterValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js deleted file mode 100644 index d39c0706..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/find.js +++ /dev/null @@ -1,21 +0,0 @@ -var some = require('./some'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - module.exports = find; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js deleted file mode 100644 index 367f08ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ - - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - module.exports = forIn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js deleted file mode 100644 index 5f2dfbfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/forOwn.js +++ /dev/null @@ -1,19 +0,0 @@ -var hasOwn = require('./hasOwn'); -var forIn = require('./forIn'); - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - module.exports = forOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js deleted file mode 100644 index f5717979..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -var forIn = require('./forIn'); - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - module.exports = functions; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js deleted file mode 100644 index 6673561e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ - - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object') return; - } - - return obj[last]; - } - - module.exports = get; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js deleted file mode 100644 index ca9f2289..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -var get = require('./get'); - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - module.exports = has; - - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js deleted file mode 100644 index 7e3c82ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - module.exports = hasOwn; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js deleted file mode 100644 index dd2f4f55..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - module.exports = keys; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js deleted file mode 100644 index dd449a78..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/map.js +++ /dev/null @@ -1,18 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - module.exports = mapValues; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js deleted file mode 100644 index 6074faa2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - module.exports = matches; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js deleted file mode 100644 index 3e8e92c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/max.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMax = require('../array/max'); -var values = require('./values'); - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - module.exports = max; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js deleted file mode 100644 index 6961f608..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/merge.js +++ /dev/null @@ -1,40 +0,0 @@ -var hasOwn = require('./hasOwn'); -var deepClone = require('../lang/deepClone'); -var isObject = require('../lang/isObject'); - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - module.exports = merge; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js deleted file mode 100644 index e1e66976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/min.js +++ /dev/null @@ -1,12 +0,0 @@ -var arrMin = require('../array/min'); -var values = require('./values'); - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - module.exports = min; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js deleted file mode 100644 index 55ec8fd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - module.exports = mixIn; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js deleted file mode 100644 index c6e79f63..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -var forEach = require('../array/forEach'); - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - module.exports = namespace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js deleted file mode 100644 index 74e56f98..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - module.exports = pick; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js deleted file mode 100644 index e844df47..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/pluck.js +++ /dev/null @@ -1,13 +0,0 @@ -var map = require('./map'); -var prop = require('../function/prop'); - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - module.exports = pluck; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js deleted file mode 100644 index 6f19a3a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reduce.js +++ /dev/null @@ -1,29 +0,0 @@ -var forOwn = require('./forOwn'); -var size = require('./size'); - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - module.exports = reduce; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js deleted file mode 100644 index 74643795..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/reject.js +++ /dev/null @@ -1,16 +0,0 @@ -var filter = require('./filter'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - module.exports = reject; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js deleted file mode 100644 index 9b3cdc48..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -var namespace = require('./namespace'); - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - module.exports = set; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js deleted file mode 100644 index 97885953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - module.exports = size; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js deleted file mode 100644 index 384c6f3c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/some.js +++ /dev/null @@ -1,21 +0,0 @@ -var forOwn = require('./forOwn'); -var makeIterator = require('../function/makeIterator_'); - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - module.exports = some; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js deleted file mode 100644 index 343bca0a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -var has = require('./has'); - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - module.exports = unset; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js deleted file mode 100644 index 265a6938..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -var forOwn = require('./forOwn'); - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - module.exports = values; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/package.json deleted file mode 100644 index a3c16824..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "mout", - "description": "Modular Utilities", - "version": "0.6.0", - "homepage": "http://moutjs.com/", - "contributors": [ - { - "name": "Adam Nowotny" - }, - { - "name": "André Cruz", - "email": "amdfcruz@gmail.com" - }, - { - "name": "Conrad Zimmerman", - "url": "http://www.conradz.com" - }, - { - "name": "Friedemann Altrock", - "email": "frodenius@gmail.com" - }, - { - "name": "Jarrod Overson", - "url": "http://jarrodoverson.com" - }, - { - "name": "Miller Medeiros", - "email": "contact@millermedeiros.com", - "url": "http://blog.millermedeiros.com" - }, - { - "name": "Zach Shipley" - } - ], - "keywords": [ - "utilities", - "functional", - "amd-utils", - "stdlib" - ], - "repository": { - "type": "git", - "url": "git://github.com/mout/mout.git" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - } - ], - "bugs": { - "url": "https://github.com/mout/mout/issues/" - }, - "main": "./index.js", - "scripts": { - "prepublish": "node build cjs .", - "pretest": "node build pkg", - "test": "node node_modules/istanbul/lib/cli test tests/runner.js --hook-run-in-context" - }, - "directories": { - "doc": "./doc" - }, - "devDependencies": { - "istanbul": "~0.1.27", - "jasmine-node": "~1.2.2", - "requirejs": "2.x", - "nodefy": "*", - "mdoc": "~0.3.2", - "handlebars": "~1.0.6", - "commander": "~1.0.5", - "rocambole": "~0.2.3" - }, - "testling": { - "preprocess": "node build testling", - "browsers": { - "ie": [ - 7, - 8, - 9, - 10 - ], - "firefox": [ - 17, - "nightly" - ], - "chrome": [ - 23, - "canary" - ], - "opera": [ - 12, - "next" - ], - "safari": [ - 5.1, - 6 - ], - "iphone": [ - 6 - ], - "ipad": [ - 6 - ] - }, - "scripts": [ - "tests/lib/jasmine/jasmine.js", - "tests/lib/jasmine/jasmine.async.js", - "tests/lib/jasmine/jasmine-tap.js", - "tests/lib/requirejs/require.js", - "tests/testling/src.js", - "tests/testling/specs.js", - "tests/runner.js" - ] - }, - "readme": "![mout](http://moutjs.com/logo.png \"Modular JavaScript Utilties\")\n\nhttp://moutjs.com/\n\n[![Build Status](https://travis-ci.org/mout/mout.png?branch=master)](https://travis-ci.org/mout/mout)\n\nAll code is library agnostic and consist mostly of helper methods that aren't\ndirectly related with the DOM, the purpose of this library isn't to replace\nDojo, jQuery, YUI, Mootools, etc, but to provide modular solutions for common\nproblems that aren't solved by most of them. Consider it as a crossbrowser\nJavaScript standard library.\n\n\n\n## Main goals ##\n\n - increase code reuse;\n - be clear (code should be clean/readable);\n - be easy to debug;\n - be easy to maintain;\n - follow best practices;\n - follow standards when possible;\n - **don't convert JavaScript into another language!**\n - be compatible with other frameworks;\n - be modular;\n - have unit tests for all modules;\n - work on multiple environments (IE7+, modern browsers, node.js);\n\n\n\n## What shouldn't be here ##\n\n - UI components;\n - CSS selector engine;\n - Event system - pub/sub;\n - Template engine;\n - Anything that isn't generic enough to be on a standard library;\n - Anything that could be a separate library and/or isn't a modular utility...\n\n\n\n## API Documentation ##\n\nOnline documentation can be found at http://moutjs.com/ or inside the\n`doc` folder.\n\n\n\n## FAQ / Wiki / IRC ##\n\nFor more info about project structure, design decisions, tips, how to\ncontribute, build system, etc, please check the [project\nwiki](https://github.com/mout/mout/wiki).\n\nWe also have an IRC channel [#moutjs on\nirc.freenode.net](http://webchat.freenode.net/?channels=moutjs)\n\n\n\n## License ##\n\nReleased under the [MIT License](http://www.opensource.org/licenses/mit-license.php).\n\n", - "readmeFilename": "README.md", - "_id": "mout@0.6.0", - "_from": "mout@~0.6.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js deleted file mode 100644 index 22685a7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js deleted file mode 100644 index da678cf4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -var getQuery = require('./getQuery'); - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - module.exports = contains; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js deleted file mode 100644 index 7e689990..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/decode.js +++ /dev/null @@ -1,21 +0,0 @@ -var typecast = require('../string/typecast'); -var isString = require('../lang/isString'); - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - n = queryArr.length, - obj = {}, - item, val; - while (n--) { - item = queryArr[n].split('='); - val = shouldTypecast === false? item[1] : typecast(item[1]); - obj[item[0]] = isString(val)? decodeURIComponent(val) : val; - } - return obj; - } - - module.exports = decode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js deleted file mode 100644 index 6d2b12f8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/encode.js +++ /dev/null @@ -1,15 +0,0 @@ -var forOwn = require('../object/forOwn'); - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = []; - forOwn(obj, function(val, key){ - query.push( key +'='+ encodeURIComponent(val) ); - }); - return (query.length)? '?'+ query.join('&') : ''; - } - - module.exports = encode; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js deleted file mode 100644 index f149c3ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getParam.js +++ /dev/null @@ -1,15 +0,0 @@ -var typecast = require('../string/typecast'); -var getQuery = require('./getQuery'); - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - module.exports = getParam; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js deleted file mode 100644 index 5194af2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ - - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - module.exports = getQuery; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js deleted file mode 100644 index 532906c0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/parse.js +++ /dev/null @@ -1,13 +0,0 @@ -var decode = require('./decode'); -var getQuery = require('./getQuery'); - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - module.exports = parse; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js deleted file mode 100644 index 052a9ba6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ - - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - module.exports = setParam; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random.js deleted file mode 100644 index d9267f01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random.js +++ /dev/null @@ -1,16 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js deleted file mode 100644 index 51aa82a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/choice.js +++ /dev/null @@ -1,15 +0,0 @@ -var randInt = require('./randInt'); -var isArray = require('../lang/isArray'); - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - module.exports = choice; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js deleted file mode 100644 index 41f6eddc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/guid.js +++ /dev/null @@ -1,24 +0,0 @@ -var randHex = require('./randHex'); -var choice = require('./choice'); - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - module.exports = guid; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js deleted file mode 100644 index 782dec88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/rand.js +++ /dev/null @@ -1,15 +0,0 @@ -var random = require('./random'); -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - module.exports = rand; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js deleted file mode 100644 index bd20b4a0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - module.exports = randomBit; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js deleted file mode 100644 index d8d711c3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -var choice = require('./choice'); - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - module.exports = randHex; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js deleted file mode 100644 index e237d964..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randInt.js +++ /dev/null @@ -1,18 +0,0 @@ -var MIN_INT = require('../number/MIN_INT'); -var MAX_INT = require('../number/MAX_INT'); -var rand = require('./rand'); - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - module.exports = randInt; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js deleted file mode 100644 index 5a9fed76..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -var random = require('./random'); - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - module.exports = randomSign; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js deleted file mode 100644 index 670a3cc4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ - - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - module.exports = random; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js deleted file mode 100644 index 7bcc961b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array.js +++ /dev/null @@ -1,46 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'append' : require('./array/append'), - 'collect' : require('./array/collect'), - 'combine' : require('./array/combine'), - 'compact' : require('./array/compact'), - 'contains' : require('./array/contains'), - 'difference' : require('./array/difference'), - 'every' : require('./array/every'), - 'filter' : require('./array/filter'), - 'find' : require('./array/find'), - 'findIndex' : require('./array/findIndex'), - 'flatten' : require('./array/flatten'), - 'forEach' : require('./array/forEach'), - 'indexOf' : require('./array/indexOf'), - 'insert' : require('./array/insert'), - 'intersection' : require('./array/intersection'), - 'invoke' : require('./array/invoke'), - 'join' : require('./array/join'), - 'lastIndexOf' : require('./array/lastIndexOf'), - 'map' : require('./array/map'), - 'max' : require('./array/max'), - 'min' : require('./array/min'), - 'pick' : require('./array/pick'), - 'pluck' : require('./array/pluck'), - 'range' : require('./array/range'), - 'reduce' : require('./array/reduce'), - 'reduceRight' : require('./array/reduceRight'), - 'reject' : require('./array/reject'), - 'remove' : require('./array/remove'), - 'removeAll' : require('./array/removeAll'), - 'shuffle' : require('./array/shuffle'), - 'some' : require('./array/some'), - 'sort' : require('./array/sort'), - 'split' : require('./array/split'), - 'toLookup' : require('./array/toLookup'), - 'union' : require('./array/union'), - 'unique' : require('./array/unique'), - 'xor' : require('./array/xor'), - 'zip' : require('./array/zip') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js deleted file mode 100644 index 549d8754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/append.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - /** - * Appends an array to the end of another. - * The first array will be modified. - */ - function append(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var pad = arr1.length, - i = -1, - len = arr2.length; - while (++i < len) { - arr1[pad + i] = arr2[i]; - } - return arr1; - } - return append; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js deleted file mode 100644 index 8f60cda2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/collect.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./append', '../function/makeIterator_'], function (append, makeIterator) { - - /** - * Maps the items in the array and concatenates the result arrays. - */ - function collect(arr, callback, thisObj){ - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - var value = callback(arr[i], i, arr); - if (value != null) { - append(results, value); - } - } - - return results; - } - - return collect; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js deleted file mode 100644 index 22efb860..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/combine.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * Combines an array with all the items of another. - * Does not allow duplicates and is case and type sensitive. - */ - function combine(arr1, arr2) { - if (arr2 == null) { - return arr1; - } - - var i = -1, len = arr2.length; - while (++i < len) { - if (indexOf(arr1, arr2[i]) === -1) { - arr1.push(arr2[i]); - } - } - - return arr1; - } - return combine; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js deleted file mode 100644 index 02a81098..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/compact.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./filter'], function (filter) { - - /** - * Remove all null/undefined items from array. - */ - function compact(arr) { - return filter(arr, function(val){ - return (val != null); - }); - } - - return compact; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js deleted file mode 100644 index fca4f7cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/contains.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./indexOf'], function (indexOf) { - - /** - * If array contains values. - */ - function contains(arr, val) { - return indexOf(arr, val) !== -1; - } - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js deleted file mode 100644 index 819bda3e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/difference.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./unique', './filter', './some', './contains'], function (unique, filter, some, contains) { - - - /** - * Return a new Array with elements that aren't present in the other Arrays. - */ - function difference(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return !some(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return difference; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js deleted file mode 100644 index 78ba46d3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/every.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array every - */ - function every(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (!callback(arr[i], i, arr) ) { - result = false; - break; - } - } - - return result; - } - - return every; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js deleted file mode 100644 index 52cf685a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/filter.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Array filter - */ - function filter(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js deleted file mode 100644 index 3957dcd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/find.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./findIndex'], function (findIndex) { - - /** - * Returns first item that matches criteria - */ - function find(arr, iterator, thisObj){ - var idx = findIndex(arr, iterator, thisObj); - return idx >= 0? arr[idx] : void(0); - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js deleted file mode 100644 index 59dfeeb9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/findIndex.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Returns the index of the first item that matches criteria - */ - function findIndex(arr, iterator, thisObj){ - iterator = makeIterator(iterator, thisObj); - if (arr == null) { - return -1; - } - - var i = -1, len = arr.length; - while (++i < len) { - if (iterator(arr[i], i, arr)) { - return i; - } - } - - return -1; - } - - return findIndex; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js deleted file mode 100644 index 42e87f43..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/flatten.js +++ /dev/null @@ -1,42 +0,0 @@ -define(['../lang/isArray', './append'], function (isArray, append) { - - /* - * Helper function to flatten to a destination array. - * Used to remove the need to create intermediate arrays while flattening. - */ - function flattenTo(arr, result, level) { - if (arr == null) { - return result; - } else if (level === 0) { - append(result, arr); - return result; - } - - var value, - i = -1, - len = arr.length; - while (++i < len) { - value = arr[i]; - if (isArray(value)) { - flattenTo(value, result, level - 1); - } else { - result.push(value); - } - } - return result; - } - - /** - * Recursively flattens an array. - * A new array containing all the elements is returned. - * If `shallow` is true, it will only flatten one level. - */ - function flatten(arr, level) { - level = level == null? -1 : level; - return flattenTo(arr, [], level); - } - - return flatten; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js deleted file mode 100644 index 0e045868..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/forEach.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Array forEach - */ - function forEach(arr, callback, thisObj) { - if (arr == null) { - return; - } - var i = -1, - len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback.call(thisObj, arr[i], i, arr) === false ) { - break; - } - } - } - - return forEach; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js deleted file mode 100644 index 0e75f99b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/indexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array.indexOf - */ - function indexOf(arr, item, fromIndex) { - fromIndex = fromIndex || 0; - if (arr == null) { - return -1; - } - - var len = arr.length, - i = fromIndex < 0 ? len + fromIndex : fromIndex; - while (i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[i] === item) { - return i; - } - - i++; - } - - return -1; - } - - return indexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js deleted file mode 100644 index d8d831f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/insert.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./difference', '../lang/toArray'], function (difference, toArray) { - - /** - * Insert item into array if not already present. - */ - function insert(arr, rest_items) { - var diff = difference(toArray(arguments).slice(1), arr); - if (diff.length) { - Array.prototype.push.apply(arr, diff); - } - return arr.length; - } - return insert; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js deleted file mode 100644 index 64e6ee97..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/intersection.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./unique', './filter', './every', './contains'], function (unique, filter, every, contains) { - - - /** - * Return a new Array with elements common to all Arrays. - * - based on underscore.js implementation - */ - function intersection(arr) { - var arrs = Array.prototype.slice.call(arguments, 1), - result = filter(unique(arr), function(needle){ - return every(arrs, function(haystack){ - return contains(haystack, needle); - }); - }); - return result; - } - - return intersection; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js deleted file mode 100644 index a2e78b39..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/invoke.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./forEach'], function (forEach) { - - /** - * Call `methodName` on each item of the array passing custom arguments if - * needed. - */ - function invoke(arr, methodName, var_args){ - if (arr == null) { - return arr; - } - - var args = Array.prototype.slice.call(arguments, 2); - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - value[methodName].apply(value, args); - } - - return arr; - } - - return invoke; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js deleted file mode 100644 index 2c618d29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/join.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./filter'], function(filter) { - - function isValidString(val) { - return (val != null && val !== ''); - } - - /** - * Joins strings with the specified separator inserted between each value. - * Null values and empty strings will be excluded. - */ - function join(items, separator) { - separator = separator || ''; - return filter(items, isValidString).join(separator); - } - - return join; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js deleted file mode 100644 index 931235f4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/lastIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Array lastIndexOf - */ - function lastIndexOf(arr, item, fromIndex) { - if (arr == null) { - return -1; - } - - var len = arr.length; - fromIndex = (fromIndex == null || fromIndex >= len)? len - 1 : fromIndex; - fromIndex = (fromIndex < 0)? len + fromIndex : fromIndex; - - while (fromIndex >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if (arr[fromIndex] === item) { - return fromIndex; - } - fromIndex--; - } - - return -1; - } - - return lastIndexOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js deleted file mode 100644 index 1580b481..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/map.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Array map - */ - function map(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null){ - return results; - } - - var i = -1, len = arr.length; - while (++i < len) { - results[i] = callback(arr[i], i, arr); - } - - return results; - } - - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js deleted file mode 100644 index a7326c89..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/max.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Return maximum value inside array - */ - function max(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return Infinity; - } else if (arr.length && !iterator) { - return Math.max.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = -Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp > compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return max; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js deleted file mode 100644 index 41644480..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/min.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * Return minimum value inside array - */ - function min(arr, iterator, thisObj){ - if (arr == null || !arr.length) { - return -Infinity; - } else if (arr.length && !iterator) { - return Math.min.apply(Math, arr); - } else { - iterator = makeIterator(iterator, thisObj); - var result, - compare = Infinity, - value, - temp; - - var i = -1, len = arr.length; - while (++i < len) { - value = arr[i]; - temp = iterator(value, i, arr); - if (temp < compare) { - compare = temp; - result = value; - } - } - - return result; - } - } - - return min; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js deleted file mode 100644 index 97d7f595..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pick.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../random/randInt'], function (randInt) { - - /** - * Remove a random item from the Array and return it - */ - function pick(arr){ - if (arr == null || !arr.length) return; - var idx = randInt(0, arr.length - 1); - return arr.splice(idx, 1)[0]; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js deleted file mode 100644 index c908856e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(arr, propName){ - return map(arr, propName); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js deleted file mode 100644 index 148ebf96..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/range.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../math/countSteps'], function (countSteps) { - - /** - * Returns an Array of numbers inside range. - */ - function range(start, stop, step) { - if (stop == null) { - stop = start; - start = 0; - } - step = step || 1; - - var result = [], - nSteps = countSteps(stop - start, step), - i = start; - - while (i <= stop) { - result.push(i); - i += step; - } - - return result; - } - - return range; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js deleted file mode 100644 index 88aacfd5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduce.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forEach'], function (forEach) { - - /** - * Array reduce - */ - function reduce(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2, - result = initVal; - - if (arr == null || !arr.length) { - if (!hasInit) { - throw new Error('reduce of empty array with no initial value'); - } else { - return initVal; - } - } - - var i = -1, len = arr.length; - while (++i < len) { - if (!hasInit) { - result = arr[i]; - hasInit = true; - } else { - result = fn(result, arr[i], i, arr); - } - } - - return result; - } - - return reduce; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js deleted file mode 100644 index ddae0e7f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ -define(function () { - - /** - * Array reduceRight - */ - function reduceRight(arr, fn, initVal) { - // check for args.length since initVal might be "undefined" see #gh-57 - var hasInit = arguments.length > 2; - - if (arr == null || !arr.length) { - if (hasInit) { - return initVal; - } else { - throw new Error('reduce of empty array with no initial value'); - } - } - - var i = arr.length, result = initVal, value; - while (--i >= 0) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - value = arr[i]; - if (!hasInit) { - result = value; - hasInit = true; - } else { - result = fn(result, value, i, arr); - } - } - return result; - } - - return reduceRight; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js deleted file mode 100644 index db105dde..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/reject.js +++ /dev/null @@ -1,25 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function(forEach, makeIterator) { - - /** - * Array reject - */ - function reject(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var results = []; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - value = arr[i]; - if (!callback(value, i, arr)) { - results.push(value); - } - } - - return results; - } - - return reject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js deleted file mode 100644 index dec9134d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/remove.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove a single item from the array. - * (it won't remove duplicates, just a single item) - */ - function remove(arr, item){ - var idx = indexOf(arr, item); - if (idx !== -1) arr.splice(idx, 1); - } - - return remove; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js deleted file mode 100644 index e81022b8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/removeAll.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./indexOf'], function(indexOf){ - - /** - * Remove all instances of an item from array. - */ - function removeAll(arr, item){ - var idx = indexOf(arr, item); - while (idx !== -1) { - arr.splice(idx, 1); - idx = indexOf(arr, item, idx); - } - } - - return removeAll; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js deleted file mode 100644 index f5a60972..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/shuffle.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../random/randInt', './forEach'], function (randInt, forEach) { - - /** - * Shuffle array items. - */ - function shuffle(arr) { - var results = [], - rnd; - if (arr == null) { - return results; - } - - var i = -1, len = arr.length, value; - while (++i < len) { - if (!i) { - results[0] = arr[0]; - } else { - rnd = randInt(0, i); - results[i] = results[rnd]; - results[rnd] = arr[i]; - } - } - - return results; - } - - return shuffle; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js deleted file mode 100644 index e46a9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/some.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['../function/makeIterator_'], function (makeIterator) { - - /** - * Array some - */ - function some(arr, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length; - while (++i < len) { - // we iterate over sparse items since there is no way to make it - // work properly on IE 7-8. see #64 - if ( callback(arr[i], i, arr) ) { - result = true; - break; - } - } - - return result; - } - - return some; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js deleted file mode 100644 index 4c194042..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/sort.js +++ /dev/null @@ -1,55 +0,0 @@ -define(function () { - - /** - * Merge sort (http://en.wikipedia.org/wiki/Merge_sort) - */ - function mergeSort(arr, compareFn) { - if (arr == null) { - return []; - } else if (arr.length < 2) { - return arr; - } - - if (compareFn == null) { - compareFn = defaultCompare; - } - - var mid, left, right; - - mid = ~~(arr.length / 2); - left = mergeSort( arr.slice(0, mid), compareFn ); - right = mergeSort( arr.slice(mid, arr.length), compareFn ); - - return merge(left, right, compareFn); - } - - function defaultCompare(a, b) { - return a < b ? -1 : (a > b? 1 : 0); - } - - function merge(left, right, compareFn) { - var result = []; - - while (left.length && right.length) { - if (compareFn(left[0], right[0]) <= 0) { - // if 0 it should preserve same order (stable) - result.push(left.shift()); - } else { - result.push(right.shift()); - } - } - - if (left.length) { - result.push.apply(result, left); - } - - if (right.length) { - result.push.apply(result, right); - } - - return result; - } - - return mergeSort; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js deleted file mode 100644 index a17275eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/split.js +++ /dev/null @@ -1,35 +0,0 @@ -define(function() { - - /** - * Split array into a fixed number of segments. - */ - function split(array, segments) { - segments = segments || 2; - var results = []; - if (array == null) { - return results; - } - - var minLength = Math.floor(array.length / segments), - remainder = array.length % segments, - i = 0, - len = array.length, - segmentIndex = 0, - segmentLength; - - while (i < len) { - segmentLength = minLength; - if (segmentIndex < remainder) { - segmentLength++; - } - - results.push(array.slice(i, i + segmentLength)); - - segmentIndex++; - i += segmentLength; - } - - return results; - } - return split; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js deleted file mode 100644 index aac8fd1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/toLookup.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['../lang/isFunction'], function (isFunction) { - - /** - * Creates an object that holds a lookup for the objects in the array. - */ - function toLookup(arr, key) { - var result = {}; - if (arr == null) { - return result; - } - - var i = -1, len = arr.length, value; - if (isFunction(key)) { - while (++i < len) { - value = arr[i]; - result[key(value)] = value; - } - } else { - while (++i < len) { - value = arr[i]; - result[value[key]] = value; - } - } - - return result; - } - return toLookup; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js deleted file mode 100644 index 5f9922e5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/union.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./unique', './append'], function (unique, append) { - - /** - * Concat multiple arrays and remove duplicates - */ - function union(arrs) { - var results = []; - var i = -1, len = arguments.length; - while (++i < len) { - append(results, arguments[i]); - } - - return unique(results); - } - - return union; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js deleted file mode 100644 index c4bd23b4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/unique.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./indexOf', './filter'], function(indexOf, filter){ - - /** - * @return {array} Array of unique items - */ - function unique(arr){ - return filter(arr, isUnique); - } - - function isUnique(item, i, arr){ - return indexOf(arr, item, i+1) === -1; - } - - return unique; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js deleted file mode 100644 index 7df89d9c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/xor.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['./unique', './filter', './contains'], function (unique, filter, contains) { - - - /** - * Exclusive OR. Returns items that are present in a single array. - * - like ptyhon's `symmetric_difference` - */ - function xor(arr1, arr2) { - arr1 = unique(arr1); - arr2 = unique(arr2); - - var a1 = filter(arr1, function(item){ - return !contains(arr2, item); - }), - a2 = filter(arr2, function(item){ - return !contains(arr1, item); - }); - - return a1.concat(a2); - } - - return xor; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js deleted file mode 100644 index 374cd282..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/array/zip.js +++ /dev/null @@ -1,27 +0,0 @@ -define(['./max', './pluck', './map'], function (max, pluck, map) { - - function getLength(arr) { - return arr == null ? 0 : arr.length; - } - - /** - * Merges together the values of each of the arrays with the values at the - * corresponding position. - */ - function zip(arr){ - var len = arr ? max(map(arguments, getLength)) : 0, - results = [], - i = -1, - item; - while (++i < len) { - results.push(map(arguments, function(item) { - return item == null ? undefined : item[i]; - })); - } - - return results; - } - - return zip; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js deleted file mode 100644 index 386e6da9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./collection/contains'), - 'every' : require('./collection/every'), - 'filter' : require('./collection/filter'), - 'find' : require('./collection/find'), - 'forEach' : require('./collection/forEach'), - 'make_' : require('./collection/make_'), - 'map' : require('./collection/map'), - 'max' : require('./collection/max'), - 'min' : require('./collection/min'), - 'pluck' : require('./collection/pluck'), - 'reduce' : require('./collection/reduce'), - 'reject' : require('./collection/reject'), - 'size' : require('./collection/size'), - 'some' : require('./collection/some') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js deleted file mode 100644 index 192167e8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/contains.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/contains', '../object/contains'], function (make, arrContains, objContains) { - - /** - */ - return make(arrContains, objContains); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js deleted file mode 100644 index 6317f503..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/every.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/every', '../object/every'], function (make, arrEvery, objEvery) { - - /** - */ - return make(arrEvery, objEvery); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js deleted file mode 100644 index 4e7fadc8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/filter.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forEach', '../function/makeIterator_'], function (forEach, makeIterator) { - - /** - * filter collection values, returns array. - */ - function filter(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - var results = []; - if (!list) { - return results; - } - forEach(list, function(value, index, list) { - if (iterator(value, index, list)) { - results[results.length] = value; - } - }); - return results; - } - - return filter; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js deleted file mode 100644 index 681f9414..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/find.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/find', '../object/find'], function(make, arrFind, objFind) { - - /** - * Find value that returns true on iterator check. - */ - return make(arrFind, objFind); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js deleted file mode 100644 index 3b39d3ed..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/forEach.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/forEach', '../object/forOwn'], function (make, arrForEach, objForEach) { - - /** - */ - return make(arrForEach, objForEach); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js deleted file mode 100644 index 312e0564..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/make_.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(){ - - /** - * internal method used to create other collection modules. - */ - function makeCollectionMethod(arrMethod, objMethod, defaultReturn) { - return function(){ - var args = Array.prototype.slice.call(arguments); - if (args[0] == null) { - return defaultReturn; - } - // array-like is treated as array - return (typeof args[0].length === 'number')? arrMethod.apply(null, args) : objMethod.apply(null, args); - }; - } - - return makeCollectionMethod; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js deleted file mode 100644 index 96e24987..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/map.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/isObject', '../object/values', '../array/map', '../function/makeIterator_'], function (isObject, values, arrMap, makeIterator) { - - /** - * Map collection values, returns Array. - */ - function map(list, callback, thisObj) { - callback = makeIterator(callback, thisObj); - // list.length to check array-like object, if not array-like - // we simply map all the object values - if( isObject(list) && list.length == null ){ - list = values(list); - } - return arrMap(list, function (val, key, list) { - return callback(val, key, list); - }); - } - - return map; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js deleted file mode 100644 index de9a6da5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/max.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/max', '../object/max'], function (make, arrMax, objMax) { - - /** - * Get maximum value inside collection - */ - return make(arrMax, objMax); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js deleted file mode 100644 index f0c239a6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/min.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./make_', '../array/min', '../object/min'], function (make, arrMin, objMin) { - - /** - * Get minimum value inside collection. - */ - return make(arrMin, objMin); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js deleted file mode 100644 index ef784a7a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/pluck.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./map'], function (map) { - - /** - * Extract a list of property values. - */ - function pluck(list, key) { - return map(list, function(value) { - return value[key]; - }); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js deleted file mode 100644 index bd05d43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reduce.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/reduce', '../object/reduce'], function (make, arrReduce, objReduce) { - - /** - */ - return make(arrReduce, objReduce); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js deleted file mode 100644 index 581adfdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Inverse or collection/filter - */ - function reject(list, iterator, thisObj) { - iterator = makeIterator(iterator, thisObj); - return filter(list, function(value, index, list) { - return !iterator(value, index, list); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js deleted file mode 100644 index 4e5ab419..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/size.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/isArray', '../object/size'], function (isArray, objSize) { - - /** - * Get collection size - */ - function size(list) { - if (!list) { - return 0; - } - if (isArray(list)) { - return list.length; - } - return objSize(list); - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js deleted file mode 100644 index c0aebee2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/collection/some.js +++ /dev/null @@ -1,7 +0,0 @@ -define(['./make_', '../array/some', '../object/some'], function (make, arrSome, objSome) { - - /** - */ - return make(arrSome, objSome); - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js deleted file mode 100644 index 4d449150..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'dayOfTheYear' : require('./date/dayOfTheYear'), - 'diff' : require('./date/diff'), - 'i18n_' : require('./date/i18n_'), - 'isLeapYear' : require('./date/isLeapYear'), - 'isSame' : require('./date/isSame'), - 'parseIso' : require('./date/parseIso'), - 'startOf' : require('./date/startOf'), - 'strftime' : require('./date/strftime'), - 'timezoneAbbr' : require('./date/timezoneAbbr'), - 'timezoneOffset' : require('./date/timezoneOffset'), - 'totalDaysInMonth' : require('./date/totalDaysInMonth'), - 'totalDaysInYear' : require('./date/totalDaysInYear'), - 'weekOfTheYear' : require('./date/weekOfTheYear') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js deleted file mode 100644 index dc77ae1b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/dayOfTheYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * return the day of the year (1..366) - */ - function dayOfTheYear(date){ - return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - - Date.UTC(date.getFullYear(), 0, 1)) / 86400000 + 1; - } - - return dayOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js deleted file mode 100644 index 667165fe..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/diff.js +++ /dev/null @@ -1,128 +0,0 @@ -define(['./totalDaysInMonth', './totalDaysInYear', '../time/convert'], function(totalDaysInMonth, totalDaysInYear, convert){ - - /** - * calculate the difference between dates (range) - */ - function diff(start, end, unitName){ - // sort the dates to make it easier to process (specially year/month) - if (start > end) { - var swap = start; - start = end; - end = swap; - } - - var output; - - if (unitName === 'month') { - output = getMonthsDiff(start, end); - } else if (unitName === 'year'){ - output = getYearsDiff(start, end); - } else if (unitName != null) { - if (unitName === 'day') { - // ignore timezone difference because of daylight savings time - start = toUtc(start); - end = toUtc(end); - } - output = convert(end - start, 'ms', unitName); - } else { - output = end - start; - } - - return output; - } - - - function toUtc(d){ - // we ignore timezone differences on purpose because of daylight - // savings time, otherwise it would return fractional days/weeks even - // if a full day elapsed. eg: - // Wed Feb 12 2014 00:00:00 GMT-0200 (BRST) - // Sun Feb 16 2014 00:00:00 GMT-0300 (BRT) - // diff should be 4 days and not 4.041666666666667 - return Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), - d.getHours(), d.getMinutes(), d.getSeconds(), - d.getMilliseconds()); - } - - - function getMonthsDiff(start, end){ - return getElapsedMonths(start, end) + - getElapsedYears(start, end) * 12 + - getFractionalMonth(start, end); - } - - - function getYearsDiff(start, end){ - var elapsedYears = getElapsedYears(start, end); - return elapsedYears + getFractionalYear(start, end, elapsedYears); - } - - - function getElapsedMonths(start, end){ - var monthDiff = end.getMonth() - start.getMonth(); - if (monthDiff < 0) { - monthDiff += 12; - } - // less than a full month - if (start.getDate() > end.getDate()) { - monthDiff -= 1; - } - return monthDiff; - } - - - function getElapsedYears(start, end){ - var yearDiff = end.getFullYear() - start.getFullYear(); - // less than a full year - if (start.getMonth() > end.getMonth()) { - yearDiff -= 1; - } - return yearDiff; - } - - - function getFractionalMonth(start, end){ - var fractionalDiff = 0; - var startDay = start.getDate(); - var endDay = end.getDate(); - - if (startDay !== endDay) { - var startTotalDays = totalDaysInMonth(start); - var endTotalDays = totalDaysInMonth(end); - var totalDays; - var daysElapsed; - - if (startDay > endDay) { - // eg: Jan 29 - Feb 27 (29 days elapsed but not a full month) - var baseDay = startTotalDays - startDay; - daysElapsed = endDay + baseDay; - // total days should be relative to 1st day of next month if - // startDay > endTotalDays - totalDays = (startDay > endTotalDays)? - endTotalDays + baseDay + 1 : startDay + baseDay; - } else { - // fractional is only based on endMonth eg: Jan 12 - Feb 18 - // (6 fractional days, 28 days until next full month) - daysElapsed = endDay - startDay; - totalDays = endTotalDays; - } - - fractionalDiff = daysElapsed / totalDays; - } - - return fractionalDiff; - } - - - function getFractionalYear(start, end, elapsedYears){ - var base = elapsedYears? - new Date(end.getFullYear(), start.getMonth(), start.getDate()) : - start; - var elapsedDays = diff(base, end, 'day'); - return elapsedDays / totalDaysInYear(end); - } - - - return diff; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js deleted file mode 100644 index 5e640c22..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/en-US.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // en-US (English, United States) - return { - "am" : "AM", - "pm" : "PM", - - "x": "%m/%d/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %I:%M:%S %p %Z", - - "months" : [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - - "months_abbr" : [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - - "days" : [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - - "days_abbr" : [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js deleted file mode 100644 index 47256dd2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n/pt-BR.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function(){ - // pt-BR (Brazillian Portuguese) - return { - "am" : "", - "pm" : "", - - "x": "%d/%m/%y", - "X": "%H:%M:%S", - "c": "%a %d %b %Y %H:%M:%S %Z", - - "months" : [ - "Janeiro", - "Fevereiro", - "Março", - "Abril", - "Maio", - "Junho", - "Julho", - "Agosto", - "Setembro", - "Outubro", - "Novembro", - "Dezembro" - ], - - "months_abbr" : [ - "Jan", - "Fev", - "Mar", - "Abr", - "Mai", - "Jun", - "Jul", - "Ago", - "Set", - "Out", - "Nov", - "Dez" - ], - - "days" : [ - "Domingo", - "Segunda", - "Terça", - "Quarta", - "Quinta", - "Sexta", - "Sábado" - ], - - "days_abbr" : [ - "Dom", - "Seg", - "Ter", - "Qua", - "Qui", - "Sex", - "Sáb" - ] - }; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js deleted file mode 100644 index c04ce885..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/i18n_.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../object/mixIn', './i18n/en-US'], function(mixIn, enUS){ - - // we also use mixIn to make sure we don't affect the original locale - var activeLocale = mixIn({}, enUS, { - // we expose a "set" method to allow overriding the global locale - set : function(localeData){ - mixIn(activeLocale, localeData); - } - }); - - return activeLocale; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js deleted file mode 100644 index e400b43d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isLeapYear.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/isDate'], function (isDate) { - - /** - * checks if it's a leap year - */ - function isLeapYear(fullYear){ - if (isDate(fullYear)) { - fullYear = fullYear.getFullYear(); - } - return fullYear % 400 === 0 || (fullYear % 100 !== 0 && fullYear % 4 === 0); - } - - return isLeapYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js deleted file mode 100644 index f30531fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/isSame.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./startOf'], function (startOf) { - - /** - * Check if date is "same" with optional period - */ - function isSame(date1, date2, period){ - if (period) { - date1 = startOf(date1, period); - date2 = startOf(date2, period); - } - return Number(date1) === Number(date2); - } - - return isSame; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js deleted file mode 100644 index 9a2aacb0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/parseIso.js +++ /dev/null @@ -1,146 +0,0 @@ -define(['../array/some'], function (some) { - - var datePatterns = [ - /^([0-9]{4})$/, // YYYY - /^([0-9]{4})-([0-9]{2})$/, // YYYY-MM (YYYYMM not allowed) - /^([0-9]{4})-?([0-9]{2})-?([0-9]{2})$/ // YYYY-MM-DD or YYYYMMDD - ]; - var ORD_DATE = /^([0-9]{4})-?([0-9]{3})$/; // YYYY-DDD - - var timePatterns = [ - /^([0-9]{2}(?:\.[0-9]*)?)$/, // HH.hh - /^([0-9]{2}):?([0-9]{2}(?:\.[0-9]*)?)$/, // HH:MM.mm - /^([0-9]{2}):?([0-9]{2}):?([0-9]{2}(\.[0-9]*)?)$/ // HH:MM:SS.ss - ]; - - var DATE_TIME = /^(.+)T(.+)$/; - var TIME_ZONE = /^(.+)([+\-])([0-9]{2}):?([0-9]{2})$/; - - function matchAll(str, patterns) { - var match; - var found = some(patterns, function(pattern) { - return !!(match = pattern.exec(str)); - }); - - return found ? match : null; - } - - function getDate(year, month, day) { - var date = new Date(Date.UTC(year, month, day)); - - // Explicitly set year to avoid Date.UTC making dates < 100 relative to - // 1900 - date.setUTCFullYear(year); - - var valid = - date.getUTCFullYear() === year && - date.getUTCMonth() === month && - date.getUTCDate() === day; - return valid ? +date : NaN; - } - - function parseOrdinalDate(str) { - var match = ORD_DATE.exec(str); - if (match ) { - var year = +match[1], - day = +match[2], - date = new Date(Date.UTC(year, 0, day)); - - if (date.getUTCFullYear() === year) { - return +date; - } - } - - return NaN; - } - - function parseDate(str) { - var match, year, month, day; - - var match = matchAll(str, datePatterns); - if (match === null) { - // Ordinal dates are verified differently. - return parseOrdinalDate(str); - } - - year = (match[1] === void 0) ? 0 : +match[1]; - month = (match[2] === void 0) ? 0 : +match[2] - 1; - day = (match[3] === void 0) ? 1 : +match[3]; - - return getDate(year, month, day); - } - - function getTime(hr, min, sec) { - var valid = - (hr < 24 && hr >= 0 && - min < 60 && min >= 0 && - sec < 60 && min >= 0) || - (hr === 24 && min === 0 && sec === 0); - if (!valid) { - return NaN; - } - - return ((hr * 60 + min) * 60 + sec) * 1000; - } - - function parseOffset(str) { - var match; - if (str.charAt(str.length - 1) === 'Z') { - str = str.substring(0, str.length - 1); - } else if ((match = TIME_ZONE.exec(str))) { - var match = TIME_ZONE.exec(str); - if (match) { - var hours = +match[3], - minutes = (match[4] === void 0) ? 0 : +match[4], - offset = getTime(hours, minutes, 0); - - if (match[2] === '-') { - offset *= -1; - } - - return { offset: offset, time: match[1] }; - } - } - - // No time zone specified, assume UTC - return { offset: 0, time: str }; - } - - function parseTime(str) { - var match; - var offset = parseOffset(str); - - str = offset.time; - offset = offset.offset; - if (isNaN(offset)) { - return NaN; - } - - match = matchAll(str, timePatterns); - if (match === null) { - return NaN; - } - - var hours = (match[1] === void 0) ? 0 : +match[1], - minutes = (match[2] === void 0) ? 0 : +match[2], - seconds = (match[3] === void 0) ? 0 : +match[3]; - - return getTime(hours, minutes, seconds) - offset; - } - - /** - * Parse an ISO8601 formatted date string, and return a Date object. - */ - function parseISO8601(str){ - var match = DATE_TIME.exec(str); - if (!match) { - // No time specified - return parseDate(str); - } - - return parseDate(match[1]) + parseTime(match[2]); - } - - return parseISO8601; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js deleted file mode 100644 index 747f114d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/startOf.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['../lang/clone'], function (clone) { - - /** - * get a new Date object representing start of period - */ - function startOf(date, period){ - date = clone(date); - - // intentionally removed "break" from switch since start of - // month/year/etc should also reset the following periods - switch (period) { - case 'year': - date.setMonth(0); - /* falls through */ - case 'month': - date.setDate(1); - /* falls through */ - case 'week': - case 'day': - date.setHours(0); - /* falls through */ - case 'hour': - date.setMinutes(0); - /* falls through */ - case 'minute': - date.setSeconds(0); - /* falls through */ - case 'second': - date.setMilliseconds(0); - break; - default: - throw new Error('"'+ period +'" is not a valid period'); - } - - // week is the only case that should reset the weekDay and maybe even - // overflow to previous month - if (period === 'week') { - var weekDay = date.getDay(); - var baseDate = date.getDate(); - if (weekDay) { - if (weekDay >= baseDate) { - //start of the week is on previous month - date.setDate(0); - } - date.setDate(date.getDate() - date.getDay()); - } - } - - return date; - } - - return startOf; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js deleted file mode 100644 index dd782505..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/strftime.js +++ /dev/null @@ -1,113 +0,0 @@ -define(['../number/pad', './i18n_', './dayOfTheYear', './timezoneOffset', './timezoneAbbr', './weekOfTheYear'], function (pad, i18n, dayOfTheYear, timezoneOffset, timezoneAbbr, weekOfTheYear) { - - var _combinations = { - 'D': '%m/%d/%y', - 'F': '%Y-%m-%d', - 'r': '%I:%M:%S %p', - 'R': '%H:%M', - 'T': '%H:%M:%S', - 'x': 'locale', - 'X': 'locale', - 'c': 'locale' - }; - - - /** - * format date based on strftime format - */ - function strftime(date, format, localeData){ - localeData = localeData || i18n; - var reToken = /%([a-z%])/gi; - - function makeIterator(fn) { - return function(match, token){ - return fn(date, token, localeData); - }; - } - - return format - .replace(reToken, makeIterator(expandCombinations)) - .replace(reToken, makeIterator(convertToken)); - } - - - function expandCombinations(date, token, l10n){ - if (token in _combinations) { - var expanded = _combinations[token]; - return expanded === 'locale'? l10n[token] : expanded; - } else { - return '%'+ token; - } - } - - - function convertToken(date, token, l10n){ - switch (token){ - case 'a': - return l10n.days_abbr[date.getDay()]; - case 'A': - return l10n.days[date.getDay()]; - case 'h': - case 'b': - return l10n.months_abbr[date.getMonth()]; - case 'B': - return l10n.months[date.getMonth()]; - case 'C': - return pad(Math.floor(date.getFullYear() / 100), 2); - case 'd': - return pad(date.getDate(), 2); - case 'e': - return pad(date.getDate(), 2, ' '); - case 'H': - return pad(date.getHours(), 2); - case 'I': - return pad(date.getHours() % 12, 2); - case 'j': - return pad(dayOfTheYear(date), 3); - case 'L': - return pad(date.getMilliseconds(), 3); - case 'm': - return pad(date.getMonth() + 1, 2); - case 'M': - return pad(date.getMinutes(), 2); - case 'n': - return '\n'; - case 'p': - return date.getHours() >= 12? l10n.pm : l10n.am; - case 'P': - return convertToken(date, 'p', l10n).toLowerCase(); - case 's': - return date.getTime() / 1000; - case 'S': - return pad(date.getSeconds(), 2); - case 't': - return '\t'; - case 'u': - var day = date.getDay(); - return day === 0? 7 : day; - case 'U': - return pad(weekOfTheYear(date), 2); - case 'w': - return date.getDay(); - case 'W': - return pad(weekOfTheYear(date, 1), 2); - case 'y': - return pad(date.getFullYear() % 100, 2); - case 'Y': - return pad(date.getFullYear(), 4); - case 'z': - return timezoneOffset(date); - case 'Z': - return timezoneAbbr(date); - case '%': - return '%'; - default: - // keep unrecognized tokens - return '%'+ token; - } - } - - - return strftime; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js deleted file mode 100644 index 225a6856..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneAbbr.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./timezoneOffset'], function(timezoneOffset) { - - /** - * Abbreviated time zone name or similar information. - */ - function timezoneAbbr(date){ - // Date.toString gives different results depending on the - // browser/system so we fallback to timezone offset - // chrome: 'Mon Apr 08 2013 09:02:04 GMT-0300 (BRT)' - // IE: 'Mon Apr 8 09:02:04 UTC-0300 2013' - var tz = /\(([A-Z]{3,4})\)/.exec(date.toString()); - return tz? tz[1] : timezoneOffset(date); - } - - return timezoneAbbr; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js deleted file mode 100644 index ca06705d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/timezoneOffset.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/pad'], function (pad) { - - /** - * time zone as hour and minute offset from UTC (e.g. +0900) - */ - function timezoneOffset(date){ - var offset = date.getTimezoneOffset(); - var abs = Math.abs(offset); - var h = pad(Math.floor(abs / 60), 2); - var m = pad(abs % 60, 2); - return (offset > 0? '-' : '+') + h + m; - } - - return timezoneOffset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js deleted file mode 100644 index 98f7e9d1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInMonth.js +++ /dev/null @@ -1,24 +0,0 @@ -define(['../lang/isDate', './isLeapYear'], function (isDate, isLeapYear) { - - var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - - /** - * returns the total amount of days in the month (considering leap years) - */ - function totalDaysInMonth(fullYear, monthIndex){ - if (isDate(fullYear)) { - var date = fullYear; - year = date.getFullYear(); - monthIndex = date.getMonth(); - } - - if (monthIndex === 1 && isLeapYear(fullYear)) { - return 29; - } else { - return DAYS_IN_MONTH[monthIndex]; - } - } - - return totalDaysInMonth; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js deleted file mode 100644 index e9036b42..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/totalDaysInYear.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./isLeapYear'], function (isLeapYear) { - - /** - * return the amount of days in the year following the gregorian calendar - * and leap years - */ - function totalDaysInYear(fullYear){ - return isLeapYear(fullYear)? 366 : 365; - } - - return totalDaysInYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js deleted file mode 100644 index 8dabc458..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/date/weekOfTheYear.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./dayOfTheYear'], function (dayOfTheYear) { - - /** - * Return the week of the year based on given firstDayOfWeek - */ - function weekOfTheYear(date, firstDayOfWeek){ - firstDayOfWeek = firstDayOfWeek == null? 0 : firstDayOfWeek; - var doy = dayOfTheYear(date); - var dow = (7 + date.getDay() - firstDayOfWeek) % 7; - var relativeWeekDay = 6 - firstDayOfWeek - dow; - return Math.floor((doy + relativeWeekDay) / 7); - } - - return weekOfTheYear; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js deleted file mode 100644 index 23f4fd74..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bind' : require('./function/bind'), - 'compose' : require('./function/compose'), - 'debounce' : require('./function/debounce'), - 'func' : require('./function/func'), - 'makeIterator_' : require('./function/makeIterator_'), - 'partial' : require('./function/partial'), - 'prop' : require('./function/prop'), - 'series' : require('./function/series'), - 'throttle' : require('./function/throttle'), - 'timeout' : require('./function/timeout') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js deleted file mode 100644 index 09e5e20a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/bind.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function(){ - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Return a function that will execute in the given context, optionally adding any additional supplied parameters to the beginning of the arguments collection. - * @param {Function} fn Function. - * @param {object} context Execution context. - * @param {rest} args Arguments (0...n arguments). - * @return {Function} Wrapped Function. - */ - function bind(fn, context, args){ - var argsArr = slice(arguments, 2); //curried args - return function(){ - return fn.apply(context, argsArr.concat(slice(arguments))); - }; - } - - return bind; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js deleted file mode 100644 index d8b228fa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/compose.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Returns a function that composes multiple functions, passing results to - * each other. - */ - function compose() { - var fns = arguments; - return function(arg){ - // only cares about the first argument since the chain can only - // deal with a single return value anyway. It should start from - // the last fn. - var n = fns.length; - while (n--) { - arg = fns[n].call(this, arg); - } - return arg; - }; - } - - return compose; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js deleted file mode 100644 index 21644ecc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/debounce.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - /** - * Debounce callback execution - */ - function debounce(fn, threshold, isAsap){ - var timeout, result; - function debounced(){ - var args = arguments, context = this; - function delayed(){ - if (! isAsap) { - result = fn.apply(context, args); - } - timeout = null; - } - if (timeout) { - clearTimeout(timeout); - } else if (isAsap) { - result = fn.apply(context, args); - } - timeout = setTimeout(delayed, threshold); - return result; - } - return debounced; - } - - return debounce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js deleted file mode 100644 index b920e00e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/func.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that call a method on the passed object - */ - function func(name){ - return function(obj){ - return obj[name](); - }; - } - - return func; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js deleted file mode 100644 index deb6e137..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/makeIterator_.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./prop', '../object/deepMatches'], function(prop, deepMatches) { - - /** - * Converts argument into a valid iterator. - * Used internally on most array/object/collection methods that receives a - * callback/iterator providing a shortcut syntax. - */ - function makeIterator(src, thisObj){ - switch(typeof src) { - case 'object': - // typeof null == "object" - return (src != null)? function(val, key, target){ - return deepMatches(val, src); - } : src; - case 'string': - case 'number': - return prop(src); - case 'function': - if (typeof thisObj === 'undefined') { - return src; - } else { - return function(val, i, arr){ - return src.call(thisObj, val, i, arr); - }; - } - default: - return src; - } - } - - return makeIterator; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js deleted file mode 100644 index ad730746..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/partial.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Creates a partially applied function. - */ - function partial(fn, var_args){ - var argsArr = slice(arguments, 1); //curried args - return function(){ - return fn.apply(this, argsArr.concat(slice(arguments))); - }; - } - - return partial; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js deleted file mode 100644 index c9df78ca..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/prop.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Returns a function that gets a property of the passed object - */ - function prop(name){ - return function(obj){ - return obj[name]; - }; - } - - return prop; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js deleted file mode 100644 index c8856a27..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/series.js +++ /dev/null @@ -1,22 +0,0 @@ -define(function () { - - /** - * Returns a function that will execute a list of functions in sequence - * passing the same arguments to each one. (useful for batch processing - * items during a forEach loop) - */ - function series(){ - var fns = arguments; - return function(){ - var i = 0, - n = fns.length; - while (i < n) { - fns[i].apply(this, arguments); - i += 1; - } - }; - } - - return series; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js deleted file mode 100644 index 8ce3929a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/throttle.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../time/now'], function (now) { - - /** - */ - function throttle(fn, delay){ - var context, timeout, result, args, - cur, diff, prev = 0; - function delayed(){ - prev = now(); - timeout = null; - result = fn.apply(context, args); - } - function throttled(){ - context = this; - args = arguments; - cur = now(); - diff = delay - (cur - prev); - if (diff <= 0) { - clearTimeout(timeout); - prev = cur; - result = fn.apply(context, args); - } else if (! timeout) { - timeout = setTimeout(delayed, diff); - } - return result; - } - return throttled; - } - - return throttle; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js deleted file mode 100644 index 15388bdd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/function/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function () { - - function slice(arr, offset){ - return Array.prototype.slice.call(arr, offset || 0); - } - - /** - * Delays the call of a function within a given context. - */ - function timeout(fn, millis, context){ - - var args = slice(arguments, 3); - - return setTimeout(function() { - fn.apply(context, args); - }, millis); - } - - return timeout; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js deleted file mode 100644 index 744bb119..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/index.js +++ /dev/null @@ -1,24 +0,0 @@ -/**@license - * mout v0.6.0 | http://moutjs.com | MIT license - */ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'VERSION' : '0.6.0', - 'array' : require('./array'), - 'collection' : require('./collection'), - 'date' : require('./date'), - 'function' : require('./function'), - 'lang' : require('./lang'), - 'math' : require('./math'), - 'number' : require('./number'), - 'object' : require('./object'), - 'queryString' : require('./queryString'), - 'random' : require('./random'), - 'string' : require('./string'), - 'time' : require('./time') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js deleted file mode 100644 index de16b597..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang.js +++ /dev/null @@ -1,36 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'clone' : require('./lang/clone'), - 'createObject' : require('./lang/createObject'), - 'ctorApply' : require('./lang/ctorApply'), - 'deepClone' : require('./lang/deepClone'), - 'defaults' : require('./lang/defaults'), - 'inheritPrototype' : require('./lang/inheritPrototype'), - 'is' : require('./lang/is'), - 'isArguments' : require('./lang/isArguments'), - 'isArray' : require('./lang/isArray'), - 'isBoolean' : require('./lang/isBoolean'), - 'isDate' : require('./lang/isDate'), - 'isEmpty' : require('./lang/isEmpty'), - 'isFinite' : require('./lang/isFinite'), - 'isFunction' : require('./lang/isFunction'), - 'isInteger' : require('./lang/isInteger'), - 'isKind' : require('./lang/isKind'), - 'isNaN' : require('./lang/isNaN'), - 'isNull' : require('./lang/isNull'), - 'isNumber' : require('./lang/isNumber'), - 'isObject' : require('./lang/isObject'), - 'isPlainObject' : require('./lang/isPlainObject'), - 'isRegExp' : require('./lang/isRegExp'), - 'isString' : require('./lang/isString'), - 'isUndefined' : require('./lang/isUndefined'), - 'isnt' : require('./lang/isnt'), - 'kindOf' : require('./lang/kindOf'), - 'toArray' : require('./lang/toArray'), - 'toString' : require('./lang/toString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js deleted file mode 100644 index 468489a1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/clone.js +++ /dev/null @@ -1,47 +0,0 @@ -define(['./kindOf', './isPlainObject', '../object/mixIn'], function (kindOf, isPlainObject, mixIn) { - - /** - * Clone native types. - */ - function clone(val){ - switch (kindOf(val)) { - case 'Object': - return cloneObject(val); - case 'Array': - return cloneArray(val); - case 'RegExp': - return cloneRegExp(val); - case 'Date': - return cloneDate(val); - default: - return val; - } - } - - function cloneObject(source) { - if (isPlainObject(source)) { - return mixIn({}, source); - } else { - return source; - } - } - - function cloneRegExp(r) { - var flags = ''; - flags += r.multiline ? 'm' : ''; - flags += r.global ? 'g' : ''; - flags += r.ignorecase ? 'i' : ''; - return new RegExp(r.source, flags); - } - - function cloneDate(date) { - return new Date(+date); - } - - function cloneArray(arr) { - return arr.slice(); - } - - return clone; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js deleted file mode 100644 index f7661500..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/createObject.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../object/mixIn'], function(mixIn){ - - /** - * Create Object using prototypal inheritance and setting custom properties. - * - Mix between Douglas Crockford Prototypal Inheritance <http://javascript.crockford.com/prototypal.html> and the EcmaScript 5 `Object.create()` method. - * @param {object} parent Parent Object. - * @param {object} [props] Object properties. - * @return {object} Created object. - */ - function createObject(parent, props){ - function F(){} - F.prototype = parent; - return mixIn(new F(), props); - - } - return createObject; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js deleted file mode 100644 index a9ac1c54..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/ctorApply.js +++ /dev/null @@ -1,17 +0,0 @@ -define(function () { - - function F(){} - - /** - * Do fn.apply on a constructor. - */ - function ctorApply(ctor, args) { - F.prototype = ctor.prototype; - var instance = new F(); - ctor.apply(instance, args); - return instance; - } - - return ctorApply; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js deleted file mode 100644 index d45c10aa..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/deepClone.js +++ /dev/null @@ -1,45 +0,0 @@ -define(['./clone', '../object/forOwn', './kindOf', './isPlainObject'], function (clone, forOwn, kindOf, isPlainObject) { - - /** - * Recursively clone native types. - */ - function deepClone(val, instanceClone) { - switch ( kindOf(val) ) { - case 'Object': - return cloneObject(val, instanceClone); - case 'Array': - return cloneArray(val, instanceClone); - default: - return clone(val); - } - } - - function cloneObject(source, instanceClone) { - if (isPlainObject(source)) { - var out = {}; - forOwn(source, function(val, key) { - this[key] = deepClone(val, instanceClone); - }, out); - return out; - } else if (instanceClone) { - return instanceClone(source); - } else { - return source; - } - } - - function cloneArray(arr, instanceClone) { - var out = [], - i = -1, - n = arr.length, - val; - while (++i < n) { - out[i] = deepClone(arr[i], instanceClone); - } - return out; - } - - return deepClone; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js deleted file mode 100644 index 5156b1bb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/defaults.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./toArray', '../array/find'], function (toArray, find) { - - /** - * Return first non void argument - */ - function defaults(var_args){ - return find(toArray(arguments), nonVoid); - } - - function nonVoid(val){ - return val != null; - } - - return defaults; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js deleted file mode 100644 index c1fda3a7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/inheritPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./createObject'], function(createObject){ - - /** - * Inherit prototype from another Object. - * - inspired by Nicholas Zackas <http://nczonline.net> Solution - * @param {object} child Child object - * @param {object} parent Parent Object - */ - function inheritPrototype(child, parent){ - var p = createObject(parent.prototype); - p.constructor = child; - child.prototype = p; - } - - return inheritPrototype; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js deleted file mode 100644 index 261a2077..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/is.js +++ /dev/null @@ -1,23 +0,0 @@ -define(function () { - - /** - * Check if both arguments are egal. - */ - function is(x, y){ - // implementation borrowed from harmony:egal spec - if (x === y) { - // 0 === -0, but they are not identical - return x !== 0 || 1 / x === 1 / y; - } - - // NaN !== NaN, but they are identical. - // NaNs are the only non-reflexive value, i.e., if x !== x, - // then x is a NaN. - // isNaN is broken: it converts its argument to number, so - // isNaN("foo") => true - return x !== x && y !== y; - } - - return is; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js deleted file mode 100644 index f889ee8e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArguments.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isKind'], function (isKind) { - - /** - */ - var isArgs = isKind(arguments, 'Arguments')? - function(val){ - return isKind(val, 'Arguments'); - } : - function(val){ - // Arguments is an Object on IE7 - return !!(val && Object.prototype.hasOwnProperty.call(val, 'callee')); - }; - - return isArgs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js deleted file mode 100644 index 886e2aa5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isArray.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - var isArray = Array.isArray || function (val) { - return isKind(val, 'Array'); - }; - return isArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js deleted file mode 100644 index 1ca27a69..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isBoolean.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isBoolean(val) { - return isKind(val, 'Boolean'); - } - return isBoolean; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js deleted file mode 100644 index 2708d676..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isDate.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isDate(val) { - return isKind(val, 'Date'); - } - return isDate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js deleted file mode 100644 index 4cc3d2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isEmpty.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../object/forOwn', './isArray'], function (forOwn, isArray) { - - function isEmpty(val){ - if (val == null) { - // typeof null == 'object' so we check it first - return false; - } else if ( typeof val === 'string' || isArray(val) ) { - return !val.length; - } else if ( typeof val === 'object' || typeof val === 'function' ) { - var result = true; - forOwn(val, function(){ - result = false; - return false; // break loop - }); - return result; - } else { - return false; - } - } - - return isEmpty; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js deleted file mode 100644 index 5a982f4b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFinite.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - var global = this; - - /** - * Check if value is finite - */ - function isFinite(val){ - var is = false; - if (typeof val === 'string' && val !== '') { - is = global.isFinite( parseFloat(val) ); - } else if (isNumber(val)){ - // need to use isNumber because of Number constructor - is = global.isFinite( val ); - } - return is; - } - - return isFinite; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js deleted file mode 100644 index ff5df7f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isFunction.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isFunction(val) { - return isKind(val, 'Function'); - } - return isFunction; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js deleted file mode 100644 index 1931f516..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isInteger.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is an integer - */ - function isInteger(val){ - return isNumber(val) && (val % 1 === 0); - } - - return isInteger; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js deleted file mode 100644 index 6937a12f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isKind.js +++ /dev/null @@ -1,9 +0,0 @@ -define(['./kindOf'], function (kindOf) { - /** - * Check if value is from a specific "kind". - */ - function isKind(val, kind){ - return kindOf(val) === kind; - } - return isKind; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js deleted file mode 100644 index 9467a3c8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNaN.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./isNumber'], function (isNumber) { - - /** - * Check if value is NaN for realz - */ - function isNaN(val){ - // based on the fact that NaN !== NaN - // need to check if it's a number to avoid conflicts with host objects - // also need to coerce ToNumber to avoid edge case `new Number(NaN)` - return !isNumber(val) || val != +val; - } - - return isNaN; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js deleted file mode 100644 index 506e05ea..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNull.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function () { - /** - */ - function isNull(val){ - return val === null; - } - return isNull; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js deleted file mode 100644 index 9a832c5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isNumber.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isNumber(val) { - return isKind(val, 'Number'); - } - return isNumber; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js deleted file mode 100644 index 0befb063..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isObject.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isObject(val) { - return isKind(val, 'Object'); - } - return isObject; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js deleted file mode 100644 index 6c5854fd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isPlainObject.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function () { - - /** - * Checks if the value is created by the `Object` constructor. - */ - function isPlainObject(value) { - return (!!value - && typeof value === 'object' - && value.constructor === Object); - } - - return isPlainObject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js deleted file mode 100644 index d78a03da..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isRegExp.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isRegExp(val) { - return isKind(val, 'RegExp'); - } - return isRegExp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js deleted file mode 100644 index 8a42fe01..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isString.js +++ /dev/null @@ -1,8 +0,0 @@ -define(['./isKind'], function (isKind) { - /** - */ - function isString(val) { - return isKind(val, 'String'); - } - return isString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js deleted file mode 100644 index c57b28eb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isUndefined.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function () { - var UNDEF; - - /** - */ - function isUndef(val){ - return val === UNDEF; - } - return isUndef; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js deleted file mode 100644 index d4336222..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/isnt.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./is'], function (is) { - - /** - * Check if both values are not identical/egal - */ - function isnt(x, y){ - return !is(x, y); - } - - return isnt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js deleted file mode 100644 index 97d21d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/kindOf.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - var _rKind = /^\[object (.*)\]$/, - _toString = Object.prototype.toString, - UNDEF; - - /** - * Gets the "kind" of value. (e.g. "String", "Number", etc) - */ - function kindOf(val) { - if (val === null) { - return 'Null'; - } else if (val === UNDEF) { - return 'Undefined'; - } else { - return _rKind.exec( _toString.call(val) )[1]; - } - } - return kindOf; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js deleted file mode 100644 index 552916f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toArray.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./kindOf'], function (kindOf) { - - var _win = this; - - /** - * Convert array-like object into array - */ - function toArray(val){ - var ret = [], - kind = kindOf(val), - n; - - if (val != null) { - if ( val.length == null || kind === 'String' || kind === 'Function' || kind === 'RegExp' || val === _win ) { - //string, regexp, function have .length but user probably just want - //to wrap value into an array.. - ret[ret.length] = val; - } else { - //window returns true on isObject in IE7 and may have length - //property. `typeof NodeList` returns `function` on Safari so - //we can't use it (#58) - n = val.length; - while (n--) { - ret[n] = val[n]; - } - } - } - return ret; - } - return toArray; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js deleted file mode 100644 index c28b89af..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/lang/toString.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Typecast a value to a String, using an empty string value for null or - * undefined. - */ - function toString(val){ - return val == null ? '' : val.toString(); - } - - return toString; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js deleted file mode 100644 index e2ba8705..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'ceil' : require('./math/ceil'), - 'clamp' : require('./math/clamp'), - 'countSteps' : require('./math/countSteps'), - 'floor' : require('./math/floor'), - 'inRange' : require('./math/inRange'), - 'isNear' : require('./math/isNear'), - 'lerp' : require('./math/lerp'), - 'loop' : require('./math/loop'), - 'map' : require('./math/map'), - 'norm' : require('./math/norm'), - 'round' : require('./math/round') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js deleted file mode 100644 index d73b0581..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/ceil.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Round value up with a custom radix. - */ - function ceil(val, step){ - step = Math.abs(step || 1); - return Math.ceil(val / step) * step; - } - - return ceil; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js deleted file mode 100644 index fb5a1484..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/clamp.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Clamps value inside range. - */ - function clamp(val, min, max){ - return val < min? min : (val > max? max : val); - } - return clamp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js deleted file mode 100644 index 0ecb32f6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/countSteps.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(){ - /** - * Count number of full steps. - */ - function countSteps(val, step, overflow){ - val = Math.floor(val / step); - - if (overflow) { - return val % overflow; - } - - return val; - } - - return countSteps; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js deleted file mode 100644 index 8a4456b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/floor.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Floor value to full steps. - */ - function floor(val, step){ - step = Math.abs(step || 1); - return Math.floor(val / step) * step; - } - return floor; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js deleted file mode 100644 index 0c890536..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/inRange.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Checks if value is inside the range. - */ - function inRange(val, min, max, threshold){ - threshold = threshold || 0; - return (val + threshold >= min && val - threshold <= max); - } - - return inRange; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js deleted file mode 100644 index b308a0b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/isNear.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Check if value is close to target. - */ - function isNear(val, target, threshold){ - return (Math.abs(val - target) <= threshold); - } - return isNear; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js deleted file mode 100644 index 26b99d04..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/lerp.js +++ /dev/null @@ -1,11 +0,0 @@ -define(function(){ - /** - * Linear interpolation. - * IMPORTANT:will return `Infinity` if numbers overflow Number.MAX_VALUE - */ - function lerp(ratio, start, end){ - return start + (end - start) * ratio; - } - - return lerp; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js deleted file mode 100644 index c735ecf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/loop.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Loops value inside range. - */ - function loop(val, min, max){ - return val < min? max : (val > max? min : val); - } - - return loop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js deleted file mode 100644 index bf7dc5d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/map.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['./lerp', './norm'], function(lerp, norm){ - /** - * Maps a number from one scale to another. - * @example map(3, 0, 4, -1, 1) -> 0.5 - */ - function map(val, min1, max1, min2, max2){ - return lerp( norm(val, min1, max1), min2, max2 ); - } - return map; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js deleted file mode 100644 index fccae20e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/norm.js +++ /dev/null @@ -1,9 +0,0 @@ -define(function(){ - /** - * Gets normalized ratio of value inside range. - */ - function norm(val, min, max){ - return (val - min) / (max - min); - } - return norm; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js deleted file mode 100644 index b43e4ac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/math/round.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - /** - * Round number to a specific radix - */ - function round(value, radix){ - radix = radix || 1; // default round 1 - return Math.round(value / radix) * radix; - } - - return round; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js deleted file mode 100644 index cb52fc75..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number.js +++ /dev/null @@ -1,21 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'MAX_INT' : require('./number/MAX_INT'), - 'MAX_UINT' : require('./number/MAX_UINT'), - 'MIN_INT' : require('./number/MIN_INT'), - 'abbreviate' : require('./number/abbreviate'), - 'currencyFormat' : require('./number/currencyFormat'), - 'enforcePrecision' : require('./number/enforcePrecision'), - 'pad' : require('./number/pad'), - 'rol' : require('./number/rol'), - 'ror' : require('./number/ror'), - 'sign' : require('./number/sign'), - 'toInt' : require('./number/toInt'), - 'toUInt' : require('./number/toUInt'), - 'toUInt31' : require('./number/toUInt31') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js deleted file mode 100644 index 23a6e1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit signed integer value. (2^31 - 1) - */ -define(function(){ - return 2147483647; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js deleted file mode 100644 index a035096c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MAX_UINT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Maximum 32-bit unsigned integet value (2^32 - 1) - */ -define(function(){ - return 4294967295; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js deleted file mode 100644 index 9b3e9781..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/MIN_INT.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @constant Minimum 32-bit signed integer value (-2^31). - */ -define(function(){ - return -2147483648; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js deleted file mode 100644 index 7e7405ad..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/abbreviate.js +++ /dev/null @@ -1,35 +0,0 @@ -define(['./enforcePrecision'], function (enforcePrecision) { - - var _defaultDict = { - thousand : 'K', - million : 'M', - billion : 'B' - }; - - /** - * Abbreviate number if bigger than 1000. (eg: 2.5K, 17.5M, 3.4B, ...) - */ - function abbreviateNumber(val, nDecimals, dict){ - nDecimals = nDecimals != null? nDecimals : 1; - dict = dict || _defaultDict; - val = enforcePrecision(val, nDecimals); - - var str, mod; - - if (val < 1000000) { - mod = enforcePrecision(val / 1000, nDecimals); - // might overflow to next scale during rounding - str = mod < 1000? mod + dict.thousand : 1 + dict.million; - } else if (val < 1000000000) { - mod = enforcePrecision(val / 1000000, nDecimals); - str = mod < 1000? mod + dict.million : 1 + dict.billion; - } else { - str = enforcePrecision(val / 1000000000, nDecimals) + dict.billion; - } - - return str; - } - - return abbreviateNumber; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js deleted file mode 100644 index dcde8fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/currencyFormat.js +++ /dev/null @@ -1,26 +0,0 @@ -define(function () { - - /** - * Converts number into currency format - */ - function currencyFormat(val, nDecimalDigits, decimalSeparator, thousandsSeparator) { - nDecimalDigits = nDecimalDigits == null? 2 : nDecimalDigits; - decimalSeparator = decimalSeparator == null? '.' : decimalSeparator; - thousandsSeparator = thousandsSeparator == null? ',' : thousandsSeparator; - - //can't use enforce precision since it returns a number and we are - //doing a RegExp over the string - var fixed = val.toFixed(nDecimalDigits), - //separate begin [$1], middle [$2] and decimal digits [$4] - parts = new RegExp('^(-?\\d{1,3})((?:\\d{3})+)(\\.(\\d{'+ nDecimalDigits +'}))?$').exec( fixed ); - - if(parts){ //val >= 1000 || val <= -1000 - return parts[1] + parts[2].replace(/\d{3}/g, thousandsSeparator + '$&') + (parts[4] ? decimalSeparator + parts[4] : ''); - }else{ - return fixed.replace('.', decimalSeparator); - } - } - - return currencyFormat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js deleted file mode 100644 index 84554d0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/enforcePrecision.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function(){ - /** - * Enforce a specific amount of decimal digits and also fix floating - * point rounding issues. - * @example `enforcePrecision(0.615, 2) -> 0.62`, `(0.615).toFixed(2) -> - * 0.61` - */ - function enforcePrecision(val, nDecimalDigits){ - var pow = Math.pow(10, nDecimalDigits); - return +(Math.round(val * pow) / pow).toFixed(nDecimalDigits); - } - return enforcePrecision; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js deleted file mode 100644 index 3b2c062a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/pad.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../string/lpad'], function(lpad){ - - /** - * Add padding zeros if n.length < minLength. - */ - function pad(n, minLength, char){ - return lpad(''+ n, minLength, char || '0'); - } - - return pad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js deleted file mode 100644 index a148f444..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/rol.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift left - * http://en.wikipedia.org/wiki/Circular_shift - */ - function rol(val, shift){ - return (val << shift) | (val >> (32 - shift)); - } - return rol; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js deleted file mode 100644 index b5c66f92..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/ror.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(){ - /** - * Bitwise circular shift right - * http://en.wikipedia.org/wiki/Circular_shift - */ - function ror(val, shift){ - return (val >> shift) | (val << (32 - shift)); - } - return ror; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js deleted file mode 100644 index dfc131d5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/sign.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function () { - - /** - * Get sign of the value. - */ - function sign(val) { - var num = Number(val); - if (num === 0) return num; // +0 and +0 === 0 - if (isNaN(num)) return num; // NaN - return num < 0? -1 : 1; - } - - return sign; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js deleted file mode 100644 index 1e9b4c0b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toInt.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(){ - - /** - * "Convert" value into an 32-bit integer. - * Works like `Math.floor` if val > 0 and `Math.ceil` if val < 0. - * IMPORTANT: val will wrap at 2^31 and -2^31. - * Perf tests: http://jsperf.com/vs-vs-parseint-bitwise-operators/7 - */ - function toInt(val){ - return ~~val; - } - - return toInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js deleted file mode 100644 index d5b25b2c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * "Convert" value into a 32-bit unsigned integer. - * IMPORTANT: Value will wrap at 2^32. - */ - function toUInt(val){ - return val >>> 0; - } - - return toUInt; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js deleted file mode 100644 index 9785a054..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/number/toUInt31.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./MAX_INT'], function(MAX_INT){ - - /** - * "Convert" value into an 31-bit unsigned integer (since 1 bit is used for sign). - * IMPORTANT: value wil wrap at 2^31, if negative will return 0. - */ - function toUInt31(val){ - return (val <= 0)? 0 : (val > MAX_INT? ~~(val % (MAX_INT + 1)) : ~~val); - } - - return toUInt31; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js deleted file mode 100644 index 343e7826..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object.js +++ /dev/null @@ -1,42 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'bindAll' : require('./object/bindAll'), - 'contains' : require('./object/contains'), - 'deepEquals' : require('./object/deepEquals'), - 'deepFillIn' : require('./object/deepFillIn'), - 'deepMatches' : require('./object/deepMatches'), - 'deepMixIn' : require('./object/deepMixIn'), - 'equals' : require('./object/equals'), - 'every' : require('./object/every'), - 'fillIn' : require('./object/fillIn'), - 'filter' : require('./object/filter'), - 'find' : require('./object/find'), - 'forIn' : require('./object/forIn'), - 'forOwn' : require('./object/forOwn'), - 'functions' : require('./object/functions'), - 'get' : require('./object/get'), - 'has' : require('./object/has'), - 'hasOwn' : require('./object/hasOwn'), - 'keys' : require('./object/keys'), - 'map' : require('./object/map'), - 'matches' : require('./object/matches'), - 'max' : require('./object/max'), - 'merge' : require('./object/merge'), - 'min' : require('./object/min'), - 'mixIn' : require('./object/mixIn'), - 'namespace' : require('./object/namespace'), - 'pick' : require('./object/pick'), - 'pluck' : require('./object/pluck'), - 'reduce' : require('./object/reduce'), - 'reject' : require('./object/reject'), - 'set' : require('./object/set'), - 'size' : require('./object/size'), - 'some' : require('./object/some'), - 'unset' : require('./object/unset'), - 'values' : require('./object/values') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js deleted file mode 100644 index b131ed15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/bindAll.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./functions', '../function/bind', '../array/forEach'], function (functions, bind, forEach) { - - /** - * Binds methods of the object to be run in it's own context. - */ - function bindAll(obj, rest_methodNames){ - var keys = arguments.length > 1? - Array.prototype.slice.call(arguments, 1) : functions(obj); - forEach(keys, function(key){ - obj[key] = bind(obj[key], obj); - }); - } - - return bindAll; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js deleted file mode 100644 index 297e8986..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/contains.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./some'], function (some) { - - /** - * Check if object contains value - */ - function contains(obj, needle) { - return some(obj, function(val) { - return (val === needle); - }); - } - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js deleted file mode 100644 index 8b7d5d15..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepEquals.js +++ /dev/null @@ -1,26 +0,0 @@ -define(['../lang/isObject', './equals'], function (isObject, equals) { - - function defaultCompare(a, b) { - return a === b; - } - - /** - * Recursively checks for same properties and values. - */ - function deepEquals(a, b, callback){ - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - function compare(a, b){ - return deepEquals(a, b, callback); - } - - return equals(a, b, compare); - } - - return deepEquals; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js deleted file mode 100644 index 84ba154a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepFillIn.js +++ /dev/null @@ -1,31 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Deeply copy missing properties in the target from the defaults. - */ - function deepFillIn(target, defaults){ - var i = 0, - n = arguments.length, - obj; - - while(++i < n) { - obj = arguments[i]; - if (obj) { - forOwn(obj, function(newValue, key) { - var curValue = target[key]; - if (curValue == null) { - target[key] = newValue; - } else if (isPlainObject(curValue) - && isPlainObject(newValue)) { - deepFillIn(curValue, newValue); - } - }); - } - } - - return target; - } - - return deepFillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js deleted file mode 100644 index 2eae6297..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMatches.js +++ /dev/null @@ -1,54 +0,0 @@ -define(['./forOwn', '../lang/isArray'], function(forOwn, isArray) { - - function containsMatch(array, pattern) { - var i = -1, length = array.length; - while (++i < length) { - if (deepMatches(array[i], pattern)) { - return true; - } - } - - return false; - } - - function matchArray(target, pattern) { - var i = -1, patternLength = pattern.length; - while (++i < patternLength) { - if (!containsMatch(target, pattern[i])) { - return false; - } - } - - return true; - } - - function matchObject(target, pattern) { - var result = true; - forOwn(pattern, function(val, key) { - if (!deepMatches(target[key], val)) { - // Return false to break out of forOwn early - return (result = false); - } - }); - - return result; - } - - /** - * Recursively check if the objects match. - */ - function deepMatches(target, pattern){ - if (target && typeof target === 'object') { - if (isArray(target) && isArray(pattern)) { - return matchArray(target, pattern); - } else { - return matchObject(target, pattern); - } - } else { - return target === pattern; - } - } - - return deepMatches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js deleted file mode 100644 index 1b4178ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/deepMixIn.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['./forOwn', '../lang/isPlainObject'], function (forOwn, isPlainObject) { - - /** - * Mixes objects into the target object, recursively mixing existing child - * objects. - */ - function deepMixIn(target, objects) { - var i = 0, - n = arguments.length, - obj; - - while(++i < n){ - obj = arguments[i]; - if (obj) { - forOwn(obj, copyProp, target); - } - } - - return target; - } - - function copyProp(val, key) { - var existing = this[key]; - if (isPlainObject(val) && isPlainObject(existing)) { - deepMixIn(existing, val); - } else { - this[key] = val; - } - } - - return deepMixIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js deleted file mode 100644 index 596cb952..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/equals.js +++ /dev/null @@ -1,34 +0,0 @@ -define(['./hasOwn', './every', '../lang/isObject'], function(hasOwn, every, isObject) { - - function defaultCompare(a, b) { - return a === b; - } - - // Makes a function to compare the object values from the specified compare - // operation callback. - function makeCompare(callback) { - return function(value, key) { - return hasOwn(this, key) && callback(value, this[key]); - }; - } - - function checkProperties(value, key) { - return hasOwn(this, key); - } - - /** - * Checks if two objects have the same keys and values. - */ - function equals(a, b, callback) { - callback = callback || defaultCompare; - - if (!isObject(a) || !isObject(b)) { - return callback(a, b); - } - - return (every(a, makeCompare(callback), b) && - every(b, checkProperties, a)); - } - - return equals; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js deleted file mode 100644 index 52983a5e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/every.js +++ /dev/null @@ -1,22 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object every - */ - function every(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = true; - forOwn(obj, function(val, key) { - // we consider any falsy values as "false" on purpose so shorthand - // syntax can be used to check property existence - if (!callback(val, key, obj)) { - result = false; - return false; // break - } - }); - return result; - } - - return every; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js deleted file mode 100644 index 0845d3c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/fillIn.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach', './forOwn'], function (forEach, forOwn) { - - /** - * Copy missing properties in the obj from the defaults. - */ - function fillIn(obj, var_defaults){ - forEach(Array.prototype.slice.call(arguments, 1), function(base){ - forOwn(base, function(val, key){ - if (obj[key] == null) { - obj[key] = val; - } - }); - }); - return obj; - } - - return fillIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js deleted file mode 100644 index f213b915..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/filter.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object with all the properties where the callback returns - * true. - */ - function filterValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - output[key] = value; - } - }); - - return output; - } - return filterValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js deleted file mode 100644 index 47e6b09d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/find.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./some', '../function/makeIterator_'], function(some, makeIterator) { - - /** - * Returns first item that matches criteria - */ - function find(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result; - some(obj, function(value, key, obj) { - if (callback(value, key, obj)) { - result = value; - return true; //break - } - }); - return result; - } - - return find; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js deleted file mode 100644 index 2058e9cb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forIn.js +++ /dev/null @@ -1,62 +0,0 @@ -define(function () { - - var _hasDontEnumBug, - _dontEnums; - - function checkDontEnum(){ - _dontEnums = [ - 'toString', - 'toLocaleString', - 'valueOf', - 'hasOwnProperty', - 'isPrototypeOf', - 'propertyIsEnumerable', - 'constructor' - ]; - - _hasDontEnumBug = true; - - for (var key in {'toString': null}) { - _hasDontEnumBug = false; - } - } - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forIn(obj, fn, thisObj){ - var key, i = 0; - // no need to check if argument is a real object that way we can use - // it for arrays, functions, date, etc. - - //post-pone check till needed - if (_hasDontEnumBug == null) checkDontEnum(); - - for (key in obj) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - - if (_hasDontEnumBug) { - while (key = _dontEnums[i++]) { - // since we aren't using hasOwn check we need to make sure the - // property was overwritten - if (obj[key] !== Object.prototype[key]) { - if (exec(fn, obj, key, thisObj) === false) { - break; - } - } - } - } - } - - function exec(fn, obj, key, thisObj){ - return fn.call(thisObj, obj[key], key, obj); - } - - return forIn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js deleted file mode 100644 index b40cbaf1..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/forOwn.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./hasOwn', './forIn'], function (hasOwn, forIn) { - - /** - * Similar to Array/forEach but works over object properties and fixes Don't - * Enum bug on IE. - * based on: http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation - */ - function forOwn(obj, fn, thisObj){ - forIn(obj, function(val, key){ - if (hasOwn(obj, key)) { - return fn.call(thisObj, obj[key], key, obj); - } - }); - } - - return forOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js deleted file mode 100644 index 60fee3dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/functions.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['./forIn'], function (forIn) { - - /** - * return a list of all enumerable properties that have function values - */ - function functions(obj){ - var keys = []; - forIn(obj, function(val, key){ - if (typeof val === 'function'){ - keys.push(key); - } - }); - return keys.sort(); - } - - return functions; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js deleted file mode 100644 index ca80b059..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/get.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function () { - - /** - * get "nested" object property - */ - function get(obj, prop){ - var parts = prop.split('.'), - last = parts.pop(); - - while (prop = parts.shift()) { - obj = obj[prop]; - if (typeof obj !== 'object') return; - } - - return obj[last]; - } - - return get; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js deleted file mode 100644 index cc29817f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/has.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./get'], function (get) { - - var UNDEF; - - /** - * Check if object has nested property. - */ - function has(obj, prop){ - return get(obj, prop) !== UNDEF; - } - - return has; - -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js deleted file mode 100644 index 5c53bcf2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/hasOwn.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Safer Object.hasOwnProperty - */ - function hasOwn(obj, prop){ - return Object.prototype.hasOwnProperty.call(obj, prop); - } - - return hasOwn; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js deleted file mode 100644 index ed7c4f91..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/keys.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object keys - */ - var keys = Object.keys || function (obj) { - var keys = []; - forOwn(obj, function(val, key){ - keys.push(key); - }); - return keys; - }; - - return keys; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js deleted file mode 100644 index 2958f6b0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/map.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Creates a new object where all the values are the result of calling - * `callback`. - */ - function mapValues(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var output = {}; - forOwn(obj, function(val, key, obj) { - output[key] = callback(val, key, obj); - }); - - return output; - } - return mapValues; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js deleted file mode 100644 index 73ff427c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/matches.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * checks if a object contains all given properties/values - */ - function matches(target, props){ - // can't use "object/every" because of circular dependency - var result = true; - forOwn(props, function(val, key){ - if (target[key] !== val) { - // break loop at first difference - return (result = false); - } - }); - return result; - } - - return matches; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js deleted file mode 100644 index ef311dcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/max.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/max', './values'], function(arrMax, values) { - - /** - * Returns maximum value inside object. - */ - function max(obj, compareFn) { - return arrMax(values(obj), compareFn); - } - - return max; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js deleted file mode 100644 index d7cfedec..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/merge.js +++ /dev/null @@ -1,38 +0,0 @@ -define(['./hasOwn', '../lang/deepClone', '../lang/isObject'], function (hasOwn, deepClone, isObject) { - - /** - * Deep merge objects. - */ - function merge() { - var i = 1, - key, val, obj, target; - - // make sure we don't modify source element and it's properties - // objects are passed by reference - target = deepClone( arguments[0] ); - - while (obj = arguments[i++]) { - for (key in obj) { - if ( ! hasOwn(obj, key) ) { - continue; - } - - val = obj[key]; - - if ( isObject(val) && isObject(target[key]) ){ - // inception, deep merge objects - target[key] = merge(target[key], val); - } else { - // make sure arrays, regexp, date, objects are cloned - target[key] = deepClone(val); - } - - } - } - - return target; - } - - return merge; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js deleted file mode 100644 index 9fb4c1a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/min.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../array/min', './values'], function(arrMin, values) { - - /** - * Returns minimum value inside object. - */ - function min(obj, iterator) { - return arrMin(values(obj), iterator); - } - - return min; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js deleted file mode 100644 index 6210b7e7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/mixIn.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn'], function(forOwn){ - - /** - * Combine properties from all the objects into first one. - * - This method affects target object in place, if you want to create a new Object pass an empty object as first param. - * @param {object} target Target Object - * @param {...object} objects Objects to be combined (0...n objects). - * @return {object} Target Object. - */ - function mixIn(target, objects){ - var i = 0, - n = arguments.length, - obj; - while(++i < n){ - obj = arguments[i]; - if (obj != null) { - forOwn(obj, copyProp, target); - } - } - return target; - } - - function copyProp(val, key){ - this[key] = val; - } - - return mixIn; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js deleted file mode 100644 index 7ed65db8..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/namespace.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['../array/forEach'], function (forEach) { - - /** - * Create nested object if non-existent - */ - function namespace(obj, path){ - if (!path) return obj; - forEach(path.split('.'), function(key){ - if (!obj[key]) { - obj[key] = {}; - } - obj = obj[key]; - }); - return obj; - } - - return namespace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js deleted file mode 100644 index 76e22bfc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pick.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(){ - - /** - * Return a copy of the object, filtered to only have values for the whitelisted keys. - */ - function pick(obj, var_keys){ - var keys = typeof arguments[1] !== 'string'? arguments[1] : Array.prototype.slice.call(arguments, 1), - out = {}, - i = 0, key; - while (key = keys[i++]) { - out[key] = obj[key]; - } - return out; - } - - return pick; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js deleted file mode 100644 index d47744bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/pluck.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./map', '../function/prop'], function (map, prop) { - - /** - * Extract a list of property values. - */ - function pluck(obj, propName){ - return map(obj, prop(propName)); - } - - return pluck; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js deleted file mode 100644 index d3a57788..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reduce.js +++ /dev/null @@ -1,28 +0,0 @@ -define(['./forOwn', './size'], function(forOwn, size) { - - /** - * Object reduce - */ - function reduce(obj, callback, memo, thisObj) { - var initial = arguments.length > 2; - - if (!size(obj) && !initial) { - throw new Error('reduce of empty object with no initial value'); - } - - forOwn(obj, function(value, key, list) { - if (!initial) { - memo = value; - initial = true; - } - else { - memo = callback.call(thisObj, memo, value, key, list); - } - }); - - return memo; - } - - return reduce; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js deleted file mode 100644 index 84296428..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/reject.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['./filter', '../function/makeIterator_'], function (filter, makeIterator) { - - /** - * Object reject - */ - function reject(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - return filter(obj, function(value, index, obj) { - return !callback(value, index, obj); - }, thisObj); - } - - return reject; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js deleted file mode 100644 index b8fa25a3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/set.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['./namespace'], function (namespace) { - - /** - * set "nested" object property - */ - function set(obj, prop, val){ - var parts = (/^(.+)\.(.+)$/).exec(prop); - if (parts){ - namespace(obj, parts[1])[parts[2]] = val; - } else { - obj[prop] = val; - } - } - - return set; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js deleted file mode 100644 index c6e377cf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/size.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object size - */ - function size(obj) { - var count = 0; - forOwn(obj, function(){ - count++; - }); - return count; - } - - return size; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js deleted file mode 100644 index 1bd6fdae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/some.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['./forOwn', '../function/makeIterator_'], function(forOwn, makeIterator) { - - /** - * Object some - */ - function some(obj, callback, thisObj) { - callback = makeIterator(callback, thisObj); - var result = false; - forOwn(obj, function(val, key) { - if (callback(val, key, obj)) { - result = true; - return false; // break - } - }); - return result; - } - - return some; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js deleted file mode 100644 index 787fc19a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/unset.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./has'], function (has) { - - /** - * Unset object property. - */ - function unset(obj, prop){ - if (has(obj, prop)) { - var parts = prop.split('.'), - last = parts.pop(); - while (prop = parts.shift()) { - obj = obj[prop]; - } - return (delete obj[last]); - - } else { - // if property doesn't exist treat as deleted - return true; - } - } - - return unset; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js deleted file mode 100644 index b311fd09..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/object/values.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['./forOwn'], function (forOwn) { - - /** - * Get object values - */ - function values(obj) { - var vals = []; - forOwn(obj, function(val, key){ - vals.push(val); - }); - return vals; - } - - return values; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js deleted file mode 100644 index 44346127..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'contains' : require('./queryString/contains'), - 'decode' : require('./queryString/decode'), - 'encode' : require('./queryString/encode'), - 'getParam' : require('./queryString/getParam'), - 'getQuery' : require('./queryString/getQuery'), - 'parse' : require('./queryString/parse'), - 'setParam' : require('./queryString/setParam') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js deleted file mode 100644 index a6d11cce..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/contains.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./getQuery'], function (getQuery) { - - /** - * Checks if query string contains parameter. - */ - function contains(url, paramName) { - var regex = new RegExp('(\\?|&)'+ paramName +'=', 'g'); //matches `?param=` or `¶m=` - return regex.test(getQuery(url)); - } - - return contains; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js deleted file mode 100644 index 02bc1609..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/decode.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../string/typecast', '../lang/isString'], function (typecast, isString) { - - /** - * Decode query string into an object of keys => vals. - */ - function decode(queryStr, shouldTypecast) { - var queryArr = (queryStr || '').replace('?', '').split('&'), - n = queryArr.length, - obj = {}, - item, val; - while (n--) { - item = queryArr[n].split('='); - val = shouldTypecast === false? item[1] : typecast(item[1]); - obj[item[0]] = isString(val)? decodeURIComponent(val) : val; - } - return obj; - } - - return decode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js deleted file mode 100644 index bd72a5b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/encode.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../object/forOwn'], function (forOwn) { - - /** - * Encode object into a query string. - */ - function encode(obj){ - var query = []; - forOwn(obj, function(val, key){ - query.push( key +'='+ encodeURIComponent(val) ); - }); - return (query.length)? '?'+ query.join('&') : ''; - } - - return encode; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js deleted file mode 100644 index d9813724..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getParam.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../string/typecast', './getQuery'], function (typecast, getQuery) { - - /** - * Get query parameter value. - */ - function getParam(url, param, shouldTypecast){ - var regexp = new RegExp('(\\?|&)'+ param + '=([^&]*)'), //matches `?param=value` or `¶m=value`, value = $2 - result = regexp.exec( getQuery(url) ), - val = (result && result[2])? result[2] : null; - return shouldTypecast === false? val : typecast(val); - } - - return getParam; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js deleted file mode 100644 index aa3d99f3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/getQuery.js +++ /dev/null @@ -1,13 +0,0 @@ -define(function () { - - /** - * Gets full query as string with all special chars decoded. - */ - function getQuery(url) { - url = url.replace(/#.*/, ''); //removes hash (to avoid getting hash query) - var queryString = /\?[a-zA-Z0-9\=\&\%\$\-\_\.\+\!\*\'\(\)\,]+/.exec(url); //valid chars according to: http://www.ietf.org/rfc/rfc1738.txt - return (queryString)? decodeURIComponent(queryString[0]) : ''; - } - - return getQuery; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js deleted file mode 100644 index ac153e3f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/parse.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['./decode', './getQuery'], function (decode, getQuery) { - - /** - * Get query string, parses and decodes it. - */ - function parse(url, shouldTypecast) { - return decode(getQuery(url), shouldTypecast); - } - - return parse; -}); - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js deleted file mode 100644 index 97081aa7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/queryString/setParam.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function () { - - /** - * Set query string parameter value - */ - function setParam(url, paramName, value){ - url = url || ''; - - var re = new RegExp('(\\?|&)'+ paramName +'=[^&]*' ); - var param = paramName +'='+ encodeURIComponent( value ); - - if ( re.test(url) ) { - return url.replace(re, '$1'+ param); - } else { - if (url.indexOf('?') === -1) { - url += '?'; - } - if (url.indexOf('=') !== -1) { - url += '&'; - } - return url + param; - } - - } - - return setParam; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js deleted file mode 100644 index b2641ee3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'choice' : require('./random/choice'), - 'guid' : require('./random/guid'), - 'rand' : require('./random/rand'), - 'randBit' : require('./random/randBit'), - 'randHex' : require('./random/randHex'), - 'randInt' : require('./random/randInt'), - 'randSign' : require('./random/randSign'), - 'random' : require('./random/random') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js deleted file mode 100644 index 0d0c38df..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/choice.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['./randInt', '../lang/isArray'], function (randInt, isArray) { - - /** - * Returns a random element from the supplied arguments - * or from the array (if single argument is an array). - */ - function choice(items) { - var target = (arguments.length === 1 && isArray(items))? items : arguments; - return target[ randInt(0, target.length - 1) ]; - } - - return choice; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js deleted file mode 100644 index 82f3a2db..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/guid.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['./randHex', './choice'], function (randHex, choice) { - - /** - * Returns pseudo-random guid (UUID v4) - * IMPORTANT: it's not totally "safe" since randHex/choice uses Math.random - * by default and sequences can be predicted in some cases. See the - * "random/random" documentation for more info about it and how to replace - * the default PRNG. - */ - function guid() { - return ( - randHex(8)+'-'+ - randHex(4)+'-'+ - // v4 UUID always contain "4" at this position to specify it was - // randomly generated - '4' + randHex(3) +'-'+ - // v4 UUID always contain chars [a,b,8,9] at this position - choice(8, 9, 'a', 'b') + randHex(3)+'-'+ - randHex(12) - ); - } - return guid; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js deleted file mode 100644 index b8c231dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/rand.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['./random', '../number/MIN_INT', '../number/MAX_INT'], function(random, MIN_INT, MAX_INT){ - - /** - * Returns random number inside range - */ - function rand(min, max){ - min = min == null? MIN_INT : min; - max = max == null? MAX_INT : max; - return min + (max - min) * random(); - } - - return rand; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js deleted file mode 100644 index b3422d2d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randBit.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random bit (0 or 1) - */ - function randomBit() { - return random() > 0.5? 1 : 0; - } - - return randomBit; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js deleted file mode 100644 index 6e9bf1c5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randHex.js +++ /dev/null @@ -1,19 +0,0 @@ -define(['./choice'], function (choice) { - - var _chars = '0123456789abcdef'.split(''); - - /** - * Returns a random hexadecimal string - */ - function randHex(size){ - size = size && size > 0? size : 6; - var str = ''; - while (size--) { - str += choice(_chars); - } - return str; - } - - return randHex; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js deleted file mode 100644 index 1750e9de..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randInt.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../number/MIN_INT', '../number/MAX_INT', './rand'], function(MIN_INT, MAX_INT, rand){ - - /** - * Gets random integer inside range or snap to min/max values. - */ - function randInt(min, max){ - min = min == null? MIN_INT : ~~min; - max = max == null? MAX_INT : ~~max; - // can't be max + 0.5 otherwise it will round up if `rand` - // returns `max` causing it to overflow range. - // -0.5 and + 0.49 are required to avoid bias caused by rounding - return Math.round( rand(min - 0.5, max + 0.499999999999) ); - } - - return randInt; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js deleted file mode 100644 index 4141cdf6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/randSign.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['./random'], function (random) { - - /** - * Returns random sign (-1 or 1) - */ - function randomSign() { - return random() > 0.5? 1 : -1; - } - - return randomSign; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js deleted file mode 100644 index 4270822e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/random/random.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function () { - - /** - * Just a wrapper to Math.random. No methods inside mout/random should call - * Math.random() directly so we can inject the pseudo-random number - * generator if needed (ie. in case we need a seeded random or a better - * algorithm than the native one) - */ - function random(){ - return random.get(); - } - - // we expose the method so it can be swapped if needed - random.get = Math.random; - - return random; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js deleted file mode 100644 index 3f5fd804..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string.js +++ /dev/null @@ -1,45 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js deleted file mode 100644 index e830d86d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function() { - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - return [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js deleted file mode 100644 index 02e6c04d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/camelCase.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './upperCase', './lowerCase'], function(toString, replaceAccents, removeNonWord, upperCase, lowerCase){ - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - return camelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js deleted file mode 100644 index 825b5a5f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - return contains; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js deleted file mode 100644 index 3c073f05..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/crop.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './truncate'], function (toString, truncate) { - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - return crop; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js deleted file mode 100644 index 31a73f20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString) { - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - return endsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js deleted file mode 100644 index de34b61b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - return escapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js deleted file mode 100644 index 32facac0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - return escapeRegExp; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js deleted file mode 100644 index bd5e8c4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - return escapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js deleted file mode 100644 index 679c405c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/hyphenate.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - return hyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js deleted file mode 100644 index ecb8ba80..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function(toString) { - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - return interpolate; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js deleted file mode 100644 index b045d69c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - return lowerCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js deleted file mode 100644 index ea4f5fbf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/lpad.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString', './repeat'], function(toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return ((str.length < minLen) - ? repeat(ch, minLen - str.length) + str : str); - } - - return lpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js deleted file mode 100644 index 477df953..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/ltrim.js +++ /dev/null @@ -1,33 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - return ltrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js deleted file mode 100644 index 7aa7baba..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/makePath.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../array/join'], function(join){ - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - return result.replace(/\/{2,}/g, '/'); - } - - return makePath; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js deleted file mode 100644 index 44e4194f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - return normalizeLineBreaks; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js deleted file mode 100644 index ead9ead4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/pascalCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './camelCase', './upperCase'], function(toString, camelCase, upperCase){ - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - return pascalCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js deleted file mode 100644 index 2987b507..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/properCase.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - return properCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js deleted file mode 100644 index 4905869d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - return removeNonASCII; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js deleted file mode 100644 index 2b1a2040..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - return removeNonWord; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js deleted file mode 100644 index 02f5659f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function(toString){ - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - return repeat; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js deleted file mode 100644 index 8b762fdc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replace.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', '../lang/toArray'], function (toString, toArray) { - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - return replace; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js deleted file mode 100644 index 3a63f55a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - return replaceAccents; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js deleted file mode 100644 index 2efd9c88..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rpad.js +++ /dev/null @@ -1,14 +0,0 @@ -define(['../lang/toString', './repeat'], function (toString, repeat) { - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - return rpad; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js deleted file mode 100644 index a4cc282d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/rtrim.js +++ /dev/null @@ -1,32 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES'], function(toString, WHITE_SPACES){ - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - return rtrim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js deleted file mode 100644 index cfe45af5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/sentenceCase.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString', './lowerCase', './upperCase'], function(toString, lowerCase, upperCase){ - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - return sentenceCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js deleted file mode 100644 index c6d68c7e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/slugify.js +++ /dev/null @@ -1,21 +0,0 @@ -define(['../lang/toString', './replaceAccents', './removeNonWord', './trim'], function(toString, replaceAccents, removeNonWord, trim){ - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - return slugify; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js deleted file mode 100644 index 88ae5453..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['../lang/toString'], function (toString) { - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - return startsWith; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js deleted file mode 100644 index e8da956d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - return stripHtmlTags; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js deleted file mode 100644 index 55526041..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/trim.js +++ /dev/null @@ -1,12 +0,0 @@ -define(['../lang/toString', './WHITE_SPACES', './ltrim', './rtrim'], function(toString, WHITE_SPACES, ltrim, rtrim){ - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - return trim; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js deleted file mode 100644 index 34000d9f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/truncate.js +++ /dev/null @@ -1,20 +0,0 @@ -define(['../lang/toString', './trim'], function(toString, trim){ - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - return truncate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js deleted file mode 100644 index a7c83153..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ -define(function () { - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - return typecast; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js deleted file mode 100644 index eeef39b6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../lang/toString'], function(toString){ - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - return unCamelCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js deleted file mode 100644 index 75dd4649..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/underscore.js +++ /dev/null @@ -1,11 +0,0 @@ -define(['../lang/toString', './slugify', './unCamelCase'], function(toString, slugify, unCamelCase){ - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - return underscore; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js deleted file mode 100644 index 173c69c2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -define(['../lang/toString'], function (toString) { - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - return unescapeHtml; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js deleted file mode 100644 index d4a7ba1d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -define(['../lang/toString'], function(toString) { - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - return unescapeUnicode; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js deleted file mode 100644 index 6ac2fa4c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - return unhyphenate; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js deleted file mode 100644 index 8b2073e6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -define(['../lang/toString'], function(toString){ - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - return upperCase; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js deleted file mode 100644 index 67c90685..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function(require){ - -//automatically generated, do not edit! -//run `node build` instead -return { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js deleted file mode 100644 index 2de0cf2e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ -define(function () { - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - return convert; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js deleted file mode 100644 index a3a38bcb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ -define(function () { - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - return now; - -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js deleted file mode 100644 index 964929ae..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -define(['../math/countSteps'], function(countSteps){ - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - return parseMs; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js deleted file mode 100644 index edf18218..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/src/time/toTimeString.js +++ /dev/null @@ -1,23 +0,0 @@ -define(['../math/countSteps', '../number/pad'], function(countSteps, pad){ - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - return toTimeString; -}); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string.js deleted file mode 100644 index 7f0ca3bd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string.js +++ /dev/null @@ -1,45 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'WHITE_SPACES' : require('./string/WHITE_SPACES'), - 'camelCase' : require('./string/camelCase'), - 'contains' : require('./string/contains'), - 'crop' : require('./string/crop'), - 'endsWith' : require('./string/endsWith'), - 'escapeHtml' : require('./string/escapeHtml'), - 'escapeRegExp' : require('./string/escapeRegExp'), - 'escapeUnicode' : require('./string/escapeUnicode'), - 'hyphenate' : require('./string/hyphenate'), - 'interpolate' : require('./string/interpolate'), - 'lowerCase' : require('./string/lowerCase'), - 'lpad' : require('./string/lpad'), - 'ltrim' : require('./string/ltrim'), - 'makePath' : require('./string/makePath'), - 'normalizeLineBreaks' : require('./string/normalizeLineBreaks'), - 'pascalCase' : require('./string/pascalCase'), - 'properCase' : require('./string/properCase'), - 'removeNonASCII' : require('./string/removeNonASCII'), - 'removeNonWord' : require('./string/removeNonWord'), - 'repeat' : require('./string/repeat'), - 'replace' : require('./string/replace'), - 'replaceAccents' : require('./string/replaceAccents'), - 'rpad' : require('./string/rpad'), - 'rtrim' : require('./string/rtrim'), - 'sentenceCase' : require('./string/sentenceCase'), - 'slugify' : require('./string/slugify'), - 'startsWith' : require('./string/startsWith'), - 'stripHtmlTags' : require('./string/stripHtmlTags'), - 'trim' : require('./string/trim'), - 'truncate' : require('./string/truncate'), - 'typecast' : require('./string/typecast'), - 'unCamelCase' : require('./string/unCamelCase'), - 'underscore' : require('./string/underscore'), - 'unescapeHtml' : require('./string/unescapeHtml'), - 'unescapeUnicode' : require('./string/unescapeUnicode'), - 'unhyphenate' : require('./string/unhyphenate'), - 'upperCase' : require('./string/upperCase') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js deleted file mode 100644 index 03e01254..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/WHITE_SPACES.js +++ /dev/null @@ -1,12 +0,0 @@ - - /** - * Contains all Unicode white-spaces. Taken from - * http://en.wikipedia.org/wiki/Whitespace_character. - */ - module.exports = [ - ' ', '\n', '\r', '\t', '\f', '\v', '\u00A0', '\u1680', '\u180E', - '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', - '\u2007', '\u2008', '\u2009', '\u200A', '\u2028', '\u2029', '\u202F', - '\u205F', '\u3000' - ]; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js deleted file mode 100644 index aadb69a2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/camelCase.js +++ /dev/null @@ -1,20 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var upperCase = require('./upperCase'); -var lowerCase = require('./lowerCase'); - /** - * Convert string to camelCase text. - */ - function camelCase(str){ - str = toString(str); - str = replaceAccents(str); - str = removeNonWord(str) - .replace(/[\-_]/g, ' ') //convert all hyphens and underscores to spaces - .replace(/\s[a-z]/g, upperCase) //convert first char of each word to UPPERCASE - .replace(/\s+/g, '') //remove spaces - .replace(/^[A-Z]/g, lowerCase); //convert first char to lowercase - return str; - } - module.exports = camelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js deleted file mode 100644 index cb22cae4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/contains.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Searches for a given substring - */ - function contains(str, substring, fromIndex){ - str = toString(str); - substring = toString(substring); - return str.indexOf(substring, fromIndex) !== -1; - } - - module.exports = contains; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js deleted file mode 100644 index 53b93b49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/crop.js +++ /dev/null @@ -1,12 +0,0 @@ -var toString = require('../lang/toString'); -var truncate = require('./truncate'); - /** - * Truncate string at full words. - */ - function crop(str, maxChars, append) { - str = toString(str); - return truncate(str, maxChars, append, true); - } - - module.exports = crop; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js deleted file mode 100644 index d504e9dd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string ends with specified suffix. - */ - function endsWith(str, suffix) { - str = toString(str); - suffix = toString(suffix); - - return str.indexOf(suffix, str.length - suffix.length) !== -1; - } - - module.exports = endsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js deleted file mode 100644 index e67c4b21..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escapes a string for insertion into HTML. - */ - function escapeHtml(str){ - str = toString(str) - .replace(/&/g, '&') - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/'/g, ''') - .replace(/"/g, '"'); - return str; - } - - module.exports = escapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js deleted file mode 100644 index 70cb84ff..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeRegExp.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); - - var ESCAPE_CHARS = /[\\.+*?\^$\[\](){}\/'#]/g; - - /** - * Escape RegExp string chars. - */ - function escapeRegExp(str) { - str = toString(str); - return str.replace(ESCAPE_CHARS,'\\$&'); - } - - module.exports = escapeRegExp; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js deleted file mode 100644 index ec649adf..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/escapeUnicode.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Escape string into unicode sequences - */ - function escapeUnicode(str, shouldEscapePrintable){ - str = toString(str); - return str.replace(/[\s\S]/g, function(ch){ - // skip printable ASCII chars if we should not escape them - if (!shouldEscapePrintable && (/[\x20-\x7E]/).test(ch)) { - return ch; - } - // we use "000" and slice(-4) for brevity, need to pad zeros, - // unicode escape always have 4 chars after "\u" - return '\\u'+ ('000'+ ch.charCodeAt(0).toString(16)).slice(-4); - }); - } - - module.exports = escapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js deleted file mode 100644 index 95e32436..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/hyphenate.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with hyphens, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function hyphenate(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "-"); - } - - module.exports = hyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js deleted file mode 100644 index ac88fac2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/interpolate.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - var stache = /\{\{(\w+)\}\}/g; //mustache-like - - /** - * String interpolation - */ - function interpolate(template, replacements, syntax){ - template = toString(template); - var replaceFn = function(match, prop){ - return (prop in replacements)? toString(replacements[prop]) : ''; - }; - return template.replace(syntax || stache, replaceFn); - } - - module.exports = interpolate; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js deleted file mode 100644 index 30bb7ad9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lowerCase.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toLowerCase() - */ - function lowerCase(str){ - str = toString(str); - return str.toLowerCase(); - } - - module.exports = lowerCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js deleted file mode 100644 index 694d711e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/lpad.js +++ /dev/null @@ -1,17 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function lpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - - return ((str.length < minLen) - ? repeat(ch, minLen - str.length) + str : str); - } - - module.exports = lpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js deleted file mode 100644 index 23d7b33f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/ltrim.js +++ /dev/null @@ -1,34 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from beginning of string. - */ - function ltrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var start = 0, - len = str.length, - charLen = chars.length, - found = true, - i, c; - - while (found && start < len) { - found = false; - i = -1; - c = str.charAt(start); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - start++; - break; - } - } - } - - return (start >= len) ? '' : str.substr(start, len); - } - - module.exports = ltrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js deleted file mode 100644 index 69aef310..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/makePath.js +++ /dev/null @@ -1,13 +0,0 @@ -var join = require('../array/join'); - - /** - * Group arguments as path segments, if any of the args is `null` or an - * empty string it will be ignored from resulting path. - */ - function makePath(var_args){ - var result = join(Array.prototype.slice.call(arguments), '/'); - return result.replace(/\/{2,}/g, '/'); - } - - module.exports = makePath; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js deleted file mode 100644 index 8a8dccfd..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/normalizeLineBreaks.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Convert line-breaks from DOS/MAC to a single standard (UNIX by default) - */ - function normalizeLineBreaks(str, lineEnd) { - str = toString(str); - lineEnd = lineEnd || '\n'; - - return str - .replace(/\r\n/g, lineEnd) // DOS - .replace(/\r/g, lineEnd) // Mac - .replace(/\n/g, lineEnd); // Unix - } - - module.exports = normalizeLineBreaks; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js deleted file mode 100644 index fd190353..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/pascalCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var camelCase = require('./camelCase'); -var upperCase = require('./upperCase'); - /** - * camelCase + UPPERCASE first char - */ - function pascalCase(str){ - str = toString(str); - return camelCase(str).replace(/^[a-z]/, upperCase); - } - - module.exports = pascalCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js deleted file mode 100644 index 61636be4..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/properCase.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each word. - */ - function properCase(str){ - str = toString(str); - return lowerCase(str).replace(/^\w|\s\w/g, upperCase); - } - - module.exports = properCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js deleted file mode 100644 index fb463816..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonASCII.js +++ /dev/null @@ -1,14 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-printable ASCII chars - */ - function removeNonASCII(str){ - str = toString(str); - - // Matches non-printable ASCII chars - - // http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters - return str.replace(/[^\x20-\x7E]/g, ''); - } - - module.exports = removeNonASCII; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js deleted file mode 100644 index bdd153b9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/removeNonWord.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove non-word chars. - */ - function removeNonWord(str){ - str = toString(str); - return str.replace(/[^0-9a-zA-Z\xC0-\xFF \-_]/g, ''); - } - - module.exports = removeNonWord; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js deleted file mode 100644 index 0f9b4754..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/repeat.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Repeat string n times - */ - function repeat(str, n){ - str = toString(str); - return (new Array(n + 1)).join(str); - } - - module.exports = repeat; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js deleted file mode 100644 index 14433fc7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replace.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var toArray = require('../lang/toArray'); - - /** - * Replace string(s) with the replacement(s) in the source. - */ - function replace(str, search, replacements) { - str = toString(str); - search = toArray(search); - replacements = toArray(replacements); - - var searchLength = search.length, - replacementsLength = replacements.length; - - if (replacementsLength !== 1 && searchLength !== replacementsLength) { - throw new Error('Unequal number of searches and replacements'); - } - - var i = -1; - while (++i < searchLength) { - // Use the first replacement for all searches if only one - // replacement is provided - str = str.replace( - search[i], - replacements[(replacementsLength === 1) ? 0 : i]); - } - - return str; - } - - module.exports = replace; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js deleted file mode 100644 index bb221265..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/replaceAccents.js +++ /dev/null @@ -1,36 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces all accented chars with regular ones - */ - function replaceAccents(str){ - str = toString(str); - - // verifies if the String has accents and replace them - if (str.search(/[\xC0-\xFF]/g) > -1) { - str = str - .replace(/[\xC0-\xC5]/g, "A") - .replace(/[\xC6]/g, "AE") - .replace(/[\xC7]/g, "C") - .replace(/[\xC8-\xCB]/g, "E") - .replace(/[\xCC-\xCF]/g, "I") - .replace(/[\xD0]/g, "D") - .replace(/[\xD1]/g, "N") - .replace(/[\xD2-\xD6\xD8]/g, "O") - .replace(/[\xD9-\xDC]/g, "U") - .replace(/[\xDD]/g, "Y") - .replace(/[\xDE]/g, "P") - .replace(/[\xE0-\xE5]/g, "a") - .replace(/[\xE6]/g, "ae") - .replace(/[\xE7]/g, "c") - .replace(/[\xE8-\xEB]/g, "e") - .replace(/[\xEC-\xEF]/g, "i") - .replace(/[\xF1]/g, "n") - .replace(/[\xF2-\xF6\xF8]/g, "o") - .replace(/[\xF9-\xFC]/g, "u") - .replace(/[\xFE]/g, "p") - .replace(/[\xFD\xFF]/g, "y"); - } - return str; - } - module.exports = replaceAccents; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js deleted file mode 100644 index 99f6378d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rpad.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var repeat = require('./repeat'); - - /** - * Pad string with `char` if its' length is smaller than `minLen` - */ - function rpad(str, minLen, ch) { - str = toString(str); - ch = ch || ' '; - return (str.length < minLen)? str + repeat(ch, minLen - str.length) : str; - } - - module.exports = rpad; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js deleted file mode 100644 index 66ba80e9..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/rtrim.js +++ /dev/null @@ -1,33 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); - /** - * Remove chars from end of string. - */ - function rtrim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - - var end = str.length - 1, - charLen = chars.length, - found = true, - i, c; - - while (found && end >= 0) { - found = false; - i = -1; - c = str.charAt(end); - - while (++i < charLen) { - if (c === chars[i]) { - found = true; - end--; - break; - } - } - } - - return (end >= 0) ? str.substring(0, end + 1) : ''; - } - - module.exports = rtrim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js deleted file mode 100644 index 354104c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/sentenceCase.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var lowerCase = require('./lowerCase'); -var upperCase = require('./upperCase'); - /** - * UPPERCASE first char of each sentence and lowercase other chars. - */ - function sentenceCase(str){ - str = toString(str); - - // Replace first char of each sentence (new line or after '.\s+') to - // UPPERCASE - return lowerCase(str).replace(/(^\w)|\.\s+(\w)/gm, upperCase); - } - module.exports = sentenceCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js deleted file mode 100644 index 142f0d9b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/slugify.js +++ /dev/null @@ -1,24 +0,0 @@ -var toString = require('../lang/toString'); -var replaceAccents = require('./replaceAccents'); -var removeNonWord = require('./removeNonWord'); -var trim = require('./trim'); - /** - * Convert to lower case, remove accents, remove non-word chars and - * replace spaces with the specified delimeter. - * Does not split camelCase text. - */ - function slugify(str, delimeter){ - str = toString(str); - - if (delimeter == null) { - delimeter = "-"; - } - str = replaceAccents(str); - str = removeNonWord(str); - str = trim(str) //should come after removeNonWord - .replace(/ +/g, delimeter) //replace spaces with delimeter - .toLowerCase(); - return str; - } - module.exports = slugify; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js deleted file mode 100644 index bce2bd20..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/startsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Checks if string starts with specified prefix. - */ - function startsWith(str, prefix) { - str = toString(str); - prefix = toString(prefix); - - return str.indexOf(prefix) === 0; - } - - module.exports = startsWith; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js deleted file mode 100644 index 01d17b0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/stripHtmlTags.js +++ /dev/null @@ -1,11 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Remove HTML tags from string. - */ - function stripHtmlTags(str){ - str = toString(str); - - return str.replace(/<[^>]*>/g, ''); - } - module.exports = stripHtmlTags; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js deleted file mode 100644 index 9652b0c7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/trim.js +++ /dev/null @@ -1,15 +0,0 @@ -var toString = require('../lang/toString'); -var WHITE_SPACES = require('./WHITE_SPACES'); -var ltrim = require('./ltrim'); -var rtrim = require('./rtrim'); - /** - * Remove white-spaces from beginning and end of string. - */ - function trim(str, chars) { - str = toString(str); - chars = chars || WHITE_SPACES; - return ltrim(rtrim(str, chars), chars); - } - - module.exports = trim; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js deleted file mode 100644 index a98d6c7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/truncate.js +++ /dev/null @@ -1,21 +0,0 @@ -var toString = require('../lang/toString'); -var trim = require('./trim'); - /** - * Limit number of chars. - */ - function truncate(str, maxChars, append, onlyFullWords){ - str = toString(str); - append = append || '...'; - maxChars = onlyFullWords? maxChars + 1 : maxChars; - - str = trim(str); - if(str.length <= maxChars){ - return str; - } - str = str.substr(0, maxChars - append.length); - //crop at last space or remove trailing whitespace - str = onlyFullWords? str.substr(0, str.lastIndexOf(' ')) : trim(str); - return str + append; - } - module.exports = truncate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js deleted file mode 100644 index c1386a49..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/typecast.js +++ /dev/null @@ -1,29 +0,0 @@ - - - var UNDEF; - - /** - * Parses string and convert it into a native value. - */ - function typecast(val) { - var r; - if ( val === null || val === 'null' ) { - r = null; - } else if ( val === 'true' ) { - r = true; - } else if ( val === 'false' ) { - r = false; - } else if ( val === UNDEF || val === 'undefined' ) { - r = UNDEF; - } else if ( val === '' || isNaN(val) ) { - //isNaN('') returns false - r = val; - } else { - //parseFloat(null || '') returns NaN - r = parseFloat(val); - } - return r; - } - - module.exports = typecast; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js deleted file mode 100644 index 4968f378..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unCamelCase.js +++ /dev/null @@ -1,23 +0,0 @@ -var toString = require('../lang/toString'); - - var CAMEL_CASE_BORDER = /([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g; - - /** - * Add space between camelCase text. - */ - function unCamelCase(str, delimiter){ - if (delimiter == null) { - delimiter = ' '; - } - - function join(str, c1, c2) { - return c1 + delimiter + c2; - } - - str = toString(str); - str = str.replace(CAMEL_CASE_BORDER, join); - str = str.toLowerCase(); //add space between camelCase text - return str; - } - module.exports = unCamelCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js deleted file mode 100644 index ebd6e2b7..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/underscore.js +++ /dev/null @@ -1,13 +0,0 @@ -var toString = require('../lang/toString'); -var slugify = require('./slugify'); -var unCamelCase = require('./unCamelCase'); - /** - * Replaces spaces with underscores, split camelCase text, remove non-word chars, remove accents and convert to lower case. - */ - function underscore(str){ - str = toString(str); - str = unCamelCase(str); - return slugify(str, "_"); - } - module.exports = underscore; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js deleted file mode 100644 index 52cf3f45..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeHtml.js +++ /dev/null @@ -1,18 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescapes HTML special chars - */ - function unescapeHtml(str){ - str = toString(str) - .replace(/&/g , '&') - .replace(/</g , '<') - .replace(/>/g , '>') - .replace(/'/g , "'") - .replace(/"/g, '"'); - return str; - } - - module.exports = unescapeHtml; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js deleted file mode 100644 index 0b7fb73b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unescapeUnicode.js +++ /dev/null @@ -1,16 +0,0 @@ -var toString = require('../lang/toString'); - - /** - * Unescape unicode char sequences - */ - function unescapeUnicode(str){ - str = toString(str); - return str.replace(/\\u[0-9a-f]{4}/g, function(ch){ - var code = parseInt(ch.slice(2), 16); - return String.fromCharCode(code); - }); - } - - module.exports = unescapeUnicode; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js deleted file mode 100644 index 311dfa17..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/unhyphenate.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * Replaces hyphens with spaces. (only hyphens between word chars) - */ - function unhyphenate(str){ - str = toString(str); - return str.replace(/(\w)(-)(\w)/g, '$1 $3'); - } - module.exports = unhyphenate; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js deleted file mode 100644 index 6c92552c..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/string/upperCase.js +++ /dev/null @@ -1,10 +0,0 @@ -var toString = require('../lang/toString'); - /** - * "Safer" String.toUpperCase() - */ - function upperCase(str){ - str = toString(str); - return str.toUpperCase(); - } - module.exports = upperCase; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time.js deleted file mode 100644 index 9f533296..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time.js +++ /dev/null @@ -1,12 +0,0 @@ - - -//automatically generated, do not edit! -//run `node build` instead -module.exports = { - 'convert' : require('./time/convert'), - 'now' : require('./time/now'), - 'parseMs' : require('./time/parseMs'), - 'toTimeString' : require('./time/toTimeString') -}; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js deleted file mode 100644 index 852a0f03..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/convert.js +++ /dev/null @@ -1,41 +0,0 @@ - - - /** - * convert time into another unit - */ - function convert(val, sourceUnitName, destinationUnitName){ - destinationUnitName = destinationUnitName || 'ms'; - return (val * getUnit(sourceUnitName)) / getUnit(destinationUnitName); - } - - - //TODO: maybe extract to a separate module - function getUnit(unitName){ - switch(unitName){ - case 'ms': - case 'millisecond': - return 1; - case 's': - case 'second': - return 1000; - case 'm': - case 'minute': - return 60000; - case 'h': - case 'hour': - return 3600000; - case 'd': - case 'day': - return 86400000; - case 'w': - case 'week': - return 604800000; - default: - throw new Error('"'+ unitName + '" is not a valid unit'); - } - } - - - module.exports = convert; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js deleted file mode 100644 index effcfbe3..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/now.js +++ /dev/null @@ -1,12 +0,0 @@ - - - /** - * Get current time in miliseconds - */ - var now = (typeof Date.now === 'function')? Date.now : function(){ - return +(new Date()); - }; - - module.exports = now; - - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js deleted file mode 100644 index 6d997976..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/parseMs.js +++ /dev/null @@ -1,17 +0,0 @@ -var countSteps = require('../math/countSteps'); - - /** - * Parse timestamp into an object. - */ - function parseMs(ms){ - return { - milliseconds : countSteps(ms, 1, 1000), - seconds : countSteps(ms, 1000, 60), - minutes : countSteps(ms, 60000, 60), - hours : countSteps(ms, 3600000, 24), - days : countSteps(ms, 86400000) - }; - } - - module.exports = parseMs; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js deleted file mode 100644 index 101d69fc..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/mout/time/toTimeString.js +++ /dev/null @@ -1,24 +0,0 @@ -var countSteps = require('../math/countSteps'); -var pad = require('../number/pad'); - - var HOUR = 3600000, - MINUTE = 60000, - SECOND = 1000; - - /** - * Format timestamp into a time string. - */ - function toTimeString(ms){ - var h = ms < HOUR ? 0 : countSteps(ms, HOUR), - m = ms < MINUTE ? 0 : countSteps(ms, MINUTE, 60), - s = ms < SECOND ? 0 : countSteps(ms, SECOND, 60), - str = ''; - - str += h? h + ':' : ''; - str += pad(m, 2) + ':'; - str += pad(s, 2); - - return str; - } - module.exports = toTimeString; - diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore deleted file mode 100644 index f1250e58..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/History.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/History.md deleted file mode 100644 index 88119480..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/History.md +++ /dev/null @@ -1,42 +0,0 @@ - -1.0.0 / 2013-06-18 -================== - - * remove .version - * >=. Closes #19 - * Merge pull request #15 from davglass/readline-osx - * On OSX revert back to terminal hack to avoid a readline bug - -0.1.0 / 2012-09-19 -================== - - * Fixed logic bug that caused bar to jump one extra space at the end [davglass] - * Working with readline impl, even on Windows [davglass] - * Using readline instead of the \r hack [davglass] - -0.0.5 / 2012-08-07 -================== - - * add ability to tick by zero chunks - tick(0) - * fix ETA. Closes #4 [lwille] - -0.0.4 / 2011-11-14 -================== - - * Allow more recent versions of node - -0.0.3 / 2011-04-20 -================== - - * Changed; erase the line when complete - -0.0.2 / 2011-04-20 -================== - - * Added custom tokens support - * Fixed; clear line before writing - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Makefile b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Makefile deleted file mode 100644 index 36a3ed7d..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Makefile +++ /dev/null @@ -1,5 +0,0 @@ - -test: - @echo "populate me" - -.PHONY: test \ No newline at end of file diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md deleted file mode 100644 index 4e08a49b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/Readme.md +++ /dev/null @@ -1,117 +0,0 @@ -# node-progress - - Flexible ascii progress bar - -## Installation - - npm install progress - -## Usage - - First we create a `ProgressBar`, giving it a format string - as well as the `total`, telling the progress bar when it will - be considered complete. After that all we need to do is `tick()` appropriately. - -```javascript -var ProgressBar = require('progress'); - -var bar = new ProgressBar(':bar', { total: 10 }); -var timer = setInterval(function(){ - bar.tick(); - if (bar.complete) { - console.log('\ncomplete\n'); - clearInterval(timer); - } -}, 100); -``` - -## Options: - - - `total` total number of ticks to complete - - `width` the displayed width of the progress bar defaulting to total - - `stream` the output stream defaulting to stdout - - `complete` completion character defaulting to "=" - - `incomplete` incomplete character defaulting to "-" - - `clear` option to clear the bar on completion defaulting to false - - `callback` optional function to call when the progress bar completes - -## Tokens: - - - `:bar` the progress bar itself - - `:current` current tick number - - `:total` total ticks - - `:elapsed` time elapsed in seconds - - `:percent` completion percentage - - `:eta` estimated completion time in seconds - -## Examples - -### Download - - In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length. - -```javascript -var ProgressBar = require('../') - , https = require('https'); - -var req = https.request({ - host: 'download.github.com' - , port: 443 - , path: '/visionmedia-node-jscoverage-0d4608a.zip' -}); - -req.on('response', function(res){ - var len = parseInt(res.headers['content-length'], 10); - - console.log(); - var bar = new ProgressBar(' downloading [:bar] :percent :etas', { - complete: '=' - , incomplete: ' ' - , width: 20 - , total: len - }); - - res.on('data', function(chunk){ - bar.tick(chunk.length); - }); - - res.on('end', function(){ - console.log('\n'); - }); -}); - -req.end(); -``` - - The code above will generate a progress bar that looks like this: - -``` -downloading [===== ] 29% 3.7s -``` - -You can see more examples in the `examples` folder. - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk `<tj@vision-media.ca>` - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/index.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/index.js deleted file mode 100644 index 4449dd30..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/node-progress'); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js deleted file mode 100644 index ca0ce4f0..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/lib/node-progress.js +++ /dev/null @@ -1,183 +0,0 @@ -/*! - * node-progress - * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca> - * MIT Licensed - */ - -/** - * Expose `ProgressBar`. - */ - -exports = module.exports = ProgressBar; - -/** - * Initialize a `ProgressBar` with the given - * `fmt` string and `options` or `total`. - * - * Options: - * - * - `total` total number of ticks to complete - * - `width` the displayed width of the progress bar defaulting to total - * - `stream` the output stream defaulting to stdout - * - `complete` completion character defaulting to "=" - * - `incomplete` incomplete character defaulting to "-" - * - `callback` optional function to call when the progress bar completes - * - * Tokens: - * - * - `:bar` the progress bar itself - * - `:current` current tick number - * - `:total` total ticks - * - `:elapsed` time elapsed in seconds - * - `:percent` completion percentage - * - `:eta` eta in seconds - * - * @param {String} fmt - * @param {Object|Number} options or total - * @api public - */ - -function ProgressBar(fmt, options) { - this.rl = require('readline').createInterface({ - input: process.stdin, - output: options.stream || process.stdout - }); - this.rl.setPrompt('', 0); - this.rl.clearLine = function() { - this.write(null, {ctrl: true, name: 'u'}); - }; - - if (typeof(options) == 'number') { - var total = options; - options = {}; - options.total = total; - } else { - options = options || {}; - if ('string' != typeof fmt) throw new Error('format required'); - if ('number' != typeof options.total) throw new Error('total required'); - } - - this.fmt = fmt; - this.curr = 0; - this.total = options.total; - this.width = options.width || this.total; - this.clear = options.clear - this.chars = { - complete: options.complete || '=' - , incomplete: options.incomplete || '-' - }; - this.callback = options.callback || function () {}; -} - -/** - * "tick" the progress bar with optional `len` and - * optional `tokens`. - * - * @param {Number|Object} len or tokens - * @param {Object} tokens - * @api public - */ - -ProgressBar.prototype.tick = function(len, tokens){ - if (len !== 0) - len = len || 1; - - // swap tokens - if ('object' == typeof len) tokens = len, len = 1; - - // start time for eta - if (0 == this.curr) this.start = new Date; - - this.curr += len - this.render(tokens); - - // progress complete - if (this.curr >= this.total) { - this.complete = true; - this.terminate(); - this.callback(this); - return; - } -}; - -/** - * Method to render the progress bar with optional `tokens` to - * place in the progress bar's `fmt` field. - * - * @param {Object} tokens - * @api public - */ - -ProgressBar.prototype.render = function(tokens){ - if(!process.stdout.isTTY) { - return; - } - - var ratio = this.curr / this.total; - ratio = Math.min(Math.max(ratio, 0), 1); - - var percent = ratio * 100 - , complete = Math.round(this.width * ratio) - , incomplete - , elapsed = new Date - this.start - , eta = (percent == 100) ? 0 : elapsed * (this.total / this.curr - 1); - - complete = Array(complete).join(this.chars.complete); - incomplete = Array(this.width - complete.length).join(this.chars.incomplete); - - var str = this.fmt - .replace(':bar', complete + incomplete) - .replace(':current', this.curr) - .replace(':total', this.total) - .replace(':elapsed', isNaN(elapsed) ? "0.0" : (elapsed / 1000).toFixed(1)) - .replace(':eta', (isNaN(eta) || !isFinite(eta)) ? "0.0" : (eta / 1000).toFixed(1)) - .replace(':percent', percent.toFixed(0) + '%'); - - if (tokens) { - for (var key in tokens) { - str = str.replace(':' + key, tokens[key]); - } - } - - this.rl.clearLine(); - this.rl.write(str); -}; - -/** - * "update" the progress bar to represent an exact percentage. - * The ratio (between 0 and 1) specified will be multiplied by `total` and - * floored, representing the closest available "tick." For example, if a - * progress bar has a length of 3 and `update(0.5)` is called, the progress - * will be set to 1. - * - * A ratio of 0.5 will attempt to set the progress to halfway. - * - * @param {Number} ratio The ratio (between 0 and 1 inclusive) to set the - * overall completion to. - * @api public - */ - -ProgressBar.prototype.update = function(ratio, tokens) { - var goal = Math.floor(ratio * this.total); - var delta = goal - this.curr; - - this.tick(delta, tokens); -}; - -/** - * Terminates a progress bar. - * - * @api public - */ - -ProgressBar.prototype.terminate = function() { - this.rl.resume(); - - if (this.clear) { - this.rl.clearLine(); - this.rl.close(); - } else { - this.rl.close(); - console.log(); - } -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/package.json deleted file mode 100644 index c5ad2ccb..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/progress/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "progress", - "version": "1.1.3", - "description": "Flexible ascii progress bar", - "keywords": [ - "cli", - "progress" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "main": "index", - "engines": { - "node": ">=0.4.0" - }, - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-progress" - }, - "readme": "# node-progress\n\n Flexible ascii progress bar\n\n## Installation\n\n npm install progress\n\n## Usage\n\n First we create a `ProgressBar`, giving it a format string\n as well as the `total`, telling the progress bar when it will\n be considered complete. After that all we need to do is `tick()` appropriately.\n\n```javascript\nvar ProgressBar = require('progress');\n\nvar bar = new ProgressBar(':bar', { total: 10 });\nvar timer = setInterval(function(){\n bar.tick();\n if (bar.complete) {\n console.log('\\ncomplete\\n');\n clearInterval(timer);\n }\n}, 100);\n```\n\n## Options:\n\n - `total` total number of ticks to complete\n - `width` the displayed width of the progress bar defaulting to total\n - `stream` the output stream defaulting to stdout\n - `complete` completion character defaulting to \"=\"\n - `incomplete` incomplete character defaulting to \"-\"\n - `clear` option to clear the bar on completion defaulting to false\n - `callback` optional function to call when the progress bar completes\n\n## Tokens:\n\n - `:bar` the progress bar itself\n - `:current` current tick number\n - `:total` total ticks\n - `:elapsed` time elapsed in seconds\n - `:percent` completion percentage\n - `:eta` estimated completion time in seconds\n\n## Examples\n\n### Download\n\n In our download example each tick has a variable influence, so we pass the chunk length which adjusts the progress bar appropriately relative to the total length.\n\n```javascript\nvar ProgressBar = require('../')\n , https = require('https');\n\nvar req = https.request({\n host: 'download.github.com'\n , port: 443\n , path: '/visionmedia-node-jscoverage-0d4608a.zip'\n});\n\nreq.on('response', function(res){\n var len = parseInt(res.headers['content-length'], 10);\n\n console.log();\n var bar = new ProgressBar(' downloading [:bar] :percent :etas', {\n complete: '='\n , incomplete: ' '\n , width: 20\n , total: len\n });\n\n res.on('data', function(chunk){\n bar.tick(chunk.length);\n });\n\n res.on('end', function(){\n console.log('\\n');\n });\n});\n\nreq.end();\n```\n\n The code above will generate a progress bar that looks like this:\n\n```\ndownloading [===== ] 29% 3.7s\n```\n\nYou can see more examples in the `examples` folder.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk `<tj@vision-media.ca>`\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-progress/issues" - }, - "homepage": "https://github.com/visionmedia/node-progress", - "_id": "progress@1.1.3", - "_from": "progress@~1.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/LICENSE b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/README.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/README.md deleted file mode 100644 index ff1eb531..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The "which" util from npm's guts. - -Finds the first instance of a specified executable in the PATH -environment variable. Does not cache the results, so `hash -r` is not -needed when the PATH changes. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/bin/which b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/bin/which deleted file mode 100755 index 8432ce2f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/bin/which +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env node -var which = require("../") -if (process.argv.length < 3) { - console.error("Usage: which <thing>") - process.exit(1) -} - -which(process.argv[2], function (er, thing) { - if (er) { - console.error(er.message) - process.exit(er.errno || 127) - } - console.log(thing) -}) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/package.json deleted file mode 100644 index 37965061..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "which", - "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.", - "version": "1.0.5", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-which.git" - }, - "main": "which.js", - "bin": { - "which": "./bin/which" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": {}, - "readme": "The \"which\" util from npm's guts.\n\nFinds the first instance of a specified executable in the PATH\nenvironment variable. Does not cache the results, so `hash -r` is not\nneeded when the PATH changes.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-which/issues" - }, - "homepage": "https://github.com/isaacs/node-which", - "_id": "which@1.0.5", - "_from": "which@~1.0.5" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/which.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/which.js deleted file mode 100644 index db7e8f74..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/node_modules/which/which.js +++ /dev/null @@ -1,104 +0,0 @@ -module.exports = which -which.sync = whichSync - -var path = require("path") - , fs - , COLON = process.platform === "win32" ? ";" : ":" - , isExe - -try { - fs = require("graceful-fs") -} catch (ex) { - fs = require("fs") -} - -if (process.platform == "win32") { - // On windows, there is no good way to check that a file is executable - isExe = function isExe () { return true } -} else { - isExe = function isExe (mod, uid, gid) { - //console.error(mod, uid, gid); - //console.error("isExe?", (mod & 0111).toString(8)) - var ret = (mod & 0001) - || (mod & 0010) && process.getgid && gid === process.getgid() - || (mod & 0100) && process.getuid && uid === process.getuid() - //console.error("isExe?", ret) - return ret - } -} - - - -function which (cmd, cb) { - if (isAbsolute(cmd)) return cb(null, cmd) - var pathEnv = (process.env.PATH || "").split(COLON) - , pathExt = [""] - if (process.platform === "win32") { - pathEnv.push(process.cwd()) - pathExt = (process.env.PATHEXT || ".EXE").split(COLON) - if (cmd.indexOf(".") !== -1) pathExt.unshift("") - } - //console.error("pathEnv", pathEnv) - ;(function F (i, l) { - if (i === l) return cb(new Error("not found: "+cmd)) - var p = path.resolve(pathEnv[i], cmd) - ;(function E (ii, ll) { - if (ii === ll) return F(i + 1, l) - var ext = pathExt[ii] - //console.error(p + ext) - fs.stat(p + ext, function (er, stat) { - if (!er && - stat && - stat.isFile() && - isExe(stat.mode, stat.uid, stat.gid)) { - //console.error("yes, exe!", p + ext) - return cb(null, p + ext) - } - return E(ii + 1, ll) - }) - })(0, pathExt.length) - })(0, pathEnv.length) -} - -function whichSync (cmd) { - if (isAbsolute(cmd)) return cmd - var pathEnv = (process.env.PATH || "").split(COLON) - , pathExt = [""] - if (process.platform === "win32") { - pathEnv.push(process.cwd()) - pathExt = (process.env.PATHEXT || ".EXE").split(COLON) - if (cmd.indexOf(".") !== -1) pathExt.unshift("") - } - for (var i = 0, l = pathEnv.length; i < l; i ++) { - var p = path.join(pathEnv[i], cmd) - for (var j = 0, ll = pathExt.length; j < ll; j ++) { - var cur = p + pathExt[j] - var stat - try { stat = fs.statSync(cur) } catch (ex) {} - if (stat && - stat.isFile() && - isExe(stat.mode, stat.uid, stat.gid)) return cur - } - } - throw new Error("not found: "+cmd) -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/package.json deleted file mode 100644 index ed2dcc0e..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/bin-wrapper/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "bin-wrapper", - "version": "0.1.9", - "description": "Binary wrapper for Node.js that makes your programs seamlessly available as local dependencies", - "keywords": [ - "bin", - "build", - "make", - "wrapper" - ], - "homepage": "https://github.com/kevva/bin-wrapper", - "bugs": { - "url": "https://github.com/kevva/bin-wrapper/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/bin-wrapper.git" - }, - "scripts": { - "test": "mocha --reporter list --timeout 0" - }, - "main": "bin-wrapper.js", - "files": [ - "bin-wrapper.js" - ], - "dependencies": { - "download": "~0.1.2", - "isbin": "0.0.2", - "mout": "~0.6.0", - "progress": "~1.1.0", - "which": "~1.0.5" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# bin-wrapper [![Build Status](https://secure.travis-ci.org/kevva/bin-wrapper.png?branch=master)](http://travis-ci.org/kevva/bin-wrapper)\r\n\r\nBinary wrapper for Node.js that makes your programs seamlessly available as local dependencies\r\n\r\n## Getting started\r\n\r\nInstall with [npm](https://npmjs.org/package/bin-wrapper): `npm install bin-wrapper`\r\n\r\n## Examples\r\n\r\nAll `platform` and `arch` specific options takes precedence over the base \r\noptions. See [test.js](test.js) for a full fleshed example.\r\n\r\n```js\r\nvar Bin = require('bin-wrapper');\r\n\r\nvar opts = {\r\n name: 'Gifsicle',\r\n bin: 'gifsicle',\r\n path: 'vendor',\r\n url: 'http://url/to/gifsicle',\r\n src: 'http://www.lcdf.org/gifsicle/gifsicle-1.71.tar.gz',\r\n buildScript: './configure --bindir=\"vendor\" && make install',\r\n platform: {\r\n win32: {\r\n bin: 'gifsicle.exe',\r\n url: [\r\n 'http://url/to/gifsicle.exe'\r\n 'http://url/to/gifsicle.dll'\r\n ]\r\n }\r\n }\r\n}\r\nvar bin = new Bin(opts);\r\n\r\nbin.check('--version', function (works) {\r\n if (!works) {\r\n console.log('Pre-build test failed, compiling from source');\r\n return bin.build();\r\n }\r\n\r\n console.log('Binary passed the test');\r\n});\r\n```\r\n\r\nGet the path to your binary with `bin.path`.\r\n\r\n```js\r\nconsole.log(bin.path);\r\n// => path/to/vendor/gifsicle\r\n```\r\n\r\n## API\r\n\r\n### .check(cmd, cb)\r\n\r\nCheck if a binary is present and working. If it isn't, download and test it by \r\nrunning the binary with `cmd` and see if it exits correctly.\r\n\r\n### .build(cb)\r\n\r\nDownload the source archive defined in the `src` property and build it using the \r\nbuild script defined in the `buildScript` property.\r\n\r\n## License\r\n\r\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin MÃ¥rtensson](http://kevinmartensson.com)\r\n", - "readmeFilename": "README.md", - "_id": "bin-wrapper@0.1.9", - "_from": "bin-wrapper@~0.1.3" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/chalk.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/chalk.js deleted file mode 100644 index 17c6dbab..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/chalk.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; -var ansi = require('ansi-styles'); -var defineProps = Object.defineProperties; - -ansi.grey = ansi.gray; - -var styles = (function () { - var ret = {}; - - Object.keys(ansi).forEach(function (key) { - ret[key] = { - get: function () { - this._styles.push(key); - return this; - } - }; - }); - - return ret; -})(); - -var chalk = module.exports = defineProps({}, init()); - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - var obj = defineProps(function self(str) { - if (!chalk.enabled) { - return str; - } - - return self._styles.reduce(function (str, name) { - var code = ansi[name]; - return code[0] + (str || '') + code[1]; - }, str); - }, styles); - - obj._styles = []; - - return obj[name]; - } - } - }); - - return ret; -} - -chalk.styles = ansi; - -chalk.stripColor = function (str) { - return str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, ''); -}; - -chalk.supportsColor = require('has-color'); - -// detect mode if not set manually -if (chalk.enabled === undefined) { - chalk.enabled = chalk.supportsColor; -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js deleted file mode 100644 index 56a5d19b..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/ansi-styles.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -module.exports = { - reset: ['\x1b[0m', '\x1b[0m'], - - bold: ['\x1b[1m', '\x1b[22m'], - italic: ['\x1b[3m', '\x1b[23m'], - underline: ['\x1b[4m', '\x1b[24m'], - inverse: ['\x1b[7m', '\x1b[27m'], - strikethrough: ['\x1b[9m', '\x1b[29m'], - - black: ['\x1b[30m', '\x1b[39m'], - red: ['\x1b[31m', '\x1b[39m'], - green: ['\x1b[32m', '\x1b[39m'], - yellow: ['\x1b[33m', '\x1b[39m'], - blue: ['\x1b[34m', '\x1b[39m'], - magenta: ['\x1b[35m', '\x1b[39m'], - cyan: ['\x1b[36m', '\x1b[39m'], - white: ['\x1b[37m', '\x1b[39m'], - gray: ['\x1B[90m', '\x1b[39m'], - - bgBlack: ['\x1b[40m', '\x1b[49m'], - bgRed: ['\x1b[41m', '\x1b[49m'], - bgGreen: ['\x1b[42m', '\x1b[49m'], - bgYellow: ['\x1b[43m', '\x1b[49m'], - bgBlue: ['\x1b[44m', '\x1b[49m'], - bgMagenta: ['\x1b[45m', '\x1b[49m'], - bgCyan: ['\x1b[46m', '\x1b[49m'], - bgWhite: ['\x1b[47m', '\x1b[49m'] -}; diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/package.json deleted file mode 100644 index c2f556a5..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "ansi-styles", - "version": "0.2.0", - "description": "ANSI escape codes for colorizing strings in the terminal", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/ansi-styles", - "bugs": { - "url": "https://github.com/sindresorhus/ansi-styles/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "ansi-styles.js" - ], - "main": "ansi-styles", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles)\n\n> ANSI escape codes for colorizing strings in the terminal.\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n![screenshot](screenshot.png)\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles`\n\n\n## Example\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green[0] + 'Hello world!' + ansi.green[1]);\n```\n\n## API\n\nEach style is an array of a start and end escape code.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT License • © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "ansi-styles@0.2.0", - "_from": "ansi-styles@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/readme.md deleted file mode 100644 index 646837c6..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -# ansi-styles [![Build Status](https://secure.travis-ci.org/sindresorhus/ansi-styles.png?branch=master)](http://travis-ci.org/sindresorhus/ansi-styles) - -> ANSI escape codes for colorizing strings in the terminal. - -You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. - -![screenshot](screenshot.png) - - -## Install - -Install with [npm](https://npmjs.org/package/ansi-styles): `npm install --save ansi-styles` - - -## Example - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green[0] + 'Hello world!' + ansi.green[1]); -``` - -## API - -Each style is an array of a start and end escape code. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/has-color.js b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/has-color.js deleted file mode 100644 index 27316b1f..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/has-color.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -module.exports = (function () { - if (process.argv.indexOf('--no-color') !== -1) { - return false; - } - - if (process.argv.indexOf('--color') !== -1) { - return true; - } - - if (!process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - return /^screen|^xterm|color|ansi|cygwin|linux/i.test(process.env.TERM); -})(); diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/package.json deleted file mode 100644 index e55a6244..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "has-color", - "version": "0.1.4", - "description": "Detect whether a terminal supports color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "capability", - "detect" - ], - "homepage": "https://github.com/sindresorhus/has-color", - "bugs": { - "url": "https://github.com/sindresorhus/has-color/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "has-color.js" - ], - "main": "has-color", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/has-color.git" - }, - "scripts": { - "test": "mocha" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color)\n\n> Detect whether a terminal supports color.\n\nUsed in the terminal color module [chalk](https://github.com/sindresorhus/chalk).\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/has-color): `npm install --save has-color`\n\n\n## Example\n\n```js\nvar hasColor = require('has-color');\n\nif (hasColor) {\n\tconsole.log('Terminal supports color.');\n}\n```\n\nIt obeys the CLI flags `--color` and `--no-color`.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "has-color@0.1.4", - "_from": "has-color@~0.1.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/readme.md deleted file mode 100644 index 0918c851..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/node_modules/has-color/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# has-color [![Build Status](https://secure.travis-ci.org/sindresorhus/has-color.png?branch=master)](http://travis-ci.org/sindresorhus/has-color) - -> Detect whether a terminal supports color. - -Used in the terminal color module [chalk](https://github.com/sindresorhus/chalk). - - -## Install - -Install with [npm](https://npmjs.org/package/has-color): `npm install --save has-color` - - -## Example - -```js -var hasColor = require('has-color'); - -if (hasColor) { - console.log('Terminal supports color.'); -} -``` - -It obeys the CLI flags `--color` and `--no-color`. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/package.json deleted file mode 100644 index fa15ac29..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "chalk", - "version": "0.2.1", - "description": "Terminal string styling done right", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "ansi", - "styles", - "tty", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "homepage": "https://github.com/sindresorhus/chalk", - "bugs": { - "url": "https://github.com/sindresorhus/chalk/issues" - }, - "license": "MIT", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "files": [ - "chalk.js" - ], - "main": "chalk", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/chalk.git" - }, - "scripts": { - "test": "mocha" - }, - "dependencies": { - "has-color": "~0.1.0", - "ansi-styles": "~0.2.0" - }, - "devDependencies": { - "mocha": "~1.12.0" - }, - "engines": { - "node": ">=0.8.0" - }, - "readme": "# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk)\n\n> Terminal string styling done right.\n\n[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough.\n\n**Chalk is a clean and focused alternative.**\n\n![screenshot](screenshot.png)\n\n\n## Why\n\n- **Doesn't extend String.prototype**\n- Expressive API\n- Clean and focused\n- Auto-detects color support\n- Actively maintained\n\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/chalk): `npm install --save chalk`\n\n\n## Example\n\nChalk comes with an easy to use composable API where you just chain the styles you want.\n\n```js\nvar chalk = require('chalk');\n\n// style a string\nconsole.log(chalk.blue('Hello world!'));\n\n// combine styled and normal strings\nconsole.log(chalk.blue('Hello') + 'World' + chalk.red('!'));\n\n// compose multiple styles using the chainable API\nconsole.log(chalk.blue.bgRed.bold('Hello world!'));\n\n// nest styles\nchalk.red('Hello' + chalk.underline.bgBlue('world') + '!');\n```\n\nYou can easily define your own themes.\n\n```js\nvar chalk = require('chalk');\nvar error = chalk.bold.red;\nconsole.log(error('Error!'));\n```\n\n\n## API\n\n### chalk.\\<style>\\[.\\<style>...](string)\n\nChain [styles](#styles) and call the last one as a method with a string argument.\n\n\n### chalk.enabled\n\nColor support is automatically detected, but you can override it.\n\n### chalk.supportsColor\n\nDetect whether the terminal [supports color](https://github.com/sindresorhus/has-color).\n\nCan be overridden by the user with the flags `--color` and `--no-color`.\n\nUsed internally and handled for you, but exposed for convenience.\n\n### chalk.styles\n\nExposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles).\n\n```js\nvar chalk = require('chalk');\n\nconsole.log(chalk.styles.red);\n//=> ['\\x1b[31m', '\\x1b[39m']\n\nconsole.log(chalk.styles.red[0] + 'Hello' + chalk.styles.red[1]);\n// first item is the style escape code and second is the reset escape code\n```\n\n### chalk.stripColor(string)\n\nStrip color from a string.\n\n\n## Styles\n\n### General\n\n- reset\n- bold\n- italic\n- underline\n- inverse\n- strikethrough\n\n### Text colors\n\n- black\n- red\n- green\n- yellow\n- blue\n- magenta\n- cyan\n- white\n- gray\n\n### Background colors\n\n- bgBlack\n- bgRed\n- bgGreen\n- bgYellow\n- bgBlue\n- bgMagenta\n- bgCyan\n- bgWhite\n\n\n## License\n\nMIT License • © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", - "_id": "chalk@0.2.1", - "_from": "chalk@~0.2.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/readme.md deleted file mode 100644 index d369d2ef..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/node_modules/chalk/readme.md +++ /dev/null @@ -1,130 +0,0 @@ -# chalk [![Build Status](https://secure.travis-ci.org/sindresorhus/chalk.png?branch=master)](http://travis-ci.org/sindresorhus/chalk) - -> Terminal string styling done right. - -[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of problems. Although there are other ones, they either do too much or not enough. - -**Chalk is a clean and focused alternative.** - -![screenshot](screenshot.png) - - -## Why - -- **Doesn't extend String.prototype** -- Expressive API -- Clean and focused -- Auto-detects color support -- Actively maintained - - -## Install - -Install with [npm](https://npmjs.org/package/chalk): `npm install --save chalk` - - -## Example - -Chalk comes with an easy to use composable API where you just chain the styles you want. - -```js -var chalk = require('chalk'); - -// style a string -console.log(chalk.blue('Hello world!')); - -// combine styled and normal strings -console.log(chalk.blue('Hello') + 'World' + chalk.red('!')); - -// compose multiple styles using the chainable API -console.log(chalk.blue.bgRed.bold('Hello world!')); - -// nest styles -chalk.red('Hello' + chalk.underline.bgBlue('world') + '!'); -``` - -You can easily define your own themes. - -```js -var chalk = require('chalk'); -var error = chalk.bold.red; -console.log(error('Error!')); -``` - - -## API - -### chalk.\<style>\[.\<style>...](string) - -Chain [styles](#styles) and call the last one as a method with a string argument. - - -### chalk.enabled - -Color support is automatically detected, but you can override it. - -### chalk.supportsColor - -Detect whether the terminal [supports color](https://github.com/sindresorhus/has-color). - -Can be overridden by the user with the flags `--color` and `--no-color`. - -Used internally and handled for you, but exposed for convenience. - -### chalk.styles - -Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). - -```js -var chalk = require('chalk'); - -console.log(chalk.styles.red); -//=> ['\x1b[31m', '\x1b[39m'] - -console.log(chalk.styles.red[0] + 'Hello' + chalk.styles.red[1]); -// first item is the style escape code and second is the reset escape code -``` - -### chalk.stripColor(string) - -Strip color from a string. - - -## Styles - -### General - -- reset -- bold -- italic -- underline -- inverse -- strikethrough - -### Text colors - -- black -- red -- green -- yellow -- blue -- magenta -- cyan -- white -- gray - -### Background colors - -- bgBlack -- bgRed -- bgGreen -- bgYellow -- bgBlue -- bgMagenta -- bgCyan -- bgWhite - - -## License - -MIT License • © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/package.json deleted file mode 100644 index 30e28f1a..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "optipng-bin", - "version": "0.3.1", - "description": "OptiPNG wrapper that makes it seamlessly available as a local dependency on OS X, Linux, FreeBSD and Windows", - "keywords": [ - "png", - "compress", - "minify", - "optimize", - "img", - "image" - ], - "homepage": "https://github.com/yeoman/node-optipng-bin", - "bugs": { - "url": "https://github.com/yeoman/node-optipng-bin/issues" - }, - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "maintainers": [ - { - "name": "Duncan Wong" - }, - { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - } - ], - "main": "lib/optipng", - "bin": { - "optipng": "bin/optipng.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/yeoman/node-optipng-bin.git" - }, - "scripts": { - "test": "mocha", - "postinstall": "node lib/check.js" - }, - "engines": { - "node": ">=0.8.0" - }, - "licenses": [ - { - "type": "BSD" - } - ], - "dependencies": { - "bin-wrapper": "~0.1.3", - "chalk": "~0.2.0" - }, - "devDependencies": { - "mocha": "~1.13.0" - }, - "files": [ - "bin", - "lib" - ], - "readme": "# node-optipng-bin [![Build Status](https://secure.travis-ci.org/yeoman/node-optipng-bin.png?branch=master)](http://travis-ci.org/yeoman/node-optipng-bin)\n\n[OptiPNG](http://optipng.sourceforge.net) 0.7.4 Node.js wrapper that makes it seamlessly available as a local dependency on OS X, Linux, FreeBSD, Solaris and Windows.\n\n> OptiPNG is a PNG optimizer that recompresses image files to a smaller size, without losing any information.\n\n## Install\n\nInstall with [npm](https://npmjs.org/package/optipng-bin): `npm install --save optipng-bin`\n\n\n## Example usage\n\n```js\nvar execFile = require('child_process').execFile;\nvar optipngPath = require('optipng-bin').path;\n\nexecFile(optipngPath, ['-v'], function(err, stdout, stderr) {\n console.log('OptiPNG version:', stdout.match(/\\d\\.\\d\\.\\d/)[0]);\n});\n```\n\nCan also be run directly from `./node_modules/.bin/optipng`.\n\n\n## License\n\nEverything excluding the binaries licensed under the [BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google.\n\nOptiPNG licensed under the [zlib license](http://optipng.sourceforge.net/license.txt) and copyright Cosmin Truta and the Contributing Authors.\n", - "readmeFilename": "readme.md", - "_id": "optipng-bin@0.3.1", - "_from": "optipng-bin@~0.3.0" -} diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/readme.md b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/readme.md deleted file mode 100644 index db453221..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -# node-optipng-bin [![Build Status](https://secure.travis-ci.org/yeoman/node-optipng-bin.png?branch=master)](http://travis-ci.org/yeoman/node-optipng-bin) - -[OptiPNG](http://optipng.sourceforge.net) 0.7.4 Node.js wrapper that makes it seamlessly available as a local dependency on OS X, Linux, FreeBSD, Solaris and Windows. - -> OptiPNG is a PNG optimizer that recompresses image files to a smaller size, without losing any information. - -## Install - -Install with [npm](https://npmjs.org/package/optipng-bin): `npm install --save optipng-bin` - - -## Example usage - -```js -var execFile = require('child_process').execFile; -var optipngPath = require('optipng-bin').path; - -execFile(optipngPath, ['-v'], function(err, stdout, stderr) { - console.log('OptiPNG version:', stdout.match(/\d\.\d\.\d/)[0]); -}); -``` - -Can also be run directly from `./node_modules/.bin/optipng`. - - -## License - -Everything excluding the binaries licensed under the [BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google. - -OptiPNG licensed under the [zlib license](http://optipng.sourceforge.net/license.txt) and copyright Cosmin Truta and the Contributing Authors. diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/vendor/optipng b/node_modules/grunt-contrib-imagemin/node_modules/image-min/node_modules/optipng-bin/vendor/optipng deleted file mode 100755 index 069639b60036058be5e42e672e73bd52fa84c5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171784 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 Y>w8o21^l5Y=L=IspK~kuG@UX37YHHr=Kufz diff --git a/node_modules/grunt-contrib-imagemin/node_modules/image-min/package.json b/node_modules/grunt-contrib-imagemin/node_modules/image-min/package.json deleted file mode 100644 index ee0106e2..00000000 --- a/node_modules/grunt-contrib-imagemin/node_modules/image-min/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "image-min", - "version": "0.1.3", - "description": "Minify GIF, JPEG and PNG images", - "keywords": [ - "compress", - "image", - "img", - "jpeg", - "jpg", - "minify", - "png" - ], - "homepage": "https://github.com/kevva/image-min", - "bugs": { - "url": "https://github.com/kevva/image-min/issues" - }, - "author": { - "name": "Kevin Martensson", - "email": "kevinmartensson@gmail.com", - "url": "http://kevinmartensson.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/kevva/image-min.git" - }, - "scripts": { - "test": "mocha --reporter list" - }, - "main": "imagemin.js", - "files": [ - "imagemin.js" - ], - "dependencies": { - "cache-file": "~0.1.1", - "filesize": "~2.0.0", - "mkdirp": "~0.3.5", - "mout": "~0.7.1", - "gifsicle": "~0.1.0", - "jpegtran-bin": "~0.2.0", - "optipng-bin": "~0.3.0" - }, - "devDependencies": { - "each-async": "~0.1.1", - "mocha": "~1.12.0", - "rimraf": "~2.2.6" - }, - "optionalDependencies": { - "gifsicle": "~0.1.0", - "jpegtran-bin": "~0.2.0", - "optipng-bin": "~0.3.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "readme": "# image-min [![Build Status](https://secure.travis-ci.org/kevva/image-min.png?branch=master)](http://travis-ci.org/kevva/image-min)\n\nMinify GIF, JPEG and PNG images seamlessly with Node.js.\n\n## Getting started\n\nInstall with [npm](https://npmjs.org/package/image-min): `npm install image-min`\n\n## Examples\n\n`data` returns information about how much optimization was done.\n\n```js\nvar imagemin = require('image-min');\n\nimagemin(img.gif, img-minified.gif, function (err, data) {\n console.log('Saved ' + data.diffSize);\n});\n\nimagemin(img.jpg, img-minified.jpg, { progressive: true }, function (err, data) {\n console.log('Saved ' + data.diffSize);\n});\n\nimagemin(img.png, img-minified.png, { optimizationLevel: 4 }, function (err, data) {\n console.log('Saved ' + data.diffSize);\n});\n```\n\n## API\n\n### imagemin(src, dest, opts, cb)\n\nOptimize a `GIF`, `JPEG`, or `PNG` image by providing a `src` and `dest`. Use the\noptions below (optionally) to configure how your images are optimized.\n\n## Options\n\n### cache\n\nType: `Boolean` \nDefault: `false`\n\nWhether to cache optimized images.\n\n### interlaced (GIF only)\n\nType: `Boolean` \nDefault: `false`\n\nInterlace gif for progressive rendering.\n\n### optimizationLevel (PNG only)\n\nType: `Number` \nDefault: `2`\n\nSelect a optimization level between 0 and 7.\n\n### progressive (JPEG only)\n\nType: `Boolean` \nDefault: `false`\n\nLossless conversion to progressive.\n\n## Used by\n\n* [gulp-imagemin](https://github.com/sindresorhus/gulp-imagemin)\n* [grunt-contrib-imagemin](https://github.com/gruntjs/grunt-contrib-imagemin)\n\n## License\n\n[MIT License](http://en.wikipedia.org/wiki/MIT_License) (c) [Kevin Mårtensson](http://kevinmartensson.com)\n", - "readmeFilename": "README.md", - "_id": "image-min@0.1.3", - "_from": "image-min@~0.1.1" -} diff --git a/node_modules/grunt-contrib-imagemin/package.json b/node_modules/grunt-contrib-imagemin/package.json deleted file mode 100644 index 23ae9b8a..00000000 --- a/node_modules/grunt-contrib-imagemin/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "grunt-contrib-imagemin", - "description": "Minify PNG, JPEG and GIF images", - "version": "0.5.0", - "author": { - "name": "Grunt Team", - "url": "http://gruntjs.com/" - }, - "repository": { - "type": "git", - "url": "git://github.com/gruntjs/grunt-contrib-imagemin" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/gruntjs/grunt-contrib-imagemin/blob/master/LICENSE-MIT" - } - ], - "engines": { - "node": ">=0.8.0" - }, - "scripts": { - "test": "grunt test" - }, - "dependencies": { - "async": "~0.2.9", - "chalk": "~0.4.0", - "filesize": "~2.0.0", - "image-min": "~0.1.1" - }, - "devDependencies": { - "cache-file": "~0.1.2", - "grunt": "~0.4.0", - "grunt-contrib-clean": "~0.5.0", - "grunt-contrib-internal": "~0.4.6", - "grunt-contrib-jshint": "~0.8.0", - "grunt-contrib-nodeunit": "~0.2.0", - "time-grunt": "~0.2.7" - }, - "peerDependencies": { - "grunt": "~0.4.0" - }, - "keywords": [ - "compress", - "gif", - "gruntplugin", - "image", - "img", - "jpeg", - "jpg", - "minify", - "png" - ], - "files": [ - "tasks", - "LICENSE-MIT" - ], - "readme": "# grunt-contrib-imagemin v0.4.1 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-imagemin.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-imagemin)\n\n> Minify PNG, JPEG and GIF images\n\n\n\n## Getting Started\nThis plugin requires Grunt `~0.4.0`\n\nIf you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:\n\n```shell\nnpm install grunt-contrib-imagemin --save-dev\n```\n\nOnce the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:\n\n```js\ngrunt.loadNpmTasks('grunt-contrib-imagemin');\n```\n\n\n\n\n## Imagemin task\n_Run this task with the `grunt imagemin` command._\n\nTask targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.\n\nMinify images using [OptiPNG](http://optipng.sourceforge.net), [pngquant](http://pngquant.org), [jpegtran](http://jpegclub.org/jpegtran/) and [gifsicle](http://www.lcdf.org/gifsicle).\n\nImages will be cached and only minified again if they change.\n\n### Options\n\nOptions will only apply to the relevant files, so you don't need separate targets for png/jpg.\n\n\n#### optimizationLevel *(png only)*\n\nType: `Number`\nDefault: `7`\n\nSelect optimization level between `0` and `7`.\n\n> The optimization level 0 enables a set of optimization operations that require minimal effort. There will be no changes to image attributes like bit depth or color type, and no recompression of existing IDAT datastreams. The optimization level 1 enables a single IDAT compression trial. The trial chosen is what. OptiPNG thinks it’s probably the most effective. The optimization levels 2 and higher enable multiple IDAT compression trials; the higher the level, the more trials.\n\nLevel and trials:\n\n1. 1 trial\n2. 8 trials\n3. 16 trials\n4. 24 trials\n5. 48 trials\n6. 120 trials\n7. 240 trials\n\n\n#### progressive *(jpg only)*\n\nType: `Boolean`\nDefault: `true`\n\nLossless conversion to progressive.\n\n\n#### interlaced *(gif only)*\n\nType: `Boolean`\nDefault: `true`\n\nInterlace gif for progressive rendering.\n\n\n#### pngquant\n\nType: `Boolean`\nDefault: `false`\n\nWhether to enable pngquant compression.\n\n> pngquant is a command-line utility for converting 24/32-bit PNG images to paletted (8-bit) PNGs. The conversion reduces file sizes significantly (often as much as 70%) and preserves full alpha transparency.\n\n#### Example config\n\nYou can either map your files statically or [dynamically](https://github.com/gruntjs/grunt/wiki/Configuring-tasks#building-the-files-object-dynamically).\n\n```javascript\ngrunt.initConfig({\n imagemin: { // Task\n static: { // Target\n options: { // Target options\n optimizationLevel: 3\n },\n files: { // Dictionary of files\n 'dist/img.png': 'src/img.png', // 'destination': 'source'\n 'dist/img.jpg': 'src/img.jpg',\n 'dist/img.gif': 'src/img.gif'\n }\n },\n dynamic: { // Another target\n files: [{\n expand: true, // Enable dynamic expansion\n cwd: 'src/', // Src matches are relative to this path\n src: ['**/*.{png,jpg,gif}'], // Actual patterns to match\n dest: 'dist/' // Destination path prefix\n }]\n }\n }\n});\n\ngrunt.loadNpmTasks('grunt-contrib-imagemin');\ngrunt.registerTask('default', ['imagemin']);\n```\n\n\n## Release History\n\n * 2014-01-08   v0.4.1   Prevent \"Maximum call stack size exceeded\". Speed up loading this task by lazy requiring bin deps.\n * 2013-11-22   v0.4.0   The `pngquant` option is now `false` by default instead of `true`.\n * 2013-09-09   v0.3.0   Add `interlace` option for gif files.\n * 2013-08-16   v0.2.0   Add `gifsicle` and `pngquant`. Cache images so only changed images are optimized. Default `optimizationLevel` to `7` and `progressive` to `true`.\n * 2013-04-10   v0.1.4   Fix exception when running in verbose mode.\n * 2013-04-05   v0.1.3   Fix OptiPNG not being able to overwrite file. Allow overwriting src when dest/src is the same. Limit to 10 concurrent optimizations.\n * 2013-02-22   v0.1.2   Fix OptiPNG not working on some systems. Prevent OptiPNG from producing .bak files.\n * 2013-02-15   v0.1.1   First official release for Grunt 0.4.0.\n * 2013-01-30   v0.1.1rc8   Fix task not creating destination folders\n * 2013-01-30   v0.1.1rc7   Updating to work with grunt v0.4.0rc7. Switching to this.files api.\n * 2012-11-01   v0.1.0   Initial release.\n\n---\n\nTask submitted by [Sindre Sorhus](http://github.com/sindresorhus)\n\n*This file was generated on Wed Jan 08 2014 20:04:40.*\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/gruntjs/grunt-contrib-imagemin/issues" - }, - "homepage": "https://github.com/gruntjs/grunt-contrib-imagemin", - "_id": "grunt-contrib-imagemin@0.5.0", - "_from": "grunt-contrib-imagemin@" -} diff --git a/node_modules/grunt-contrib-imagemin/tasks/imagemin.js b/node_modules/grunt-contrib-imagemin/tasks/imagemin.js deleted file mode 100644 index dceb9d61..00000000 --- a/node_modules/grunt-contrib-imagemin/tasks/imagemin.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; -var os = require('os'); -var async = require('async'); -var chalk = require('chalk'); -var filesize = require('filesize'); -var imagemin = require('image-min'); - -/* - * grunt-contrib-imagemin - * http://gruntjs.com/ - * - * Copyright (c) 2013 Sindre Sorhus, contributors - * Licensed under the MIT license. - */ - -module.exports = function (grunt) { - grunt.registerMultiTask('imagemin', 'Minify PNG, JPEG and GIF images', function () { - var done = this.async(); - var self = this; - var totalSaved = 0; - var options = this.options({ - cache: true, - optimizationLevel: 7, - progressive: true - }); - - async.forEachLimit(this.files, os.cpus().length, function (file, next) { - imagemin(file.src[0], file.dest, options, function (err, data) { - var msg; - - if (err) { - grunt.warn(err); - } - - totalSaved += data.diffSizeRaw; - - if (data.diffSizeRaw < 10) { - msg = 'already optimized'; - } else { - msg = 'saved ' + data.diffSize; - } - - grunt.log.writeln(chalk.green('✔ ') + file.src[0] + chalk.gray(' (' + msg + ')')); - process.nextTick(next); - }); - }, function (err) { - if (err) { - grunt.warn(err); - } - - var msg = 'Minified ' + self.files.length + ' '; - msg += self.files.length === 1 ? 'image' : 'images'; - msg += chalk.gray(' (saved ' + filesize(totalSaved) + ')'); - - grunt.log.writeln(msg); - done(); - }); - }); -}; diff --git a/node_modules/grunt-contrib-jshint/LICENSE-MIT b/node_modules/grunt-contrib-jshint/LICENSE-MIT deleted file mode 100644 index 83688497..00000000 --- a/node_modules/grunt-contrib-jshint/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 "Cowboy" Ben Alman, contributors - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-jshint/README.md b/node_modules/grunt-contrib-jshint/README.md deleted file mode 100644 index 8627f879..00000000 --- a/node_modules/grunt-contrib-jshint/README.md +++ /dev/null @@ -1,223 +0,0 @@ -# grunt-contrib-jshint v0.8.0 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-jshint.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-jshint) - -> Validate files with JSHint. - - - -## Getting Started -This plugin requires Grunt `~0.4.0` - -If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command: - -```shell -npm install grunt-contrib-jshint --save-dev -``` - -Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript: - -```js -grunt.loadNpmTasks('grunt-contrib-jshint'); -``` - - - - -## Jshint task -_Run this task with the `grunt jshint` command._ - -Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide. - -For more explanations of the lint errors JSHint will throw at you please visit [jslinterrors.com](http://jslinterrors.com/). - -### Options - -Any specified option will be passed through directly to [JSHint][], thus you can specify any option that JSHint supports. See the [JSHint documentation][] for a list of supported options. - -[JSHint]: http://www.jshint.com/ -[JSHint documentation]: http://www.jshint.com/docs/ - -A few additional options are supported: - -#### globals -Type: `Object` -Default value: `null` - -A map of global variables, with keys as names and a boolean value to determine if they are assignable. This is not a standard JSHint option, but is passed into the `JSHINT` function as its third argument. See the [JSHint documentation][] for more information. - -#### jshintrc -Type: `String` or `true` -Default value: `null` - -If set to `true`, no config will be sent to jshint and jshint will search for `.jshintrc` files relative to the flies being linted. - -If a filename is specified, options and globals defined therein will be used. The `jshintrc` file must be valid JSON and looks something like this: - -```json -{ - "curly": true, - "eqnull": true, - "eqeqeq": true, - "undef": true, - "globals": { - "jQuery": true - } -} -``` - -*Be aware that `jshintrc` settings are not merged with your Grunt options.* - -#### extensions -Type: `String` -Default value: `''` - -A list of non-dot-js extensions to check. - -#### ignores -Type: `Array` -Default value: `null` - -A list of files and dirs to ignore. This will override your `.jshintignore` file if set and does not merge. - -#### force -Type: `Boolean` -Default value: `false` - -Set `force` to `true` to report JSHint errors but not fail the task. - -#### reporter -Type: `String` -Default value: `null` - -Allows you to modify this plugins output. By default it will use a built-in Grunt reporter. Set the path to your own custom reporter or to one of the built-in JSHint reporters: `jslint` or `checkstyle`. - -See also: [Writing your own JSHint reporter.](http://jshint.com/docs/reporters/) - -#### reporterOutput -Type: `String` -Default value: `null` - -Specify a filepath to output the results of a reporter. If `reporterOutput` is specified then all output will be written to the given filepath instead of printed to stdout. - -### Usage examples - -#### Wildcards -In this example, running `grunt jshint:all` (or `grunt jshint` because `jshint` is a [multi task](http://gruntjs.com/configuring-tasks#task-configuration-and-targets)) will lint the project's Gruntfile as well as all JavaScript files in the `lib` and `test` directories and their subdirectores, using the default JSHint options. - -```js -// Project configuration. -grunt.initConfig({ - jshint: { - all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js'] - } -}); -``` - -#### Linting before and after concatenating -In this example, running `grunt jshint` will lint both the "beforeconcat" set and "afterconcat" sets of files. This is not ideal, because `dist/output.js` may get linted before it gets created via the [grunt-contrib-concat plugin](https://github.com/gruntjs/grunt-contrib-concat) `concat` task. - -In this case, you should lint the "beforeconcat" files first, then concat, then lint the "afterconcat" files, by running `grunt jshint:beforeconcat concat jshint:afterconcat`. - -```js -// Project configuration. -grunt.initConfig({ - concat: { - dist: { - src: ['src/foo.js', 'src/bar.js'], - dest: 'dist/output.js' - } - }, - jshint: { - beforeconcat: ['src/foo.js', 'src/bar.js'], - afterconcat: ['dist/output.js'] - } -}); -``` - -#### Specifying JSHint options and globals - -In this example, custom JSHint options are specified. Note that when `grunt jshint:uses_defaults` is run, those files are linted using the default options, but when `grunt jshint:with_overrides` is run, those files are linted using _merged_ task/target options. - -```js -// Project configuration. -grunt.initConfig({ - jshint: { - options: { - curly: true, - eqeqeq: true, - eqnull: true, - browser: true, - globals: { - jQuery: true - }, - }, - uses_defaults: ['dir1/**/*.js', 'dir2/**/*.js'], - with_overrides: { - options: { - curly: false, - undef: true, - }, - files: { - src: ['dir3/**/*.js', 'dir4/**/*.js'] - }, - } - }, -}); -``` - -#### Ignoring specific warnings - -If you would like to ignore a specific warning: - -```shell -[L24:C9] W015: Expected '}' to have an indentation at 11 instead at 9. -``` - -You can toggle it by prepending `-` to the warning id as an option: - -```js -grunt.initConfig({ - jshint: { - ignore_warning: { - options: { - '-W015': true, - }, - src: ['**/*.js'], - }, - }, -}); -``` - - -## Release History - - * 2013-12-25   v0.8.0   Update to jshint 2.4.0. - * 2013-11-16   v0.7.2   Only print file name once per error. - * 2013-10-31   v0.7.1   Ability to set jshintrc option to true to use jshint's native ability for finding .jshintrc files relative to the linted files. - * 2013-10-23   v0.7.0   Update to jshint 2.3.0. - * 2013-10-23   v0.6.5   Fix output when maxerr is low. - * 2013-08-29   v0.6.4   jshintrc now loaded by jshint allowing comments. - * 2013-08-15   v0.6.3   Fix module location for jshint 2.1.10. - * 2013-07-29   v0.6.2   Update to jshint 2.1.7. - * 2013-07-27   v0.6.1   Peg jshint to 2.1.4 until breaking changes in 2.1.5 are fixed. - * 2013-06-02   v0.6.0   Dont always succeed the task when using a custom reporter. Bump jshint to 2.1.3. - * 2013-05-22   v0.5.4   Fix default reporter to show offending file. - * 2013-05-19   v0.5.3   Performance: Execute the reporter once rather than per file. - * 2013-05-18   v0.5.2   Fix printing too many erroneous ignored file errors. - * 2013-05-17   v0.5.1   Fix for when only 1 file is lint free. - * 2013-05-17   v0.5.0   Bump to jshint 2.0. Add support for .jshintignore files and ignores option Add support for extensions option. Add support for custom reporters and output report to a file. - * 2013-04-08   v0.4.3   Fix evaluation of predef option when it's an object. - * 2013-04-08   v0.4.2   Avoid wiping force option when jshintrc is used. - * 2013-04-06   v0.4.1   Fix to allow object type for deprecated predef. - * 2013-04-04   v0.4.0   Revert task level options to override jshintrc files. - * 2013-03-13   v0.3.0   Bump to JSHint 1.1.0. Add force option to report JSHint errors but not fail the task. Add error/warning code to message. Allow task level options to override jshintrc file. - * 2013-02-26   v0.2.0   Bump to JSHint 1.0 - * 2013-02-15   v0.1.1   First official release for Grunt 0.4.0. - * 2013-01-18   v0.1.1rc6   Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions. - * 2013-01-09   v0.1.1rc5   Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api. - * 2012-10-18   v0.1.0   Work in progress, not yet officially released. - ---- - -Task submitted by ["Cowboy" Ben Alman](http://benalman.com/) - -*This file was generated on Wed Dec 25 2013 12:35:34.* diff --git a/node_modules/grunt-contrib-jshint/node_modules/.bin/jshint b/node_modules/grunt-contrib-jshint/node_modules/.bin/jshint deleted file mode 120000 index 1b5b30ca..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/.bin/jshint +++ /dev/null @@ -1 +0,0 @@ -../jshint/bin/jshint \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/README.md deleted file mode 100644 index 399d25f0..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/README.md +++ /dev/null @@ -1,51 +0,0 @@ -JSHint, A Static Code Analysis Tool for JavaScript --------------------------------------------------- - -\[ [Use it online](http://jshint.com/) • [About](http://jshint.com/about/) • -[Docs](http://jshint.com/docs/) • [FAQ](http://jshint.com/docs/faq) • -[Install](http://jshint.com/install/) • [Hack](http://jshint.com/hack/) • -[Blog](http://jshint.com/blog/) • [Twitter](https://twitter.com/jshint/) \] - -[![Build Status](https://travis-ci.org/jshint/jshint.png?branch=2.x)](https://travis-ci.org/jshint/jshint) -[![NPM version](https://badge.fury.io/js/jshint.png)](http://badge.fury.io/js/jshint) - -JSHint is a community-driven tool to detect errors and potential problems -in JavaScript code and to enforce your team’s coding conventions. It is -very flexible so you can easily adjust it to your particular coding guidelines -and the environment you expect your code to execute in. - -#### JSHint 2.x versus JSHint 3 - -There's an effort going on to release the next major version of JSHint. All -development in the `master` branch is for the version 3.0. Current stable -version is in the `2.x` branch. Keep that in mind when submitting pull requests. - -Also, before reporting a bug or thinking about hacking on JSHint, read this: -[JSHint 3 plans](http://www.jshint.com/blog/jshint-3-plans/). TL;DR: we're -moving away from style checks within JSHint so no new features around -style checks will be accepted. Bug fixes are fine for the `2.x` branch. - -#### Reporting a bug - -To report a bug simply create a -[new GitHub Issue](https://github.com/jshint/jshint/issues/new) and describe -your problem or suggestion. We welcome all kind of feedback regarding -JSHint including but not limited to: - - * When JSHint doesn't work as expected - * When JSHint complains about valid JavaScript code that works in all browsers - * When you simply want a new option or feature - -Before reporting a bug look around to see if there are any open or closed tickets -that cover your issue. And remember the wisdom: pull request > bug report > tweet. - - -#### License - -JSHint is distributed under the MIT License. One file and one file only -(src/stable/jshint.js) is distributed under the slightly modified MIT License. - - -#### Thank you! - -We really appreciate all kind of feedback and contributions. Thanks for using and supporting JSHint! diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/apply b/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/apply deleted file mode 100755 index ab0da408..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/apply +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env node - -var shjs = require("shelljs"); -var url = "https://github.com/jshint/jshint/pull/" + process.argv[2] + ".diff"; - -shjs.exec('curl "' + url + '" | git apply'); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/build b/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/build deleted file mode 100755 index a0c7f4a6..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/build +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env node -/*jshint shelljs:true */ - -"use strict"; - -var browserify = require("browserify"); -var bundle = browserify("./src/jshint.js"); -var version = require("../package.json").version; -require("shelljs/make"); - -if (!test("-e", "../dist")) - mkdir("../dist"); - -bundle.require("./src/jshint.js", { expose: "jshint" }); -bundle.bundle({}, function (err, src) { - var web = "./dist/jshint.js"; - var rhino = "./dist/jshint-rhino.js"; - - [ "// " + version, - "var JSHINT;", - "if (typeof window === 'undefined') window = {};", - "(function () {", - "var require;", - src, - "JSHINT = require('jshint').JSHINT;", - "if (typeof exports === 'object' && exports) exports.JSHINT = JSHINT;", - "}());" - ].join("\n").to(web); - - ("#!/usr/bin/env rhino\nvar window = {};\n" + cat(web, "./src/platforms/rhino.js")).to(rhino); - chmod("+x", rhino); -}); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/changelog b/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/changelog deleted file mode 100755 index 522c5166..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/changelog +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env node -/*jshint shelljs:true, lastsemic:true, -W101*/ - -"use strict"; - -var version = require("../package.json").version; -require("shelljs/make"); - -exec("git log --format='%H|%h|%an|%s' " + version + "..HEAD", { silent: true }, function (code, output) { - if (code !== 0) - return void console.log("git log return code is non-zero"); - - var commits = output.split("\n") - .filter(function (cmt) { return cmt.trim() !== "" }) - .map(function (cmt) { return cmt.split("|") }); - - var html = ""; - var authors = {}; - - commits.forEach(function (cmt) { - var tr = ""; - tr += "<td class='commit'><a href='https://github.com/jshint/jshint/commit/" + cmt[0] + "'>" + cmt[1] + "</a></td>"; - tr += "<td class='desc'>" + cmt[3].replace(/(#(\d+))/, "<a href='https://github.com/jshint/jshint/issues/$2/'>$1</a>") + "</td>"; - html += "<tr>" + tr + "</tr>\n"; - - if (cmt[2] !== "Anton Kovalyov") - authors[cmt[2]] = true; - }); - - echo("<!-- auto-generated -->"); - echo("<table class='changelog'>\n" + html + "</table>\n"); - - if (Object.keys(authors).length) { - echo("<p class='thx'><strong>Thanks</strong> to " + Object.keys(authors).join(", ") + " for sending patches!</p>"); - } -}); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/jshint b/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/jshint deleted file mode 100755 index f56105fd..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/jshint +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require("../src/cli.js").interpret(process.argv); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/land b/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/land deleted file mode 100755 index ab3eafb4..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/bin/land +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env node - -var url = "https://github.com/jshint/jshint/pull/" + process.argv[2] + ".patch"; -var https = require("https"); -var shjs = require("shelljs"); -var opts = require("url").parse(url); -var msg = process.argv[3]; - -opts.rejectUnauthorized = false; -opts.agent = new https.Agent(opts); - -https.get(opts, succ).on("error", err); - -function succ(res) { - if (res.statusCode !== 200) - return void console.log("error:", res.statusCode); - - var data = ""; - res.on("data", function (chunk) { - data += chunk.toString(); - }); - - res.on("end", function () { - data = data.split("\n"); - data = data[1].replace(/^From\:\s/, ""); - data = data.replace(/"/g, ""); - - shjs.exec("git commit -s --author=\"" + data + "\" --message=\"" + msg + "\""); - }) -} - -function err(res) { - console.log("error:", res.message); -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/data/ascii-identifier-data.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/data/ascii-identifier-data.js deleted file mode 100644 index 00b5c644..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/data/ascii-identifier-data.js +++ /dev/null @@ -1,22 +0,0 @@ -var identifierStartTable = []; - -for (var i = 0; i < 128; i++) { - identifierStartTable[i] = - i === 36 || // $ - i >= 65 && i <= 90 || // A-Z - i === 95 || // _ - i >= 97 && i <= 122; // a-z -} - -var identifierPartTable = []; - -for (var i = 0; i < 128; i++) { - identifierPartTable[i] = - identifierStartTable[i] || // $, _, A-Z, a-z - i >= 48 && i <= 57; // 0-9 -} - -module.exports = { - asciiIdentifierStartTable: identifierStartTable, - asciiIdentifierPartTable: identifierPartTable -}; diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-part-only.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-part-only.js deleted file mode 100644 index 3de63144..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-part-only.js +++ /dev/null @@ -1,1570 +0,0 @@ -module.exports = [ - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 781, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 826, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 845, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 858, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 877, - 878, - 879, - 1155, - 1156, - 1157, - 1158, - 1159, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1434, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1453, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1466, - 1467, - 1468, - 1469, - 1471, - 1473, - 1474, - 1476, - 1477, - 1479, - 1552, - 1553, - 1554, - 1555, - 1556, - 1557, - 1558, - 1559, - 1560, - 1561, - 1562, - 1611, - 1612, - 1613, - 1614, - 1615, - 1616, - 1617, - 1618, - 1619, - 1620, - 1621, - 1622, - 1623, - 1624, - 1625, - 1626, - 1627, - 1628, - 1629, - 1630, - 1631, - 1632, - 1633, - 1634, - 1635, - 1636, - 1637, - 1638, - 1639, - 1640, - 1641, - 1648, - 1750, - 1751, - 1752, - 1753, - 1754, - 1755, - 1756, - 1759, - 1760, - 1761, - 1762, - 1763, - 1764, - 1767, - 1768, - 1770, - 1771, - 1772, - 1773, - 1776, - 1777, - 1778, - 1779, - 1780, - 1781, - 1782, - 1783, - 1784, - 1785, - 1809, - 1840, - 1841, - 1842, - 1843, - 1844, - 1845, - 1846, - 1847, - 1848, - 1849, - 1850, - 1851, - 1852, - 1853, - 1854, - 1855, - 1856, - 1857, - 1858, - 1859, - 1860, - 1861, - 1862, - 1863, - 1864, - 1865, - 1866, - 1958, - 1959, - 1960, - 1961, - 1962, - 1963, - 1964, - 1965, - 1966, - 1967, - 1968, - 1984, - 1985, - 1986, - 1987, - 1988, - 1989, - 1990, - 1991, - 1992, - 1993, - 2027, - 2028, - 2029, - 2030, - 2031, - 2032, - 2033, - 2034, - 2035, - 2070, - 2071, - 2072, - 2073, - 2075, - 2076, - 2077, - 2078, - 2079, - 2080, - 2081, - 2082, - 2083, - 2085, - 2086, - 2087, - 2089, - 2090, - 2091, - 2092, - 2093, - 2137, - 2138, - 2139, - 2276, - 2277, - 2278, - 2279, - 2280, - 2281, - 2282, - 2283, - 2284, - 2285, - 2286, - 2287, - 2288, - 2289, - 2290, - 2291, - 2292, - 2293, - 2294, - 2295, - 2296, - 2297, - 2298, - 2299, - 2300, - 2301, - 2302, - 2304, - 2305, - 2306, - 2307, - 2362, - 2363, - 2364, - 2366, - 2367, - 2368, - 2369, - 2370, - 2371, - 2372, - 2373, - 2374, - 2375, - 2376, - 2377, - 2378, - 2379, - 2380, - 2381, - 2382, - 2383, - 2385, - 2386, - 2387, - 2388, - 2389, - 2390, - 2391, - 2402, - 2403, - 2406, - 2407, - 2408, - 2409, - 2410, - 2411, - 2412, - 2413, - 2414, - 2415, - 2433, - 2434, - 2435, - 2492, - 2494, - 2495, - 2496, - 2497, - 2498, - 2499, - 2500, - 2503, - 2504, - 2507, - 2508, - 2509, - 2519, - 2530, - 2531, - 2534, - 2535, - 2536, - 2537, - 2538, - 2539, - 2540, - 2541, - 2542, - 2543, - 2561, - 2562, - 2563, - 2620, - 2622, - 2623, - 2624, - 2625, - 2626, - 2631, - 2632, - 2635, - 2636, - 2637, - 2641, - 2662, - 2663, - 2664, - 2665, - 2666, - 2667, - 2668, - 2669, - 2670, - 2671, - 2672, - 2673, - 2677, - 2689, - 2690, - 2691, - 2748, - 2750, - 2751, - 2752, - 2753, - 2754, - 2755, - 2756, - 2757, - 2759, - 2760, - 2761, - 2763, - 2764, - 2765, - 2786, - 2787, - 2790, - 2791, - 2792, - 2793, - 2794, - 2795, - 2796, - 2797, - 2798, - 2799, - 2817, - 2818, - 2819, - 2876, - 2878, - 2879, - 2880, - 2881, - 2882, - 2883, - 2884, - 2887, - 2888, - 2891, - 2892, - 2893, - 2902, - 2903, - 2914, - 2915, - 2918, - 2919, - 2920, - 2921, - 2922, - 2923, - 2924, - 2925, - 2926, - 2927, - 2946, - 3006, - 3007, - 3008, - 3009, - 3010, - 3014, - 3015, - 3016, - 3018, - 3019, - 3020, - 3021, - 3031, - 3046, - 3047, - 3048, - 3049, - 3050, - 3051, - 3052, - 3053, - 3054, - 3055, - 3073, - 3074, - 3075, - 3134, - 3135, - 3136, - 3137, - 3138, - 3139, - 3140, - 3142, - 3143, - 3144, - 3146, - 3147, - 3148, - 3149, - 3157, - 3158, - 3170, - 3171, - 3174, - 3175, - 3176, - 3177, - 3178, - 3179, - 3180, - 3181, - 3182, - 3183, - 3202, - 3203, - 3260, - 3262, - 3263, - 3264, - 3265, - 3266, - 3267, - 3268, - 3270, - 3271, - 3272, - 3274, - 3275, - 3276, - 3277, - 3285, - 3286, - 3298, - 3299, - 3302, - 3303, - 3304, - 3305, - 3306, - 3307, - 3308, - 3309, - 3310, - 3311, - 3330, - 3331, - 3390, - 3391, - 3392, - 3393, - 3394, - 3395, - 3396, - 3398, - 3399, - 3400, - 3402, - 3403, - 3404, - 3405, - 3415, - 3426, - 3427, - 3430, - 3431, - 3432, - 3433, - 3434, - 3435, - 3436, - 3437, - 3438, - 3439, - 3458, - 3459, - 3530, - 3535, - 3536, - 3537, - 3538, - 3539, - 3540, - 3542, - 3544, - 3545, - 3546, - 3547, - 3548, - 3549, - 3550, - 3551, - 3570, - 3571, - 3633, - 3636, - 3637, - 3638, - 3639, - 3640, - 3641, - 3642, - 3655, - 3656, - 3657, - 3658, - 3659, - 3660, - 3661, - 3662, - 3664, - 3665, - 3666, - 3667, - 3668, - 3669, - 3670, - 3671, - 3672, - 3673, - 3761, - 3764, - 3765, - 3766, - 3767, - 3768, - 3769, - 3771, - 3772, - 3784, - 3785, - 3786, - 3787, - 3788, - 3789, - 3792, - 3793, - 3794, - 3795, - 3796, - 3797, - 3798, - 3799, - 3800, - 3801, - 3864, - 3865, - 3872, - 3873, - 3874, - 3875, - 3876, - 3877, - 3878, - 3879, - 3880, - 3881, - 3893, - 3895, - 3897, - 3902, - 3903, - 3953, - 3954, - 3955, - 3956, - 3957, - 3958, - 3959, - 3960, - 3961, - 3962, - 3963, - 3964, - 3965, - 3966, - 3967, - 3968, - 3969, - 3970, - 3971, - 3972, - 3974, - 3975, - 3981, - 3982, - 3983, - 3984, - 3985, - 3986, - 3987, - 3988, - 3989, - 3990, - 3991, - 3993, - 3994, - 3995, - 3996, - 3997, - 3998, - 3999, - 4000, - 4001, - 4002, - 4003, - 4004, - 4005, - 4006, - 4007, - 4008, - 4009, - 4010, - 4011, - 4012, - 4013, - 4014, - 4015, - 4016, - 4017, - 4018, - 4019, - 4020, - 4021, - 4022, - 4023, - 4024, - 4025, - 4026, - 4027, - 4028, - 4038, - 4139, - 4140, - 4141, - 4142, - 4143, - 4144, - 4145, - 4146, - 4147, - 4148, - 4149, - 4150, - 4151, - 4152, - 4153, - 4154, - 4155, - 4156, - 4157, - 4158, - 4160, - 4161, - 4162, - 4163, - 4164, - 4165, - 4166, - 4167, - 4168, - 4169, - 4182, - 4183, - 4184, - 4185, - 4190, - 4191, - 4192, - 4194, - 4195, - 4196, - 4199, - 4200, - 4201, - 4202, - 4203, - 4204, - 4205, - 4209, - 4210, - 4211, - 4212, - 4226, - 4227, - 4228, - 4229, - 4230, - 4231, - 4232, - 4233, - 4234, - 4235, - 4236, - 4237, - 4239, - 4240, - 4241, - 4242, - 4243, - 4244, - 4245, - 4246, - 4247, - 4248, - 4249, - 4250, - 4251, - 4252, - 4253, - 4957, - 4958, - 4959, - 5906, - 5907, - 5908, - 5938, - 5939, - 5940, - 5970, - 5971, - 6002, - 6003, - 6068, - 6069, - 6070, - 6071, - 6072, - 6073, - 6074, - 6075, - 6076, - 6077, - 6078, - 6079, - 6080, - 6081, - 6082, - 6083, - 6084, - 6085, - 6086, - 6087, - 6088, - 6089, - 6090, - 6091, - 6092, - 6093, - 6094, - 6095, - 6096, - 6097, - 6098, - 6099, - 6109, - 6112, - 6113, - 6114, - 6115, - 6116, - 6117, - 6118, - 6119, - 6120, - 6121, - 6155, - 6156, - 6157, - 6160, - 6161, - 6162, - 6163, - 6164, - 6165, - 6166, - 6167, - 6168, - 6169, - 6313, - 6432, - 6433, - 6434, - 6435, - 6436, - 6437, - 6438, - 6439, - 6440, - 6441, - 6442, - 6443, - 6448, - 6449, - 6450, - 6451, - 6452, - 6453, - 6454, - 6455, - 6456, - 6457, - 6458, - 6459, - 6470, - 6471, - 6472, - 6473, - 6474, - 6475, - 6476, - 6477, - 6478, - 6479, - 6576, - 6577, - 6578, - 6579, - 6580, - 6581, - 6582, - 6583, - 6584, - 6585, - 6586, - 6587, - 6588, - 6589, - 6590, - 6591, - 6592, - 6600, - 6601, - 6608, - 6609, - 6610, - 6611, - 6612, - 6613, - 6614, - 6615, - 6616, - 6617, - 6679, - 6680, - 6681, - 6682, - 6683, - 6741, - 6742, - 6743, - 6744, - 6745, - 6746, - 6747, - 6748, - 6749, - 6750, - 6752, - 6753, - 6754, - 6755, - 6756, - 6757, - 6758, - 6759, - 6760, - 6761, - 6762, - 6763, - 6764, - 6765, - 6766, - 6767, - 6768, - 6769, - 6770, - 6771, - 6772, - 6773, - 6774, - 6775, - 6776, - 6777, - 6778, - 6779, - 6780, - 6783, - 6784, - 6785, - 6786, - 6787, - 6788, - 6789, - 6790, - 6791, - 6792, - 6793, - 6800, - 6801, - 6802, - 6803, - 6804, - 6805, - 6806, - 6807, - 6808, - 6809, - 6912, - 6913, - 6914, - 6915, - 6916, - 6964, - 6965, - 6966, - 6967, - 6968, - 6969, - 6970, - 6971, - 6972, - 6973, - 6974, - 6975, - 6976, - 6977, - 6978, - 6979, - 6980, - 6992, - 6993, - 6994, - 6995, - 6996, - 6997, - 6998, - 6999, - 7000, - 7001, - 7019, - 7020, - 7021, - 7022, - 7023, - 7024, - 7025, - 7026, - 7027, - 7040, - 7041, - 7042, - 7073, - 7074, - 7075, - 7076, - 7077, - 7078, - 7079, - 7080, - 7081, - 7082, - 7083, - 7084, - 7085, - 7088, - 7089, - 7090, - 7091, - 7092, - 7093, - 7094, - 7095, - 7096, - 7097, - 7142, - 7143, - 7144, - 7145, - 7146, - 7147, - 7148, - 7149, - 7150, - 7151, - 7152, - 7153, - 7154, - 7155, - 7204, - 7205, - 7206, - 7207, - 7208, - 7209, - 7210, - 7211, - 7212, - 7213, - 7214, - 7215, - 7216, - 7217, - 7218, - 7219, - 7220, - 7221, - 7222, - 7223, - 7232, - 7233, - 7234, - 7235, - 7236, - 7237, - 7238, - 7239, - 7240, - 7241, - 7248, - 7249, - 7250, - 7251, - 7252, - 7253, - 7254, - 7255, - 7256, - 7257, - 7376, - 7377, - 7378, - 7380, - 7381, - 7382, - 7383, - 7384, - 7385, - 7386, - 7387, - 7388, - 7389, - 7390, - 7391, - 7392, - 7393, - 7394, - 7395, - 7396, - 7397, - 7398, - 7399, - 7400, - 7405, - 7410, - 7411, - 7412, - 7616, - 7617, - 7618, - 7619, - 7620, - 7621, - 7622, - 7623, - 7624, - 7625, - 7626, - 7627, - 7628, - 7629, - 7630, - 7631, - 7632, - 7633, - 7634, - 7635, - 7636, - 7637, - 7638, - 7639, - 7640, - 7641, - 7642, - 7643, - 7644, - 7645, - 7646, - 7647, - 7648, - 7649, - 7650, - 7651, - 7652, - 7653, - 7654, - 7676, - 7677, - 7678, - 7679, - 8204, - 8205, - 8255, - 8256, - 8276, - 8400, - 8401, - 8402, - 8403, - 8404, - 8405, - 8406, - 8407, - 8408, - 8409, - 8410, - 8411, - 8412, - 8417, - 8421, - 8422, - 8423, - 8424, - 8425, - 8426, - 8427, - 8428, - 8429, - 8430, - 8431, - 8432, - 11503, - 11504, - 11505, - 11647, - 11744, - 11745, - 11746, - 11747, - 11748, - 11749, - 11750, - 11751, - 11752, - 11753, - 11754, - 11755, - 11756, - 11757, - 11758, - 11759, - 11760, - 11761, - 11762, - 11763, - 11764, - 11765, - 11766, - 11767, - 11768, - 11769, - 11770, - 11771, - 11772, - 11773, - 11774, - 11775, - 12330, - 12331, - 12332, - 12333, - 12334, - 12335, - 12441, - 12442, - 42528, - 42529, - 42530, - 42531, - 42532, - 42533, - 42534, - 42535, - 42536, - 42537, - 42607, - 42612, - 42613, - 42614, - 42615, - 42616, - 42617, - 42618, - 42619, - 42620, - 42621, - 42655, - 42736, - 42737, - 43010, - 43014, - 43019, - 43043, - 43044, - 43045, - 43046, - 43047, - 43136, - 43137, - 43188, - 43189, - 43190, - 43191, - 43192, - 43193, - 43194, - 43195, - 43196, - 43197, - 43198, - 43199, - 43200, - 43201, - 43202, - 43203, - 43204, - 43216, - 43217, - 43218, - 43219, - 43220, - 43221, - 43222, - 43223, - 43224, - 43225, - 43232, - 43233, - 43234, - 43235, - 43236, - 43237, - 43238, - 43239, - 43240, - 43241, - 43242, - 43243, - 43244, - 43245, - 43246, - 43247, - 43248, - 43249, - 43264, - 43265, - 43266, - 43267, - 43268, - 43269, - 43270, - 43271, - 43272, - 43273, - 43302, - 43303, - 43304, - 43305, - 43306, - 43307, - 43308, - 43309, - 43335, - 43336, - 43337, - 43338, - 43339, - 43340, - 43341, - 43342, - 43343, - 43344, - 43345, - 43346, - 43347, - 43392, - 43393, - 43394, - 43395, - 43443, - 43444, - 43445, - 43446, - 43447, - 43448, - 43449, - 43450, - 43451, - 43452, - 43453, - 43454, - 43455, - 43456, - 43472, - 43473, - 43474, - 43475, - 43476, - 43477, - 43478, - 43479, - 43480, - 43481, - 43561, - 43562, - 43563, - 43564, - 43565, - 43566, - 43567, - 43568, - 43569, - 43570, - 43571, - 43572, - 43573, - 43574, - 43587, - 43596, - 43597, - 43600, - 43601, - 43602, - 43603, - 43604, - 43605, - 43606, - 43607, - 43608, - 43609, - 43643, - 43696, - 43698, - 43699, - 43700, - 43703, - 43704, - 43710, - 43711, - 43713, - 43755, - 43756, - 43757, - 43758, - 43759, - 43765, - 43766, - 44003, - 44004, - 44005, - 44006, - 44007, - 44008, - 44009, - 44010, - 44012, - 44013, - 44016, - 44017, - 44018, - 44019, - 44020, - 44021, - 44022, - 44023, - 44024, - 44025, - 64286, - 65024, - 65025, - 65026, - 65027, - 65028, - 65029, - 65030, - 65031, - 65032, - 65033, - 65034, - 65035, - 65036, - 65037, - 65038, - 65039, - 65056, - 65057, - 65058, - 65059, - 65060, - 65061, - 65062, - 65075, - 65076, - 65101, - 65102, - 65103, - 65296, - 65297, - 65298, - 65299, - 65300, - 65301, - 65302, - 65303, - 65304, - 65305, - 65343 -]; diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-start.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-start.js deleted file mode 100644 index 61f14f4e..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/data/non-ascii-identifier-start.js +++ /dev/null @@ -1,48477 +0,0 @@ -module.exports = [ - 170, - 181, - 186, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 429, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 442, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 461, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 474, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 493, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 506, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 525, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 538, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 557, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 570, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 589, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 602, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 621, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 666, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 685, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 698, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 717, - 718, - 719, - 720, - 721, - 736, - 737, - 738, - 739, - 740, - 748, - 750, - 880, - 881, - 882, - 883, - 884, - 886, - 887, - 890, - 891, - 892, - 893, - 902, - 904, - 905, - 906, - 908, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 922, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 941, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 954, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 973, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 986, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1005, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1015, - 1016, - 1017, - 1018, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1114, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1133, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1162, - 1163, - 1164, - 1165, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1229, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1242, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1261, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1274, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1293, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1306, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1338, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1357, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1369, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1389, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1402, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1498, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1520, - 1521, - 1522, - 1568, - 1569, - 1570, - 1571, - 1572, - 1573, - 1574, - 1575, - 1576, - 1577, - 1578, - 1579, - 1580, - 1581, - 1582, - 1583, - 1584, - 1585, - 1586, - 1587, - 1588, - 1589, - 1590, - 1591, - 1592, - 1593, - 1594, - 1595, - 1596, - 1597, - 1598, - 1599, - 1600, - 1601, - 1602, - 1603, - 1604, - 1605, - 1606, - 1607, - 1608, - 1609, - 1610, - 1646, - 1647, - 1649, - 1650, - 1651, - 1652, - 1653, - 1654, - 1655, - 1656, - 1657, - 1658, - 1659, - 1660, - 1661, - 1662, - 1663, - 1664, - 1665, - 1666, - 1667, - 1668, - 1669, - 1670, - 1671, - 1672, - 1673, - 1674, - 1675, - 1676, - 1677, - 1678, - 1679, - 1680, - 1681, - 1682, - 1683, - 1684, - 1685, - 1686, - 1687, - 1688, - 1689, - 1690, - 1691, - 1692, - 1693, - 1694, - 1695, - 1696, - 1697, - 1698, - 1699, - 1700, - 1701, - 1702, - 1703, - 1704, - 1705, - 1706, - 1707, - 1708, - 1709, - 1710, - 1711, - 1712, - 1713, - 1714, - 1715, - 1716, - 1717, - 1718, - 1719, - 1720, - 1721, - 1722, - 1723, - 1724, - 1725, - 1726, - 1727, - 1728, - 1729, - 1730, - 1731, - 1732, - 1733, - 1734, - 1735, - 1736, - 1737, - 1738, - 1739, - 1740, - 1741, - 1742, - 1743, - 1744, - 1745, - 1746, - 1747, - 1749, - 1765, - 1766, - 1774, - 1775, - 1786, - 1787, - 1788, - 1791, - 1808, - 1810, - 1811, - 1812, - 1813, - 1814, - 1815, - 1816, - 1817, - 1818, - 1819, - 1820, - 1821, - 1822, - 1823, - 1824, - 1825, - 1826, - 1827, - 1828, - 1829, - 1830, - 1831, - 1832, - 1833, - 1834, - 1835, - 1836, - 1837, - 1838, - 1839, - 1869, - 1870, - 1871, - 1872, - 1873, - 1874, - 1875, - 1876, - 1877, - 1878, - 1879, - 1880, - 1881, - 1882, - 1883, - 1884, - 1885, - 1886, - 1887, - 1888, - 1889, - 1890, - 1891, - 1892, - 1893, - 1894, - 1895, - 1896, - 1897, - 1898, - 1899, - 1900, - 1901, - 1902, - 1903, - 1904, - 1905, - 1906, - 1907, - 1908, - 1909, - 1910, - 1911, - 1912, - 1913, - 1914, - 1915, - 1916, - 1917, - 1918, - 1919, - 1920, - 1921, - 1922, - 1923, - 1924, - 1925, - 1926, - 1927, - 1928, - 1929, - 1930, - 1931, - 1932, - 1933, - 1934, - 1935, - 1936, - 1937, - 1938, - 1939, - 1940, - 1941, - 1942, - 1943, - 1944, - 1945, - 1946, - 1947, - 1948, - 1949, - 1950, - 1951, - 1952, - 1953, - 1954, - 1955, - 1956, - 1957, - 1969, - 1994, - 1995, - 1996, - 1997, - 1998, - 1999, - 2000, - 2001, - 2002, - 2003, - 2004, - 2005, - 2006, - 2007, - 2008, - 2009, - 2010, - 2011, - 2012, - 2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026, - 2036, - 2037, - 2042, - 2048, - 2049, - 2050, - 2051, - 2052, - 2053, - 2054, - 2055, - 2056, - 2057, - 2058, - 2059, - 2060, - 2061, - 2062, - 2063, - 2064, - 2065, - 2066, - 2067, - 2068, - 2069, - 2074, - 2084, - 2088, - 2112, - 2113, - 2114, - 2115, - 2116, - 2117, - 2118, - 2119, - 2120, - 2121, - 2122, - 2123, - 2124, - 2125, - 2126, - 2127, - 2128, - 2129, - 2130, - 2131, - 2132, - 2133, - 2134, - 2135, - 2136, - 2208, - 2210, - 2211, - 2212, - 2213, - 2214, - 2215, - 2216, - 2217, - 2218, - 2219, - 2220, - 2308, - 2309, - 2310, - 2311, - 2312, - 2313, - 2314, - 2315, - 2316, - 2317, - 2318, - 2319, - 2320, - 2321, - 2322, - 2323, - 2324, - 2325, - 2326, - 2327, - 2328, - 2329, - 2330, - 2331, - 2332, - 2333, - 2334, - 2335, - 2336, - 2337, - 2338, - 2339, - 2340, - 2341, - 2342, - 2343, - 2344, - 2345, - 2346, - 2347, - 2348, - 2349, - 2350, - 2351, - 2352, - 2353, - 2354, - 2355, - 2356, - 2357, - 2358, - 2359, - 2360, - 2361, - 2365, - 2384, - 2392, - 2393, - 2394, - 2395, - 2396, - 2397, - 2398, - 2399, - 2400, - 2401, - 2417, - 2418, - 2419, - 2420, - 2421, - 2422, - 2423, - 2425, - 2426, - 2427, - 2428, - 2429, - 2430, - 2431, - 2437, - 2438, - 2439, - 2440, - 2441, - 2442, - 2443, - 2444, - 2447, - 2448, - 2451, - 2452, - 2453, - 2454, - 2455, - 2456, - 2457, - 2458, - 2459, - 2460, - 2461, - 2462, - 2463, - 2464, - 2465, - 2466, - 2467, - 2468, - 2469, - 2470, - 2471, - 2472, - 2474, - 2475, - 2476, - 2477, - 2478, - 2479, - 2480, - 2482, - 2486, - 2487, - 2488, - 2489, - 2493, - 2510, - 2524, - 2525, - 2527, - 2528, - 2529, - 2544, - 2545, - 2565, - 2566, - 2567, - 2568, - 2569, - 2570, - 2575, - 2576, - 2579, - 2580, - 2581, - 2582, - 2583, - 2584, - 2585, - 2586, - 2587, - 2588, - 2589, - 2590, - 2591, - 2592, - 2593, - 2594, - 2595, - 2596, - 2597, - 2598, - 2599, - 2600, - 2602, - 2603, - 2604, - 2605, - 2606, - 2607, - 2608, - 2610, - 2611, - 2613, - 2614, - 2616, - 2617, - 2649, - 2650, - 2651, - 2652, - 2654, - 2674, - 2675, - 2676, - 2693, - 2694, - 2695, - 2696, - 2697, - 2698, - 2699, - 2700, - 2701, - 2703, - 2704, - 2705, - 2707, - 2708, - 2709, - 2710, - 2711, - 2712, - 2713, - 2714, - 2715, - 2716, - 2717, - 2718, - 2719, - 2720, - 2721, - 2722, - 2723, - 2724, - 2725, - 2726, - 2727, - 2728, - 2730, - 2731, - 2732, - 2733, - 2734, - 2735, - 2736, - 2738, - 2739, - 2741, - 2742, - 2743, - 2744, - 2745, - 2749, - 2768, - 2784, - 2785, - 2821, - 2822, - 2823, - 2824, - 2825, - 2826, - 2827, - 2828, - 2831, - 2832, - 2835, - 2836, - 2837, - 2838, - 2839, - 2840, - 2841, - 2842, - 2843, - 2844, - 2845, - 2846, - 2847, - 2848, - 2849, - 2850, - 2851, - 2852, - 2853, - 2854, - 2855, - 2856, - 2858, - 2859, - 2860, - 2861, - 2862, - 2863, - 2864, - 2866, - 2867, - 2869, - 2870, - 2871, - 2872, - 2873, - 2877, - 2908, - 2909, - 2911, - 2912, - 2913, - 2929, - 2947, - 2949, - 2950, - 2951, - 2952, - 2953, - 2954, - 2958, - 2959, - 2960, - 2962, - 2963, - 2964, - 2965, - 2969, - 2970, - 2972, - 2974, - 2975, - 2979, - 2980, - 2984, - 2985, - 2986, - 2990, - 2991, - 2992, - 2993, - 2994, - 2995, - 2996, - 2997, - 2998, - 2999, - 3000, - 3001, - 3024, - 3077, - 3078, - 3079, - 3080, - 3081, - 3082, - 3083, - 3084, - 3086, - 3087, - 3088, - 3090, - 3091, - 3092, - 3093, - 3094, - 3095, - 3096, - 3097, - 3098, - 3099, - 3100, - 3101, - 3102, - 3103, - 3104, - 3105, - 3106, - 3107, - 3108, - 3109, - 3110, - 3111, - 3112, - 3114, - 3115, - 3116, - 3117, - 3118, - 3119, - 3120, - 3121, - 3122, - 3123, - 3125, - 3126, - 3127, - 3128, - 3129, - 3133, - 3160, - 3161, - 3168, - 3169, - 3205, - 3206, - 3207, - 3208, - 3209, - 3210, - 3211, - 3212, - 3214, - 3215, - 3216, - 3218, - 3219, - 3220, - 3221, - 3222, - 3223, - 3224, - 3225, - 3226, - 3227, - 3228, - 3229, - 3230, - 3231, - 3232, - 3233, - 3234, - 3235, - 3236, - 3237, - 3238, - 3239, - 3240, - 3242, - 3243, - 3244, - 3245, - 3246, - 3247, - 3248, - 3249, - 3250, - 3251, - 3253, - 3254, - 3255, - 3256, - 3257, - 3261, - 3294, - 3296, - 3297, - 3313, - 3314, - 3333, - 3334, - 3335, - 3336, - 3337, - 3338, - 3339, - 3340, - 3342, - 3343, - 3344, - 3346, - 3347, - 3348, - 3349, - 3350, - 3351, - 3352, - 3353, - 3354, - 3355, - 3356, - 3357, - 3358, - 3359, - 3360, - 3361, - 3362, - 3363, - 3364, - 3365, - 3366, - 3367, - 3368, - 3369, - 3370, - 3371, - 3372, - 3373, - 3374, - 3375, - 3376, - 3377, - 3378, - 3379, - 3380, - 3381, - 3382, - 3383, - 3384, - 3385, - 3386, - 3389, - 3406, - 3424, - 3425, - 3450, - 3451, - 3452, - 3453, - 3454, - 3455, - 3461, - 3462, - 3463, - 3464, - 3465, - 3466, - 3467, - 3468, - 3469, - 3470, - 3471, - 3472, - 3473, - 3474, - 3475, - 3476, - 3477, - 3478, - 3482, - 3483, - 3484, - 3485, - 3486, - 3487, - 3488, - 3489, - 3490, - 3491, - 3492, - 3493, - 3494, - 3495, - 3496, - 3497, - 3498, - 3499, - 3500, - 3501, - 3502, - 3503, - 3504, - 3505, - 3507, - 3508, - 3509, - 3510, - 3511, - 3512, - 3513, - 3514, - 3515, - 3517, - 3520, - 3521, - 3522, - 3523, - 3524, - 3525, - 3526, - 3585, - 3586, - 3587, - 3588, - 3589, - 3590, - 3591, - 3592, - 3593, - 3594, - 3595, - 3596, - 3597, - 3598, - 3599, - 3600, - 3601, - 3602, - 3603, - 3604, - 3605, - 3606, - 3607, - 3608, - 3609, - 3610, - 3611, - 3612, - 3613, - 3614, - 3615, - 3616, - 3617, - 3618, - 3619, - 3620, - 3621, - 3622, - 3623, - 3624, - 3625, - 3626, - 3627, - 3628, - 3629, - 3630, - 3631, - 3632, - 3634, - 3635, - 3648, - 3649, - 3650, - 3651, - 3652, - 3653, - 3654, - 3713, - 3714, - 3716, - 3719, - 3720, - 3722, - 3725, - 3732, - 3733, - 3734, - 3735, - 3737, - 3738, - 3739, - 3740, - 3741, - 3742, - 3743, - 3745, - 3746, - 3747, - 3749, - 3751, - 3754, - 3755, - 3757, - 3758, - 3759, - 3760, - 3762, - 3763, - 3773, - 3776, - 3777, - 3778, - 3779, - 3780, - 3782, - 3804, - 3805, - 3806, - 3807, - 3840, - 3904, - 3905, - 3906, - 3907, - 3908, - 3909, - 3910, - 3911, - 3913, - 3914, - 3915, - 3916, - 3917, - 3918, - 3919, - 3920, - 3921, - 3922, - 3923, - 3924, - 3925, - 3926, - 3927, - 3928, - 3929, - 3930, - 3931, - 3932, - 3933, - 3934, - 3935, - 3936, - 3937, - 3938, - 3939, - 3940, - 3941, - 3942, - 3943, - 3944, - 3945, - 3946, - 3947, - 3948, - 3976, - 3977, - 3978, - 3979, - 3980, - 4096, - 4097, - 4098, - 4099, - 4100, - 4101, - 4102, - 4103, - 4104, - 4105, - 4106, - 4107, - 4108, - 4109, - 4110, - 4111, - 4112, - 4113, - 4114, - 4115, - 4116, - 4117, - 4118, - 4119, - 4120, - 4121, - 4122, - 4123, - 4124, - 4125, - 4126, - 4127, - 4128, - 4129, - 4130, - 4131, - 4132, - 4133, - 4134, - 4135, - 4136, - 4137, - 4138, - 4159, - 4176, - 4177, - 4178, - 4179, - 4180, - 4181, - 4186, - 4187, - 4188, - 4189, - 4193, - 4197, - 4198, - 4206, - 4207, - 4208, - 4213, - 4214, - 4215, - 4216, - 4217, - 4218, - 4219, - 4220, - 4221, - 4222, - 4223, - 4224, - 4225, - 4238, - 4256, - 4257, - 4258, - 4259, - 4260, - 4261, - 4262, - 4263, - 4264, - 4265, - 4266, - 4267, - 4268, - 4269, - 4270, - 4271, - 4272, - 4273, - 4274, - 4275, - 4276, - 4277, - 4278, - 4279, - 4280, - 4281, - 4282, - 4283, - 4284, - 4285, - 4286, - 4287, - 4288, - 4289, - 4290, - 4291, - 4292, - 4293, - 4295, - 4301, - 4304, - 4305, - 4306, - 4307, - 4308, - 4309, - 4310, - 4311, - 4312, - 4313, - 4314, - 4315, - 4316, - 4317, - 4318, - 4319, - 4320, - 4321, - 4322, - 4323, - 4324, - 4325, - 4326, - 4327, - 4328, - 4329, - 4330, - 4331, - 4332, - 4333, - 4334, - 4335, - 4336, - 4337, - 4338, - 4339, - 4340, - 4341, - 4342, - 4343, - 4344, - 4345, - 4346, - 4348, - 4349, - 4350, - 4351, - 4352, - 4353, - 4354, - 4355, - 4356, - 4357, - 4358, - 4359, - 4360, - 4361, - 4362, - 4363, - 4364, - 4365, - 4366, - 4367, - 4368, - 4369, - 4370, - 4371, - 4372, - 4373, - 4374, - 4375, - 4376, - 4377, - 4378, - 4379, - 4380, - 4381, - 4382, - 4383, - 4384, - 4385, - 4386, - 4387, - 4388, - 4389, - 4390, - 4391, - 4392, - 4393, - 4394, - 4395, - 4396, - 4397, - 4398, - 4399, - 4400, - 4401, - 4402, - 4403, - 4404, - 4405, - 4406, - 4407, - 4408, - 4409, - 4410, - 4411, - 4412, - 4413, - 4414, - 4415, - 4416, - 4417, - 4418, - 4419, - 4420, - 4421, - 4422, - 4423, - 4424, - 4425, - 4426, - 4427, - 4428, - 4429, - 4430, - 4431, - 4432, - 4433, - 4434, - 4435, - 4436, - 4437, - 4438, - 4439, - 4440, - 4441, - 4442, - 4443, - 4444, - 4445, - 4446, - 4447, - 4448, - 4449, - 4450, - 4451, - 4452, - 4453, - 4454, - 4455, - 4456, - 4457, - 4458, - 4459, - 4460, - 4461, - 4462, - 4463, - 4464, - 4465, - 4466, - 4467, - 4468, - 4469, - 4470, - 4471, - 4472, - 4473, - 4474, - 4475, - 4476, - 4477, - 4478, - 4479, - 4480, - 4481, - 4482, - 4483, - 4484, - 4485, - 4486, - 4487, - 4488, - 4489, - 4490, - 4491, - 4492, - 4493, - 4494, - 4495, - 4496, - 4497, - 4498, - 4499, - 4500, - 4501, - 4502, - 4503, - 4504, - 4505, - 4506, - 4507, - 4508, - 4509, - 4510, - 4511, - 4512, - 4513, - 4514, - 4515, - 4516, - 4517, - 4518, - 4519, - 4520, - 4521, - 4522, - 4523, - 4524, - 4525, - 4526, - 4527, - 4528, - 4529, - 4530, - 4531, - 4532, - 4533, - 4534, - 4535, - 4536, - 4537, - 4538, - 4539, - 4540, - 4541, - 4542, - 4543, - 4544, - 4545, - 4546, - 4547, - 4548, - 4549, - 4550, - 4551, - 4552, - 4553, - 4554, - 4555, - 4556, - 4557, - 4558, - 4559, - 4560, - 4561, - 4562, - 4563, - 4564, - 4565, - 4566, - 4567, - 4568, - 4569, - 4570, - 4571, - 4572, - 4573, - 4574, - 4575, - 4576, - 4577, - 4578, - 4579, - 4580, - 4581, - 4582, - 4583, - 4584, - 4585, - 4586, - 4587, - 4588, - 4589, - 4590, - 4591, - 4592, - 4593, - 4594, - 4595, - 4596, - 4597, - 4598, - 4599, - 4600, - 4601, - 4602, - 4603, - 4604, - 4605, - 4606, - 4607, - 4608, - 4609, - 4610, - 4611, - 4612, - 4613, - 4614, - 4615, - 4616, - 4617, - 4618, - 4619, - 4620, - 4621, - 4622, - 4623, - 4624, - 4625, - 4626, - 4627, - 4628, - 4629, - 4630, - 4631, - 4632, - 4633, - 4634, - 4635, - 4636, - 4637, - 4638, - 4639, - 4640, - 4641, - 4642, - 4643, - 4644, - 4645, - 4646, - 4647, - 4648, - 4649, - 4650, - 4651, - 4652, - 4653, - 4654, - 4655, - 4656, - 4657, - 4658, - 4659, - 4660, - 4661, - 4662, - 4663, - 4664, - 4665, - 4666, - 4667, - 4668, - 4669, - 4670, - 4671, - 4672, - 4673, - 4674, - 4675, - 4676, - 4677, - 4678, - 4679, - 4680, - 4682, - 4683, - 4684, - 4685, - 4688, - 4689, - 4690, - 4691, - 4692, - 4693, - 4694, - 4696, - 4698, - 4699, - 4700, - 4701, - 4704, - 4705, - 4706, - 4707, - 4708, - 4709, - 4710, - 4711, - 4712, - 4713, - 4714, - 4715, - 4716, - 4717, - 4718, - 4719, - 4720, - 4721, - 4722, - 4723, - 4724, - 4725, - 4726, - 4727, - 4728, - 4729, - 4730, - 4731, - 4732, - 4733, - 4734, - 4735, - 4736, - 4737, - 4738, - 4739, - 4740, - 4741, - 4742, - 4743, - 4744, - 4746, - 4747, - 4748, - 4749, - 4752, - 4753, - 4754, - 4755, - 4756, - 4757, - 4758, - 4759, - 4760, - 4761, - 4762, - 4763, - 4764, - 4765, - 4766, - 4767, - 4768, - 4769, - 4770, - 4771, - 4772, - 4773, - 4774, - 4775, - 4776, - 4777, - 4778, - 4779, - 4780, - 4781, - 4782, - 4783, - 4784, - 4786, - 4787, - 4788, - 4789, - 4792, - 4793, - 4794, - 4795, - 4796, - 4797, - 4798, - 4800, - 4802, - 4803, - 4804, - 4805, - 4808, - 4809, - 4810, - 4811, - 4812, - 4813, - 4814, - 4815, - 4816, - 4817, - 4818, - 4819, - 4820, - 4821, - 4822, - 4824, - 4825, - 4826, - 4827, - 4828, - 4829, - 4830, - 4831, - 4832, - 4833, - 4834, - 4835, - 4836, - 4837, - 4838, - 4839, - 4840, - 4841, - 4842, - 4843, - 4844, - 4845, - 4846, - 4847, - 4848, - 4849, - 4850, - 4851, - 4852, - 4853, - 4854, - 4855, - 4856, - 4857, - 4858, - 4859, - 4860, - 4861, - 4862, - 4863, - 4864, - 4865, - 4866, - 4867, - 4868, - 4869, - 4870, - 4871, - 4872, - 4873, - 4874, - 4875, - 4876, - 4877, - 4878, - 4879, - 4880, - 4882, - 4883, - 4884, - 4885, - 4888, - 4889, - 4890, - 4891, - 4892, - 4893, - 4894, - 4895, - 4896, - 4897, - 4898, - 4899, - 4900, - 4901, - 4902, - 4903, - 4904, - 4905, - 4906, - 4907, - 4908, - 4909, - 4910, - 4911, - 4912, - 4913, - 4914, - 4915, - 4916, - 4917, - 4918, - 4919, - 4920, - 4921, - 4922, - 4923, - 4924, - 4925, - 4926, - 4927, - 4928, - 4929, - 4930, - 4931, - 4932, - 4933, - 4934, - 4935, - 4936, - 4937, - 4938, - 4939, - 4940, - 4941, - 4942, - 4943, - 4944, - 4945, - 4946, - 4947, - 4948, - 4949, - 4950, - 4951, - 4952, - 4953, - 4954, - 4992, - 4993, - 4994, - 4995, - 4996, - 4997, - 4998, - 4999, - 5000, - 5001, - 5002, - 5003, - 5004, - 5005, - 5006, - 5007, - 5024, - 5025, - 5026, - 5027, - 5028, - 5029, - 5030, - 5031, - 5032, - 5033, - 5034, - 5035, - 5036, - 5037, - 5038, - 5039, - 5040, - 5041, - 5042, - 5043, - 5044, - 5045, - 5046, - 5047, - 5048, - 5049, - 5050, - 5051, - 5052, - 5053, - 5054, - 5055, - 5056, - 5057, - 5058, - 5059, - 5060, - 5061, - 5062, - 5063, - 5064, - 5065, - 5066, - 5067, - 5068, - 5069, - 5070, - 5071, - 5072, - 5073, - 5074, - 5075, - 5076, - 5077, - 5078, - 5079, - 5080, - 5081, - 5082, - 5083, - 5084, - 5085, - 5086, - 5087, - 5088, - 5089, - 5090, - 5091, - 5092, - 5093, - 5094, - 5095, - 5096, - 5097, - 5098, - 5099, - 5100, - 5101, - 5102, - 5103, - 5104, - 5105, - 5106, - 5107, - 5108, - 5121, - 5122, - 5123, - 5124, - 5125, - 5126, - 5127, - 5128, - 5129, - 5130, - 5131, - 5132, - 5133, - 5134, - 5135, - 5136, - 5137, - 5138, - 5139, - 5140, - 5141, - 5142, - 5143, - 5144, - 5145, - 5146, - 5147, - 5148, - 5149, - 5150, - 5151, - 5152, - 5153, - 5154, - 5155, - 5156, - 5157, - 5158, - 5159, - 5160, - 5161, - 5162, - 5163, - 5164, - 5165, - 5166, - 5167, - 5168, - 5169, - 5170, - 5171, - 5172, - 5173, - 5174, - 5175, - 5176, - 5177, - 5178, - 5179, - 5180, - 5181, - 5182, - 5183, - 5184, - 5185, - 5186, - 5187, - 5188, - 5189, - 5190, - 5191, - 5192, - 5193, - 5194, - 5195, - 5196, - 5197, - 5198, - 5199, - 5200, - 5201, - 5202, - 5203, - 5204, - 5205, - 5206, - 5207, - 5208, - 5209, - 5210, - 5211, - 5212, - 5213, - 5214, - 5215, - 5216, - 5217, - 5218, - 5219, - 5220, - 5221, - 5222, - 5223, - 5224, - 5225, - 5226, - 5227, - 5228, - 5229, - 5230, - 5231, - 5232, - 5233, - 5234, - 5235, - 5236, - 5237, - 5238, - 5239, - 5240, - 5241, - 5242, - 5243, - 5244, - 5245, - 5246, - 5247, - 5248, - 5249, - 5250, - 5251, - 5252, - 5253, - 5254, - 5255, - 5256, - 5257, - 5258, - 5259, - 5260, - 5261, - 5262, - 5263, - 5264, - 5265, - 5266, - 5267, - 5268, - 5269, - 5270, - 5271, - 5272, - 5273, - 5274, - 5275, - 5276, - 5277, - 5278, - 5279, - 5280, - 5281, - 5282, - 5283, - 5284, - 5285, - 5286, - 5287, - 5288, - 5289, - 5290, - 5291, - 5292, - 5293, - 5294, - 5295, - 5296, - 5297, - 5298, - 5299, - 5300, - 5301, - 5302, - 5303, - 5304, - 5305, - 5306, - 5307, - 5308, - 5309, - 5310, - 5311, - 5312, - 5313, - 5314, - 5315, - 5316, - 5317, - 5318, - 5319, - 5320, - 5321, - 5322, - 5323, - 5324, - 5325, - 5326, - 5327, - 5328, - 5329, - 5330, - 5331, - 5332, - 5333, - 5334, - 5335, - 5336, - 5337, - 5338, - 5339, - 5340, - 5341, - 5342, - 5343, - 5344, - 5345, - 5346, - 5347, - 5348, - 5349, - 5350, - 5351, - 5352, - 5353, - 5354, - 5355, - 5356, - 5357, - 5358, - 5359, - 5360, - 5361, - 5362, - 5363, - 5364, - 5365, - 5366, - 5367, - 5368, - 5369, - 5370, - 5371, - 5372, - 5373, - 5374, - 5375, - 5376, - 5377, - 5378, - 5379, - 5380, - 5381, - 5382, - 5383, - 5384, - 5385, - 5386, - 5387, - 5388, - 5389, - 5390, - 5391, - 5392, - 5393, - 5394, - 5395, - 5396, - 5397, - 5398, - 5399, - 5400, - 5401, - 5402, - 5403, - 5404, - 5405, - 5406, - 5407, - 5408, - 5409, - 5410, - 5411, - 5412, - 5413, - 5414, - 5415, - 5416, - 5417, - 5418, - 5419, - 5420, - 5421, - 5422, - 5423, - 5424, - 5425, - 5426, - 5427, - 5428, - 5429, - 5430, - 5431, - 5432, - 5433, - 5434, - 5435, - 5436, - 5437, - 5438, - 5439, - 5440, - 5441, - 5442, - 5443, - 5444, - 5445, - 5446, - 5447, - 5448, - 5449, - 5450, - 5451, - 5452, - 5453, - 5454, - 5455, - 5456, - 5457, - 5458, - 5459, - 5460, - 5461, - 5462, - 5463, - 5464, - 5465, - 5466, - 5467, - 5468, - 5469, - 5470, - 5471, - 5472, - 5473, - 5474, - 5475, - 5476, - 5477, - 5478, - 5479, - 5480, - 5481, - 5482, - 5483, - 5484, - 5485, - 5486, - 5487, - 5488, - 5489, - 5490, - 5491, - 5492, - 5493, - 5494, - 5495, - 5496, - 5497, - 5498, - 5499, - 5500, - 5501, - 5502, - 5503, - 5504, - 5505, - 5506, - 5507, - 5508, - 5509, - 5510, - 5511, - 5512, - 5513, - 5514, - 5515, - 5516, - 5517, - 5518, - 5519, - 5520, - 5521, - 5522, - 5523, - 5524, - 5525, - 5526, - 5527, - 5528, - 5529, - 5530, - 5531, - 5532, - 5533, - 5534, - 5535, - 5536, - 5537, - 5538, - 5539, - 5540, - 5541, - 5542, - 5543, - 5544, - 5545, - 5546, - 5547, - 5548, - 5549, - 5550, - 5551, - 5552, - 5553, - 5554, - 5555, - 5556, - 5557, - 5558, - 5559, - 5560, - 5561, - 5562, - 5563, - 5564, - 5565, - 5566, - 5567, - 5568, - 5569, - 5570, - 5571, - 5572, - 5573, - 5574, - 5575, - 5576, - 5577, - 5578, - 5579, - 5580, - 5581, - 5582, - 5583, - 5584, - 5585, - 5586, - 5587, - 5588, - 5589, - 5590, - 5591, - 5592, - 5593, - 5594, - 5595, - 5596, - 5597, - 5598, - 5599, - 5600, - 5601, - 5602, - 5603, - 5604, - 5605, - 5606, - 5607, - 5608, - 5609, - 5610, - 5611, - 5612, - 5613, - 5614, - 5615, - 5616, - 5617, - 5618, - 5619, - 5620, - 5621, - 5622, - 5623, - 5624, - 5625, - 5626, - 5627, - 5628, - 5629, - 5630, - 5631, - 5632, - 5633, - 5634, - 5635, - 5636, - 5637, - 5638, - 5639, - 5640, - 5641, - 5642, - 5643, - 5644, - 5645, - 5646, - 5647, - 5648, - 5649, - 5650, - 5651, - 5652, - 5653, - 5654, - 5655, - 5656, - 5657, - 5658, - 5659, - 5660, - 5661, - 5662, - 5663, - 5664, - 5665, - 5666, - 5667, - 5668, - 5669, - 5670, - 5671, - 5672, - 5673, - 5674, - 5675, - 5676, - 5677, - 5678, - 5679, - 5680, - 5681, - 5682, - 5683, - 5684, - 5685, - 5686, - 5687, - 5688, - 5689, - 5690, - 5691, - 5692, - 5693, - 5694, - 5695, - 5696, - 5697, - 5698, - 5699, - 5700, - 5701, - 5702, - 5703, - 5704, - 5705, - 5706, - 5707, - 5708, - 5709, - 5710, - 5711, - 5712, - 5713, - 5714, - 5715, - 5716, - 5717, - 5718, - 5719, - 5720, - 5721, - 5722, - 5723, - 5724, - 5725, - 5726, - 5727, - 5728, - 5729, - 5730, - 5731, - 5732, - 5733, - 5734, - 5735, - 5736, - 5737, - 5738, - 5739, - 5740, - 5743, - 5744, - 5745, - 5746, - 5747, - 5748, - 5749, - 5750, - 5751, - 5752, - 5753, - 5754, - 5755, - 5756, - 5757, - 5758, - 5759, - 5761, - 5762, - 5763, - 5764, - 5765, - 5766, - 5767, - 5768, - 5769, - 5770, - 5771, - 5772, - 5773, - 5774, - 5775, - 5776, - 5777, - 5778, - 5779, - 5780, - 5781, - 5782, - 5783, - 5784, - 5785, - 5786, - 5792, - 5793, - 5794, - 5795, - 5796, - 5797, - 5798, - 5799, - 5800, - 5801, - 5802, - 5803, - 5804, - 5805, - 5806, - 5807, - 5808, - 5809, - 5810, - 5811, - 5812, - 5813, - 5814, - 5815, - 5816, - 5817, - 5818, - 5819, - 5820, - 5821, - 5822, - 5823, - 5824, - 5825, - 5826, - 5827, - 5828, - 5829, - 5830, - 5831, - 5832, - 5833, - 5834, - 5835, - 5836, - 5837, - 5838, - 5839, - 5840, - 5841, - 5842, - 5843, - 5844, - 5845, - 5846, - 5847, - 5848, - 5849, - 5850, - 5851, - 5852, - 5853, - 5854, - 5855, - 5856, - 5857, - 5858, - 5859, - 5860, - 5861, - 5862, - 5863, - 5864, - 5865, - 5866, - 5870, - 5871, - 5872, - 5888, - 5889, - 5890, - 5891, - 5892, - 5893, - 5894, - 5895, - 5896, - 5897, - 5898, - 5899, - 5900, - 5902, - 5903, - 5904, - 5905, - 5920, - 5921, - 5922, - 5923, - 5924, - 5925, - 5926, - 5927, - 5928, - 5929, - 5930, - 5931, - 5932, - 5933, - 5934, - 5935, - 5936, - 5937, - 5952, - 5953, - 5954, - 5955, - 5956, - 5957, - 5958, - 5959, - 5960, - 5961, - 5962, - 5963, - 5964, - 5965, - 5966, - 5967, - 5968, - 5969, - 5984, - 5985, - 5986, - 5987, - 5988, - 5989, - 5990, - 5991, - 5992, - 5993, - 5994, - 5995, - 5996, - 5998, - 5999, - 6000, - 6016, - 6017, - 6018, - 6019, - 6020, - 6021, - 6022, - 6023, - 6024, - 6025, - 6026, - 6027, - 6028, - 6029, - 6030, - 6031, - 6032, - 6033, - 6034, - 6035, - 6036, - 6037, - 6038, - 6039, - 6040, - 6041, - 6042, - 6043, - 6044, - 6045, - 6046, - 6047, - 6048, - 6049, - 6050, - 6051, - 6052, - 6053, - 6054, - 6055, - 6056, - 6057, - 6058, - 6059, - 6060, - 6061, - 6062, - 6063, - 6064, - 6065, - 6066, - 6067, - 6103, - 6108, - 6176, - 6177, - 6178, - 6179, - 6180, - 6181, - 6182, - 6183, - 6184, - 6185, - 6186, - 6187, - 6188, - 6189, - 6190, - 6191, - 6192, - 6193, - 6194, - 6195, - 6196, - 6197, - 6198, - 6199, - 6200, - 6201, - 6202, - 6203, - 6204, - 6205, - 6206, - 6207, - 6208, - 6209, - 6210, - 6211, - 6212, - 6213, - 6214, - 6215, - 6216, - 6217, - 6218, - 6219, - 6220, - 6221, - 6222, - 6223, - 6224, - 6225, - 6226, - 6227, - 6228, - 6229, - 6230, - 6231, - 6232, - 6233, - 6234, - 6235, - 6236, - 6237, - 6238, - 6239, - 6240, - 6241, - 6242, - 6243, - 6244, - 6245, - 6246, - 6247, - 6248, - 6249, - 6250, - 6251, - 6252, - 6253, - 6254, - 6255, - 6256, - 6257, - 6258, - 6259, - 6260, - 6261, - 6262, - 6263, - 6272, - 6273, - 6274, - 6275, - 6276, - 6277, - 6278, - 6279, - 6280, - 6281, - 6282, - 6283, - 6284, - 6285, - 6286, - 6287, - 6288, - 6289, - 6290, - 6291, - 6292, - 6293, - 6294, - 6295, - 6296, - 6297, - 6298, - 6299, - 6300, - 6301, - 6302, - 6303, - 6304, - 6305, - 6306, - 6307, - 6308, - 6309, - 6310, - 6311, - 6312, - 6314, - 6320, - 6321, - 6322, - 6323, - 6324, - 6325, - 6326, - 6327, - 6328, - 6329, - 6330, - 6331, - 6332, - 6333, - 6334, - 6335, - 6336, - 6337, - 6338, - 6339, - 6340, - 6341, - 6342, - 6343, - 6344, - 6345, - 6346, - 6347, - 6348, - 6349, - 6350, - 6351, - 6352, - 6353, - 6354, - 6355, - 6356, - 6357, - 6358, - 6359, - 6360, - 6361, - 6362, - 6363, - 6364, - 6365, - 6366, - 6367, - 6368, - 6369, - 6370, - 6371, - 6372, - 6373, - 6374, - 6375, - 6376, - 6377, - 6378, - 6379, - 6380, - 6381, - 6382, - 6383, - 6384, - 6385, - 6386, - 6387, - 6388, - 6389, - 6400, - 6401, - 6402, - 6403, - 6404, - 6405, - 6406, - 6407, - 6408, - 6409, - 6410, - 6411, - 6412, - 6413, - 6414, - 6415, - 6416, - 6417, - 6418, - 6419, - 6420, - 6421, - 6422, - 6423, - 6424, - 6425, - 6426, - 6427, - 6428, - 6480, - 6481, - 6482, - 6483, - 6484, - 6485, - 6486, - 6487, - 6488, - 6489, - 6490, - 6491, - 6492, - 6493, - 6494, - 6495, - 6496, - 6497, - 6498, - 6499, - 6500, - 6501, - 6502, - 6503, - 6504, - 6505, - 6506, - 6507, - 6508, - 6509, - 6512, - 6513, - 6514, - 6515, - 6516, - 6528, - 6529, - 6530, - 6531, - 6532, - 6533, - 6534, - 6535, - 6536, - 6537, - 6538, - 6539, - 6540, - 6541, - 6542, - 6543, - 6544, - 6545, - 6546, - 6547, - 6548, - 6549, - 6550, - 6551, - 6552, - 6553, - 6554, - 6555, - 6556, - 6557, - 6558, - 6559, - 6560, - 6561, - 6562, - 6563, - 6564, - 6565, - 6566, - 6567, - 6568, - 6569, - 6570, - 6571, - 6593, - 6594, - 6595, - 6596, - 6597, - 6598, - 6599, - 6656, - 6657, - 6658, - 6659, - 6660, - 6661, - 6662, - 6663, - 6664, - 6665, - 6666, - 6667, - 6668, - 6669, - 6670, - 6671, - 6672, - 6673, - 6674, - 6675, - 6676, - 6677, - 6678, - 6688, - 6689, - 6690, - 6691, - 6692, - 6693, - 6694, - 6695, - 6696, - 6697, - 6698, - 6699, - 6700, - 6701, - 6702, - 6703, - 6704, - 6705, - 6706, - 6707, - 6708, - 6709, - 6710, - 6711, - 6712, - 6713, - 6714, - 6715, - 6716, - 6717, - 6718, - 6719, - 6720, - 6721, - 6722, - 6723, - 6724, - 6725, - 6726, - 6727, - 6728, - 6729, - 6730, - 6731, - 6732, - 6733, - 6734, - 6735, - 6736, - 6737, - 6738, - 6739, - 6740, - 6823, - 6917, - 6918, - 6919, - 6920, - 6921, - 6922, - 6923, - 6924, - 6925, - 6926, - 6927, - 6928, - 6929, - 6930, - 6931, - 6932, - 6933, - 6934, - 6935, - 6936, - 6937, - 6938, - 6939, - 6940, - 6941, - 6942, - 6943, - 6944, - 6945, - 6946, - 6947, - 6948, - 6949, - 6950, - 6951, - 6952, - 6953, - 6954, - 6955, - 6956, - 6957, - 6958, - 6959, - 6960, - 6961, - 6962, - 6963, - 6981, - 6982, - 6983, - 6984, - 6985, - 6986, - 6987, - 7043, - 7044, - 7045, - 7046, - 7047, - 7048, - 7049, - 7050, - 7051, - 7052, - 7053, - 7054, - 7055, - 7056, - 7057, - 7058, - 7059, - 7060, - 7061, - 7062, - 7063, - 7064, - 7065, - 7066, - 7067, - 7068, - 7069, - 7070, - 7071, - 7072, - 7086, - 7087, - 7098, - 7099, - 7100, - 7101, - 7102, - 7103, - 7104, - 7105, - 7106, - 7107, - 7108, - 7109, - 7110, - 7111, - 7112, - 7113, - 7114, - 7115, - 7116, - 7117, - 7118, - 7119, - 7120, - 7121, - 7122, - 7123, - 7124, - 7125, - 7126, - 7127, - 7128, - 7129, - 7130, - 7131, - 7132, - 7133, - 7134, - 7135, - 7136, - 7137, - 7138, - 7139, - 7140, - 7141, - 7168, - 7169, - 7170, - 7171, - 7172, - 7173, - 7174, - 7175, - 7176, - 7177, - 7178, - 7179, - 7180, - 7181, - 7182, - 7183, - 7184, - 7185, - 7186, - 7187, - 7188, - 7189, - 7190, - 7191, - 7192, - 7193, - 7194, - 7195, - 7196, - 7197, - 7198, - 7199, - 7200, - 7201, - 7202, - 7203, - 7245, - 7246, - 7247, - 7258, - 7259, - 7260, - 7261, - 7262, - 7263, - 7264, - 7265, - 7266, - 7267, - 7268, - 7269, - 7270, - 7271, - 7272, - 7273, - 7274, - 7275, - 7276, - 7277, - 7278, - 7279, - 7280, - 7281, - 7282, - 7283, - 7284, - 7285, - 7286, - 7287, - 7288, - 7289, - 7290, - 7291, - 7292, - 7293, - 7401, - 7402, - 7403, - 7404, - 7406, - 7407, - 7408, - 7409, - 7413, - 7414, - 7424, - 7425, - 7426, - 7427, - 7428, - 7429, - 7430, - 7431, - 7432, - 7433, - 7434, - 7435, - 7436, - 7437, - 7438, - 7439, - 7440, - 7441, - 7442, - 7443, - 7444, - 7445, - 7446, - 7447, - 7448, - 7449, - 7450, - 7451, - 7452, - 7453, - 7454, - 7455, - 7456, - 7457, - 7458, - 7459, - 7460, - 7461, - 7462, - 7463, - 7464, - 7465, - 7466, - 7467, - 7468, - 7469, - 7470, - 7471, - 7472, - 7473, - 7474, - 7475, - 7476, - 7477, - 7478, - 7479, - 7480, - 7481, - 7482, - 7483, - 7484, - 7485, - 7486, - 7487, - 7488, - 7489, - 7490, - 7491, - 7492, - 7493, - 7494, - 7495, - 7496, - 7497, - 7498, - 7499, - 7500, - 7501, - 7502, - 7503, - 7504, - 7505, - 7506, - 7507, - 7508, - 7509, - 7510, - 7511, - 7512, - 7513, - 7514, - 7515, - 7516, - 7517, - 7518, - 7519, - 7520, - 7521, - 7522, - 7523, - 7524, - 7525, - 7526, - 7527, - 7528, - 7529, - 7530, - 7531, - 7532, - 7533, - 7534, - 7535, - 7536, - 7537, - 7538, - 7539, - 7540, - 7541, - 7542, - 7543, - 7544, - 7545, - 7546, - 7547, - 7548, - 7549, - 7550, - 7551, - 7552, - 7553, - 7554, - 7555, - 7556, - 7557, - 7558, - 7559, - 7560, - 7561, - 7562, - 7563, - 7564, - 7565, - 7566, - 7567, - 7568, - 7569, - 7570, - 7571, - 7572, - 7573, - 7574, - 7575, - 7576, - 7577, - 7578, - 7579, - 7580, - 7581, - 7582, - 7583, - 7584, - 7585, - 7586, - 7587, - 7588, - 7589, - 7590, - 7591, - 7592, - 7593, - 7594, - 7595, - 7596, - 7597, - 7598, - 7599, - 7600, - 7601, - 7602, - 7603, - 7604, - 7605, - 7606, - 7607, - 7608, - 7609, - 7610, - 7611, - 7612, - 7613, - 7614, - 7615, - 7680, - 7681, - 7682, - 7683, - 7684, - 7685, - 7686, - 7687, - 7688, - 7689, - 7690, - 7691, - 7692, - 7693, - 7694, - 7695, - 7696, - 7697, - 7698, - 7699, - 7700, - 7701, - 7702, - 7703, - 7704, - 7705, - 7706, - 7707, - 7708, - 7709, - 7710, - 7711, - 7712, - 7713, - 7714, - 7715, - 7716, - 7717, - 7718, - 7719, - 7720, - 7721, - 7722, - 7723, - 7724, - 7725, - 7726, - 7727, - 7728, - 7729, - 7730, - 7731, - 7732, - 7733, - 7734, - 7735, - 7736, - 7737, - 7738, - 7739, - 7740, - 7741, - 7742, - 7743, - 7744, - 7745, - 7746, - 7747, - 7748, - 7749, - 7750, - 7751, - 7752, - 7753, - 7754, - 7755, - 7756, - 7757, - 7758, - 7759, - 7760, - 7761, - 7762, - 7763, - 7764, - 7765, - 7766, - 7767, - 7768, - 7769, - 7770, - 7771, - 7772, - 7773, - 7774, - 7775, - 7776, - 7777, - 7778, - 7779, - 7780, - 7781, - 7782, - 7783, - 7784, - 7785, - 7786, - 7787, - 7788, - 7789, - 7790, - 7791, - 7792, - 7793, - 7794, - 7795, - 7796, - 7797, - 7798, - 7799, - 7800, - 7801, - 7802, - 7803, - 7804, - 7805, - 7806, - 7807, - 7808, - 7809, - 7810, - 7811, - 7812, - 7813, - 7814, - 7815, - 7816, - 7817, - 7818, - 7819, - 7820, - 7821, - 7822, - 7823, - 7824, - 7825, - 7826, - 7827, - 7828, - 7829, - 7830, - 7831, - 7832, - 7833, - 7834, - 7835, - 7836, - 7837, - 7838, - 7839, - 7840, - 7841, - 7842, - 7843, - 7844, - 7845, - 7846, - 7847, - 7848, - 7849, - 7850, - 7851, - 7852, - 7853, - 7854, - 7855, - 7856, - 7857, - 7858, - 7859, - 7860, - 7861, - 7862, - 7863, - 7864, - 7865, - 7866, - 7867, - 7868, - 7869, - 7870, - 7871, - 7872, - 7873, - 7874, - 7875, - 7876, - 7877, - 7878, - 7879, - 7880, - 7881, - 7882, - 7883, - 7884, - 7885, - 7886, - 7887, - 7888, - 7889, - 7890, - 7891, - 7892, - 7893, - 7894, - 7895, - 7896, - 7897, - 7898, - 7899, - 7900, - 7901, - 7902, - 7903, - 7904, - 7905, - 7906, - 7907, - 7908, - 7909, - 7910, - 7911, - 7912, - 7913, - 7914, - 7915, - 7916, - 7917, - 7918, - 7919, - 7920, - 7921, - 7922, - 7923, - 7924, - 7925, - 7926, - 7927, - 7928, - 7929, - 7930, - 7931, - 7932, - 7933, - 7934, - 7935, - 7936, - 7937, - 7938, - 7939, - 7940, - 7941, - 7942, - 7943, - 7944, - 7945, - 7946, - 7947, - 7948, - 7949, - 7950, - 7951, - 7952, - 7953, - 7954, - 7955, - 7956, - 7957, - 7960, - 7961, - 7962, - 7963, - 7964, - 7965, - 7968, - 7969, - 7970, - 7971, - 7972, - 7973, - 7974, - 7975, - 7976, - 7977, - 7978, - 7979, - 7980, - 7981, - 7982, - 7983, - 7984, - 7985, - 7986, - 7987, - 7988, - 7989, - 7990, - 7991, - 7992, - 7993, - 7994, - 7995, - 7996, - 7997, - 7998, - 7999, - 8000, - 8001, - 8002, - 8003, - 8004, - 8005, - 8008, - 8009, - 8010, - 8011, - 8012, - 8013, - 8016, - 8017, - 8018, - 8019, - 8020, - 8021, - 8022, - 8023, - 8025, - 8027, - 8029, - 8031, - 8032, - 8033, - 8034, - 8035, - 8036, - 8037, - 8038, - 8039, - 8040, - 8041, - 8042, - 8043, - 8044, - 8045, - 8046, - 8047, - 8048, - 8049, - 8050, - 8051, - 8052, - 8053, - 8054, - 8055, - 8056, - 8057, - 8058, - 8059, - 8060, - 8061, - 8064, - 8065, - 8066, - 8067, - 8068, - 8069, - 8070, - 8071, - 8072, - 8073, - 8074, - 8075, - 8076, - 8077, - 8078, - 8079, - 8080, - 8081, - 8082, - 8083, - 8084, - 8085, - 8086, - 8087, - 8088, - 8089, - 8090, - 8091, - 8092, - 8093, - 8094, - 8095, - 8096, - 8097, - 8098, - 8099, - 8100, - 8101, - 8102, - 8103, - 8104, - 8105, - 8106, - 8107, - 8108, - 8109, - 8110, - 8111, - 8112, - 8113, - 8114, - 8115, - 8116, - 8118, - 8119, - 8120, - 8121, - 8122, - 8123, - 8124, - 8126, - 8130, - 8131, - 8132, - 8134, - 8135, - 8136, - 8137, - 8138, - 8139, - 8140, - 8144, - 8145, - 8146, - 8147, - 8150, - 8151, - 8152, - 8153, - 8154, - 8155, - 8160, - 8161, - 8162, - 8163, - 8164, - 8165, - 8166, - 8167, - 8168, - 8169, - 8170, - 8171, - 8172, - 8178, - 8179, - 8180, - 8182, - 8183, - 8184, - 8185, - 8186, - 8187, - 8188, - 8305, - 8319, - 8336, - 8337, - 8338, - 8339, - 8340, - 8341, - 8342, - 8343, - 8344, - 8345, - 8346, - 8347, - 8348, - 8450, - 8455, - 8458, - 8459, - 8460, - 8461, - 8462, - 8463, - 8464, - 8465, - 8466, - 8467, - 8469, - 8473, - 8474, - 8475, - 8476, - 8477, - 8484, - 8486, - 8488, - 8490, - 8491, - 8492, - 8493, - 8495, - 8496, - 8497, - 8498, - 8499, - 8500, - 8501, - 8502, - 8503, - 8504, - 8505, - 8508, - 8509, - 8510, - 8511, - 8517, - 8518, - 8519, - 8520, - 8521, - 8526, - 8544, - 8545, - 8546, - 8547, - 8548, - 8549, - 8550, - 8551, - 8552, - 8553, - 8554, - 8555, - 8556, - 8557, - 8558, - 8559, - 8560, - 8561, - 8562, - 8563, - 8564, - 8565, - 8566, - 8567, - 8568, - 8569, - 8570, - 8571, - 8572, - 8573, - 8574, - 8575, - 8576, - 8577, - 8578, - 8579, - 8580, - 8581, - 8582, - 8583, - 8584, - 11264, - 11265, - 11266, - 11267, - 11268, - 11269, - 11270, - 11271, - 11272, - 11273, - 11274, - 11275, - 11276, - 11277, - 11278, - 11279, - 11280, - 11281, - 11282, - 11283, - 11284, - 11285, - 11286, - 11287, - 11288, - 11289, - 11290, - 11291, - 11292, - 11293, - 11294, - 11295, - 11296, - 11297, - 11298, - 11299, - 11300, - 11301, - 11302, - 11303, - 11304, - 11305, - 11306, - 11307, - 11308, - 11309, - 11310, - 11312, - 11313, - 11314, - 11315, - 11316, - 11317, - 11318, - 11319, - 11320, - 11321, - 11322, - 11323, - 11324, - 11325, - 11326, - 11327, - 11328, - 11329, - 11330, - 11331, - 11332, - 11333, - 11334, - 11335, - 11336, - 11337, - 11338, - 11339, - 11340, - 11341, - 11342, - 11343, - 11344, - 11345, - 11346, - 11347, - 11348, - 11349, - 11350, - 11351, - 11352, - 11353, - 11354, - 11355, - 11356, - 11357, - 11358, - 11360, - 11361, - 11362, - 11363, - 11364, - 11365, - 11366, - 11367, - 11368, - 11369, - 11370, - 11371, - 11372, - 11373, - 11374, - 11375, - 11376, - 11377, - 11378, - 11379, - 11380, - 11381, - 11382, - 11383, - 11384, - 11385, - 11386, - 11387, - 11388, - 11389, - 11390, - 11391, - 11392, - 11393, - 11394, - 11395, - 11396, - 11397, - 11398, - 11399, - 11400, - 11401, - 11402, - 11403, - 11404, - 11405, - 11406, - 11407, - 11408, - 11409, - 11410, - 11411, - 11412, - 11413, - 11414, - 11415, - 11416, - 11417, - 11418, - 11419, - 11420, - 11421, - 11422, - 11423, - 11424, - 11425, - 11426, - 11427, - 11428, - 11429, - 11430, - 11431, - 11432, - 11433, - 11434, - 11435, - 11436, - 11437, - 11438, - 11439, - 11440, - 11441, - 11442, - 11443, - 11444, - 11445, - 11446, - 11447, - 11448, - 11449, - 11450, - 11451, - 11452, - 11453, - 11454, - 11455, - 11456, - 11457, - 11458, - 11459, - 11460, - 11461, - 11462, - 11463, - 11464, - 11465, - 11466, - 11467, - 11468, - 11469, - 11470, - 11471, - 11472, - 11473, - 11474, - 11475, - 11476, - 11477, - 11478, - 11479, - 11480, - 11481, - 11482, - 11483, - 11484, - 11485, - 11486, - 11487, - 11488, - 11489, - 11490, - 11491, - 11492, - 11499, - 11500, - 11501, - 11502, - 11506, - 11507, - 11520, - 11521, - 11522, - 11523, - 11524, - 11525, - 11526, - 11527, - 11528, - 11529, - 11530, - 11531, - 11532, - 11533, - 11534, - 11535, - 11536, - 11537, - 11538, - 11539, - 11540, - 11541, - 11542, - 11543, - 11544, - 11545, - 11546, - 11547, - 11548, - 11549, - 11550, - 11551, - 11552, - 11553, - 11554, - 11555, - 11556, - 11557, - 11559, - 11565, - 11568, - 11569, - 11570, - 11571, - 11572, - 11573, - 11574, - 11575, - 11576, - 11577, - 11578, - 11579, - 11580, - 11581, - 11582, - 11583, - 11584, - 11585, - 11586, - 11587, - 11588, - 11589, - 11590, - 11591, - 11592, - 11593, - 11594, - 11595, - 11596, - 11597, - 11598, - 11599, - 11600, - 11601, - 11602, - 11603, - 11604, - 11605, - 11606, - 11607, - 11608, - 11609, - 11610, - 11611, - 11612, - 11613, - 11614, - 11615, - 11616, - 11617, - 11618, - 11619, - 11620, - 11621, - 11622, - 11623, - 11631, - 11648, - 11649, - 11650, - 11651, - 11652, - 11653, - 11654, - 11655, - 11656, - 11657, - 11658, - 11659, - 11660, - 11661, - 11662, - 11663, - 11664, - 11665, - 11666, - 11667, - 11668, - 11669, - 11670, - 11680, - 11681, - 11682, - 11683, - 11684, - 11685, - 11686, - 11688, - 11689, - 11690, - 11691, - 11692, - 11693, - 11694, - 11696, - 11697, - 11698, - 11699, - 11700, - 11701, - 11702, - 11704, - 11705, - 11706, - 11707, - 11708, - 11709, - 11710, - 11712, - 11713, - 11714, - 11715, - 11716, - 11717, - 11718, - 11720, - 11721, - 11722, - 11723, - 11724, - 11725, - 11726, - 11728, - 11729, - 11730, - 11731, - 11732, - 11733, - 11734, - 11736, - 11737, - 11738, - 11739, - 11740, - 11741, - 11742, - 11823, - 12293, - 12294, - 12295, - 12321, - 12322, - 12323, - 12324, - 12325, - 12326, - 12327, - 12328, - 12329, - 12337, - 12338, - 12339, - 12340, - 12341, - 12344, - 12345, - 12346, - 12347, - 12348, - 12353, - 12354, - 12355, - 12356, - 12357, - 12358, - 12359, - 12360, - 12361, - 12362, - 12363, - 12364, - 12365, - 12366, - 12367, - 12368, - 12369, - 12370, - 12371, - 12372, - 12373, - 12374, - 12375, - 12376, - 12377, - 12378, - 12379, - 12380, - 12381, - 12382, - 12383, - 12384, - 12385, - 12386, - 12387, - 12388, - 12389, - 12390, - 12391, - 12392, - 12393, - 12394, - 12395, - 12396, - 12397, - 12398, - 12399, - 12400, - 12401, - 12402, - 12403, - 12404, - 12405, - 12406, - 12407, - 12408, - 12409, - 12410, - 12411, - 12412, - 12413, - 12414, - 12415, - 12416, - 12417, - 12418, - 12419, - 12420, - 12421, - 12422, - 12423, - 12424, - 12425, - 12426, - 12427, - 12428, - 12429, - 12430, - 12431, - 12432, - 12433, - 12434, - 12435, - 12436, - 12437, - 12438, - 12445, - 12446, - 12447, - 12449, - 12450, - 12451, - 12452, - 12453, - 12454, - 12455, - 12456, - 12457, - 12458, - 12459, - 12460, - 12461, - 12462, - 12463, - 12464, - 12465, - 12466, - 12467, - 12468, - 12469, - 12470, - 12471, - 12472, - 12473, - 12474, - 12475, - 12476, - 12477, - 12478, - 12479, - 12480, - 12481, - 12482, - 12483, - 12484, - 12485, - 12486, - 12487, - 12488, - 12489, - 12490, - 12491, - 12492, - 12493, - 12494, - 12495, - 12496, - 12497, - 12498, - 12499, - 12500, - 12501, - 12502, - 12503, - 12504, - 12505, - 12506, - 12507, - 12508, - 12509, - 12510, - 12511, - 12512, - 12513, - 12514, - 12515, - 12516, - 12517, - 12518, - 12519, - 12520, - 12521, - 12522, - 12523, - 12524, - 12525, - 12526, - 12527, - 12528, - 12529, - 12530, - 12531, - 12532, - 12533, - 12534, - 12535, - 12536, - 12537, - 12538, - 12540, - 12541, - 12542, - 12543, - 12549, - 12550, - 12551, - 12552, - 12553, - 12554, - 12555, - 12556, - 12557, - 12558, - 12559, - 12560, - 12561, - 12562, - 12563, - 12564, - 12565, - 12566, - 12567, - 12568, - 12569, - 12570, - 12571, - 12572, - 12573, - 12574, - 12575, - 12576, - 12577, - 12578, - 12579, - 12580, - 12581, - 12582, - 12583, - 12584, - 12585, - 12586, - 12587, - 12588, - 12589, - 12593, - 12594, - 12595, - 12596, - 12597, - 12598, - 12599, - 12600, - 12601, - 12602, - 12603, - 12604, - 12605, - 12606, - 12607, - 12608, - 12609, - 12610, - 12611, - 12612, - 12613, - 12614, - 12615, - 12616, - 12617, - 12618, - 12619, - 12620, - 12621, - 12622, - 12623, - 12624, - 12625, - 12626, - 12627, - 12628, - 12629, - 12630, - 12631, - 12632, - 12633, - 12634, - 12635, - 12636, - 12637, - 12638, - 12639, - 12640, - 12641, - 12642, - 12643, - 12644, - 12645, - 12646, - 12647, - 12648, - 12649, - 12650, - 12651, - 12652, - 12653, - 12654, - 12655, - 12656, - 12657, - 12658, - 12659, - 12660, - 12661, - 12662, - 12663, - 12664, - 12665, - 12666, - 12667, - 12668, - 12669, - 12670, - 12671, - 12672, - 12673, - 12674, - 12675, - 12676, - 12677, - 12678, - 12679, - 12680, - 12681, - 12682, - 12683, - 12684, - 12685, - 12686, - 12704, - 12705, - 12706, - 12707, - 12708, - 12709, - 12710, - 12711, - 12712, - 12713, - 12714, - 12715, - 12716, - 12717, - 12718, - 12719, - 12720, - 12721, - 12722, - 12723, - 12724, - 12725, - 12726, - 12727, - 12728, - 12729, - 12730, - 12784, - 12785, - 12786, - 12787, - 12788, - 12789, - 12790, - 12791, - 12792, - 12793, - 12794, - 12795, - 12796, - 12797, - 12798, - 12799, - 13312, - 13313, - 13314, - 13315, - 13316, - 13317, - 13318, - 13319, - 13320, - 13321, - 13322, - 13323, - 13324, - 13325, - 13326, - 13327, - 13328, - 13329, - 13330, - 13331, - 13332, - 13333, - 13334, - 13335, - 13336, - 13337, - 13338, - 13339, - 13340, - 13341, - 13342, - 13343, - 13344, - 13345, - 13346, - 13347, - 13348, - 13349, - 13350, - 13351, - 13352, - 13353, - 13354, - 13355, - 13356, - 13357, - 13358, - 13359, - 13360, - 13361, - 13362, - 13363, - 13364, - 13365, - 13366, - 13367, - 13368, - 13369, - 13370, - 13371, - 13372, - 13373, - 13374, - 13375, - 13376, - 13377, - 13378, - 13379, - 13380, - 13381, - 13382, - 13383, - 13384, - 13385, - 13386, - 13387, - 13388, - 13389, - 13390, - 13391, - 13392, - 13393, - 13394, - 13395, - 13396, - 13397, - 13398, - 13399, - 13400, - 13401, - 13402, - 13403, - 13404, - 13405, - 13406, - 13407, - 13408, - 13409, - 13410, - 13411, - 13412, - 13413, - 13414, - 13415, - 13416, - 13417, - 13418, - 13419, - 13420, - 13421, - 13422, - 13423, - 13424, - 13425, - 13426, - 13427, - 13428, - 13429, - 13430, - 13431, - 13432, - 13433, - 13434, - 13435, - 13436, - 13437, - 13438, - 13439, - 13440, - 13441, - 13442, - 13443, - 13444, - 13445, - 13446, - 13447, - 13448, - 13449, - 13450, - 13451, - 13452, - 13453, - 13454, - 13455, - 13456, - 13457, - 13458, - 13459, - 13460, - 13461, - 13462, - 13463, - 13464, - 13465, - 13466, - 13467, - 13468, - 13469, - 13470, - 13471, - 13472, - 13473, - 13474, - 13475, - 13476, - 13477, - 13478, - 13479, - 13480, - 13481, - 13482, - 13483, - 13484, - 13485, - 13486, - 13487, - 13488, - 13489, - 13490, - 13491, - 13492, - 13493, - 13494, - 13495, - 13496, - 13497, - 13498, - 13499, - 13500, - 13501, - 13502, - 13503, - 13504, - 13505, - 13506, - 13507, - 13508, - 13509, - 13510, - 13511, - 13512, - 13513, - 13514, - 13515, - 13516, - 13517, - 13518, - 13519, - 13520, - 13521, - 13522, - 13523, - 13524, - 13525, - 13526, - 13527, - 13528, - 13529, - 13530, - 13531, - 13532, - 13533, - 13534, - 13535, - 13536, - 13537, - 13538, - 13539, - 13540, - 13541, - 13542, - 13543, - 13544, - 13545, - 13546, - 13547, - 13548, - 13549, - 13550, - 13551, - 13552, - 13553, - 13554, - 13555, - 13556, - 13557, - 13558, - 13559, - 13560, - 13561, - 13562, - 13563, - 13564, - 13565, - 13566, - 13567, - 13568, - 13569, - 13570, - 13571, - 13572, - 13573, - 13574, - 13575, - 13576, - 13577, - 13578, - 13579, - 13580, - 13581, - 13582, - 13583, - 13584, - 13585, - 13586, - 13587, - 13588, - 13589, - 13590, - 13591, - 13592, - 13593, - 13594, - 13595, - 13596, - 13597, - 13598, - 13599, - 13600, - 13601, - 13602, - 13603, - 13604, - 13605, - 13606, - 13607, - 13608, - 13609, - 13610, - 13611, - 13612, - 13613, - 13614, - 13615, - 13616, - 13617, - 13618, - 13619, - 13620, - 13621, - 13622, - 13623, - 13624, - 13625, - 13626, - 13627, - 13628, - 13629, - 13630, - 13631, - 13632, - 13633, - 13634, - 13635, - 13636, - 13637, - 13638, - 13639, - 13640, - 13641, - 13642, - 13643, - 13644, - 13645, - 13646, - 13647, - 13648, - 13649, - 13650, - 13651, - 13652, - 13653, - 13654, - 13655, - 13656, - 13657, - 13658, - 13659, - 13660, - 13661, - 13662, - 13663, - 13664, - 13665, - 13666, - 13667, - 13668, - 13669, - 13670, - 13671, - 13672, - 13673, - 13674, - 13675, - 13676, - 13677, - 13678, - 13679, - 13680, - 13681, - 13682, - 13683, - 13684, - 13685, - 13686, - 13687, - 13688, - 13689, - 13690, - 13691, - 13692, - 13693, - 13694, - 13695, - 13696, - 13697, - 13698, - 13699, - 13700, - 13701, - 13702, - 13703, - 13704, - 13705, - 13706, - 13707, - 13708, - 13709, - 13710, - 13711, - 13712, - 13713, - 13714, - 13715, - 13716, - 13717, - 13718, - 13719, - 13720, - 13721, - 13722, - 13723, - 13724, - 13725, - 13726, - 13727, - 13728, - 13729, - 13730, - 13731, - 13732, - 13733, - 13734, - 13735, - 13736, - 13737, - 13738, - 13739, - 13740, - 13741, - 13742, - 13743, - 13744, - 13745, - 13746, - 13747, - 13748, - 13749, - 13750, - 13751, - 13752, - 13753, - 13754, - 13755, - 13756, - 13757, - 13758, - 13759, - 13760, - 13761, - 13762, - 13763, - 13764, - 13765, - 13766, - 13767, - 13768, - 13769, - 13770, - 13771, - 13772, - 13773, - 13774, - 13775, - 13776, - 13777, - 13778, - 13779, - 13780, - 13781, - 13782, - 13783, - 13784, - 13785, - 13786, - 13787, - 13788, - 13789, - 13790, - 13791, - 13792, - 13793, - 13794, - 13795, - 13796, - 13797, - 13798, - 13799, - 13800, - 13801, - 13802, - 13803, - 13804, - 13805, - 13806, - 13807, - 13808, - 13809, - 13810, - 13811, - 13812, - 13813, - 13814, - 13815, - 13816, - 13817, - 13818, - 13819, - 13820, - 13821, - 13822, - 13823, - 13824, - 13825, - 13826, - 13827, - 13828, - 13829, - 13830, - 13831, - 13832, - 13833, - 13834, - 13835, - 13836, - 13837, - 13838, - 13839, - 13840, - 13841, - 13842, - 13843, - 13844, - 13845, - 13846, - 13847, - 13848, - 13849, - 13850, - 13851, - 13852, - 13853, - 13854, - 13855, - 13856, - 13857, - 13858, - 13859, - 13860, - 13861, - 13862, - 13863, - 13864, - 13865, - 13866, - 13867, - 13868, - 13869, - 13870, - 13871, - 13872, - 13873, - 13874, - 13875, - 13876, - 13877, - 13878, - 13879, - 13880, - 13881, - 13882, - 13883, - 13884, - 13885, - 13886, - 13887, - 13888, - 13889, - 13890, - 13891, - 13892, - 13893, - 13894, - 13895, - 13896, - 13897, - 13898, - 13899, - 13900, - 13901, - 13902, - 13903, - 13904, - 13905, - 13906, - 13907, - 13908, - 13909, - 13910, - 13911, - 13912, - 13913, - 13914, - 13915, - 13916, - 13917, - 13918, - 13919, - 13920, - 13921, - 13922, - 13923, - 13924, - 13925, - 13926, - 13927, - 13928, - 13929, - 13930, - 13931, - 13932, - 13933, - 13934, - 13935, - 13936, - 13937, - 13938, - 13939, - 13940, - 13941, - 13942, - 13943, - 13944, - 13945, - 13946, - 13947, - 13948, - 13949, - 13950, - 13951, - 13952, - 13953, - 13954, - 13955, - 13956, - 13957, - 13958, - 13959, - 13960, - 13961, - 13962, - 13963, - 13964, - 13965, - 13966, - 13967, - 13968, - 13969, - 13970, - 13971, - 13972, - 13973, - 13974, - 13975, - 13976, - 13977, - 13978, - 13979, - 13980, - 13981, - 13982, - 13983, - 13984, - 13985, - 13986, - 13987, - 13988, - 13989, - 13990, - 13991, - 13992, - 13993, - 13994, - 13995, - 13996, - 13997, - 13998, - 13999, - 14000, - 14001, - 14002, - 14003, - 14004, - 14005, - 14006, - 14007, - 14008, - 14009, - 14010, - 14011, - 14012, - 14013, - 14014, - 14015, - 14016, - 14017, - 14018, - 14019, - 14020, - 14021, - 14022, - 14023, - 14024, - 14025, - 14026, - 14027, - 14028, - 14029, - 14030, - 14031, - 14032, - 14033, - 14034, - 14035, - 14036, - 14037, - 14038, - 14039, - 14040, - 14041, - 14042, - 14043, - 14044, - 14045, - 14046, - 14047, - 14048, - 14049, - 14050, - 14051, - 14052, - 14053, - 14054, - 14055, - 14056, - 14057, - 14058, - 14059, - 14060, - 14061, - 14062, - 14063, - 14064, - 14065, - 14066, - 14067, - 14068, - 14069, - 14070, - 14071, - 14072, - 14073, - 14074, - 14075, - 14076, - 14077, - 14078, - 14079, - 14080, - 14081, - 14082, - 14083, - 14084, - 14085, - 14086, - 14087, - 14088, - 14089, - 14090, - 14091, - 14092, - 14093, - 14094, - 14095, - 14096, - 14097, - 14098, - 14099, - 14100, - 14101, - 14102, - 14103, - 14104, - 14105, - 14106, - 14107, - 14108, - 14109, - 14110, - 14111, - 14112, - 14113, - 14114, - 14115, - 14116, - 14117, - 14118, - 14119, - 14120, - 14121, - 14122, - 14123, - 14124, - 14125, - 14126, - 14127, - 14128, - 14129, - 14130, - 14131, - 14132, - 14133, - 14134, - 14135, - 14136, - 14137, - 14138, - 14139, - 14140, - 14141, - 14142, - 14143, - 14144, - 14145, - 14146, - 14147, - 14148, - 14149, - 14150, - 14151, - 14152, - 14153, - 14154, - 14155, - 14156, - 14157, - 14158, - 14159, - 14160, - 14161, - 14162, - 14163, - 14164, - 14165, - 14166, - 14167, - 14168, - 14169, - 14170, - 14171, - 14172, - 14173, - 14174, - 14175, - 14176, - 14177, - 14178, - 14179, - 14180, - 14181, - 14182, - 14183, - 14184, - 14185, - 14186, - 14187, - 14188, - 14189, - 14190, - 14191, - 14192, - 14193, - 14194, - 14195, - 14196, - 14197, - 14198, - 14199, - 14200, - 14201, - 14202, - 14203, - 14204, - 14205, - 14206, - 14207, - 14208, - 14209, - 14210, - 14211, - 14212, - 14213, - 14214, - 14215, - 14216, - 14217, - 14218, - 14219, - 14220, - 14221, - 14222, - 14223, - 14224, - 14225, - 14226, - 14227, - 14228, - 14229, - 14230, - 14231, - 14232, - 14233, - 14234, - 14235, - 14236, - 14237, - 14238, - 14239, - 14240, - 14241, - 14242, - 14243, - 14244, - 14245, - 14246, - 14247, - 14248, - 14249, - 14250, - 14251, - 14252, - 14253, - 14254, - 14255, - 14256, - 14257, - 14258, - 14259, - 14260, - 14261, - 14262, - 14263, - 14264, - 14265, - 14266, - 14267, - 14268, - 14269, - 14270, - 14271, - 14272, - 14273, - 14274, - 14275, - 14276, - 14277, - 14278, - 14279, - 14280, - 14281, - 14282, - 14283, - 14284, - 14285, - 14286, - 14287, - 14288, - 14289, - 14290, - 14291, - 14292, - 14293, - 14294, - 14295, - 14296, - 14297, - 14298, - 14299, - 14300, - 14301, - 14302, - 14303, - 14304, - 14305, - 14306, - 14307, - 14308, - 14309, - 14310, - 14311, - 14312, - 14313, - 14314, - 14315, - 14316, - 14317, - 14318, - 14319, - 14320, - 14321, - 14322, - 14323, - 14324, - 14325, - 14326, - 14327, - 14328, - 14329, - 14330, - 14331, - 14332, - 14333, - 14334, - 14335, - 14336, - 14337, - 14338, - 14339, - 14340, - 14341, - 14342, - 14343, - 14344, - 14345, - 14346, - 14347, - 14348, - 14349, - 14350, - 14351, - 14352, - 14353, - 14354, - 14355, - 14356, - 14357, - 14358, - 14359, - 14360, - 14361, - 14362, - 14363, - 14364, - 14365, - 14366, - 14367, - 14368, - 14369, - 14370, - 14371, - 14372, - 14373, - 14374, - 14375, - 14376, - 14377, - 14378, - 14379, - 14380, - 14381, - 14382, - 14383, - 14384, - 14385, - 14386, - 14387, - 14388, - 14389, - 14390, - 14391, - 14392, - 14393, - 14394, - 14395, - 14396, - 14397, - 14398, - 14399, - 14400, - 14401, - 14402, - 14403, - 14404, - 14405, - 14406, - 14407, - 14408, - 14409, - 14410, - 14411, - 14412, - 14413, - 14414, - 14415, - 14416, - 14417, - 14418, - 14419, - 14420, - 14421, - 14422, - 14423, - 14424, - 14425, - 14426, - 14427, - 14428, - 14429, - 14430, - 14431, - 14432, - 14433, - 14434, - 14435, - 14436, - 14437, - 14438, - 14439, - 14440, - 14441, - 14442, - 14443, - 14444, - 14445, - 14446, - 14447, - 14448, - 14449, - 14450, - 14451, - 14452, - 14453, - 14454, - 14455, - 14456, - 14457, - 14458, - 14459, - 14460, - 14461, - 14462, - 14463, - 14464, - 14465, - 14466, - 14467, - 14468, - 14469, - 14470, - 14471, - 14472, - 14473, - 14474, - 14475, - 14476, - 14477, - 14478, - 14479, - 14480, - 14481, - 14482, - 14483, - 14484, - 14485, - 14486, - 14487, - 14488, - 14489, - 14490, - 14491, - 14492, - 14493, - 14494, - 14495, - 14496, - 14497, - 14498, - 14499, - 14500, - 14501, - 14502, - 14503, - 14504, - 14505, - 14506, - 14507, - 14508, - 14509, - 14510, - 14511, - 14512, - 14513, - 14514, - 14515, - 14516, - 14517, - 14518, - 14519, - 14520, - 14521, - 14522, - 14523, - 14524, - 14525, - 14526, - 14527, - 14528, - 14529, - 14530, - 14531, - 14532, - 14533, - 14534, - 14535, - 14536, - 14537, - 14538, - 14539, - 14540, - 14541, - 14542, - 14543, - 14544, - 14545, - 14546, - 14547, - 14548, - 14549, - 14550, - 14551, - 14552, - 14553, - 14554, - 14555, - 14556, - 14557, - 14558, - 14559, - 14560, - 14561, - 14562, - 14563, - 14564, - 14565, - 14566, - 14567, - 14568, - 14569, - 14570, - 14571, - 14572, - 14573, - 14574, - 14575, - 14576, - 14577, - 14578, - 14579, - 14580, - 14581, - 14582, - 14583, - 14584, - 14585, - 14586, - 14587, - 14588, - 14589, - 14590, - 14591, - 14592, - 14593, - 14594, - 14595, - 14596, - 14597, - 14598, - 14599, - 14600, - 14601, - 14602, - 14603, - 14604, - 14605, - 14606, - 14607, - 14608, - 14609, - 14610, - 14611, - 14612, - 14613, - 14614, - 14615, - 14616, - 14617, - 14618, - 14619, - 14620, - 14621, - 14622, - 14623, - 14624, - 14625, - 14626, - 14627, - 14628, - 14629, - 14630, - 14631, - 14632, - 14633, - 14634, - 14635, - 14636, - 14637, - 14638, - 14639, - 14640, - 14641, - 14642, - 14643, - 14644, - 14645, - 14646, - 14647, - 14648, - 14649, - 14650, - 14651, - 14652, - 14653, - 14654, - 14655, - 14656, - 14657, - 14658, - 14659, - 14660, - 14661, - 14662, - 14663, - 14664, - 14665, - 14666, - 14667, - 14668, - 14669, - 14670, - 14671, - 14672, - 14673, - 14674, - 14675, - 14676, - 14677, - 14678, - 14679, - 14680, - 14681, - 14682, - 14683, - 14684, - 14685, - 14686, - 14687, - 14688, - 14689, - 14690, - 14691, - 14692, - 14693, - 14694, - 14695, - 14696, - 14697, - 14698, - 14699, - 14700, - 14701, - 14702, - 14703, - 14704, - 14705, - 14706, - 14707, - 14708, - 14709, - 14710, - 14711, - 14712, - 14713, - 14714, - 14715, - 14716, - 14717, - 14718, - 14719, - 14720, - 14721, - 14722, - 14723, - 14724, - 14725, - 14726, - 14727, - 14728, - 14729, - 14730, - 14731, - 14732, - 14733, - 14734, - 14735, - 14736, - 14737, - 14738, - 14739, - 14740, - 14741, - 14742, - 14743, - 14744, - 14745, - 14746, - 14747, - 14748, - 14749, - 14750, - 14751, - 14752, - 14753, - 14754, - 14755, - 14756, - 14757, - 14758, - 14759, - 14760, - 14761, - 14762, - 14763, - 14764, - 14765, - 14766, - 14767, - 14768, - 14769, - 14770, - 14771, - 14772, - 14773, - 14774, - 14775, - 14776, - 14777, - 14778, - 14779, - 14780, - 14781, - 14782, - 14783, - 14784, - 14785, - 14786, - 14787, - 14788, - 14789, - 14790, - 14791, - 14792, - 14793, - 14794, - 14795, - 14796, - 14797, - 14798, - 14799, - 14800, - 14801, - 14802, - 14803, - 14804, - 14805, - 14806, - 14807, - 14808, - 14809, - 14810, - 14811, - 14812, - 14813, - 14814, - 14815, - 14816, - 14817, - 14818, - 14819, - 14820, - 14821, - 14822, - 14823, - 14824, - 14825, - 14826, - 14827, - 14828, - 14829, - 14830, - 14831, - 14832, - 14833, - 14834, - 14835, - 14836, - 14837, - 14838, - 14839, - 14840, - 14841, - 14842, - 14843, - 14844, - 14845, - 14846, - 14847, - 14848, - 14849, - 14850, - 14851, - 14852, - 14853, - 14854, - 14855, - 14856, - 14857, - 14858, - 14859, - 14860, - 14861, - 14862, - 14863, - 14864, - 14865, - 14866, - 14867, - 14868, - 14869, - 14870, - 14871, - 14872, - 14873, - 14874, - 14875, - 14876, - 14877, - 14878, - 14879, - 14880, - 14881, - 14882, - 14883, - 14884, - 14885, - 14886, - 14887, - 14888, - 14889, - 14890, - 14891, - 14892, - 14893, - 14894, - 14895, - 14896, - 14897, - 14898, - 14899, - 14900, - 14901, - 14902, - 14903, - 14904, - 14905, - 14906, - 14907, - 14908, - 14909, - 14910, - 14911, - 14912, - 14913, - 14914, - 14915, - 14916, - 14917, - 14918, - 14919, - 14920, - 14921, - 14922, - 14923, - 14924, - 14925, - 14926, - 14927, - 14928, - 14929, - 14930, - 14931, - 14932, - 14933, - 14934, - 14935, - 14936, - 14937, - 14938, - 14939, - 14940, - 14941, - 14942, - 14943, - 14944, - 14945, - 14946, - 14947, - 14948, - 14949, - 14950, - 14951, - 14952, - 14953, - 14954, - 14955, - 14956, - 14957, - 14958, - 14959, - 14960, - 14961, - 14962, - 14963, - 14964, - 14965, - 14966, - 14967, - 14968, - 14969, - 14970, - 14971, - 14972, - 14973, - 14974, - 14975, - 14976, - 14977, - 14978, - 14979, - 14980, - 14981, - 14982, - 14983, - 14984, - 14985, - 14986, - 14987, - 14988, - 14989, - 14990, - 14991, - 14992, - 14993, - 14994, - 14995, - 14996, - 14997, - 14998, - 14999, - 15000, - 15001, - 15002, - 15003, - 15004, - 15005, - 15006, - 15007, - 15008, - 15009, - 15010, - 15011, - 15012, - 15013, - 15014, - 15015, - 15016, - 15017, - 15018, - 15019, - 15020, - 15021, - 15022, - 15023, - 15024, - 15025, - 15026, - 15027, - 15028, - 15029, - 15030, - 15031, - 15032, - 15033, - 15034, - 15035, - 15036, - 15037, - 15038, - 15039, - 15040, - 15041, - 15042, - 15043, - 15044, - 15045, - 15046, - 15047, - 15048, - 15049, - 15050, - 15051, - 15052, - 15053, - 15054, - 15055, - 15056, - 15057, - 15058, - 15059, - 15060, - 15061, - 15062, - 15063, - 15064, - 15065, - 15066, - 15067, - 15068, - 15069, - 15070, - 15071, - 15072, - 15073, - 15074, - 15075, - 15076, - 15077, - 15078, - 15079, - 15080, - 15081, - 15082, - 15083, - 15084, - 15085, - 15086, - 15087, - 15088, - 15089, - 15090, - 15091, - 15092, - 15093, - 15094, - 15095, - 15096, - 15097, - 15098, - 15099, - 15100, - 15101, - 15102, - 15103, - 15104, - 15105, - 15106, - 15107, - 15108, - 15109, - 15110, - 15111, - 15112, - 15113, - 15114, - 15115, - 15116, - 15117, - 15118, - 15119, - 15120, - 15121, - 15122, - 15123, - 15124, - 15125, - 15126, - 15127, - 15128, - 15129, - 15130, - 15131, - 15132, - 15133, - 15134, - 15135, - 15136, - 15137, - 15138, - 15139, - 15140, - 15141, - 15142, - 15143, - 15144, - 15145, - 15146, - 15147, - 15148, - 15149, - 15150, - 15151, - 15152, - 15153, - 15154, - 15155, - 15156, - 15157, - 15158, - 15159, - 15160, - 15161, - 15162, - 15163, - 15164, - 15165, - 15166, - 15167, - 15168, - 15169, - 15170, - 15171, - 15172, - 15173, - 15174, - 15175, - 15176, - 15177, - 15178, - 15179, - 15180, - 15181, - 15182, - 15183, - 15184, - 15185, - 15186, - 15187, - 15188, - 15189, - 15190, - 15191, - 15192, - 15193, - 15194, - 15195, - 15196, - 15197, - 15198, - 15199, - 15200, - 15201, - 15202, - 15203, - 15204, - 15205, - 15206, - 15207, - 15208, - 15209, - 15210, - 15211, - 15212, - 15213, - 15214, - 15215, - 15216, - 15217, - 15218, - 15219, - 15220, - 15221, - 15222, - 15223, - 15224, - 15225, - 15226, - 15227, - 15228, - 15229, - 15230, - 15231, - 15232, - 15233, - 15234, - 15235, - 15236, - 15237, - 15238, - 15239, - 15240, - 15241, - 15242, - 15243, - 15244, - 15245, - 15246, - 15247, - 15248, - 15249, - 15250, - 15251, - 15252, - 15253, - 15254, - 15255, - 15256, - 15257, - 15258, - 15259, - 15260, - 15261, - 15262, - 15263, - 15264, - 15265, - 15266, - 15267, - 15268, - 15269, - 15270, - 15271, - 15272, - 15273, - 15274, - 15275, - 15276, - 15277, - 15278, - 15279, - 15280, - 15281, - 15282, - 15283, - 15284, - 15285, - 15286, - 15287, - 15288, - 15289, - 15290, - 15291, - 15292, - 15293, - 15294, - 15295, - 15296, - 15297, - 15298, - 15299, - 15300, - 15301, - 15302, - 15303, - 15304, - 15305, - 15306, - 15307, - 15308, - 15309, - 15310, - 15311, - 15312, - 15313, - 15314, - 15315, - 15316, - 15317, - 15318, - 15319, - 15320, - 15321, - 15322, - 15323, - 15324, - 15325, - 15326, - 15327, - 15328, - 15329, - 15330, - 15331, - 15332, - 15333, - 15334, - 15335, - 15336, - 15337, - 15338, - 15339, - 15340, - 15341, - 15342, - 15343, - 15344, - 15345, - 15346, - 15347, - 15348, - 15349, - 15350, - 15351, - 15352, - 15353, - 15354, - 15355, - 15356, - 15357, - 15358, - 15359, - 15360, - 15361, - 15362, - 15363, - 15364, - 15365, - 15366, - 15367, - 15368, - 15369, - 15370, - 15371, - 15372, - 15373, - 15374, - 15375, - 15376, - 15377, - 15378, - 15379, - 15380, - 15381, - 15382, - 15383, - 15384, - 15385, - 15386, - 15387, - 15388, - 15389, - 15390, - 15391, - 15392, - 15393, - 15394, - 15395, - 15396, - 15397, - 15398, - 15399, - 15400, - 15401, - 15402, - 15403, - 15404, - 15405, - 15406, - 15407, - 15408, - 15409, - 15410, - 15411, - 15412, - 15413, - 15414, - 15415, - 15416, - 15417, - 15418, - 15419, - 15420, - 15421, - 15422, - 15423, - 15424, - 15425, - 15426, - 15427, - 15428, - 15429, - 15430, - 15431, - 15432, - 15433, - 15434, - 15435, - 15436, - 15437, - 15438, - 15439, - 15440, - 15441, - 15442, - 15443, - 15444, - 15445, - 15446, - 15447, - 15448, - 15449, - 15450, - 15451, - 15452, - 15453, - 15454, - 15455, - 15456, - 15457, - 15458, - 15459, - 15460, - 15461, - 15462, - 15463, - 15464, - 15465, - 15466, - 15467, - 15468, - 15469, - 15470, - 15471, - 15472, - 15473, - 15474, - 15475, - 15476, - 15477, - 15478, - 15479, - 15480, - 15481, - 15482, - 15483, - 15484, - 15485, - 15486, - 15487, - 15488, - 15489, - 15490, - 15491, - 15492, - 15493, - 15494, - 15495, - 15496, - 15497, - 15498, - 15499, - 15500, - 15501, - 15502, - 15503, - 15504, - 15505, - 15506, - 15507, - 15508, - 15509, - 15510, - 15511, - 15512, - 15513, - 15514, - 15515, - 15516, - 15517, - 15518, - 15519, - 15520, - 15521, - 15522, - 15523, - 15524, - 15525, - 15526, - 15527, - 15528, - 15529, - 15530, - 15531, - 15532, - 15533, - 15534, - 15535, - 15536, - 15537, - 15538, - 15539, - 15540, - 15541, - 15542, - 15543, - 15544, - 15545, - 15546, - 15547, - 15548, - 15549, - 15550, - 15551, - 15552, - 15553, - 15554, - 15555, - 15556, - 15557, - 15558, - 15559, - 15560, - 15561, - 15562, - 15563, - 15564, - 15565, - 15566, - 15567, - 15568, - 15569, - 15570, - 15571, - 15572, - 15573, - 15574, - 15575, - 15576, - 15577, - 15578, - 15579, - 15580, - 15581, - 15582, - 15583, - 15584, - 15585, - 15586, - 15587, - 15588, - 15589, - 15590, - 15591, - 15592, - 15593, - 15594, - 15595, - 15596, - 15597, - 15598, - 15599, - 15600, - 15601, - 15602, - 15603, - 15604, - 15605, - 15606, - 15607, - 15608, - 15609, - 15610, - 15611, - 15612, - 15613, - 15614, - 15615, - 15616, - 15617, - 15618, - 15619, - 15620, - 15621, - 15622, - 15623, - 15624, - 15625, - 15626, - 15627, - 15628, - 15629, - 15630, - 15631, - 15632, - 15633, - 15634, - 15635, - 15636, - 15637, - 15638, - 15639, - 15640, - 15641, - 15642, - 15643, - 15644, - 15645, - 15646, - 15647, - 15648, - 15649, - 15650, - 15651, - 15652, - 15653, - 15654, - 15655, - 15656, - 15657, - 15658, - 15659, - 15660, - 15661, - 15662, - 15663, - 15664, - 15665, - 15666, - 15667, - 15668, - 15669, - 15670, - 15671, - 15672, - 15673, - 15674, - 15675, - 15676, - 15677, - 15678, - 15679, - 15680, - 15681, - 15682, - 15683, - 15684, - 15685, - 15686, - 15687, - 15688, - 15689, - 15690, - 15691, - 15692, - 15693, - 15694, - 15695, - 15696, - 15697, - 15698, - 15699, - 15700, - 15701, - 15702, - 15703, - 15704, - 15705, - 15706, - 15707, - 15708, - 15709, - 15710, - 15711, - 15712, - 15713, - 15714, - 15715, - 15716, - 15717, - 15718, - 15719, - 15720, - 15721, - 15722, - 15723, - 15724, - 15725, - 15726, - 15727, - 15728, - 15729, - 15730, - 15731, - 15732, - 15733, - 15734, - 15735, - 15736, - 15737, - 15738, - 15739, - 15740, - 15741, - 15742, - 15743, - 15744, - 15745, - 15746, - 15747, - 15748, - 15749, - 15750, - 15751, - 15752, - 15753, - 15754, - 15755, - 15756, - 15757, - 15758, - 15759, - 15760, - 15761, - 15762, - 15763, - 15764, - 15765, - 15766, - 15767, - 15768, - 15769, - 15770, - 15771, - 15772, - 15773, - 15774, - 15775, - 15776, - 15777, - 15778, - 15779, - 15780, - 15781, - 15782, - 15783, - 15784, - 15785, - 15786, - 15787, - 15788, - 15789, - 15790, - 15791, - 15792, - 15793, - 15794, - 15795, - 15796, - 15797, - 15798, - 15799, - 15800, - 15801, - 15802, - 15803, - 15804, - 15805, - 15806, - 15807, - 15808, - 15809, - 15810, - 15811, - 15812, - 15813, - 15814, - 15815, - 15816, - 15817, - 15818, - 15819, - 15820, - 15821, - 15822, - 15823, - 15824, - 15825, - 15826, - 15827, - 15828, - 15829, - 15830, - 15831, - 15832, - 15833, - 15834, - 15835, - 15836, - 15837, - 15838, - 15839, - 15840, - 15841, - 15842, - 15843, - 15844, - 15845, - 15846, - 15847, - 15848, - 15849, - 15850, - 15851, - 15852, - 15853, - 15854, - 15855, - 15856, - 15857, - 15858, - 15859, - 15860, - 15861, - 15862, - 15863, - 15864, - 15865, - 15866, - 15867, - 15868, - 15869, - 15870, - 15871, - 15872, - 15873, - 15874, - 15875, - 15876, - 15877, - 15878, - 15879, - 15880, - 15881, - 15882, - 15883, - 15884, - 15885, - 15886, - 15887, - 15888, - 15889, - 15890, - 15891, - 15892, - 15893, - 15894, - 15895, - 15896, - 15897, - 15898, - 15899, - 15900, - 15901, - 15902, - 15903, - 15904, - 15905, - 15906, - 15907, - 15908, - 15909, - 15910, - 15911, - 15912, - 15913, - 15914, - 15915, - 15916, - 15917, - 15918, - 15919, - 15920, - 15921, - 15922, - 15923, - 15924, - 15925, - 15926, - 15927, - 15928, - 15929, - 15930, - 15931, - 15932, - 15933, - 15934, - 15935, - 15936, - 15937, - 15938, - 15939, - 15940, - 15941, - 15942, - 15943, - 15944, - 15945, - 15946, - 15947, - 15948, - 15949, - 15950, - 15951, - 15952, - 15953, - 15954, - 15955, - 15956, - 15957, - 15958, - 15959, - 15960, - 15961, - 15962, - 15963, - 15964, - 15965, - 15966, - 15967, - 15968, - 15969, - 15970, - 15971, - 15972, - 15973, - 15974, - 15975, - 15976, - 15977, - 15978, - 15979, - 15980, - 15981, - 15982, - 15983, - 15984, - 15985, - 15986, - 15987, - 15988, - 15989, - 15990, - 15991, - 15992, - 15993, - 15994, - 15995, - 15996, - 15997, - 15998, - 15999, - 16000, - 16001, - 16002, - 16003, - 16004, - 16005, - 16006, - 16007, - 16008, - 16009, - 16010, - 16011, - 16012, - 16013, - 16014, - 16015, - 16016, - 16017, - 16018, - 16019, - 16020, - 16021, - 16022, - 16023, - 16024, - 16025, - 16026, - 16027, - 16028, - 16029, - 16030, - 16031, - 16032, - 16033, - 16034, - 16035, - 16036, - 16037, - 16038, - 16039, - 16040, - 16041, - 16042, - 16043, - 16044, - 16045, - 16046, - 16047, - 16048, - 16049, - 16050, - 16051, - 16052, - 16053, - 16054, - 16055, - 16056, - 16057, - 16058, - 16059, - 16060, - 16061, - 16062, - 16063, - 16064, - 16065, - 16066, - 16067, - 16068, - 16069, - 16070, - 16071, - 16072, - 16073, - 16074, - 16075, - 16076, - 16077, - 16078, - 16079, - 16080, - 16081, - 16082, - 16083, - 16084, - 16085, - 16086, - 16087, - 16088, - 16089, - 16090, - 16091, - 16092, - 16093, - 16094, - 16095, - 16096, - 16097, - 16098, - 16099, - 16100, - 16101, - 16102, - 16103, - 16104, - 16105, - 16106, - 16107, - 16108, - 16109, - 16110, - 16111, - 16112, - 16113, - 16114, - 16115, - 16116, - 16117, - 16118, - 16119, - 16120, - 16121, - 16122, - 16123, - 16124, - 16125, - 16126, - 16127, - 16128, - 16129, - 16130, - 16131, - 16132, - 16133, - 16134, - 16135, - 16136, - 16137, - 16138, - 16139, - 16140, - 16141, - 16142, - 16143, - 16144, - 16145, - 16146, - 16147, - 16148, - 16149, - 16150, - 16151, - 16152, - 16153, - 16154, - 16155, - 16156, - 16157, - 16158, - 16159, - 16160, - 16161, - 16162, - 16163, - 16164, - 16165, - 16166, - 16167, - 16168, - 16169, - 16170, - 16171, - 16172, - 16173, - 16174, - 16175, - 16176, - 16177, - 16178, - 16179, - 16180, - 16181, - 16182, - 16183, - 16184, - 16185, - 16186, - 16187, - 16188, - 16189, - 16190, - 16191, - 16192, - 16193, - 16194, - 16195, - 16196, - 16197, - 16198, - 16199, - 16200, - 16201, - 16202, - 16203, - 16204, - 16205, - 16206, - 16207, - 16208, - 16209, - 16210, - 16211, - 16212, - 16213, - 16214, - 16215, - 16216, - 16217, - 16218, - 16219, - 16220, - 16221, - 16222, - 16223, - 16224, - 16225, - 16226, - 16227, - 16228, - 16229, - 16230, - 16231, - 16232, - 16233, - 16234, - 16235, - 16236, - 16237, - 16238, - 16239, - 16240, - 16241, - 16242, - 16243, - 16244, - 16245, - 16246, - 16247, - 16248, - 16249, - 16250, - 16251, - 16252, - 16253, - 16254, - 16255, - 16256, - 16257, - 16258, - 16259, - 16260, - 16261, - 16262, - 16263, - 16264, - 16265, - 16266, - 16267, - 16268, - 16269, - 16270, - 16271, - 16272, - 16273, - 16274, - 16275, - 16276, - 16277, - 16278, - 16279, - 16280, - 16281, - 16282, - 16283, - 16284, - 16285, - 16286, - 16287, - 16288, - 16289, - 16290, - 16291, - 16292, - 16293, - 16294, - 16295, - 16296, - 16297, - 16298, - 16299, - 16300, - 16301, - 16302, - 16303, - 16304, - 16305, - 16306, - 16307, - 16308, - 16309, - 16310, - 16311, - 16312, - 16313, - 16314, - 16315, - 16316, - 16317, - 16318, - 16319, - 16320, - 16321, - 16322, - 16323, - 16324, - 16325, - 16326, - 16327, - 16328, - 16329, - 16330, - 16331, - 16332, - 16333, - 16334, - 16335, - 16336, - 16337, - 16338, - 16339, - 16340, - 16341, - 16342, - 16343, - 16344, - 16345, - 16346, - 16347, - 16348, - 16349, - 16350, - 16351, - 16352, - 16353, - 16354, - 16355, - 16356, - 16357, - 16358, - 16359, - 16360, - 16361, - 16362, - 16363, - 16364, - 16365, - 16366, - 16367, - 16368, - 16369, - 16370, - 16371, - 16372, - 16373, - 16374, - 16375, - 16376, - 16377, - 16378, - 16379, - 16380, - 16381, - 16382, - 16383, - 16384, - 16385, - 16386, - 16387, - 16388, - 16389, - 16390, - 16391, - 16392, - 16393, - 16394, - 16395, - 16396, - 16397, - 16398, - 16399, - 16400, - 16401, - 16402, - 16403, - 16404, - 16405, - 16406, - 16407, - 16408, - 16409, - 16410, - 16411, - 16412, - 16413, - 16414, - 16415, - 16416, - 16417, - 16418, - 16419, - 16420, - 16421, - 16422, - 16423, - 16424, - 16425, - 16426, - 16427, - 16428, - 16429, - 16430, - 16431, - 16432, - 16433, - 16434, - 16435, - 16436, - 16437, - 16438, - 16439, - 16440, - 16441, - 16442, - 16443, - 16444, - 16445, - 16446, - 16447, - 16448, - 16449, - 16450, - 16451, - 16452, - 16453, - 16454, - 16455, - 16456, - 16457, - 16458, - 16459, - 16460, - 16461, - 16462, - 16463, - 16464, - 16465, - 16466, - 16467, - 16468, - 16469, - 16470, - 16471, - 16472, - 16473, - 16474, - 16475, - 16476, - 16477, - 16478, - 16479, - 16480, - 16481, - 16482, - 16483, - 16484, - 16485, - 16486, - 16487, - 16488, - 16489, - 16490, - 16491, - 16492, - 16493, - 16494, - 16495, - 16496, - 16497, - 16498, - 16499, - 16500, - 16501, - 16502, - 16503, - 16504, - 16505, - 16506, - 16507, - 16508, - 16509, - 16510, - 16511, - 16512, - 16513, - 16514, - 16515, - 16516, - 16517, - 16518, - 16519, - 16520, - 16521, - 16522, - 16523, - 16524, - 16525, - 16526, - 16527, - 16528, - 16529, - 16530, - 16531, - 16532, - 16533, - 16534, - 16535, - 16536, - 16537, - 16538, - 16539, - 16540, - 16541, - 16542, - 16543, - 16544, - 16545, - 16546, - 16547, - 16548, - 16549, - 16550, - 16551, - 16552, - 16553, - 16554, - 16555, - 16556, - 16557, - 16558, - 16559, - 16560, - 16561, - 16562, - 16563, - 16564, - 16565, - 16566, - 16567, - 16568, - 16569, - 16570, - 16571, - 16572, - 16573, - 16574, - 16575, - 16576, - 16577, - 16578, - 16579, - 16580, - 16581, - 16582, - 16583, - 16584, - 16585, - 16586, - 16587, - 16588, - 16589, - 16590, - 16591, - 16592, - 16593, - 16594, - 16595, - 16596, - 16597, - 16598, - 16599, - 16600, - 16601, - 16602, - 16603, - 16604, - 16605, - 16606, - 16607, - 16608, - 16609, - 16610, - 16611, - 16612, - 16613, - 16614, - 16615, - 16616, - 16617, - 16618, - 16619, - 16620, - 16621, - 16622, - 16623, - 16624, - 16625, - 16626, - 16627, - 16628, - 16629, - 16630, - 16631, - 16632, - 16633, - 16634, - 16635, - 16636, - 16637, - 16638, - 16639, - 16640, - 16641, - 16642, - 16643, - 16644, - 16645, - 16646, - 16647, - 16648, - 16649, - 16650, - 16651, - 16652, - 16653, - 16654, - 16655, - 16656, - 16657, - 16658, - 16659, - 16660, - 16661, - 16662, - 16663, - 16664, - 16665, - 16666, - 16667, - 16668, - 16669, - 16670, - 16671, - 16672, - 16673, - 16674, - 16675, - 16676, - 16677, - 16678, - 16679, - 16680, - 16681, - 16682, - 16683, - 16684, - 16685, - 16686, - 16687, - 16688, - 16689, - 16690, - 16691, - 16692, - 16693, - 16694, - 16695, - 16696, - 16697, - 16698, - 16699, - 16700, - 16701, - 16702, - 16703, - 16704, - 16705, - 16706, - 16707, - 16708, - 16709, - 16710, - 16711, - 16712, - 16713, - 16714, - 16715, - 16716, - 16717, - 16718, - 16719, - 16720, - 16721, - 16722, - 16723, - 16724, - 16725, - 16726, - 16727, - 16728, - 16729, - 16730, - 16731, - 16732, - 16733, - 16734, - 16735, - 16736, - 16737, - 16738, - 16739, - 16740, - 16741, - 16742, - 16743, - 16744, - 16745, - 16746, - 16747, - 16748, - 16749, - 16750, - 16751, - 16752, - 16753, - 16754, - 16755, - 16756, - 16757, - 16758, - 16759, - 16760, - 16761, - 16762, - 16763, - 16764, - 16765, - 16766, - 16767, - 16768, - 16769, - 16770, - 16771, - 16772, - 16773, - 16774, - 16775, - 16776, - 16777, - 16778, - 16779, - 16780, - 16781, - 16782, - 16783, - 16784, - 16785, - 16786, - 16787, - 16788, - 16789, - 16790, - 16791, - 16792, - 16793, - 16794, - 16795, - 16796, - 16797, - 16798, - 16799, - 16800, - 16801, - 16802, - 16803, - 16804, - 16805, - 16806, - 16807, - 16808, - 16809, - 16810, - 16811, - 16812, - 16813, - 16814, - 16815, - 16816, - 16817, - 16818, - 16819, - 16820, - 16821, - 16822, - 16823, - 16824, - 16825, - 16826, - 16827, - 16828, - 16829, - 16830, - 16831, - 16832, - 16833, - 16834, - 16835, - 16836, - 16837, - 16838, - 16839, - 16840, - 16841, - 16842, - 16843, - 16844, - 16845, - 16846, - 16847, - 16848, - 16849, - 16850, - 16851, - 16852, - 16853, - 16854, - 16855, - 16856, - 16857, - 16858, - 16859, - 16860, - 16861, - 16862, - 16863, - 16864, - 16865, - 16866, - 16867, - 16868, - 16869, - 16870, - 16871, - 16872, - 16873, - 16874, - 16875, - 16876, - 16877, - 16878, - 16879, - 16880, - 16881, - 16882, - 16883, - 16884, - 16885, - 16886, - 16887, - 16888, - 16889, - 16890, - 16891, - 16892, - 16893, - 16894, - 16895, - 16896, - 16897, - 16898, - 16899, - 16900, - 16901, - 16902, - 16903, - 16904, - 16905, - 16906, - 16907, - 16908, - 16909, - 16910, - 16911, - 16912, - 16913, - 16914, - 16915, - 16916, - 16917, - 16918, - 16919, - 16920, - 16921, - 16922, - 16923, - 16924, - 16925, - 16926, - 16927, - 16928, - 16929, - 16930, - 16931, - 16932, - 16933, - 16934, - 16935, - 16936, - 16937, - 16938, - 16939, - 16940, - 16941, - 16942, - 16943, - 16944, - 16945, - 16946, - 16947, - 16948, - 16949, - 16950, - 16951, - 16952, - 16953, - 16954, - 16955, - 16956, - 16957, - 16958, - 16959, - 16960, - 16961, - 16962, - 16963, - 16964, - 16965, - 16966, - 16967, - 16968, - 16969, - 16970, - 16971, - 16972, - 16973, - 16974, - 16975, - 16976, - 16977, - 16978, - 16979, - 16980, - 16981, - 16982, - 16983, - 16984, - 16985, - 16986, - 16987, - 16988, - 16989, - 16990, - 16991, - 16992, - 16993, - 16994, - 16995, - 16996, - 16997, - 16998, - 16999, - 17000, - 17001, - 17002, - 17003, - 17004, - 17005, - 17006, - 17007, - 17008, - 17009, - 17010, - 17011, - 17012, - 17013, - 17014, - 17015, - 17016, - 17017, - 17018, - 17019, - 17020, - 17021, - 17022, - 17023, - 17024, - 17025, - 17026, - 17027, - 17028, - 17029, - 17030, - 17031, - 17032, - 17033, - 17034, - 17035, - 17036, - 17037, - 17038, - 17039, - 17040, - 17041, - 17042, - 17043, - 17044, - 17045, - 17046, - 17047, - 17048, - 17049, - 17050, - 17051, - 17052, - 17053, - 17054, - 17055, - 17056, - 17057, - 17058, - 17059, - 17060, - 17061, - 17062, - 17063, - 17064, - 17065, - 17066, - 17067, - 17068, - 17069, - 17070, - 17071, - 17072, - 17073, - 17074, - 17075, - 17076, - 17077, - 17078, - 17079, - 17080, - 17081, - 17082, - 17083, - 17084, - 17085, - 17086, - 17087, - 17088, - 17089, - 17090, - 17091, - 17092, - 17093, - 17094, - 17095, - 17096, - 17097, - 17098, - 17099, - 17100, - 17101, - 17102, - 17103, - 17104, - 17105, - 17106, - 17107, - 17108, - 17109, - 17110, - 17111, - 17112, - 17113, - 17114, - 17115, - 17116, - 17117, - 17118, - 17119, - 17120, - 17121, - 17122, - 17123, - 17124, - 17125, - 17126, - 17127, - 17128, - 17129, - 17130, - 17131, - 17132, - 17133, - 17134, - 17135, - 17136, - 17137, - 17138, - 17139, - 17140, - 17141, - 17142, - 17143, - 17144, - 17145, - 17146, - 17147, - 17148, - 17149, - 17150, - 17151, - 17152, - 17153, - 17154, - 17155, - 17156, - 17157, - 17158, - 17159, - 17160, - 17161, - 17162, - 17163, - 17164, - 17165, - 17166, - 17167, - 17168, - 17169, - 17170, - 17171, - 17172, - 17173, - 17174, - 17175, - 17176, - 17177, - 17178, - 17179, - 17180, - 17181, - 17182, - 17183, - 17184, - 17185, - 17186, - 17187, - 17188, - 17189, - 17190, - 17191, - 17192, - 17193, - 17194, - 17195, - 17196, - 17197, - 17198, - 17199, - 17200, - 17201, - 17202, - 17203, - 17204, - 17205, - 17206, - 17207, - 17208, - 17209, - 17210, - 17211, - 17212, - 17213, - 17214, - 17215, - 17216, - 17217, - 17218, - 17219, - 17220, - 17221, - 17222, - 17223, - 17224, - 17225, - 17226, - 17227, - 17228, - 17229, - 17230, - 17231, - 17232, - 17233, - 17234, - 17235, - 17236, - 17237, - 17238, - 17239, - 17240, - 17241, - 17242, - 17243, - 17244, - 17245, - 17246, - 17247, - 17248, - 17249, - 17250, - 17251, - 17252, - 17253, - 17254, - 17255, - 17256, - 17257, - 17258, - 17259, - 17260, - 17261, - 17262, - 17263, - 17264, - 17265, - 17266, - 17267, - 17268, - 17269, - 17270, - 17271, - 17272, - 17273, - 17274, - 17275, - 17276, - 17277, - 17278, - 17279, - 17280, - 17281, - 17282, - 17283, - 17284, - 17285, - 17286, - 17287, - 17288, - 17289, - 17290, - 17291, - 17292, - 17293, - 17294, - 17295, - 17296, - 17297, - 17298, - 17299, - 17300, - 17301, - 17302, - 17303, - 17304, - 17305, - 17306, - 17307, - 17308, - 17309, - 17310, - 17311, - 17312, - 17313, - 17314, - 17315, - 17316, - 17317, - 17318, - 17319, - 17320, - 17321, - 17322, - 17323, - 17324, - 17325, - 17326, - 17327, - 17328, - 17329, - 17330, - 17331, - 17332, - 17333, - 17334, - 17335, - 17336, - 17337, - 17338, - 17339, - 17340, - 17341, - 17342, - 17343, - 17344, - 17345, - 17346, - 17347, - 17348, - 17349, - 17350, - 17351, - 17352, - 17353, - 17354, - 17355, - 17356, - 17357, - 17358, - 17359, - 17360, - 17361, - 17362, - 17363, - 17364, - 17365, - 17366, - 17367, - 17368, - 17369, - 17370, - 17371, - 17372, - 17373, - 17374, - 17375, - 17376, - 17377, - 17378, - 17379, - 17380, - 17381, - 17382, - 17383, - 17384, - 17385, - 17386, - 17387, - 17388, - 17389, - 17390, - 17391, - 17392, - 17393, - 17394, - 17395, - 17396, - 17397, - 17398, - 17399, - 17400, - 17401, - 17402, - 17403, - 17404, - 17405, - 17406, - 17407, - 17408, - 17409, - 17410, - 17411, - 17412, - 17413, - 17414, - 17415, - 17416, - 17417, - 17418, - 17419, - 17420, - 17421, - 17422, - 17423, - 17424, - 17425, - 17426, - 17427, - 17428, - 17429, - 17430, - 17431, - 17432, - 17433, - 17434, - 17435, - 17436, - 17437, - 17438, - 17439, - 17440, - 17441, - 17442, - 17443, - 17444, - 17445, - 17446, - 17447, - 17448, - 17449, - 17450, - 17451, - 17452, - 17453, - 17454, - 17455, - 17456, - 17457, - 17458, - 17459, - 17460, - 17461, - 17462, - 17463, - 17464, - 17465, - 17466, - 17467, - 17468, - 17469, - 17470, - 17471, - 17472, - 17473, - 17474, - 17475, - 17476, - 17477, - 17478, - 17479, - 17480, - 17481, - 17482, - 17483, - 17484, - 17485, - 17486, - 17487, - 17488, - 17489, - 17490, - 17491, - 17492, - 17493, - 17494, - 17495, - 17496, - 17497, - 17498, - 17499, - 17500, - 17501, - 17502, - 17503, - 17504, - 17505, - 17506, - 17507, - 17508, - 17509, - 17510, - 17511, - 17512, - 17513, - 17514, - 17515, - 17516, - 17517, - 17518, - 17519, - 17520, - 17521, - 17522, - 17523, - 17524, - 17525, - 17526, - 17527, - 17528, - 17529, - 17530, - 17531, - 17532, - 17533, - 17534, - 17535, - 17536, - 17537, - 17538, - 17539, - 17540, - 17541, - 17542, - 17543, - 17544, - 17545, - 17546, - 17547, - 17548, - 17549, - 17550, - 17551, - 17552, - 17553, - 17554, - 17555, - 17556, - 17557, - 17558, - 17559, - 17560, - 17561, - 17562, - 17563, - 17564, - 17565, - 17566, - 17567, - 17568, - 17569, - 17570, - 17571, - 17572, - 17573, - 17574, - 17575, - 17576, - 17577, - 17578, - 17579, - 17580, - 17581, - 17582, - 17583, - 17584, - 17585, - 17586, - 17587, - 17588, - 17589, - 17590, - 17591, - 17592, - 17593, - 17594, - 17595, - 17596, - 17597, - 17598, - 17599, - 17600, - 17601, - 17602, - 17603, - 17604, - 17605, - 17606, - 17607, - 17608, - 17609, - 17610, - 17611, - 17612, - 17613, - 17614, - 17615, - 17616, - 17617, - 17618, - 17619, - 17620, - 17621, - 17622, - 17623, - 17624, - 17625, - 17626, - 17627, - 17628, - 17629, - 17630, - 17631, - 17632, - 17633, - 17634, - 17635, - 17636, - 17637, - 17638, - 17639, - 17640, - 17641, - 17642, - 17643, - 17644, - 17645, - 17646, - 17647, - 17648, - 17649, - 17650, - 17651, - 17652, - 17653, - 17654, - 17655, - 17656, - 17657, - 17658, - 17659, - 17660, - 17661, - 17662, - 17663, - 17664, - 17665, - 17666, - 17667, - 17668, - 17669, - 17670, - 17671, - 17672, - 17673, - 17674, - 17675, - 17676, - 17677, - 17678, - 17679, - 17680, - 17681, - 17682, - 17683, - 17684, - 17685, - 17686, - 17687, - 17688, - 17689, - 17690, - 17691, - 17692, - 17693, - 17694, - 17695, - 17696, - 17697, - 17698, - 17699, - 17700, - 17701, - 17702, - 17703, - 17704, - 17705, - 17706, - 17707, - 17708, - 17709, - 17710, - 17711, - 17712, - 17713, - 17714, - 17715, - 17716, - 17717, - 17718, - 17719, - 17720, - 17721, - 17722, - 17723, - 17724, - 17725, - 17726, - 17727, - 17728, - 17729, - 17730, - 17731, - 17732, - 17733, - 17734, - 17735, - 17736, - 17737, - 17738, - 17739, - 17740, - 17741, - 17742, - 17743, - 17744, - 17745, - 17746, - 17747, - 17748, - 17749, - 17750, - 17751, - 17752, - 17753, - 17754, - 17755, - 17756, - 17757, - 17758, - 17759, - 17760, - 17761, - 17762, - 17763, - 17764, - 17765, - 17766, - 17767, - 17768, - 17769, - 17770, - 17771, - 17772, - 17773, - 17774, - 17775, - 17776, - 17777, - 17778, - 17779, - 17780, - 17781, - 17782, - 17783, - 17784, - 17785, - 17786, - 17787, - 17788, - 17789, - 17790, - 17791, - 17792, - 17793, - 17794, - 17795, - 17796, - 17797, - 17798, - 17799, - 17800, - 17801, - 17802, - 17803, - 17804, - 17805, - 17806, - 17807, - 17808, - 17809, - 17810, - 17811, - 17812, - 17813, - 17814, - 17815, - 17816, - 17817, - 17818, - 17819, - 17820, - 17821, - 17822, - 17823, - 17824, - 17825, - 17826, - 17827, - 17828, - 17829, - 17830, - 17831, - 17832, - 17833, - 17834, - 17835, - 17836, - 17837, - 17838, - 17839, - 17840, - 17841, - 17842, - 17843, - 17844, - 17845, - 17846, - 17847, - 17848, - 17849, - 17850, - 17851, - 17852, - 17853, - 17854, - 17855, - 17856, - 17857, - 17858, - 17859, - 17860, - 17861, - 17862, - 17863, - 17864, - 17865, - 17866, - 17867, - 17868, - 17869, - 17870, - 17871, - 17872, - 17873, - 17874, - 17875, - 17876, - 17877, - 17878, - 17879, - 17880, - 17881, - 17882, - 17883, - 17884, - 17885, - 17886, - 17887, - 17888, - 17889, - 17890, - 17891, - 17892, - 17893, - 17894, - 17895, - 17896, - 17897, - 17898, - 17899, - 17900, - 17901, - 17902, - 17903, - 17904, - 17905, - 17906, - 17907, - 17908, - 17909, - 17910, - 17911, - 17912, - 17913, - 17914, - 17915, - 17916, - 17917, - 17918, - 17919, - 17920, - 17921, - 17922, - 17923, - 17924, - 17925, - 17926, - 17927, - 17928, - 17929, - 17930, - 17931, - 17932, - 17933, - 17934, - 17935, - 17936, - 17937, - 17938, - 17939, - 17940, - 17941, - 17942, - 17943, - 17944, - 17945, - 17946, - 17947, - 17948, - 17949, - 17950, - 17951, - 17952, - 17953, - 17954, - 17955, - 17956, - 17957, - 17958, - 17959, - 17960, - 17961, - 17962, - 17963, - 17964, - 17965, - 17966, - 17967, - 17968, - 17969, - 17970, - 17971, - 17972, - 17973, - 17974, - 17975, - 17976, - 17977, - 17978, - 17979, - 17980, - 17981, - 17982, - 17983, - 17984, - 17985, - 17986, - 17987, - 17988, - 17989, - 17990, - 17991, - 17992, - 17993, - 17994, - 17995, - 17996, - 17997, - 17998, - 17999, - 18000, - 18001, - 18002, - 18003, - 18004, - 18005, - 18006, - 18007, - 18008, - 18009, - 18010, - 18011, - 18012, - 18013, - 18014, - 18015, - 18016, - 18017, - 18018, - 18019, - 18020, - 18021, - 18022, - 18023, - 18024, - 18025, - 18026, - 18027, - 18028, - 18029, - 18030, - 18031, - 18032, - 18033, - 18034, - 18035, - 18036, - 18037, - 18038, - 18039, - 18040, - 18041, - 18042, - 18043, - 18044, - 18045, - 18046, - 18047, - 18048, - 18049, - 18050, - 18051, - 18052, - 18053, - 18054, - 18055, - 18056, - 18057, - 18058, - 18059, - 18060, - 18061, - 18062, - 18063, - 18064, - 18065, - 18066, - 18067, - 18068, - 18069, - 18070, - 18071, - 18072, - 18073, - 18074, - 18075, - 18076, - 18077, - 18078, - 18079, - 18080, - 18081, - 18082, - 18083, - 18084, - 18085, - 18086, - 18087, - 18088, - 18089, - 18090, - 18091, - 18092, - 18093, - 18094, - 18095, - 18096, - 18097, - 18098, - 18099, - 18100, - 18101, - 18102, - 18103, - 18104, - 18105, - 18106, - 18107, - 18108, - 18109, - 18110, - 18111, - 18112, - 18113, - 18114, - 18115, - 18116, - 18117, - 18118, - 18119, - 18120, - 18121, - 18122, - 18123, - 18124, - 18125, - 18126, - 18127, - 18128, - 18129, - 18130, - 18131, - 18132, - 18133, - 18134, - 18135, - 18136, - 18137, - 18138, - 18139, - 18140, - 18141, - 18142, - 18143, - 18144, - 18145, - 18146, - 18147, - 18148, - 18149, - 18150, - 18151, - 18152, - 18153, - 18154, - 18155, - 18156, - 18157, - 18158, - 18159, - 18160, - 18161, - 18162, - 18163, - 18164, - 18165, - 18166, - 18167, - 18168, - 18169, - 18170, - 18171, - 18172, - 18173, - 18174, - 18175, - 18176, - 18177, - 18178, - 18179, - 18180, - 18181, - 18182, - 18183, - 18184, - 18185, - 18186, - 18187, - 18188, - 18189, - 18190, - 18191, - 18192, - 18193, - 18194, - 18195, - 18196, - 18197, - 18198, - 18199, - 18200, - 18201, - 18202, - 18203, - 18204, - 18205, - 18206, - 18207, - 18208, - 18209, - 18210, - 18211, - 18212, - 18213, - 18214, - 18215, - 18216, - 18217, - 18218, - 18219, - 18220, - 18221, - 18222, - 18223, - 18224, - 18225, - 18226, - 18227, - 18228, - 18229, - 18230, - 18231, - 18232, - 18233, - 18234, - 18235, - 18236, - 18237, - 18238, - 18239, - 18240, - 18241, - 18242, - 18243, - 18244, - 18245, - 18246, - 18247, - 18248, - 18249, - 18250, - 18251, - 18252, - 18253, - 18254, - 18255, - 18256, - 18257, - 18258, - 18259, - 18260, - 18261, - 18262, - 18263, - 18264, - 18265, - 18266, - 18267, - 18268, - 18269, - 18270, - 18271, - 18272, - 18273, - 18274, - 18275, - 18276, - 18277, - 18278, - 18279, - 18280, - 18281, - 18282, - 18283, - 18284, - 18285, - 18286, - 18287, - 18288, - 18289, - 18290, - 18291, - 18292, - 18293, - 18294, - 18295, - 18296, - 18297, - 18298, - 18299, - 18300, - 18301, - 18302, - 18303, - 18304, - 18305, - 18306, - 18307, - 18308, - 18309, - 18310, - 18311, - 18312, - 18313, - 18314, - 18315, - 18316, - 18317, - 18318, - 18319, - 18320, - 18321, - 18322, - 18323, - 18324, - 18325, - 18326, - 18327, - 18328, - 18329, - 18330, - 18331, - 18332, - 18333, - 18334, - 18335, - 18336, - 18337, - 18338, - 18339, - 18340, - 18341, - 18342, - 18343, - 18344, - 18345, - 18346, - 18347, - 18348, - 18349, - 18350, - 18351, - 18352, - 18353, - 18354, - 18355, - 18356, - 18357, - 18358, - 18359, - 18360, - 18361, - 18362, - 18363, - 18364, - 18365, - 18366, - 18367, - 18368, - 18369, - 18370, - 18371, - 18372, - 18373, - 18374, - 18375, - 18376, - 18377, - 18378, - 18379, - 18380, - 18381, - 18382, - 18383, - 18384, - 18385, - 18386, - 18387, - 18388, - 18389, - 18390, - 18391, - 18392, - 18393, - 18394, - 18395, - 18396, - 18397, - 18398, - 18399, - 18400, - 18401, - 18402, - 18403, - 18404, - 18405, - 18406, - 18407, - 18408, - 18409, - 18410, - 18411, - 18412, - 18413, - 18414, - 18415, - 18416, - 18417, - 18418, - 18419, - 18420, - 18421, - 18422, - 18423, - 18424, - 18425, - 18426, - 18427, - 18428, - 18429, - 18430, - 18431, - 18432, - 18433, - 18434, - 18435, - 18436, - 18437, - 18438, - 18439, - 18440, - 18441, - 18442, - 18443, - 18444, - 18445, - 18446, - 18447, - 18448, - 18449, - 18450, - 18451, - 18452, - 18453, - 18454, - 18455, - 18456, - 18457, - 18458, - 18459, - 18460, - 18461, - 18462, - 18463, - 18464, - 18465, - 18466, - 18467, - 18468, - 18469, - 18470, - 18471, - 18472, - 18473, - 18474, - 18475, - 18476, - 18477, - 18478, - 18479, - 18480, - 18481, - 18482, - 18483, - 18484, - 18485, - 18486, - 18487, - 18488, - 18489, - 18490, - 18491, - 18492, - 18493, - 18494, - 18495, - 18496, - 18497, - 18498, - 18499, - 18500, - 18501, - 18502, - 18503, - 18504, - 18505, - 18506, - 18507, - 18508, - 18509, - 18510, - 18511, - 18512, - 18513, - 18514, - 18515, - 18516, - 18517, - 18518, - 18519, - 18520, - 18521, - 18522, - 18523, - 18524, - 18525, - 18526, - 18527, - 18528, - 18529, - 18530, - 18531, - 18532, - 18533, - 18534, - 18535, - 18536, - 18537, - 18538, - 18539, - 18540, - 18541, - 18542, - 18543, - 18544, - 18545, - 18546, - 18547, - 18548, - 18549, - 18550, - 18551, - 18552, - 18553, - 18554, - 18555, - 18556, - 18557, - 18558, - 18559, - 18560, - 18561, - 18562, - 18563, - 18564, - 18565, - 18566, - 18567, - 18568, - 18569, - 18570, - 18571, - 18572, - 18573, - 18574, - 18575, - 18576, - 18577, - 18578, - 18579, - 18580, - 18581, - 18582, - 18583, - 18584, - 18585, - 18586, - 18587, - 18588, - 18589, - 18590, - 18591, - 18592, - 18593, - 18594, - 18595, - 18596, - 18597, - 18598, - 18599, - 18600, - 18601, - 18602, - 18603, - 18604, - 18605, - 18606, - 18607, - 18608, - 18609, - 18610, - 18611, - 18612, - 18613, - 18614, - 18615, - 18616, - 18617, - 18618, - 18619, - 18620, - 18621, - 18622, - 18623, - 18624, - 18625, - 18626, - 18627, - 18628, - 18629, - 18630, - 18631, - 18632, - 18633, - 18634, - 18635, - 18636, - 18637, - 18638, - 18639, - 18640, - 18641, - 18642, - 18643, - 18644, - 18645, - 18646, - 18647, - 18648, - 18649, - 18650, - 18651, - 18652, - 18653, - 18654, - 18655, - 18656, - 18657, - 18658, - 18659, - 18660, - 18661, - 18662, - 18663, - 18664, - 18665, - 18666, - 18667, - 18668, - 18669, - 18670, - 18671, - 18672, - 18673, - 18674, - 18675, - 18676, - 18677, - 18678, - 18679, - 18680, - 18681, - 18682, - 18683, - 18684, - 18685, - 18686, - 18687, - 18688, - 18689, - 18690, - 18691, - 18692, - 18693, - 18694, - 18695, - 18696, - 18697, - 18698, - 18699, - 18700, - 18701, - 18702, - 18703, - 18704, - 18705, - 18706, - 18707, - 18708, - 18709, - 18710, - 18711, - 18712, - 18713, - 18714, - 18715, - 18716, - 18717, - 18718, - 18719, - 18720, - 18721, - 18722, - 18723, - 18724, - 18725, - 18726, - 18727, - 18728, - 18729, - 18730, - 18731, - 18732, - 18733, - 18734, - 18735, - 18736, - 18737, - 18738, - 18739, - 18740, - 18741, - 18742, - 18743, - 18744, - 18745, - 18746, - 18747, - 18748, - 18749, - 18750, - 18751, - 18752, - 18753, - 18754, - 18755, - 18756, - 18757, - 18758, - 18759, - 18760, - 18761, - 18762, - 18763, - 18764, - 18765, - 18766, - 18767, - 18768, - 18769, - 18770, - 18771, - 18772, - 18773, - 18774, - 18775, - 18776, - 18777, - 18778, - 18779, - 18780, - 18781, - 18782, - 18783, - 18784, - 18785, - 18786, - 18787, - 18788, - 18789, - 18790, - 18791, - 18792, - 18793, - 18794, - 18795, - 18796, - 18797, - 18798, - 18799, - 18800, - 18801, - 18802, - 18803, - 18804, - 18805, - 18806, - 18807, - 18808, - 18809, - 18810, - 18811, - 18812, - 18813, - 18814, - 18815, - 18816, - 18817, - 18818, - 18819, - 18820, - 18821, - 18822, - 18823, - 18824, - 18825, - 18826, - 18827, - 18828, - 18829, - 18830, - 18831, - 18832, - 18833, - 18834, - 18835, - 18836, - 18837, - 18838, - 18839, - 18840, - 18841, - 18842, - 18843, - 18844, - 18845, - 18846, - 18847, - 18848, - 18849, - 18850, - 18851, - 18852, - 18853, - 18854, - 18855, - 18856, - 18857, - 18858, - 18859, - 18860, - 18861, - 18862, - 18863, - 18864, - 18865, - 18866, - 18867, - 18868, - 18869, - 18870, - 18871, - 18872, - 18873, - 18874, - 18875, - 18876, - 18877, - 18878, - 18879, - 18880, - 18881, - 18882, - 18883, - 18884, - 18885, - 18886, - 18887, - 18888, - 18889, - 18890, - 18891, - 18892, - 18893, - 18894, - 18895, - 18896, - 18897, - 18898, - 18899, - 18900, - 18901, - 18902, - 18903, - 18904, - 18905, - 18906, - 18907, - 18908, - 18909, - 18910, - 18911, - 18912, - 18913, - 18914, - 18915, - 18916, - 18917, - 18918, - 18919, - 18920, - 18921, - 18922, - 18923, - 18924, - 18925, - 18926, - 18927, - 18928, - 18929, - 18930, - 18931, - 18932, - 18933, - 18934, - 18935, - 18936, - 18937, - 18938, - 18939, - 18940, - 18941, - 18942, - 18943, - 18944, - 18945, - 18946, - 18947, - 18948, - 18949, - 18950, - 18951, - 18952, - 18953, - 18954, - 18955, - 18956, - 18957, - 18958, - 18959, - 18960, - 18961, - 18962, - 18963, - 18964, - 18965, - 18966, - 18967, - 18968, - 18969, - 18970, - 18971, - 18972, - 18973, - 18974, - 18975, - 18976, - 18977, - 18978, - 18979, - 18980, - 18981, - 18982, - 18983, - 18984, - 18985, - 18986, - 18987, - 18988, - 18989, - 18990, - 18991, - 18992, - 18993, - 18994, - 18995, - 18996, - 18997, - 18998, - 18999, - 19000, - 19001, - 19002, - 19003, - 19004, - 19005, - 19006, - 19007, - 19008, - 19009, - 19010, - 19011, - 19012, - 19013, - 19014, - 19015, - 19016, - 19017, - 19018, - 19019, - 19020, - 19021, - 19022, - 19023, - 19024, - 19025, - 19026, - 19027, - 19028, - 19029, - 19030, - 19031, - 19032, - 19033, - 19034, - 19035, - 19036, - 19037, - 19038, - 19039, - 19040, - 19041, - 19042, - 19043, - 19044, - 19045, - 19046, - 19047, - 19048, - 19049, - 19050, - 19051, - 19052, - 19053, - 19054, - 19055, - 19056, - 19057, - 19058, - 19059, - 19060, - 19061, - 19062, - 19063, - 19064, - 19065, - 19066, - 19067, - 19068, - 19069, - 19070, - 19071, - 19072, - 19073, - 19074, - 19075, - 19076, - 19077, - 19078, - 19079, - 19080, - 19081, - 19082, - 19083, - 19084, - 19085, - 19086, - 19087, - 19088, - 19089, - 19090, - 19091, - 19092, - 19093, - 19094, - 19095, - 19096, - 19097, - 19098, - 19099, - 19100, - 19101, - 19102, - 19103, - 19104, - 19105, - 19106, - 19107, - 19108, - 19109, - 19110, - 19111, - 19112, - 19113, - 19114, - 19115, - 19116, - 19117, - 19118, - 19119, - 19120, - 19121, - 19122, - 19123, - 19124, - 19125, - 19126, - 19127, - 19128, - 19129, - 19130, - 19131, - 19132, - 19133, - 19134, - 19135, - 19136, - 19137, - 19138, - 19139, - 19140, - 19141, - 19142, - 19143, - 19144, - 19145, - 19146, - 19147, - 19148, - 19149, - 19150, - 19151, - 19152, - 19153, - 19154, - 19155, - 19156, - 19157, - 19158, - 19159, - 19160, - 19161, - 19162, - 19163, - 19164, - 19165, - 19166, - 19167, - 19168, - 19169, - 19170, - 19171, - 19172, - 19173, - 19174, - 19175, - 19176, - 19177, - 19178, - 19179, - 19180, - 19181, - 19182, - 19183, - 19184, - 19185, - 19186, - 19187, - 19188, - 19189, - 19190, - 19191, - 19192, - 19193, - 19194, - 19195, - 19196, - 19197, - 19198, - 19199, - 19200, - 19201, - 19202, - 19203, - 19204, - 19205, - 19206, - 19207, - 19208, - 19209, - 19210, - 19211, - 19212, - 19213, - 19214, - 19215, - 19216, - 19217, - 19218, - 19219, - 19220, - 19221, - 19222, - 19223, - 19224, - 19225, - 19226, - 19227, - 19228, - 19229, - 19230, - 19231, - 19232, - 19233, - 19234, - 19235, - 19236, - 19237, - 19238, - 19239, - 19240, - 19241, - 19242, - 19243, - 19244, - 19245, - 19246, - 19247, - 19248, - 19249, - 19250, - 19251, - 19252, - 19253, - 19254, - 19255, - 19256, - 19257, - 19258, - 19259, - 19260, - 19261, - 19262, - 19263, - 19264, - 19265, - 19266, - 19267, - 19268, - 19269, - 19270, - 19271, - 19272, - 19273, - 19274, - 19275, - 19276, - 19277, - 19278, - 19279, - 19280, - 19281, - 19282, - 19283, - 19284, - 19285, - 19286, - 19287, - 19288, - 19289, - 19290, - 19291, - 19292, - 19293, - 19294, - 19295, - 19296, - 19297, - 19298, - 19299, - 19300, - 19301, - 19302, - 19303, - 19304, - 19305, - 19306, - 19307, - 19308, - 19309, - 19310, - 19311, - 19312, - 19313, - 19314, - 19315, - 19316, - 19317, - 19318, - 19319, - 19320, - 19321, - 19322, - 19323, - 19324, - 19325, - 19326, - 19327, - 19328, - 19329, - 19330, - 19331, - 19332, - 19333, - 19334, - 19335, - 19336, - 19337, - 19338, - 19339, - 19340, - 19341, - 19342, - 19343, - 19344, - 19345, - 19346, - 19347, - 19348, - 19349, - 19350, - 19351, - 19352, - 19353, - 19354, - 19355, - 19356, - 19357, - 19358, - 19359, - 19360, - 19361, - 19362, - 19363, - 19364, - 19365, - 19366, - 19367, - 19368, - 19369, - 19370, - 19371, - 19372, - 19373, - 19374, - 19375, - 19376, - 19377, - 19378, - 19379, - 19380, - 19381, - 19382, - 19383, - 19384, - 19385, - 19386, - 19387, - 19388, - 19389, - 19390, - 19391, - 19392, - 19393, - 19394, - 19395, - 19396, - 19397, - 19398, - 19399, - 19400, - 19401, - 19402, - 19403, - 19404, - 19405, - 19406, - 19407, - 19408, - 19409, - 19410, - 19411, - 19412, - 19413, - 19414, - 19415, - 19416, - 19417, - 19418, - 19419, - 19420, - 19421, - 19422, - 19423, - 19424, - 19425, - 19426, - 19427, - 19428, - 19429, - 19430, - 19431, - 19432, - 19433, - 19434, - 19435, - 19436, - 19437, - 19438, - 19439, - 19440, - 19441, - 19442, - 19443, - 19444, - 19445, - 19446, - 19447, - 19448, - 19449, - 19450, - 19451, - 19452, - 19453, - 19454, - 19455, - 19456, - 19457, - 19458, - 19459, - 19460, - 19461, - 19462, - 19463, - 19464, - 19465, - 19466, - 19467, - 19468, - 19469, - 19470, - 19471, - 19472, - 19473, - 19474, - 19475, - 19476, - 19477, - 19478, - 19479, - 19480, - 19481, - 19482, - 19483, - 19484, - 19485, - 19486, - 19487, - 19488, - 19489, - 19490, - 19491, - 19492, - 19493, - 19494, - 19495, - 19496, - 19497, - 19498, - 19499, - 19500, - 19501, - 19502, - 19503, - 19504, - 19505, - 19506, - 19507, - 19508, - 19509, - 19510, - 19511, - 19512, - 19513, - 19514, - 19515, - 19516, - 19517, - 19518, - 19519, - 19520, - 19521, - 19522, - 19523, - 19524, - 19525, - 19526, - 19527, - 19528, - 19529, - 19530, - 19531, - 19532, - 19533, - 19534, - 19535, - 19536, - 19537, - 19538, - 19539, - 19540, - 19541, - 19542, - 19543, - 19544, - 19545, - 19546, - 19547, - 19548, - 19549, - 19550, - 19551, - 19552, - 19553, - 19554, - 19555, - 19556, - 19557, - 19558, - 19559, - 19560, - 19561, - 19562, - 19563, - 19564, - 19565, - 19566, - 19567, - 19568, - 19569, - 19570, - 19571, - 19572, - 19573, - 19574, - 19575, - 19576, - 19577, - 19578, - 19579, - 19580, - 19581, - 19582, - 19583, - 19584, - 19585, - 19586, - 19587, - 19588, - 19589, - 19590, - 19591, - 19592, - 19593, - 19594, - 19595, - 19596, - 19597, - 19598, - 19599, - 19600, - 19601, - 19602, - 19603, - 19604, - 19605, - 19606, - 19607, - 19608, - 19609, - 19610, - 19611, - 19612, - 19613, - 19614, - 19615, - 19616, - 19617, - 19618, - 19619, - 19620, - 19621, - 19622, - 19623, - 19624, - 19625, - 19626, - 19627, - 19628, - 19629, - 19630, - 19631, - 19632, - 19633, - 19634, - 19635, - 19636, - 19637, - 19638, - 19639, - 19640, - 19641, - 19642, - 19643, - 19644, - 19645, - 19646, - 19647, - 19648, - 19649, - 19650, - 19651, - 19652, - 19653, - 19654, - 19655, - 19656, - 19657, - 19658, - 19659, - 19660, - 19661, - 19662, - 19663, - 19664, - 19665, - 19666, - 19667, - 19668, - 19669, - 19670, - 19671, - 19672, - 19673, - 19674, - 19675, - 19676, - 19677, - 19678, - 19679, - 19680, - 19681, - 19682, - 19683, - 19684, - 19685, - 19686, - 19687, - 19688, - 19689, - 19690, - 19691, - 19692, - 19693, - 19694, - 19695, - 19696, - 19697, - 19698, - 19699, - 19700, - 19701, - 19702, - 19703, - 19704, - 19705, - 19706, - 19707, - 19708, - 19709, - 19710, - 19711, - 19712, - 19713, - 19714, - 19715, - 19716, - 19717, - 19718, - 19719, - 19720, - 19721, - 19722, - 19723, - 19724, - 19725, - 19726, - 19727, - 19728, - 19729, - 19730, - 19731, - 19732, - 19733, - 19734, - 19735, - 19736, - 19737, - 19738, - 19739, - 19740, - 19741, - 19742, - 19743, - 19744, - 19745, - 19746, - 19747, - 19748, - 19749, - 19750, - 19751, - 19752, - 19753, - 19754, - 19755, - 19756, - 19757, - 19758, - 19759, - 19760, - 19761, - 19762, - 19763, - 19764, - 19765, - 19766, - 19767, - 19768, - 19769, - 19770, - 19771, - 19772, - 19773, - 19774, - 19775, - 19776, - 19777, - 19778, - 19779, - 19780, - 19781, - 19782, - 19783, - 19784, - 19785, - 19786, - 19787, - 19788, - 19789, - 19790, - 19791, - 19792, - 19793, - 19794, - 19795, - 19796, - 19797, - 19798, - 19799, - 19800, - 19801, - 19802, - 19803, - 19804, - 19805, - 19806, - 19807, - 19808, - 19809, - 19810, - 19811, - 19812, - 19813, - 19814, - 19815, - 19816, - 19817, - 19818, - 19819, - 19820, - 19821, - 19822, - 19823, - 19824, - 19825, - 19826, - 19827, - 19828, - 19829, - 19830, - 19831, - 19832, - 19833, - 19834, - 19835, - 19836, - 19837, - 19838, - 19839, - 19840, - 19841, - 19842, - 19843, - 19844, - 19845, - 19846, - 19847, - 19848, - 19849, - 19850, - 19851, - 19852, - 19853, - 19854, - 19855, - 19856, - 19857, - 19858, - 19859, - 19860, - 19861, - 19862, - 19863, - 19864, - 19865, - 19866, - 19867, - 19868, - 19869, - 19870, - 19871, - 19872, - 19873, - 19874, - 19875, - 19876, - 19877, - 19878, - 19879, - 19880, - 19881, - 19882, - 19883, - 19884, - 19885, - 19886, - 19887, - 19888, - 19889, - 19890, - 19891, - 19892, - 19893, - 19968, - 19969, - 19970, - 19971, - 19972, - 19973, - 19974, - 19975, - 19976, - 19977, - 19978, - 19979, - 19980, - 19981, - 19982, - 19983, - 19984, - 19985, - 19986, - 19987, - 19988, - 19989, - 19990, - 19991, - 19992, - 19993, - 19994, - 19995, - 19996, - 19997, - 19998, - 19999, - 20000, - 20001, - 20002, - 20003, - 20004, - 20005, - 20006, - 20007, - 20008, - 20009, - 20010, - 20011, - 20012, - 20013, - 20014, - 20015, - 20016, - 20017, - 20018, - 20019, - 20020, - 20021, - 20022, - 20023, - 20024, - 20025, - 20026, - 20027, - 20028, - 20029, - 20030, - 20031, - 20032, - 20033, - 20034, - 20035, - 20036, - 20037, - 20038, - 20039, - 20040, - 20041, - 20042, - 20043, - 20044, - 20045, - 20046, - 20047, - 20048, - 20049, - 20050, - 20051, - 20052, - 20053, - 20054, - 20055, - 20056, - 20057, - 20058, - 20059, - 20060, - 20061, - 20062, - 20063, - 20064, - 20065, - 20066, - 20067, - 20068, - 20069, - 20070, - 20071, - 20072, - 20073, - 20074, - 20075, - 20076, - 20077, - 20078, - 20079, - 20080, - 20081, - 20082, - 20083, - 20084, - 20085, - 20086, - 20087, - 20088, - 20089, - 20090, - 20091, - 20092, - 20093, - 20094, - 20095, - 20096, - 20097, - 20098, - 20099, - 20100, - 20101, - 20102, - 20103, - 20104, - 20105, - 20106, - 20107, - 20108, - 20109, - 20110, - 20111, - 20112, - 20113, - 20114, - 20115, - 20116, - 20117, - 20118, - 20119, - 20120, - 20121, - 20122, - 20123, - 20124, - 20125, - 20126, - 20127, - 20128, - 20129, - 20130, - 20131, - 20132, - 20133, - 20134, - 20135, - 20136, - 20137, - 20138, - 20139, - 20140, - 20141, - 20142, - 20143, - 20144, - 20145, - 20146, - 20147, - 20148, - 20149, - 20150, - 20151, - 20152, - 20153, - 20154, - 20155, - 20156, - 20157, - 20158, - 20159, - 20160, - 20161, - 20162, - 20163, - 20164, - 20165, - 20166, - 20167, - 20168, - 20169, - 20170, - 20171, - 20172, - 20173, - 20174, - 20175, - 20176, - 20177, - 20178, - 20179, - 20180, - 20181, - 20182, - 20183, - 20184, - 20185, - 20186, - 20187, - 20188, - 20189, - 20190, - 20191, - 20192, - 20193, - 20194, - 20195, - 20196, - 20197, - 20198, - 20199, - 20200, - 20201, - 20202, - 20203, - 20204, - 20205, - 20206, - 20207, - 20208, - 20209, - 20210, - 20211, - 20212, - 20213, - 20214, - 20215, - 20216, - 20217, - 20218, - 20219, - 20220, - 20221, - 20222, - 20223, - 20224, - 20225, - 20226, - 20227, - 20228, - 20229, - 20230, - 20231, - 20232, - 20233, - 20234, - 20235, - 20236, - 20237, - 20238, - 20239, - 20240, - 20241, - 20242, - 20243, - 20244, - 20245, - 20246, - 20247, - 20248, - 20249, - 20250, - 20251, - 20252, - 20253, - 20254, - 20255, - 20256, - 20257, - 20258, - 20259, - 20260, - 20261, - 20262, - 20263, - 20264, - 20265, - 20266, - 20267, - 20268, - 20269, - 20270, - 20271, - 20272, - 20273, - 20274, - 20275, - 20276, - 20277, - 20278, - 20279, - 20280, - 20281, - 20282, - 20283, - 20284, - 20285, - 20286, - 20287, - 20288, - 20289, - 20290, - 20291, - 20292, - 20293, - 20294, - 20295, - 20296, - 20297, - 20298, - 20299, - 20300, - 20301, - 20302, - 20303, - 20304, - 20305, - 20306, - 20307, - 20308, - 20309, - 20310, - 20311, - 20312, - 20313, - 20314, - 20315, - 20316, - 20317, - 20318, - 20319, - 20320, - 20321, - 20322, - 20323, - 20324, - 20325, - 20326, - 20327, - 20328, - 20329, - 20330, - 20331, - 20332, - 20333, - 20334, - 20335, - 20336, - 20337, - 20338, - 20339, - 20340, - 20341, - 20342, - 20343, - 20344, - 20345, - 20346, - 20347, - 20348, - 20349, - 20350, - 20351, - 20352, - 20353, - 20354, - 20355, - 20356, - 20357, - 20358, - 20359, - 20360, - 20361, - 20362, - 20363, - 20364, - 20365, - 20366, - 20367, - 20368, - 20369, - 20370, - 20371, - 20372, - 20373, - 20374, - 20375, - 20376, - 20377, - 20378, - 20379, - 20380, - 20381, - 20382, - 20383, - 20384, - 20385, - 20386, - 20387, - 20388, - 20389, - 20390, - 20391, - 20392, - 20393, - 20394, - 20395, - 20396, - 20397, - 20398, - 20399, - 20400, - 20401, - 20402, - 20403, - 20404, - 20405, - 20406, - 20407, - 20408, - 20409, - 20410, - 20411, - 20412, - 20413, - 20414, - 20415, - 20416, - 20417, - 20418, - 20419, - 20420, - 20421, - 20422, - 20423, - 20424, - 20425, - 20426, - 20427, - 20428, - 20429, - 20430, - 20431, - 20432, - 20433, - 20434, - 20435, - 20436, - 20437, - 20438, - 20439, - 20440, - 20441, - 20442, - 20443, - 20444, - 20445, - 20446, - 20447, - 20448, - 20449, - 20450, - 20451, - 20452, - 20453, - 20454, - 20455, - 20456, - 20457, - 20458, - 20459, - 20460, - 20461, - 20462, - 20463, - 20464, - 20465, - 20466, - 20467, - 20468, - 20469, - 20470, - 20471, - 20472, - 20473, - 20474, - 20475, - 20476, - 20477, - 20478, - 20479, - 20480, - 20481, - 20482, - 20483, - 20484, - 20485, - 20486, - 20487, - 20488, - 20489, - 20490, - 20491, - 20492, - 20493, - 20494, - 20495, - 20496, - 20497, - 20498, - 20499, - 20500, - 20501, - 20502, - 20503, - 20504, - 20505, - 20506, - 20507, - 20508, - 20509, - 20510, - 20511, - 20512, - 20513, - 20514, - 20515, - 20516, - 20517, - 20518, - 20519, - 20520, - 20521, - 20522, - 20523, - 20524, - 20525, - 20526, - 20527, - 20528, - 20529, - 20530, - 20531, - 20532, - 20533, - 20534, - 20535, - 20536, - 20537, - 20538, - 20539, - 20540, - 20541, - 20542, - 20543, - 20544, - 20545, - 20546, - 20547, - 20548, - 20549, - 20550, - 20551, - 20552, - 20553, - 20554, - 20555, - 20556, - 20557, - 20558, - 20559, - 20560, - 20561, - 20562, - 20563, - 20564, - 20565, - 20566, - 20567, - 20568, - 20569, - 20570, - 20571, - 20572, - 20573, - 20574, - 20575, - 20576, - 20577, - 20578, - 20579, - 20580, - 20581, - 20582, - 20583, - 20584, - 20585, - 20586, - 20587, - 20588, - 20589, - 20590, - 20591, - 20592, - 20593, - 20594, - 20595, - 20596, - 20597, - 20598, - 20599, - 20600, - 20601, - 20602, - 20603, - 20604, - 20605, - 20606, - 20607, - 20608, - 20609, - 20610, - 20611, - 20612, - 20613, - 20614, - 20615, - 20616, - 20617, - 20618, - 20619, - 20620, - 20621, - 20622, - 20623, - 20624, - 20625, - 20626, - 20627, - 20628, - 20629, - 20630, - 20631, - 20632, - 20633, - 20634, - 20635, - 20636, - 20637, - 20638, - 20639, - 20640, - 20641, - 20642, - 20643, - 20644, - 20645, - 20646, - 20647, - 20648, - 20649, - 20650, - 20651, - 20652, - 20653, - 20654, - 20655, - 20656, - 20657, - 20658, - 20659, - 20660, - 20661, - 20662, - 20663, - 20664, - 20665, - 20666, - 20667, - 20668, - 20669, - 20670, - 20671, - 20672, - 20673, - 20674, - 20675, - 20676, - 20677, - 20678, - 20679, - 20680, - 20681, - 20682, - 20683, - 20684, - 20685, - 20686, - 20687, - 20688, - 20689, - 20690, - 20691, - 20692, - 20693, - 20694, - 20695, - 20696, - 20697, - 20698, - 20699, - 20700, - 20701, - 20702, - 20703, - 20704, - 20705, - 20706, - 20707, - 20708, - 20709, - 20710, - 20711, - 20712, - 20713, - 20714, - 20715, - 20716, - 20717, - 20718, - 20719, - 20720, - 20721, - 20722, - 20723, - 20724, - 20725, - 20726, - 20727, - 20728, - 20729, - 20730, - 20731, - 20732, - 20733, - 20734, - 20735, - 20736, - 20737, - 20738, - 20739, - 20740, - 20741, - 20742, - 20743, - 20744, - 20745, - 20746, - 20747, - 20748, - 20749, - 20750, - 20751, - 20752, - 20753, - 20754, - 20755, - 20756, - 20757, - 20758, - 20759, - 20760, - 20761, - 20762, - 20763, - 20764, - 20765, - 20766, - 20767, - 20768, - 20769, - 20770, - 20771, - 20772, - 20773, - 20774, - 20775, - 20776, - 20777, - 20778, - 20779, - 20780, - 20781, - 20782, - 20783, - 20784, - 20785, - 20786, - 20787, - 20788, - 20789, - 20790, - 20791, - 20792, - 20793, - 20794, - 20795, - 20796, - 20797, - 20798, - 20799, - 20800, - 20801, - 20802, - 20803, - 20804, - 20805, - 20806, - 20807, - 20808, - 20809, - 20810, - 20811, - 20812, - 20813, - 20814, - 20815, - 20816, - 20817, - 20818, - 20819, - 20820, - 20821, - 20822, - 20823, - 20824, - 20825, - 20826, - 20827, - 20828, - 20829, - 20830, - 20831, - 20832, - 20833, - 20834, - 20835, - 20836, - 20837, - 20838, - 20839, - 20840, - 20841, - 20842, - 20843, - 20844, - 20845, - 20846, - 20847, - 20848, - 20849, - 20850, - 20851, - 20852, - 20853, - 20854, - 20855, - 20856, - 20857, - 20858, - 20859, - 20860, - 20861, - 20862, - 20863, - 20864, - 20865, - 20866, - 20867, - 20868, - 20869, - 20870, - 20871, - 20872, - 20873, - 20874, - 20875, - 20876, - 20877, - 20878, - 20879, - 20880, - 20881, - 20882, - 20883, - 20884, - 20885, - 20886, - 20887, - 20888, - 20889, - 20890, - 20891, - 20892, - 20893, - 20894, - 20895, - 20896, - 20897, - 20898, - 20899, - 20900, - 20901, - 20902, - 20903, - 20904, - 20905, - 20906, - 20907, - 20908, - 20909, - 20910, - 20911, - 20912, - 20913, - 20914, - 20915, - 20916, - 20917, - 20918, - 20919, - 20920, - 20921, - 20922, - 20923, - 20924, - 20925, - 20926, - 20927, - 20928, - 20929, - 20930, - 20931, - 20932, - 20933, - 20934, - 20935, - 20936, - 20937, - 20938, - 20939, - 20940, - 20941, - 20942, - 20943, - 20944, - 20945, - 20946, - 20947, - 20948, - 20949, - 20950, - 20951, - 20952, - 20953, - 20954, - 20955, - 20956, - 20957, - 20958, - 20959, - 20960, - 20961, - 20962, - 20963, - 20964, - 20965, - 20966, - 20967, - 20968, - 20969, - 20970, - 20971, - 20972, - 20973, - 20974, - 20975, - 20976, - 20977, - 20978, - 20979, - 20980, - 20981, - 20982, - 20983, - 20984, - 20985, - 20986, - 20987, - 20988, - 20989, - 20990, - 20991, - 20992, - 20993, - 20994, - 20995, - 20996, - 20997, - 20998, - 20999, - 21000, - 21001, - 21002, - 21003, - 21004, - 21005, - 21006, - 21007, - 21008, - 21009, - 21010, - 21011, - 21012, - 21013, - 21014, - 21015, - 21016, - 21017, - 21018, - 21019, - 21020, - 21021, - 21022, - 21023, - 21024, - 21025, - 21026, - 21027, - 21028, - 21029, - 21030, - 21031, - 21032, - 21033, - 21034, - 21035, - 21036, - 21037, - 21038, - 21039, - 21040, - 21041, - 21042, - 21043, - 21044, - 21045, - 21046, - 21047, - 21048, - 21049, - 21050, - 21051, - 21052, - 21053, - 21054, - 21055, - 21056, - 21057, - 21058, - 21059, - 21060, - 21061, - 21062, - 21063, - 21064, - 21065, - 21066, - 21067, - 21068, - 21069, - 21070, - 21071, - 21072, - 21073, - 21074, - 21075, - 21076, - 21077, - 21078, - 21079, - 21080, - 21081, - 21082, - 21083, - 21084, - 21085, - 21086, - 21087, - 21088, - 21089, - 21090, - 21091, - 21092, - 21093, - 21094, - 21095, - 21096, - 21097, - 21098, - 21099, - 21100, - 21101, - 21102, - 21103, - 21104, - 21105, - 21106, - 21107, - 21108, - 21109, - 21110, - 21111, - 21112, - 21113, - 21114, - 21115, - 21116, - 21117, - 21118, - 21119, - 21120, - 21121, - 21122, - 21123, - 21124, - 21125, - 21126, - 21127, - 21128, - 21129, - 21130, - 21131, - 21132, - 21133, - 21134, - 21135, - 21136, - 21137, - 21138, - 21139, - 21140, - 21141, - 21142, - 21143, - 21144, - 21145, - 21146, - 21147, - 21148, - 21149, - 21150, - 21151, - 21152, - 21153, - 21154, - 21155, - 21156, - 21157, - 21158, - 21159, - 21160, - 21161, - 21162, - 21163, - 21164, - 21165, - 21166, - 21167, - 21168, - 21169, - 21170, - 21171, - 21172, - 21173, - 21174, - 21175, - 21176, - 21177, - 21178, - 21179, - 21180, - 21181, - 21182, - 21183, - 21184, - 21185, - 21186, - 21187, - 21188, - 21189, - 21190, - 21191, - 21192, - 21193, - 21194, - 21195, - 21196, - 21197, - 21198, - 21199, - 21200, - 21201, - 21202, - 21203, - 21204, - 21205, - 21206, - 21207, - 21208, - 21209, - 21210, - 21211, - 21212, - 21213, - 21214, - 21215, - 21216, - 21217, - 21218, - 21219, - 21220, - 21221, - 21222, - 21223, - 21224, - 21225, - 21226, - 21227, - 21228, - 21229, - 21230, - 21231, - 21232, - 21233, - 21234, - 21235, - 21236, - 21237, - 21238, - 21239, - 21240, - 21241, - 21242, - 21243, - 21244, - 21245, - 21246, - 21247, - 21248, - 21249, - 21250, - 21251, - 21252, - 21253, - 21254, - 21255, - 21256, - 21257, - 21258, - 21259, - 21260, - 21261, - 21262, - 21263, - 21264, - 21265, - 21266, - 21267, - 21268, - 21269, - 21270, - 21271, - 21272, - 21273, - 21274, - 21275, - 21276, - 21277, - 21278, - 21279, - 21280, - 21281, - 21282, - 21283, - 21284, - 21285, - 21286, - 21287, - 21288, - 21289, - 21290, - 21291, - 21292, - 21293, - 21294, - 21295, - 21296, - 21297, - 21298, - 21299, - 21300, - 21301, - 21302, - 21303, - 21304, - 21305, - 21306, - 21307, - 21308, - 21309, - 21310, - 21311, - 21312, - 21313, - 21314, - 21315, - 21316, - 21317, - 21318, - 21319, - 21320, - 21321, - 21322, - 21323, - 21324, - 21325, - 21326, - 21327, - 21328, - 21329, - 21330, - 21331, - 21332, - 21333, - 21334, - 21335, - 21336, - 21337, - 21338, - 21339, - 21340, - 21341, - 21342, - 21343, - 21344, - 21345, - 21346, - 21347, - 21348, - 21349, - 21350, - 21351, - 21352, - 21353, - 21354, - 21355, - 21356, - 21357, - 21358, - 21359, - 21360, - 21361, - 21362, - 21363, - 21364, - 21365, - 21366, - 21367, - 21368, - 21369, - 21370, - 21371, - 21372, - 21373, - 21374, - 21375, - 21376, - 21377, - 21378, - 21379, - 21380, - 21381, - 21382, - 21383, - 21384, - 21385, - 21386, - 21387, - 21388, - 21389, - 21390, - 21391, - 21392, - 21393, - 21394, - 21395, - 21396, - 21397, - 21398, - 21399, - 21400, - 21401, - 21402, - 21403, - 21404, - 21405, - 21406, - 21407, - 21408, - 21409, - 21410, - 21411, - 21412, - 21413, - 21414, - 21415, - 21416, - 21417, - 21418, - 21419, - 21420, - 21421, - 21422, - 21423, - 21424, - 21425, - 21426, - 21427, - 21428, - 21429, - 21430, - 21431, - 21432, - 21433, - 21434, - 21435, - 21436, - 21437, - 21438, - 21439, - 21440, - 21441, - 21442, - 21443, - 21444, - 21445, - 21446, - 21447, - 21448, - 21449, - 21450, - 21451, - 21452, - 21453, - 21454, - 21455, - 21456, - 21457, - 21458, - 21459, - 21460, - 21461, - 21462, - 21463, - 21464, - 21465, - 21466, - 21467, - 21468, - 21469, - 21470, - 21471, - 21472, - 21473, - 21474, - 21475, - 21476, - 21477, - 21478, - 21479, - 21480, - 21481, - 21482, - 21483, - 21484, - 21485, - 21486, - 21487, - 21488, - 21489, - 21490, - 21491, - 21492, - 21493, - 21494, - 21495, - 21496, - 21497, - 21498, - 21499, - 21500, - 21501, - 21502, - 21503, - 21504, - 21505, - 21506, - 21507, - 21508, - 21509, - 21510, - 21511, - 21512, - 21513, - 21514, - 21515, - 21516, - 21517, - 21518, - 21519, - 21520, - 21521, - 21522, - 21523, - 21524, - 21525, - 21526, - 21527, - 21528, - 21529, - 21530, - 21531, - 21532, - 21533, - 21534, - 21535, - 21536, - 21537, - 21538, - 21539, - 21540, - 21541, - 21542, - 21543, - 21544, - 21545, - 21546, - 21547, - 21548, - 21549, - 21550, - 21551, - 21552, - 21553, - 21554, - 21555, - 21556, - 21557, - 21558, - 21559, - 21560, - 21561, - 21562, - 21563, - 21564, - 21565, - 21566, - 21567, - 21568, - 21569, - 21570, - 21571, - 21572, - 21573, - 21574, - 21575, - 21576, - 21577, - 21578, - 21579, - 21580, - 21581, - 21582, - 21583, - 21584, - 21585, - 21586, - 21587, - 21588, - 21589, - 21590, - 21591, - 21592, - 21593, - 21594, - 21595, - 21596, - 21597, - 21598, - 21599, - 21600, - 21601, - 21602, - 21603, - 21604, - 21605, - 21606, - 21607, - 21608, - 21609, - 21610, - 21611, - 21612, - 21613, - 21614, - 21615, - 21616, - 21617, - 21618, - 21619, - 21620, - 21621, - 21622, - 21623, - 21624, - 21625, - 21626, - 21627, - 21628, - 21629, - 21630, - 21631, - 21632, - 21633, - 21634, - 21635, - 21636, - 21637, - 21638, - 21639, - 21640, - 21641, - 21642, - 21643, - 21644, - 21645, - 21646, - 21647, - 21648, - 21649, - 21650, - 21651, - 21652, - 21653, - 21654, - 21655, - 21656, - 21657, - 21658, - 21659, - 21660, - 21661, - 21662, - 21663, - 21664, - 21665, - 21666, - 21667, - 21668, - 21669, - 21670, - 21671, - 21672, - 21673, - 21674, - 21675, - 21676, - 21677, - 21678, - 21679, - 21680, - 21681, - 21682, - 21683, - 21684, - 21685, - 21686, - 21687, - 21688, - 21689, - 21690, - 21691, - 21692, - 21693, - 21694, - 21695, - 21696, - 21697, - 21698, - 21699, - 21700, - 21701, - 21702, - 21703, - 21704, - 21705, - 21706, - 21707, - 21708, - 21709, - 21710, - 21711, - 21712, - 21713, - 21714, - 21715, - 21716, - 21717, - 21718, - 21719, - 21720, - 21721, - 21722, - 21723, - 21724, - 21725, - 21726, - 21727, - 21728, - 21729, - 21730, - 21731, - 21732, - 21733, - 21734, - 21735, - 21736, - 21737, - 21738, - 21739, - 21740, - 21741, - 21742, - 21743, - 21744, - 21745, - 21746, - 21747, - 21748, - 21749, - 21750, - 21751, - 21752, - 21753, - 21754, - 21755, - 21756, - 21757, - 21758, - 21759, - 21760, - 21761, - 21762, - 21763, - 21764, - 21765, - 21766, - 21767, - 21768, - 21769, - 21770, - 21771, - 21772, - 21773, - 21774, - 21775, - 21776, - 21777, - 21778, - 21779, - 21780, - 21781, - 21782, - 21783, - 21784, - 21785, - 21786, - 21787, - 21788, - 21789, - 21790, - 21791, - 21792, - 21793, - 21794, - 21795, - 21796, - 21797, - 21798, - 21799, - 21800, - 21801, - 21802, - 21803, - 21804, - 21805, - 21806, - 21807, - 21808, - 21809, - 21810, - 21811, - 21812, - 21813, - 21814, - 21815, - 21816, - 21817, - 21818, - 21819, - 21820, - 21821, - 21822, - 21823, - 21824, - 21825, - 21826, - 21827, - 21828, - 21829, - 21830, - 21831, - 21832, - 21833, - 21834, - 21835, - 21836, - 21837, - 21838, - 21839, - 21840, - 21841, - 21842, - 21843, - 21844, - 21845, - 21846, - 21847, - 21848, - 21849, - 21850, - 21851, - 21852, - 21853, - 21854, - 21855, - 21856, - 21857, - 21858, - 21859, - 21860, - 21861, - 21862, - 21863, - 21864, - 21865, - 21866, - 21867, - 21868, - 21869, - 21870, - 21871, - 21872, - 21873, - 21874, - 21875, - 21876, - 21877, - 21878, - 21879, - 21880, - 21881, - 21882, - 21883, - 21884, - 21885, - 21886, - 21887, - 21888, - 21889, - 21890, - 21891, - 21892, - 21893, - 21894, - 21895, - 21896, - 21897, - 21898, - 21899, - 21900, - 21901, - 21902, - 21903, - 21904, - 21905, - 21906, - 21907, - 21908, - 21909, - 21910, - 21911, - 21912, - 21913, - 21914, - 21915, - 21916, - 21917, - 21918, - 21919, - 21920, - 21921, - 21922, - 21923, - 21924, - 21925, - 21926, - 21927, - 21928, - 21929, - 21930, - 21931, - 21932, - 21933, - 21934, - 21935, - 21936, - 21937, - 21938, - 21939, - 21940, - 21941, - 21942, - 21943, - 21944, - 21945, - 21946, - 21947, - 21948, - 21949, - 21950, - 21951, - 21952, - 21953, - 21954, - 21955, - 21956, - 21957, - 21958, - 21959, - 21960, - 21961, - 21962, - 21963, - 21964, - 21965, - 21966, - 21967, - 21968, - 21969, - 21970, - 21971, - 21972, - 21973, - 21974, - 21975, - 21976, - 21977, - 21978, - 21979, - 21980, - 21981, - 21982, - 21983, - 21984, - 21985, - 21986, - 21987, - 21988, - 21989, - 21990, - 21991, - 21992, - 21993, - 21994, - 21995, - 21996, - 21997, - 21998, - 21999, - 22000, - 22001, - 22002, - 22003, - 22004, - 22005, - 22006, - 22007, - 22008, - 22009, - 22010, - 22011, - 22012, - 22013, - 22014, - 22015, - 22016, - 22017, - 22018, - 22019, - 22020, - 22021, - 22022, - 22023, - 22024, - 22025, - 22026, - 22027, - 22028, - 22029, - 22030, - 22031, - 22032, - 22033, - 22034, - 22035, - 22036, - 22037, - 22038, - 22039, - 22040, - 22041, - 22042, - 22043, - 22044, - 22045, - 22046, - 22047, - 22048, - 22049, - 22050, - 22051, - 22052, - 22053, - 22054, - 22055, - 22056, - 22057, - 22058, - 22059, - 22060, - 22061, - 22062, - 22063, - 22064, - 22065, - 22066, - 22067, - 22068, - 22069, - 22070, - 22071, - 22072, - 22073, - 22074, - 22075, - 22076, - 22077, - 22078, - 22079, - 22080, - 22081, - 22082, - 22083, - 22084, - 22085, - 22086, - 22087, - 22088, - 22089, - 22090, - 22091, - 22092, - 22093, - 22094, - 22095, - 22096, - 22097, - 22098, - 22099, - 22100, - 22101, - 22102, - 22103, - 22104, - 22105, - 22106, - 22107, - 22108, - 22109, - 22110, - 22111, - 22112, - 22113, - 22114, - 22115, - 22116, - 22117, - 22118, - 22119, - 22120, - 22121, - 22122, - 22123, - 22124, - 22125, - 22126, - 22127, - 22128, - 22129, - 22130, - 22131, - 22132, - 22133, - 22134, - 22135, - 22136, - 22137, - 22138, - 22139, - 22140, - 22141, - 22142, - 22143, - 22144, - 22145, - 22146, - 22147, - 22148, - 22149, - 22150, - 22151, - 22152, - 22153, - 22154, - 22155, - 22156, - 22157, - 22158, - 22159, - 22160, - 22161, - 22162, - 22163, - 22164, - 22165, - 22166, - 22167, - 22168, - 22169, - 22170, - 22171, - 22172, - 22173, - 22174, - 22175, - 22176, - 22177, - 22178, - 22179, - 22180, - 22181, - 22182, - 22183, - 22184, - 22185, - 22186, - 22187, - 22188, - 22189, - 22190, - 22191, - 22192, - 22193, - 22194, - 22195, - 22196, - 22197, - 22198, - 22199, - 22200, - 22201, - 22202, - 22203, - 22204, - 22205, - 22206, - 22207, - 22208, - 22209, - 22210, - 22211, - 22212, - 22213, - 22214, - 22215, - 22216, - 22217, - 22218, - 22219, - 22220, - 22221, - 22222, - 22223, - 22224, - 22225, - 22226, - 22227, - 22228, - 22229, - 22230, - 22231, - 22232, - 22233, - 22234, - 22235, - 22236, - 22237, - 22238, - 22239, - 22240, - 22241, - 22242, - 22243, - 22244, - 22245, - 22246, - 22247, - 22248, - 22249, - 22250, - 22251, - 22252, - 22253, - 22254, - 22255, - 22256, - 22257, - 22258, - 22259, - 22260, - 22261, - 22262, - 22263, - 22264, - 22265, - 22266, - 22267, - 22268, - 22269, - 22270, - 22271, - 22272, - 22273, - 22274, - 22275, - 22276, - 22277, - 22278, - 22279, - 22280, - 22281, - 22282, - 22283, - 22284, - 22285, - 22286, - 22287, - 22288, - 22289, - 22290, - 22291, - 22292, - 22293, - 22294, - 22295, - 22296, - 22297, - 22298, - 22299, - 22300, - 22301, - 22302, - 22303, - 22304, - 22305, - 22306, - 22307, - 22308, - 22309, - 22310, - 22311, - 22312, - 22313, - 22314, - 22315, - 22316, - 22317, - 22318, - 22319, - 22320, - 22321, - 22322, - 22323, - 22324, - 22325, - 22326, - 22327, - 22328, - 22329, - 22330, - 22331, - 22332, - 22333, - 22334, - 22335, - 22336, - 22337, - 22338, - 22339, - 22340, - 22341, - 22342, - 22343, - 22344, - 22345, - 22346, - 22347, - 22348, - 22349, - 22350, - 22351, - 22352, - 22353, - 22354, - 22355, - 22356, - 22357, - 22358, - 22359, - 22360, - 22361, - 22362, - 22363, - 22364, - 22365, - 22366, - 22367, - 22368, - 22369, - 22370, - 22371, - 22372, - 22373, - 22374, - 22375, - 22376, - 22377, - 22378, - 22379, - 22380, - 22381, - 22382, - 22383, - 22384, - 22385, - 22386, - 22387, - 22388, - 22389, - 22390, - 22391, - 22392, - 22393, - 22394, - 22395, - 22396, - 22397, - 22398, - 22399, - 22400, - 22401, - 22402, - 22403, - 22404, - 22405, - 22406, - 22407, - 22408, - 22409, - 22410, - 22411, - 22412, - 22413, - 22414, - 22415, - 22416, - 22417, - 22418, - 22419, - 22420, - 22421, - 22422, - 22423, - 22424, - 22425, - 22426, - 22427, - 22428, - 22429, - 22430, - 22431, - 22432, - 22433, - 22434, - 22435, - 22436, - 22437, - 22438, - 22439, - 22440, - 22441, - 22442, - 22443, - 22444, - 22445, - 22446, - 22447, - 22448, - 22449, - 22450, - 22451, - 22452, - 22453, - 22454, - 22455, - 22456, - 22457, - 22458, - 22459, - 22460, - 22461, - 22462, - 22463, - 22464, - 22465, - 22466, - 22467, - 22468, - 22469, - 22470, - 22471, - 22472, - 22473, - 22474, - 22475, - 22476, - 22477, - 22478, - 22479, - 22480, - 22481, - 22482, - 22483, - 22484, - 22485, - 22486, - 22487, - 22488, - 22489, - 22490, - 22491, - 22492, - 22493, - 22494, - 22495, - 22496, - 22497, - 22498, - 22499, - 22500, - 22501, - 22502, - 22503, - 22504, - 22505, - 22506, - 22507, - 22508, - 22509, - 22510, - 22511, - 22512, - 22513, - 22514, - 22515, - 22516, - 22517, - 22518, - 22519, - 22520, - 22521, - 22522, - 22523, - 22524, - 22525, - 22526, - 22527, - 22528, - 22529, - 22530, - 22531, - 22532, - 22533, - 22534, - 22535, - 22536, - 22537, - 22538, - 22539, - 22540, - 22541, - 22542, - 22543, - 22544, - 22545, - 22546, - 22547, - 22548, - 22549, - 22550, - 22551, - 22552, - 22553, - 22554, - 22555, - 22556, - 22557, - 22558, - 22559, - 22560, - 22561, - 22562, - 22563, - 22564, - 22565, - 22566, - 22567, - 22568, - 22569, - 22570, - 22571, - 22572, - 22573, - 22574, - 22575, - 22576, - 22577, - 22578, - 22579, - 22580, - 22581, - 22582, - 22583, - 22584, - 22585, - 22586, - 22587, - 22588, - 22589, - 22590, - 22591, - 22592, - 22593, - 22594, - 22595, - 22596, - 22597, - 22598, - 22599, - 22600, - 22601, - 22602, - 22603, - 22604, - 22605, - 22606, - 22607, - 22608, - 22609, - 22610, - 22611, - 22612, - 22613, - 22614, - 22615, - 22616, - 22617, - 22618, - 22619, - 22620, - 22621, - 22622, - 22623, - 22624, - 22625, - 22626, - 22627, - 22628, - 22629, - 22630, - 22631, - 22632, - 22633, - 22634, - 22635, - 22636, - 22637, - 22638, - 22639, - 22640, - 22641, - 22642, - 22643, - 22644, - 22645, - 22646, - 22647, - 22648, - 22649, - 22650, - 22651, - 22652, - 22653, - 22654, - 22655, - 22656, - 22657, - 22658, - 22659, - 22660, - 22661, - 22662, - 22663, - 22664, - 22665, - 22666, - 22667, - 22668, - 22669, - 22670, - 22671, - 22672, - 22673, - 22674, - 22675, - 22676, - 22677, - 22678, - 22679, - 22680, - 22681, - 22682, - 22683, - 22684, - 22685, - 22686, - 22687, - 22688, - 22689, - 22690, - 22691, - 22692, - 22693, - 22694, - 22695, - 22696, - 22697, - 22698, - 22699, - 22700, - 22701, - 22702, - 22703, - 22704, - 22705, - 22706, - 22707, - 22708, - 22709, - 22710, - 22711, - 22712, - 22713, - 22714, - 22715, - 22716, - 22717, - 22718, - 22719, - 22720, - 22721, - 22722, - 22723, - 22724, - 22725, - 22726, - 22727, - 22728, - 22729, - 22730, - 22731, - 22732, - 22733, - 22734, - 22735, - 22736, - 22737, - 22738, - 22739, - 22740, - 22741, - 22742, - 22743, - 22744, - 22745, - 22746, - 22747, - 22748, - 22749, - 22750, - 22751, - 22752, - 22753, - 22754, - 22755, - 22756, - 22757, - 22758, - 22759, - 22760, - 22761, - 22762, - 22763, - 22764, - 22765, - 22766, - 22767, - 22768, - 22769, - 22770, - 22771, - 22772, - 22773, - 22774, - 22775, - 22776, - 22777, - 22778, - 22779, - 22780, - 22781, - 22782, - 22783, - 22784, - 22785, - 22786, - 22787, - 22788, - 22789, - 22790, - 22791, - 22792, - 22793, - 22794, - 22795, - 22796, - 22797, - 22798, - 22799, - 22800, - 22801, - 22802, - 22803, - 22804, - 22805, - 22806, - 22807, - 22808, - 22809, - 22810, - 22811, - 22812, - 22813, - 22814, - 22815, - 22816, - 22817, - 22818, - 22819, - 22820, - 22821, - 22822, - 22823, - 22824, - 22825, - 22826, - 22827, - 22828, - 22829, - 22830, - 22831, - 22832, - 22833, - 22834, - 22835, - 22836, - 22837, - 22838, - 22839, - 22840, - 22841, - 22842, - 22843, - 22844, - 22845, - 22846, - 22847, - 22848, - 22849, - 22850, - 22851, - 22852, - 22853, - 22854, - 22855, - 22856, - 22857, - 22858, - 22859, - 22860, - 22861, - 22862, - 22863, - 22864, - 22865, - 22866, - 22867, - 22868, - 22869, - 22870, - 22871, - 22872, - 22873, - 22874, - 22875, - 22876, - 22877, - 22878, - 22879, - 22880, - 22881, - 22882, - 22883, - 22884, - 22885, - 22886, - 22887, - 22888, - 22889, - 22890, - 22891, - 22892, - 22893, - 22894, - 22895, - 22896, - 22897, - 22898, - 22899, - 22900, - 22901, - 22902, - 22903, - 22904, - 22905, - 22906, - 22907, - 22908, - 22909, - 22910, - 22911, - 22912, - 22913, - 22914, - 22915, - 22916, - 22917, - 22918, - 22919, - 22920, - 22921, - 22922, - 22923, - 22924, - 22925, - 22926, - 22927, - 22928, - 22929, - 22930, - 22931, - 22932, - 22933, - 22934, - 22935, - 22936, - 22937, - 22938, - 22939, - 22940, - 22941, - 22942, - 22943, - 22944, - 22945, - 22946, - 22947, - 22948, - 22949, - 22950, - 22951, - 22952, - 22953, - 22954, - 22955, - 22956, - 22957, - 22958, - 22959, - 22960, - 22961, - 22962, - 22963, - 22964, - 22965, - 22966, - 22967, - 22968, - 22969, - 22970, - 22971, - 22972, - 22973, - 22974, - 22975, - 22976, - 22977, - 22978, - 22979, - 22980, - 22981, - 22982, - 22983, - 22984, - 22985, - 22986, - 22987, - 22988, - 22989, - 22990, - 22991, - 22992, - 22993, - 22994, - 22995, - 22996, - 22997, - 22998, - 22999, - 23000, - 23001, - 23002, - 23003, - 23004, - 23005, - 23006, - 23007, - 23008, - 23009, - 23010, - 23011, - 23012, - 23013, - 23014, - 23015, - 23016, - 23017, - 23018, - 23019, - 23020, - 23021, - 23022, - 23023, - 23024, - 23025, - 23026, - 23027, - 23028, - 23029, - 23030, - 23031, - 23032, - 23033, - 23034, - 23035, - 23036, - 23037, - 23038, - 23039, - 23040, - 23041, - 23042, - 23043, - 23044, - 23045, - 23046, - 23047, - 23048, - 23049, - 23050, - 23051, - 23052, - 23053, - 23054, - 23055, - 23056, - 23057, - 23058, - 23059, - 23060, - 23061, - 23062, - 23063, - 23064, - 23065, - 23066, - 23067, - 23068, - 23069, - 23070, - 23071, - 23072, - 23073, - 23074, - 23075, - 23076, - 23077, - 23078, - 23079, - 23080, - 23081, - 23082, - 23083, - 23084, - 23085, - 23086, - 23087, - 23088, - 23089, - 23090, - 23091, - 23092, - 23093, - 23094, - 23095, - 23096, - 23097, - 23098, - 23099, - 23100, - 23101, - 23102, - 23103, - 23104, - 23105, - 23106, - 23107, - 23108, - 23109, - 23110, - 23111, - 23112, - 23113, - 23114, - 23115, - 23116, - 23117, - 23118, - 23119, - 23120, - 23121, - 23122, - 23123, - 23124, - 23125, - 23126, - 23127, - 23128, - 23129, - 23130, - 23131, - 23132, - 23133, - 23134, - 23135, - 23136, - 23137, - 23138, - 23139, - 23140, - 23141, - 23142, - 23143, - 23144, - 23145, - 23146, - 23147, - 23148, - 23149, - 23150, - 23151, - 23152, - 23153, - 23154, - 23155, - 23156, - 23157, - 23158, - 23159, - 23160, - 23161, - 23162, - 23163, - 23164, - 23165, - 23166, - 23167, - 23168, - 23169, - 23170, - 23171, - 23172, - 23173, - 23174, - 23175, - 23176, - 23177, - 23178, - 23179, - 23180, - 23181, - 23182, - 23183, - 23184, - 23185, - 23186, - 23187, - 23188, - 23189, - 23190, - 23191, - 23192, - 23193, - 23194, - 23195, - 23196, - 23197, - 23198, - 23199, - 23200, - 23201, - 23202, - 23203, - 23204, - 23205, - 23206, - 23207, - 23208, - 23209, - 23210, - 23211, - 23212, - 23213, - 23214, - 23215, - 23216, - 23217, - 23218, - 23219, - 23220, - 23221, - 23222, - 23223, - 23224, - 23225, - 23226, - 23227, - 23228, - 23229, - 23230, - 23231, - 23232, - 23233, - 23234, - 23235, - 23236, - 23237, - 23238, - 23239, - 23240, - 23241, - 23242, - 23243, - 23244, - 23245, - 23246, - 23247, - 23248, - 23249, - 23250, - 23251, - 23252, - 23253, - 23254, - 23255, - 23256, - 23257, - 23258, - 23259, - 23260, - 23261, - 23262, - 23263, - 23264, - 23265, - 23266, - 23267, - 23268, - 23269, - 23270, - 23271, - 23272, - 23273, - 23274, - 23275, - 23276, - 23277, - 23278, - 23279, - 23280, - 23281, - 23282, - 23283, - 23284, - 23285, - 23286, - 23287, - 23288, - 23289, - 23290, - 23291, - 23292, - 23293, - 23294, - 23295, - 23296, - 23297, - 23298, - 23299, - 23300, - 23301, - 23302, - 23303, - 23304, - 23305, - 23306, - 23307, - 23308, - 23309, - 23310, - 23311, - 23312, - 23313, - 23314, - 23315, - 23316, - 23317, - 23318, - 23319, - 23320, - 23321, - 23322, - 23323, - 23324, - 23325, - 23326, - 23327, - 23328, - 23329, - 23330, - 23331, - 23332, - 23333, - 23334, - 23335, - 23336, - 23337, - 23338, - 23339, - 23340, - 23341, - 23342, - 23343, - 23344, - 23345, - 23346, - 23347, - 23348, - 23349, - 23350, - 23351, - 23352, - 23353, - 23354, - 23355, - 23356, - 23357, - 23358, - 23359, - 23360, - 23361, - 23362, - 23363, - 23364, - 23365, - 23366, - 23367, - 23368, - 23369, - 23370, - 23371, - 23372, - 23373, - 23374, - 23375, - 23376, - 23377, - 23378, - 23379, - 23380, - 23381, - 23382, - 23383, - 23384, - 23385, - 23386, - 23387, - 23388, - 23389, - 23390, - 23391, - 23392, - 23393, - 23394, - 23395, - 23396, - 23397, - 23398, - 23399, - 23400, - 23401, - 23402, - 23403, - 23404, - 23405, - 23406, - 23407, - 23408, - 23409, - 23410, - 23411, - 23412, - 23413, - 23414, - 23415, - 23416, - 23417, - 23418, - 23419, - 23420, - 23421, - 23422, - 23423, - 23424, - 23425, - 23426, - 23427, - 23428, - 23429, - 23430, - 23431, - 23432, - 23433, - 23434, - 23435, - 23436, - 23437, - 23438, - 23439, - 23440, - 23441, - 23442, - 23443, - 23444, - 23445, - 23446, - 23447, - 23448, - 23449, - 23450, - 23451, - 23452, - 23453, - 23454, - 23455, - 23456, - 23457, - 23458, - 23459, - 23460, - 23461, - 23462, - 23463, - 23464, - 23465, - 23466, - 23467, - 23468, - 23469, - 23470, - 23471, - 23472, - 23473, - 23474, - 23475, - 23476, - 23477, - 23478, - 23479, - 23480, - 23481, - 23482, - 23483, - 23484, - 23485, - 23486, - 23487, - 23488, - 23489, - 23490, - 23491, - 23492, - 23493, - 23494, - 23495, - 23496, - 23497, - 23498, - 23499, - 23500, - 23501, - 23502, - 23503, - 23504, - 23505, - 23506, - 23507, - 23508, - 23509, - 23510, - 23511, - 23512, - 23513, - 23514, - 23515, - 23516, - 23517, - 23518, - 23519, - 23520, - 23521, - 23522, - 23523, - 23524, - 23525, - 23526, - 23527, - 23528, - 23529, - 23530, - 23531, - 23532, - 23533, - 23534, - 23535, - 23536, - 23537, - 23538, - 23539, - 23540, - 23541, - 23542, - 23543, - 23544, - 23545, - 23546, - 23547, - 23548, - 23549, - 23550, - 23551, - 23552, - 23553, - 23554, - 23555, - 23556, - 23557, - 23558, - 23559, - 23560, - 23561, - 23562, - 23563, - 23564, - 23565, - 23566, - 23567, - 23568, - 23569, - 23570, - 23571, - 23572, - 23573, - 23574, - 23575, - 23576, - 23577, - 23578, - 23579, - 23580, - 23581, - 23582, - 23583, - 23584, - 23585, - 23586, - 23587, - 23588, - 23589, - 23590, - 23591, - 23592, - 23593, - 23594, - 23595, - 23596, - 23597, - 23598, - 23599, - 23600, - 23601, - 23602, - 23603, - 23604, - 23605, - 23606, - 23607, - 23608, - 23609, - 23610, - 23611, - 23612, - 23613, - 23614, - 23615, - 23616, - 23617, - 23618, - 23619, - 23620, - 23621, - 23622, - 23623, - 23624, - 23625, - 23626, - 23627, - 23628, - 23629, - 23630, - 23631, - 23632, - 23633, - 23634, - 23635, - 23636, - 23637, - 23638, - 23639, - 23640, - 23641, - 23642, - 23643, - 23644, - 23645, - 23646, - 23647, - 23648, - 23649, - 23650, - 23651, - 23652, - 23653, - 23654, - 23655, - 23656, - 23657, - 23658, - 23659, - 23660, - 23661, - 23662, - 23663, - 23664, - 23665, - 23666, - 23667, - 23668, - 23669, - 23670, - 23671, - 23672, - 23673, - 23674, - 23675, - 23676, - 23677, - 23678, - 23679, - 23680, - 23681, - 23682, - 23683, - 23684, - 23685, - 23686, - 23687, - 23688, - 23689, - 23690, - 23691, - 23692, - 23693, - 23694, - 23695, - 23696, - 23697, - 23698, - 23699, - 23700, - 23701, - 23702, - 23703, - 23704, - 23705, - 23706, - 23707, - 23708, - 23709, - 23710, - 23711, - 23712, - 23713, - 23714, - 23715, - 23716, - 23717, - 23718, - 23719, - 23720, - 23721, - 23722, - 23723, - 23724, - 23725, - 23726, - 23727, - 23728, - 23729, - 23730, - 23731, - 23732, - 23733, - 23734, - 23735, - 23736, - 23737, - 23738, - 23739, - 23740, - 23741, - 23742, - 23743, - 23744, - 23745, - 23746, - 23747, - 23748, - 23749, - 23750, - 23751, - 23752, - 23753, - 23754, - 23755, - 23756, - 23757, - 23758, - 23759, - 23760, - 23761, - 23762, - 23763, - 23764, - 23765, - 23766, - 23767, - 23768, - 23769, - 23770, - 23771, - 23772, - 23773, - 23774, - 23775, - 23776, - 23777, - 23778, - 23779, - 23780, - 23781, - 23782, - 23783, - 23784, - 23785, - 23786, - 23787, - 23788, - 23789, - 23790, - 23791, - 23792, - 23793, - 23794, - 23795, - 23796, - 23797, - 23798, - 23799, - 23800, - 23801, - 23802, - 23803, - 23804, - 23805, - 23806, - 23807, - 23808, - 23809, - 23810, - 23811, - 23812, - 23813, - 23814, - 23815, - 23816, - 23817, - 23818, - 23819, - 23820, - 23821, - 23822, - 23823, - 23824, - 23825, - 23826, - 23827, - 23828, - 23829, - 23830, - 23831, - 23832, - 23833, - 23834, - 23835, - 23836, - 23837, - 23838, - 23839, - 23840, - 23841, - 23842, - 23843, - 23844, - 23845, - 23846, - 23847, - 23848, - 23849, - 23850, - 23851, - 23852, - 23853, - 23854, - 23855, - 23856, - 23857, - 23858, - 23859, - 23860, - 23861, - 23862, - 23863, - 23864, - 23865, - 23866, - 23867, - 23868, - 23869, - 23870, - 23871, - 23872, - 23873, - 23874, - 23875, - 23876, - 23877, - 23878, - 23879, - 23880, - 23881, - 23882, - 23883, - 23884, - 23885, - 23886, - 23887, - 23888, - 23889, - 23890, - 23891, - 23892, - 23893, - 23894, - 23895, - 23896, - 23897, - 23898, - 23899, - 23900, - 23901, - 23902, - 23903, - 23904, - 23905, - 23906, - 23907, - 23908, - 23909, - 23910, - 23911, - 23912, - 23913, - 23914, - 23915, - 23916, - 23917, - 23918, - 23919, - 23920, - 23921, - 23922, - 23923, - 23924, - 23925, - 23926, - 23927, - 23928, - 23929, - 23930, - 23931, - 23932, - 23933, - 23934, - 23935, - 23936, - 23937, - 23938, - 23939, - 23940, - 23941, - 23942, - 23943, - 23944, - 23945, - 23946, - 23947, - 23948, - 23949, - 23950, - 23951, - 23952, - 23953, - 23954, - 23955, - 23956, - 23957, - 23958, - 23959, - 23960, - 23961, - 23962, - 23963, - 23964, - 23965, - 23966, - 23967, - 23968, - 23969, - 23970, - 23971, - 23972, - 23973, - 23974, - 23975, - 23976, - 23977, - 23978, - 23979, - 23980, - 23981, - 23982, - 23983, - 23984, - 23985, - 23986, - 23987, - 23988, - 23989, - 23990, - 23991, - 23992, - 23993, - 23994, - 23995, - 23996, - 23997, - 23998, - 23999, - 24000, - 24001, - 24002, - 24003, - 24004, - 24005, - 24006, - 24007, - 24008, - 24009, - 24010, - 24011, - 24012, - 24013, - 24014, - 24015, - 24016, - 24017, - 24018, - 24019, - 24020, - 24021, - 24022, - 24023, - 24024, - 24025, - 24026, - 24027, - 24028, - 24029, - 24030, - 24031, - 24032, - 24033, - 24034, - 24035, - 24036, - 24037, - 24038, - 24039, - 24040, - 24041, - 24042, - 24043, - 24044, - 24045, - 24046, - 24047, - 24048, - 24049, - 24050, - 24051, - 24052, - 24053, - 24054, - 24055, - 24056, - 24057, - 24058, - 24059, - 24060, - 24061, - 24062, - 24063, - 24064, - 24065, - 24066, - 24067, - 24068, - 24069, - 24070, - 24071, - 24072, - 24073, - 24074, - 24075, - 24076, - 24077, - 24078, - 24079, - 24080, - 24081, - 24082, - 24083, - 24084, - 24085, - 24086, - 24087, - 24088, - 24089, - 24090, - 24091, - 24092, - 24093, - 24094, - 24095, - 24096, - 24097, - 24098, - 24099, - 24100, - 24101, - 24102, - 24103, - 24104, - 24105, - 24106, - 24107, - 24108, - 24109, - 24110, - 24111, - 24112, - 24113, - 24114, - 24115, - 24116, - 24117, - 24118, - 24119, - 24120, - 24121, - 24122, - 24123, - 24124, - 24125, - 24126, - 24127, - 24128, - 24129, - 24130, - 24131, - 24132, - 24133, - 24134, - 24135, - 24136, - 24137, - 24138, - 24139, - 24140, - 24141, - 24142, - 24143, - 24144, - 24145, - 24146, - 24147, - 24148, - 24149, - 24150, - 24151, - 24152, - 24153, - 24154, - 24155, - 24156, - 24157, - 24158, - 24159, - 24160, - 24161, - 24162, - 24163, - 24164, - 24165, - 24166, - 24167, - 24168, - 24169, - 24170, - 24171, - 24172, - 24173, - 24174, - 24175, - 24176, - 24177, - 24178, - 24179, - 24180, - 24181, - 24182, - 24183, - 24184, - 24185, - 24186, - 24187, - 24188, - 24189, - 24190, - 24191, - 24192, - 24193, - 24194, - 24195, - 24196, - 24197, - 24198, - 24199, - 24200, - 24201, - 24202, - 24203, - 24204, - 24205, - 24206, - 24207, - 24208, - 24209, - 24210, - 24211, - 24212, - 24213, - 24214, - 24215, - 24216, - 24217, - 24218, - 24219, - 24220, - 24221, - 24222, - 24223, - 24224, - 24225, - 24226, - 24227, - 24228, - 24229, - 24230, - 24231, - 24232, - 24233, - 24234, - 24235, - 24236, - 24237, - 24238, - 24239, - 24240, - 24241, - 24242, - 24243, - 24244, - 24245, - 24246, - 24247, - 24248, - 24249, - 24250, - 24251, - 24252, - 24253, - 24254, - 24255, - 24256, - 24257, - 24258, - 24259, - 24260, - 24261, - 24262, - 24263, - 24264, - 24265, - 24266, - 24267, - 24268, - 24269, - 24270, - 24271, - 24272, - 24273, - 24274, - 24275, - 24276, - 24277, - 24278, - 24279, - 24280, - 24281, - 24282, - 24283, - 24284, - 24285, - 24286, - 24287, - 24288, - 24289, - 24290, - 24291, - 24292, - 24293, - 24294, - 24295, - 24296, - 24297, - 24298, - 24299, - 24300, - 24301, - 24302, - 24303, - 24304, - 24305, - 24306, - 24307, - 24308, - 24309, - 24310, - 24311, - 24312, - 24313, - 24314, - 24315, - 24316, - 24317, - 24318, - 24319, - 24320, - 24321, - 24322, - 24323, - 24324, - 24325, - 24326, - 24327, - 24328, - 24329, - 24330, - 24331, - 24332, - 24333, - 24334, - 24335, - 24336, - 24337, - 24338, - 24339, - 24340, - 24341, - 24342, - 24343, - 24344, - 24345, - 24346, - 24347, - 24348, - 24349, - 24350, - 24351, - 24352, - 24353, - 24354, - 24355, - 24356, - 24357, - 24358, - 24359, - 24360, - 24361, - 24362, - 24363, - 24364, - 24365, - 24366, - 24367, - 24368, - 24369, - 24370, - 24371, - 24372, - 24373, - 24374, - 24375, - 24376, - 24377, - 24378, - 24379, - 24380, - 24381, - 24382, - 24383, - 24384, - 24385, - 24386, - 24387, - 24388, - 24389, - 24390, - 24391, - 24392, - 24393, - 24394, - 24395, - 24396, - 24397, - 24398, - 24399, - 24400, - 24401, - 24402, - 24403, - 24404, - 24405, - 24406, - 24407, - 24408, - 24409, - 24410, - 24411, - 24412, - 24413, - 24414, - 24415, - 24416, - 24417, - 24418, - 24419, - 24420, - 24421, - 24422, - 24423, - 24424, - 24425, - 24426, - 24427, - 24428, - 24429, - 24430, - 24431, - 24432, - 24433, - 24434, - 24435, - 24436, - 24437, - 24438, - 24439, - 24440, - 24441, - 24442, - 24443, - 24444, - 24445, - 24446, - 24447, - 24448, - 24449, - 24450, - 24451, - 24452, - 24453, - 24454, - 24455, - 24456, - 24457, - 24458, - 24459, - 24460, - 24461, - 24462, - 24463, - 24464, - 24465, - 24466, - 24467, - 24468, - 24469, - 24470, - 24471, - 24472, - 24473, - 24474, - 24475, - 24476, - 24477, - 24478, - 24479, - 24480, - 24481, - 24482, - 24483, - 24484, - 24485, - 24486, - 24487, - 24488, - 24489, - 24490, - 24491, - 24492, - 24493, - 24494, - 24495, - 24496, - 24497, - 24498, - 24499, - 24500, - 24501, - 24502, - 24503, - 24504, - 24505, - 24506, - 24507, - 24508, - 24509, - 24510, - 24511, - 24512, - 24513, - 24514, - 24515, - 24516, - 24517, - 24518, - 24519, - 24520, - 24521, - 24522, - 24523, - 24524, - 24525, - 24526, - 24527, - 24528, - 24529, - 24530, - 24531, - 24532, - 24533, - 24534, - 24535, - 24536, - 24537, - 24538, - 24539, - 24540, - 24541, - 24542, - 24543, - 24544, - 24545, - 24546, - 24547, - 24548, - 24549, - 24550, - 24551, - 24552, - 24553, - 24554, - 24555, - 24556, - 24557, - 24558, - 24559, - 24560, - 24561, - 24562, - 24563, - 24564, - 24565, - 24566, - 24567, - 24568, - 24569, - 24570, - 24571, - 24572, - 24573, - 24574, - 24575, - 24576, - 24577, - 24578, - 24579, - 24580, - 24581, - 24582, - 24583, - 24584, - 24585, - 24586, - 24587, - 24588, - 24589, - 24590, - 24591, - 24592, - 24593, - 24594, - 24595, - 24596, - 24597, - 24598, - 24599, - 24600, - 24601, - 24602, - 24603, - 24604, - 24605, - 24606, - 24607, - 24608, - 24609, - 24610, - 24611, - 24612, - 24613, - 24614, - 24615, - 24616, - 24617, - 24618, - 24619, - 24620, - 24621, - 24622, - 24623, - 24624, - 24625, - 24626, - 24627, - 24628, - 24629, - 24630, - 24631, - 24632, - 24633, - 24634, - 24635, - 24636, - 24637, - 24638, - 24639, - 24640, - 24641, - 24642, - 24643, - 24644, - 24645, - 24646, - 24647, - 24648, - 24649, - 24650, - 24651, - 24652, - 24653, - 24654, - 24655, - 24656, - 24657, - 24658, - 24659, - 24660, - 24661, - 24662, - 24663, - 24664, - 24665, - 24666, - 24667, - 24668, - 24669, - 24670, - 24671, - 24672, - 24673, - 24674, - 24675, - 24676, - 24677, - 24678, - 24679, - 24680, - 24681, - 24682, - 24683, - 24684, - 24685, - 24686, - 24687, - 24688, - 24689, - 24690, - 24691, - 24692, - 24693, - 24694, - 24695, - 24696, - 24697, - 24698, - 24699, - 24700, - 24701, - 24702, - 24703, - 24704, - 24705, - 24706, - 24707, - 24708, - 24709, - 24710, - 24711, - 24712, - 24713, - 24714, - 24715, - 24716, - 24717, - 24718, - 24719, - 24720, - 24721, - 24722, - 24723, - 24724, - 24725, - 24726, - 24727, - 24728, - 24729, - 24730, - 24731, - 24732, - 24733, - 24734, - 24735, - 24736, - 24737, - 24738, - 24739, - 24740, - 24741, - 24742, - 24743, - 24744, - 24745, - 24746, - 24747, - 24748, - 24749, - 24750, - 24751, - 24752, - 24753, - 24754, - 24755, - 24756, - 24757, - 24758, - 24759, - 24760, - 24761, - 24762, - 24763, - 24764, - 24765, - 24766, - 24767, - 24768, - 24769, - 24770, - 24771, - 24772, - 24773, - 24774, - 24775, - 24776, - 24777, - 24778, - 24779, - 24780, - 24781, - 24782, - 24783, - 24784, - 24785, - 24786, - 24787, - 24788, - 24789, - 24790, - 24791, - 24792, - 24793, - 24794, - 24795, - 24796, - 24797, - 24798, - 24799, - 24800, - 24801, - 24802, - 24803, - 24804, - 24805, - 24806, - 24807, - 24808, - 24809, - 24810, - 24811, - 24812, - 24813, - 24814, - 24815, - 24816, - 24817, - 24818, - 24819, - 24820, - 24821, - 24822, - 24823, - 24824, - 24825, - 24826, - 24827, - 24828, - 24829, - 24830, - 24831, - 24832, - 24833, - 24834, - 24835, - 24836, - 24837, - 24838, - 24839, - 24840, - 24841, - 24842, - 24843, - 24844, - 24845, - 24846, - 24847, - 24848, - 24849, - 24850, - 24851, - 24852, - 24853, - 24854, - 24855, - 24856, - 24857, - 24858, - 24859, - 24860, - 24861, - 24862, - 24863, - 24864, - 24865, - 24866, - 24867, - 24868, - 24869, - 24870, - 24871, - 24872, - 24873, - 24874, - 24875, - 24876, - 24877, - 24878, - 24879, - 24880, - 24881, - 24882, - 24883, - 24884, - 24885, - 24886, - 24887, - 24888, - 24889, - 24890, - 24891, - 24892, - 24893, - 24894, - 24895, - 24896, - 24897, - 24898, - 24899, - 24900, - 24901, - 24902, - 24903, - 24904, - 24905, - 24906, - 24907, - 24908, - 24909, - 24910, - 24911, - 24912, - 24913, - 24914, - 24915, - 24916, - 24917, - 24918, - 24919, - 24920, - 24921, - 24922, - 24923, - 24924, - 24925, - 24926, - 24927, - 24928, - 24929, - 24930, - 24931, - 24932, - 24933, - 24934, - 24935, - 24936, - 24937, - 24938, - 24939, - 24940, - 24941, - 24942, - 24943, - 24944, - 24945, - 24946, - 24947, - 24948, - 24949, - 24950, - 24951, - 24952, - 24953, - 24954, - 24955, - 24956, - 24957, - 24958, - 24959, - 24960, - 24961, - 24962, - 24963, - 24964, - 24965, - 24966, - 24967, - 24968, - 24969, - 24970, - 24971, - 24972, - 24973, - 24974, - 24975, - 24976, - 24977, - 24978, - 24979, - 24980, - 24981, - 24982, - 24983, - 24984, - 24985, - 24986, - 24987, - 24988, - 24989, - 24990, - 24991, - 24992, - 24993, - 24994, - 24995, - 24996, - 24997, - 24998, - 24999, - 25000, - 25001, - 25002, - 25003, - 25004, - 25005, - 25006, - 25007, - 25008, - 25009, - 25010, - 25011, - 25012, - 25013, - 25014, - 25015, - 25016, - 25017, - 25018, - 25019, - 25020, - 25021, - 25022, - 25023, - 25024, - 25025, - 25026, - 25027, - 25028, - 25029, - 25030, - 25031, - 25032, - 25033, - 25034, - 25035, - 25036, - 25037, - 25038, - 25039, - 25040, - 25041, - 25042, - 25043, - 25044, - 25045, - 25046, - 25047, - 25048, - 25049, - 25050, - 25051, - 25052, - 25053, - 25054, - 25055, - 25056, - 25057, - 25058, - 25059, - 25060, - 25061, - 25062, - 25063, - 25064, - 25065, - 25066, - 25067, - 25068, - 25069, - 25070, - 25071, - 25072, - 25073, - 25074, - 25075, - 25076, - 25077, - 25078, - 25079, - 25080, - 25081, - 25082, - 25083, - 25084, - 25085, - 25086, - 25087, - 25088, - 25089, - 25090, - 25091, - 25092, - 25093, - 25094, - 25095, - 25096, - 25097, - 25098, - 25099, - 25100, - 25101, - 25102, - 25103, - 25104, - 25105, - 25106, - 25107, - 25108, - 25109, - 25110, - 25111, - 25112, - 25113, - 25114, - 25115, - 25116, - 25117, - 25118, - 25119, - 25120, - 25121, - 25122, - 25123, - 25124, - 25125, - 25126, - 25127, - 25128, - 25129, - 25130, - 25131, - 25132, - 25133, - 25134, - 25135, - 25136, - 25137, - 25138, - 25139, - 25140, - 25141, - 25142, - 25143, - 25144, - 25145, - 25146, - 25147, - 25148, - 25149, - 25150, - 25151, - 25152, - 25153, - 25154, - 25155, - 25156, - 25157, - 25158, - 25159, - 25160, - 25161, - 25162, - 25163, - 25164, - 25165, - 25166, - 25167, - 25168, - 25169, - 25170, - 25171, - 25172, - 25173, - 25174, - 25175, - 25176, - 25177, - 25178, - 25179, - 25180, - 25181, - 25182, - 25183, - 25184, - 25185, - 25186, - 25187, - 25188, - 25189, - 25190, - 25191, - 25192, - 25193, - 25194, - 25195, - 25196, - 25197, - 25198, - 25199, - 25200, - 25201, - 25202, - 25203, - 25204, - 25205, - 25206, - 25207, - 25208, - 25209, - 25210, - 25211, - 25212, - 25213, - 25214, - 25215, - 25216, - 25217, - 25218, - 25219, - 25220, - 25221, - 25222, - 25223, - 25224, - 25225, - 25226, - 25227, - 25228, - 25229, - 25230, - 25231, - 25232, - 25233, - 25234, - 25235, - 25236, - 25237, - 25238, - 25239, - 25240, - 25241, - 25242, - 25243, - 25244, - 25245, - 25246, - 25247, - 25248, - 25249, - 25250, - 25251, - 25252, - 25253, - 25254, - 25255, - 25256, - 25257, - 25258, - 25259, - 25260, - 25261, - 25262, - 25263, - 25264, - 25265, - 25266, - 25267, - 25268, - 25269, - 25270, - 25271, - 25272, - 25273, - 25274, - 25275, - 25276, - 25277, - 25278, - 25279, - 25280, - 25281, - 25282, - 25283, - 25284, - 25285, - 25286, - 25287, - 25288, - 25289, - 25290, - 25291, - 25292, - 25293, - 25294, - 25295, - 25296, - 25297, - 25298, - 25299, - 25300, - 25301, - 25302, - 25303, - 25304, - 25305, - 25306, - 25307, - 25308, - 25309, - 25310, - 25311, - 25312, - 25313, - 25314, - 25315, - 25316, - 25317, - 25318, - 25319, - 25320, - 25321, - 25322, - 25323, - 25324, - 25325, - 25326, - 25327, - 25328, - 25329, - 25330, - 25331, - 25332, - 25333, - 25334, - 25335, - 25336, - 25337, - 25338, - 25339, - 25340, - 25341, - 25342, - 25343, - 25344, - 25345, - 25346, - 25347, - 25348, - 25349, - 25350, - 25351, - 25352, - 25353, - 25354, - 25355, - 25356, - 25357, - 25358, - 25359, - 25360, - 25361, - 25362, - 25363, - 25364, - 25365, - 25366, - 25367, - 25368, - 25369, - 25370, - 25371, - 25372, - 25373, - 25374, - 25375, - 25376, - 25377, - 25378, - 25379, - 25380, - 25381, - 25382, - 25383, - 25384, - 25385, - 25386, - 25387, - 25388, - 25389, - 25390, - 25391, - 25392, - 25393, - 25394, - 25395, - 25396, - 25397, - 25398, - 25399, - 25400, - 25401, - 25402, - 25403, - 25404, - 25405, - 25406, - 25407, - 25408, - 25409, - 25410, - 25411, - 25412, - 25413, - 25414, - 25415, - 25416, - 25417, - 25418, - 25419, - 25420, - 25421, - 25422, - 25423, - 25424, - 25425, - 25426, - 25427, - 25428, - 25429, - 25430, - 25431, - 25432, - 25433, - 25434, - 25435, - 25436, - 25437, - 25438, - 25439, - 25440, - 25441, - 25442, - 25443, - 25444, - 25445, - 25446, - 25447, - 25448, - 25449, - 25450, - 25451, - 25452, - 25453, - 25454, - 25455, - 25456, - 25457, - 25458, - 25459, - 25460, - 25461, - 25462, - 25463, - 25464, - 25465, - 25466, - 25467, - 25468, - 25469, - 25470, - 25471, - 25472, - 25473, - 25474, - 25475, - 25476, - 25477, - 25478, - 25479, - 25480, - 25481, - 25482, - 25483, - 25484, - 25485, - 25486, - 25487, - 25488, - 25489, - 25490, - 25491, - 25492, - 25493, - 25494, - 25495, - 25496, - 25497, - 25498, - 25499, - 25500, - 25501, - 25502, - 25503, - 25504, - 25505, - 25506, - 25507, - 25508, - 25509, - 25510, - 25511, - 25512, - 25513, - 25514, - 25515, - 25516, - 25517, - 25518, - 25519, - 25520, - 25521, - 25522, - 25523, - 25524, - 25525, - 25526, - 25527, - 25528, - 25529, - 25530, - 25531, - 25532, - 25533, - 25534, - 25535, - 25536, - 25537, - 25538, - 25539, - 25540, - 25541, - 25542, - 25543, - 25544, - 25545, - 25546, - 25547, - 25548, - 25549, - 25550, - 25551, - 25552, - 25553, - 25554, - 25555, - 25556, - 25557, - 25558, - 25559, - 25560, - 25561, - 25562, - 25563, - 25564, - 25565, - 25566, - 25567, - 25568, - 25569, - 25570, - 25571, - 25572, - 25573, - 25574, - 25575, - 25576, - 25577, - 25578, - 25579, - 25580, - 25581, - 25582, - 25583, - 25584, - 25585, - 25586, - 25587, - 25588, - 25589, - 25590, - 25591, - 25592, - 25593, - 25594, - 25595, - 25596, - 25597, - 25598, - 25599, - 25600, - 25601, - 25602, - 25603, - 25604, - 25605, - 25606, - 25607, - 25608, - 25609, - 25610, - 25611, - 25612, - 25613, - 25614, - 25615, - 25616, - 25617, - 25618, - 25619, - 25620, - 25621, - 25622, - 25623, - 25624, - 25625, - 25626, - 25627, - 25628, - 25629, - 25630, - 25631, - 25632, - 25633, - 25634, - 25635, - 25636, - 25637, - 25638, - 25639, - 25640, - 25641, - 25642, - 25643, - 25644, - 25645, - 25646, - 25647, - 25648, - 25649, - 25650, - 25651, - 25652, - 25653, - 25654, - 25655, - 25656, - 25657, - 25658, - 25659, - 25660, - 25661, - 25662, - 25663, - 25664, - 25665, - 25666, - 25667, - 25668, - 25669, - 25670, - 25671, - 25672, - 25673, - 25674, - 25675, - 25676, - 25677, - 25678, - 25679, - 25680, - 25681, - 25682, - 25683, - 25684, - 25685, - 25686, - 25687, - 25688, - 25689, - 25690, - 25691, - 25692, - 25693, - 25694, - 25695, - 25696, - 25697, - 25698, - 25699, - 25700, - 25701, - 25702, - 25703, - 25704, - 25705, - 25706, - 25707, - 25708, - 25709, - 25710, - 25711, - 25712, - 25713, - 25714, - 25715, - 25716, - 25717, - 25718, - 25719, - 25720, - 25721, - 25722, - 25723, - 25724, - 25725, - 25726, - 25727, - 25728, - 25729, - 25730, - 25731, - 25732, - 25733, - 25734, - 25735, - 25736, - 25737, - 25738, - 25739, - 25740, - 25741, - 25742, - 25743, - 25744, - 25745, - 25746, - 25747, - 25748, - 25749, - 25750, - 25751, - 25752, - 25753, - 25754, - 25755, - 25756, - 25757, - 25758, - 25759, - 25760, - 25761, - 25762, - 25763, - 25764, - 25765, - 25766, - 25767, - 25768, - 25769, - 25770, - 25771, - 25772, - 25773, - 25774, - 25775, - 25776, - 25777, - 25778, - 25779, - 25780, - 25781, - 25782, - 25783, - 25784, - 25785, - 25786, - 25787, - 25788, - 25789, - 25790, - 25791, - 25792, - 25793, - 25794, - 25795, - 25796, - 25797, - 25798, - 25799, - 25800, - 25801, - 25802, - 25803, - 25804, - 25805, - 25806, - 25807, - 25808, - 25809, - 25810, - 25811, - 25812, - 25813, - 25814, - 25815, - 25816, - 25817, - 25818, - 25819, - 25820, - 25821, - 25822, - 25823, - 25824, - 25825, - 25826, - 25827, - 25828, - 25829, - 25830, - 25831, - 25832, - 25833, - 25834, - 25835, - 25836, - 25837, - 25838, - 25839, - 25840, - 25841, - 25842, - 25843, - 25844, - 25845, - 25846, - 25847, - 25848, - 25849, - 25850, - 25851, - 25852, - 25853, - 25854, - 25855, - 25856, - 25857, - 25858, - 25859, - 25860, - 25861, - 25862, - 25863, - 25864, - 25865, - 25866, - 25867, - 25868, - 25869, - 25870, - 25871, - 25872, - 25873, - 25874, - 25875, - 25876, - 25877, - 25878, - 25879, - 25880, - 25881, - 25882, - 25883, - 25884, - 25885, - 25886, - 25887, - 25888, - 25889, - 25890, - 25891, - 25892, - 25893, - 25894, - 25895, - 25896, - 25897, - 25898, - 25899, - 25900, - 25901, - 25902, - 25903, - 25904, - 25905, - 25906, - 25907, - 25908, - 25909, - 25910, - 25911, - 25912, - 25913, - 25914, - 25915, - 25916, - 25917, - 25918, - 25919, - 25920, - 25921, - 25922, - 25923, - 25924, - 25925, - 25926, - 25927, - 25928, - 25929, - 25930, - 25931, - 25932, - 25933, - 25934, - 25935, - 25936, - 25937, - 25938, - 25939, - 25940, - 25941, - 25942, - 25943, - 25944, - 25945, - 25946, - 25947, - 25948, - 25949, - 25950, - 25951, - 25952, - 25953, - 25954, - 25955, - 25956, - 25957, - 25958, - 25959, - 25960, - 25961, - 25962, - 25963, - 25964, - 25965, - 25966, - 25967, - 25968, - 25969, - 25970, - 25971, - 25972, - 25973, - 25974, - 25975, - 25976, - 25977, - 25978, - 25979, - 25980, - 25981, - 25982, - 25983, - 25984, - 25985, - 25986, - 25987, - 25988, - 25989, - 25990, - 25991, - 25992, - 25993, - 25994, - 25995, - 25996, - 25997, - 25998, - 25999, - 26000, - 26001, - 26002, - 26003, - 26004, - 26005, - 26006, - 26007, - 26008, - 26009, - 26010, - 26011, - 26012, - 26013, - 26014, - 26015, - 26016, - 26017, - 26018, - 26019, - 26020, - 26021, - 26022, - 26023, - 26024, - 26025, - 26026, - 26027, - 26028, - 26029, - 26030, - 26031, - 26032, - 26033, - 26034, - 26035, - 26036, - 26037, - 26038, - 26039, - 26040, - 26041, - 26042, - 26043, - 26044, - 26045, - 26046, - 26047, - 26048, - 26049, - 26050, - 26051, - 26052, - 26053, - 26054, - 26055, - 26056, - 26057, - 26058, - 26059, - 26060, - 26061, - 26062, - 26063, - 26064, - 26065, - 26066, - 26067, - 26068, - 26069, - 26070, - 26071, - 26072, - 26073, - 26074, - 26075, - 26076, - 26077, - 26078, - 26079, - 26080, - 26081, - 26082, - 26083, - 26084, - 26085, - 26086, - 26087, - 26088, - 26089, - 26090, - 26091, - 26092, - 26093, - 26094, - 26095, - 26096, - 26097, - 26098, - 26099, - 26100, - 26101, - 26102, - 26103, - 26104, - 26105, - 26106, - 26107, - 26108, - 26109, - 26110, - 26111, - 26112, - 26113, - 26114, - 26115, - 26116, - 26117, - 26118, - 26119, - 26120, - 26121, - 26122, - 26123, - 26124, - 26125, - 26126, - 26127, - 26128, - 26129, - 26130, - 26131, - 26132, - 26133, - 26134, - 26135, - 26136, - 26137, - 26138, - 26139, - 26140, - 26141, - 26142, - 26143, - 26144, - 26145, - 26146, - 26147, - 26148, - 26149, - 26150, - 26151, - 26152, - 26153, - 26154, - 26155, - 26156, - 26157, - 26158, - 26159, - 26160, - 26161, - 26162, - 26163, - 26164, - 26165, - 26166, - 26167, - 26168, - 26169, - 26170, - 26171, - 26172, - 26173, - 26174, - 26175, - 26176, - 26177, - 26178, - 26179, - 26180, - 26181, - 26182, - 26183, - 26184, - 26185, - 26186, - 26187, - 26188, - 26189, - 26190, - 26191, - 26192, - 26193, - 26194, - 26195, - 26196, - 26197, - 26198, - 26199, - 26200, - 26201, - 26202, - 26203, - 26204, - 26205, - 26206, - 26207, - 26208, - 26209, - 26210, - 26211, - 26212, - 26213, - 26214, - 26215, - 26216, - 26217, - 26218, - 26219, - 26220, - 26221, - 26222, - 26223, - 26224, - 26225, - 26226, - 26227, - 26228, - 26229, - 26230, - 26231, - 26232, - 26233, - 26234, - 26235, - 26236, - 26237, - 26238, - 26239, - 26240, - 26241, - 26242, - 26243, - 26244, - 26245, - 26246, - 26247, - 26248, - 26249, - 26250, - 26251, - 26252, - 26253, - 26254, - 26255, - 26256, - 26257, - 26258, - 26259, - 26260, - 26261, - 26262, - 26263, - 26264, - 26265, - 26266, - 26267, - 26268, - 26269, - 26270, - 26271, - 26272, - 26273, - 26274, - 26275, - 26276, - 26277, - 26278, - 26279, - 26280, - 26281, - 26282, - 26283, - 26284, - 26285, - 26286, - 26287, - 26288, - 26289, - 26290, - 26291, - 26292, - 26293, - 26294, - 26295, - 26296, - 26297, - 26298, - 26299, - 26300, - 26301, - 26302, - 26303, - 26304, - 26305, - 26306, - 26307, - 26308, - 26309, - 26310, - 26311, - 26312, - 26313, - 26314, - 26315, - 26316, - 26317, - 26318, - 26319, - 26320, - 26321, - 26322, - 26323, - 26324, - 26325, - 26326, - 26327, - 26328, - 26329, - 26330, - 26331, - 26332, - 26333, - 26334, - 26335, - 26336, - 26337, - 26338, - 26339, - 26340, - 26341, - 26342, - 26343, - 26344, - 26345, - 26346, - 26347, - 26348, - 26349, - 26350, - 26351, - 26352, - 26353, - 26354, - 26355, - 26356, - 26357, - 26358, - 26359, - 26360, - 26361, - 26362, - 26363, - 26364, - 26365, - 26366, - 26367, - 26368, - 26369, - 26370, - 26371, - 26372, - 26373, - 26374, - 26375, - 26376, - 26377, - 26378, - 26379, - 26380, - 26381, - 26382, - 26383, - 26384, - 26385, - 26386, - 26387, - 26388, - 26389, - 26390, - 26391, - 26392, - 26393, - 26394, - 26395, - 26396, - 26397, - 26398, - 26399, - 26400, - 26401, - 26402, - 26403, - 26404, - 26405, - 26406, - 26407, - 26408, - 26409, - 26410, - 26411, - 26412, - 26413, - 26414, - 26415, - 26416, - 26417, - 26418, - 26419, - 26420, - 26421, - 26422, - 26423, - 26424, - 26425, - 26426, - 26427, - 26428, - 26429, - 26430, - 26431, - 26432, - 26433, - 26434, - 26435, - 26436, - 26437, - 26438, - 26439, - 26440, - 26441, - 26442, - 26443, - 26444, - 26445, - 26446, - 26447, - 26448, - 26449, - 26450, - 26451, - 26452, - 26453, - 26454, - 26455, - 26456, - 26457, - 26458, - 26459, - 26460, - 26461, - 26462, - 26463, - 26464, - 26465, - 26466, - 26467, - 26468, - 26469, - 26470, - 26471, - 26472, - 26473, - 26474, - 26475, - 26476, - 26477, - 26478, - 26479, - 26480, - 26481, - 26482, - 26483, - 26484, - 26485, - 26486, - 26487, - 26488, - 26489, - 26490, - 26491, - 26492, - 26493, - 26494, - 26495, - 26496, - 26497, - 26498, - 26499, - 26500, - 26501, - 26502, - 26503, - 26504, - 26505, - 26506, - 26507, - 26508, - 26509, - 26510, - 26511, - 26512, - 26513, - 26514, - 26515, - 26516, - 26517, - 26518, - 26519, - 26520, - 26521, - 26522, - 26523, - 26524, - 26525, - 26526, - 26527, - 26528, - 26529, - 26530, - 26531, - 26532, - 26533, - 26534, - 26535, - 26536, - 26537, - 26538, - 26539, - 26540, - 26541, - 26542, - 26543, - 26544, - 26545, - 26546, - 26547, - 26548, - 26549, - 26550, - 26551, - 26552, - 26553, - 26554, - 26555, - 26556, - 26557, - 26558, - 26559, - 26560, - 26561, - 26562, - 26563, - 26564, - 26565, - 26566, - 26567, - 26568, - 26569, - 26570, - 26571, - 26572, - 26573, - 26574, - 26575, - 26576, - 26577, - 26578, - 26579, - 26580, - 26581, - 26582, - 26583, - 26584, - 26585, - 26586, - 26587, - 26588, - 26589, - 26590, - 26591, - 26592, - 26593, - 26594, - 26595, - 26596, - 26597, - 26598, - 26599, - 26600, - 26601, - 26602, - 26603, - 26604, - 26605, - 26606, - 26607, - 26608, - 26609, - 26610, - 26611, - 26612, - 26613, - 26614, - 26615, - 26616, - 26617, - 26618, - 26619, - 26620, - 26621, - 26622, - 26623, - 26624, - 26625, - 26626, - 26627, - 26628, - 26629, - 26630, - 26631, - 26632, - 26633, - 26634, - 26635, - 26636, - 26637, - 26638, - 26639, - 26640, - 26641, - 26642, - 26643, - 26644, - 26645, - 26646, - 26647, - 26648, - 26649, - 26650, - 26651, - 26652, - 26653, - 26654, - 26655, - 26656, - 26657, - 26658, - 26659, - 26660, - 26661, - 26662, - 26663, - 26664, - 26665, - 26666, - 26667, - 26668, - 26669, - 26670, - 26671, - 26672, - 26673, - 26674, - 26675, - 26676, - 26677, - 26678, - 26679, - 26680, - 26681, - 26682, - 26683, - 26684, - 26685, - 26686, - 26687, - 26688, - 26689, - 26690, - 26691, - 26692, - 26693, - 26694, - 26695, - 26696, - 26697, - 26698, - 26699, - 26700, - 26701, - 26702, - 26703, - 26704, - 26705, - 26706, - 26707, - 26708, - 26709, - 26710, - 26711, - 26712, - 26713, - 26714, - 26715, - 26716, - 26717, - 26718, - 26719, - 26720, - 26721, - 26722, - 26723, - 26724, - 26725, - 26726, - 26727, - 26728, - 26729, - 26730, - 26731, - 26732, - 26733, - 26734, - 26735, - 26736, - 26737, - 26738, - 26739, - 26740, - 26741, - 26742, - 26743, - 26744, - 26745, - 26746, - 26747, - 26748, - 26749, - 26750, - 26751, - 26752, - 26753, - 26754, - 26755, - 26756, - 26757, - 26758, - 26759, - 26760, - 26761, - 26762, - 26763, - 26764, - 26765, - 26766, - 26767, - 26768, - 26769, - 26770, - 26771, - 26772, - 26773, - 26774, - 26775, - 26776, - 26777, - 26778, - 26779, - 26780, - 26781, - 26782, - 26783, - 26784, - 26785, - 26786, - 26787, - 26788, - 26789, - 26790, - 26791, - 26792, - 26793, - 26794, - 26795, - 26796, - 26797, - 26798, - 26799, - 26800, - 26801, - 26802, - 26803, - 26804, - 26805, - 26806, - 26807, - 26808, - 26809, - 26810, - 26811, - 26812, - 26813, - 26814, - 26815, - 26816, - 26817, - 26818, - 26819, - 26820, - 26821, - 26822, - 26823, - 26824, - 26825, - 26826, - 26827, - 26828, - 26829, - 26830, - 26831, - 26832, - 26833, - 26834, - 26835, - 26836, - 26837, - 26838, - 26839, - 26840, - 26841, - 26842, - 26843, - 26844, - 26845, - 26846, - 26847, - 26848, - 26849, - 26850, - 26851, - 26852, - 26853, - 26854, - 26855, - 26856, - 26857, - 26858, - 26859, - 26860, - 26861, - 26862, - 26863, - 26864, - 26865, - 26866, - 26867, - 26868, - 26869, - 26870, - 26871, - 26872, - 26873, - 26874, - 26875, - 26876, - 26877, - 26878, - 26879, - 26880, - 26881, - 26882, - 26883, - 26884, - 26885, - 26886, - 26887, - 26888, - 26889, - 26890, - 26891, - 26892, - 26893, - 26894, - 26895, - 26896, - 26897, - 26898, - 26899, - 26900, - 26901, - 26902, - 26903, - 26904, - 26905, - 26906, - 26907, - 26908, - 26909, - 26910, - 26911, - 26912, - 26913, - 26914, - 26915, - 26916, - 26917, - 26918, - 26919, - 26920, - 26921, - 26922, - 26923, - 26924, - 26925, - 26926, - 26927, - 26928, - 26929, - 26930, - 26931, - 26932, - 26933, - 26934, - 26935, - 26936, - 26937, - 26938, - 26939, - 26940, - 26941, - 26942, - 26943, - 26944, - 26945, - 26946, - 26947, - 26948, - 26949, - 26950, - 26951, - 26952, - 26953, - 26954, - 26955, - 26956, - 26957, - 26958, - 26959, - 26960, - 26961, - 26962, - 26963, - 26964, - 26965, - 26966, - 26967, - 26968, - 26969, - 26970, - 26971, - 26972, - 26973, - 26974, - 26975, - 26976, - 26977, - 26978, - 26979, - 26980, - 26981, - 26982, - 26983, - 26984, - 26985, - 26986, - 26987, - 26988, - 26989, - 26990, - 26991, - 26992, - 26993, - 26994, - 26995, - 26996, - 26997, - 26998, - 26999, - 27000, - 27001, - 27002, - 27003, - 27004, - 27005, - 27006, - 27007, - 27008, - 27009, - 27010, - 27011, - 27012, - 27013, - 27014, - 27015, - 27016, - 27017, - 27018, - 27019, - 27020, - 27021, - 27022, - 27023, - 27024, - 27025, - 27026, - 27027, - 27028, - 27029, - 27030, - 27031, - 27032, - 27033, - 27034, - 27035, - 27036, - 27037, - 27038, - 27039, - 27040, - 27041, - 27042, - 27043, - 27044, - 27045, - 27046, - 27047, - 27048, - 27049, - 27050, - 27051, - 27052, - 27053, - 27054, - 27055, - 27056, - 27057, - 27058, - 27059, - 27060, - 27061, - 27062, - 27063, - 27064, - 27065, - 27066, - 27067, - 27068, - 27069, - 27070, - 27071, - 27072, - 27073, - 27074, - 27075, - 27076, - 27077, - 27078, - 27079, - 27080, - 27081, - 27082, - 27083, - 27084, - 27085, - 27086, - 27087, - 27088, - 27089, - 27090, - 27091, - 27092, - 27093, - 27094, - 27095, - 27096, - 27097, - 27098, - 27099, - 27100, - 27101, - 27102, - 27103, - 27104, - 27105, - 27106, - 27107, - 27108, - 27109, - 27110, - 27111, - 27112, - 27113, - 27114, - 27115, - 27116, - 27117, - 27118, - 27119, - 27120, - 27121, - 27122, - 27123, - 27124, - 27125, - 27126, - 27127, - 27128, - 27129, - 27130, - 27131, - 27132, - 27133, - 27134, - 27135, - 27136, - 27137, - 27138, - 27139, - 27140, - 27141, - 27142, - 27143, - 27144, - 27145, - 27146, - 27147, - 27148, - 27149, - 27150, - 27151, - 27152, - 27153, - 27154, - 27155, - 27156, - 27157, - 27158, - 27159, - 27160, - 27161, - 27162, - 27163, - 27164, - 27165, - 27166, - 27167, - 27168, - 27169, - 27170, - 27171, - 27172, - 27173, - 27174, - 27175, - 27176, - 27177, - 27178, - 27179, - 27180, - 27181, - 27182, - 27183, - 27184, - 27185, - 27186, - 27187, - 27188, - 27189, - 27190, - 27191, - 27192, - 27193, - 27194, - 27195, - 27196, - 27197, - 27198, - 27199, - 27200, - 27201, - 27202, - 27203, - 27204, - 27205, - 27206, - 27207, - 27208, - 27209, - 27210, - 27211, - 27212, - 27213, - 27214, - 27215, - 27216, - 27217, - 27218, - 27219, - 27220, - 27221, - 27222, - 27223, - 27224, - 27225, - 27226, - 27227, - 27228, - 27229, - 27230, - 27231, - 27232, - 27233, - 27234, - 27235, - 27236, - 27237, - 27238, - 27239, - 27240, - 27241, - 27242, - 27243, - 27244, - 27245, - 27246, - 27247, - 27248, - 27249, - 27250, - 27251, - 27252, - 27253, - 27254, - 27255, - 27256, - 27257, - 27258, - 27259, - 27260, - 27261, - 27262, - 27263, - 27264, - 27265, - 27266, - 27267, - 27268, - 27269, - 27270, - 27271, - 27272, - 27273, - 27274, - 27275, - 27276, - 27277, - 27278, - 27279, - 27280, - 27281, - 27282, - 27283, - 27284, - 27285, - 27286, - 27287, - 27288, - 27289, - 27290, - 27291, - 27292, - 27293, - 27294, - 27295, - 27296, - 27297, - 27298, - 27299, - 27300, - 27301, - 27302, - 27303, - 27304, - 27305, - 27306, - 27307, - 27308, - 27309, - 27310, - 27311, - 27312, - 27313, - 27314, - 27315, - 27316, - 27317, - 27318, - 27319, - 27320, - 27321, - 27322, - 27323, - 27324, - 27325, - 27326, - 27327, - 27328, - 27329, - 27330, - 27331, - 27332, - 27333, - 27334, - 27335, - 27336, - 27337, - 27338, - 27339, - 27340, - 27341, - 27342, - 27343, - 27344, - 27345, - 27346, - 27347, - 27348, - 27349, - 27350, - 27351, - 27352, - 27353, - 27354, - 27355, - 27356, - 27357, - 27358, - 27359, - 27360, - 27361, - 27362, - 27363, - 27364, - 27365, - 27366, - 27367, - 27368, - 27369, - 27370, - 27371, - 27372, - 27373, - 27374, - 27375, - 27376, - 27377, - 27378, - 27379, - 27380, - 27381, - 27382, - 27383, - 27384, - 27385, - 27386, - 27387, - 27388, - 27389, - 27390, - 27391, - 27392, - 27393, - 27394, - 27395, - 27396, - 27397, - 27398, - 27399, - 27400, - 27401, - 27402, - 27403, - 27404, - 27405, - 27406, - 27407, - 27408, - 27409, - 27410, - 27411, - 27412, - 27413, - 27414, - 27415, - 27416, - 27417, - 27418, - 27419, - 27420, - 27421, - 27422, - 27423, - 27424, - 27425, - 27426, - 27427, - 27428, - 27429, - 27430, - 27431, - 27432, - 27433, - 27434, - 27435, - 27436, - 27437, - 27438, - 27439, - 27440, - 27441, - 27442, - 27443, - 27444, - 27445, - 27446, - 27447, - 27448, - 27449, - 27450, - 27451, - 27452, - 27453, - 27454, - 27455, - 27456, - 27457, - 27458, - 27459, - 27460, - 27461, - 27462, - 27463, - 27464, - 27465, - 27466, - 27467, - 27468, - 27469, - 27470, - 27471, - 27472, - 27473, - 27474, - 27475, - 27476, - 27477, - 27478, - 27479, - 27480, - 27481, - 27482, - 27483, - 27484, - 27485, - 27486, - 27487, - 27488, - 27489, - 27490, - 27491, - 27492, - 27493, - 27494, - 27495, - 27496, - 27497, - 27498, - 27499, - 27500, - 27501, - 27502, - 27503, - 27504, - 27505, - 27506, - 27507, - 27508, - 27509, - 27510, - 27511, - 27512, - 27513, - 27514, - 27515, - 27516, - 27517, - 27518, - 27519, - 27520, - 27521, - 27522, - 27523, - 27524, - 27525, - 27526, - 27527, - 27528, - 27529, - 27530, - 27531, - 27532, - 27533, - 27534, - 27535, - 27536, - 27537, - 27538, - 27539, - 27540, - 27541, - 27542, - 27543, - 27544, - 27545, - 27546, - 27547, - 27548, - 27549, - 27550, - 27551, - 27552, - 27553, - 27554, - 27555, - 27556, - 27557, - 27558, - 27559, - 27560, - 27561, - 27562, - 27563, - 27564, - 27565, - 27566, - 27567, - 27568, - 27569, - 27570, - 27571, - 27572, - 27573, - 27574, - 27575, - 27576, - 27577, - 27578, - 27579, - 27580, - 27581, - 27582, - 27583, - 27584, - 27585, - 27586, - 27587, - 27588, - 27589, - 27590, - 27591, - 27592, - 27593, - 27594, - 27595, - 27596, - 27597, - 27598, - 27599, - 27600, - 27601, - 27602, - 27603, - 27604, - 27605, - 27606, - 27607, - 27608, - 27609, - 27610, - 27611, - 27612, - 27613, - 27614, - 27615, - 27616, - 27617, - 27618, - 27619, - 27620, - 27621, - 27622, - 27623, - 27624, - 27625, - 27626, - 27627, - 27628, - 27629, - 27630, - 27631, - 27632, - 27633, - 27634, - 27635, - 27636, - 27637, - 27638, - 27639, - 27640, - 27641, - 27642, - 27643, - 27644, - 27645, - 27646, - 27647, - 27648, - 27649, - 27650, - 27651, - 27652, - 27653, - 27654, - 27655, - 27656, - 27657, - 27658, - 27659, - 27660, - 27661, - 27662, - 27663, - 27664, - 27665, - 27666, - 27667, - 27668, - 27669, - 27670, - 27671, - 27672, - 27673, - 27674, - 27675, - 27676, - 27677, - 27678, - 27679, - 27680, - 27681, - 27682, - 27683, - 27684, - 27685, - 27686, - 27687, - 27688, - 27689, - 27690, - 27691, - 27692, - 27693, - 27694, - 27695, - 27696, - 27697, - 27698, - 27699, - 27700, - 27701, - 27702, - 27703, - 27704, - 27705, - 27706, - 27707, - 27708, - 27709, - 27710, - 27711, - 27712, - 27713, - 27714, - 27715, - 27716, - 27717, - 27718, - 27719, - 27720, - 27721, - 27722, - 27723, - 27724, - 27725, - 27726, - 27727, - 27728, - 27729, - 27730, - 27731, - 27732, - 27733, - 27734, - 27735, - 27736, - 27737, - 27738, - 27739, - 27740, - 27741, - 27742, - 27743, - 27744, - 27745, - 27746, - 27747, - 27748, - 27749, - 27750, - 27751, - 27752, - 27753, - 27754, - 27755, - 27756, - 27757, - 27758, - 27759, - 27760, - 27761, - 27762, - 27763, - 27764, - 27765, - 27766, - 27767, - 27768, - 27769, - 27770, - 27771, - 27772, - 27773, - 27774, - 27775, - 27776, - 27777, - 27778, - 27779, - 27780, - 27781, - 27782, - 27783, - 27784, - 27785, - 27786, - 27787, - 27788, - 27789, - 27790, - 27791, - 27792, - 27793, - 27794, - 27795, - 27796, - 27797, - 27798, - 27799, - 27800, - 27801, - 27802, - 27803, - 27804, - 27805, - 27806, - 27807, - 27808, - 27809, - 27810, - 27811, - 27812, - 27813, - 27814, - 27815, - 27816, - 27817, - 27818, - 27819, - 27820, - 27821, - 27822, - 27823, - 27824, - 27825, - 27826, - 27827, - 27828, - 27829, - 27830, - 27831, - 27832, - 27833, - 27834, - 27835, - 27836, - 27837, - 27838, - 27839, - 27840, - 27841, - 27842, - 27843, - 27844, - 27845, - 27846, - 27847, - 27848, - 27849, - 27850, - 27851, - 27852, - 27853, - 27854, - 27855, - 27856, - 27857, - 27858, - 27859, - 27860, - 27861, - 27862, - 27863, - 27864, - 27865, - 27866, - 27867, - 27868, - 27869, - 27870, - 27871, - 27872, - 27873, - 27874, - 27875, - 27876, - 27877, - 27878, - 27879, - 27880, - 27881, - 27882, - 27883, - 27884, - 27885, - 27886, - 27887, - 27888, - 27889, - 27890, - 27891, - 27892, - 27893, - 27894, - 27895, - 27896, - 27897, - 27898, - 27899, - 27900, - 27901, - 27902, - 27903, - 27904, - 27905, - 27906, - 27907, - 27908, - 27909, - 27910, - 27911, - 27912, - 27913, - 27914, - 27915, - 27916, - 27917, - 27918, - 27919, - 27920, - 27921, - 27922, - 27923, - 27924, - 27925, - 27926, - 27927, - 27928, - 27929, - 27930, - 27931, - 27932, - 27933, - 27934, - 27935, - 27936, - 27937, - 27938, - 27939, - 27940, - 27941, - 27942, - 27943, - 27944, - 27945, - 27946, - 27947, - 27948, - 27949, - 27950, - 27951, - 27952, - 27953, - 27954, - 27955, - 27956, - 27957, - 27958, - 27959, - 27960, - 27961, - 27962, - 27963, - 27964, - 27965, - 27966, - 27967, - 27968, - 27969, - 27970, - 27971, - 27972, - 27973, - 27974, - 27975, - 27976, - 27977, - 27978, - 27979, - 27980, - 27981, - 27982, - 27983, - 27984, - 27985, - 27986, - 27987, - 27988, - 27989, - 27990, - 27991, - 27992, - 27993, - 27994, - 27995, - 27996, - 27997, - 27998, - 27999, - 28000, - 28001, - 28002, - 28003, - 28004, - 28005, - 28006, - 28007, - 28008, - 28009, - 28010, - 28011, - 28012, - 28013, - 28014, - 28015, - 28016, - 28017, - 28018, - 28019, - 28020, - 28021, - 28022, - 28023, - 28024, - 28025, - 28026, - 28027, - 28028, - 28029, - 28030, - 28031, - 28032, - 28033, - 28034, - 28035, - 28036, - 28037, - 28038, - 28039, - 28040, - 28041, - 28042, - 28043, - 28044, - 28045, - 28046, - 28047, - 28048, - 28049, - 28050, - 28051, - 28052, - 28053, - 28054, - 28055, - 28056, - 28057, - 28058, - 28059, - 28060, - 28061, - 28062, - 28063, - 28064, - 28065, - 28066, - 28067, - 28068, - 28069, - 28070, - 28071, - 28072, - 28073, - 28074, - 28075, - 28076, - 28077, - 28078, - 28079, - 28080, - 28081, - 28082, - 28083, - 28084, - 28085, - 28086, - 28087, - 28088, - 28089, - 28090, - 28091, - 28092, - 28093, - 28094, - 28095, - 28096, - 28097, - 28098, - 28099, - 28100, - 28101, - 28102, - 28103, - 28104, - 28105, - 28106, - 28107, - 28108, - 28109, - 28110, - 28111, - 28112, - 28113, - 28114, - 28115, - 28116, - 28117, - 28118, - 28119, - 28120, - 28121, - 28122, - 28123, - 28124, - 28125, - 28126, - 28127, - 28128, - 28129, - 28130, - 28131, - 28132, - 28133, - 28134, - 28135, - 28136, - 28137, - 28138, - 28139, - 28140, - 28141, - 28142, - 28143, - 28144, - 28145, - 28146, - 28147, - 28148, - 28149, - 28150, - 28151, - 28152, - 28153, - 28154, - 28155, - 28156, - 28157, - 28158, - 28159, - 28160, - 28161, - 28162, - 28163, - 28164, - 28165, - 28166, - 28167, - 28168, - 28169, - 28170, - 28171, - 28172, - 28173, - 28174, - 28175, - 28176, - 28177, - 28178, - 28179, - 28180, - 28181, - 28182, - 28183, - 28184, - 28185, - 28186, - 28187, - 28188, - 28189, - 28190, - 28191, - 28192, - 28193, - 28194, - 28195, - 28196, - 28197, - 28198, - 28199, - 28200, - 28201, - 28202, - 28203, - 28204, - 28205, - 28206, - 28207, - 28208, - 28209, - 28210, - 28211, - 28212, - 28213, - 28214, - 28215, - 28216, - 28217, - 28218, - 28219, - 28220, - 28221, - 28222, - 28223, - 28224, - 28225, - 28226, - 28227, - 28228, - 28229, - 28230, - 28231, - 28232, - 28233, - 28234, - 28235, - 28236, - 28237, - 28238, - 28239, - 28240, - 28241, - 28242, - 28243, - 28244, - 28245, - 28246, - 28247, - 28248, - 28249, - 28250, - 28251, - 28252, - 28253, - 28254, - 28255, - 28256, - 28257, - 28258, - 28259, - 28260, - 28261, - 28262, - 28263, - 28264, - 28265, - 28266, - 28267, - 28268, - 28269, - 28270, - 28271, - 28272, - 28273, - 28274, - 28275, - 28276, - 28277, - 28278, - 28279, - 28280, - 28281, - 28282, - 28283, - 28284, - 28285, - 28286, - 28287, - 28288, - 28289, - 28290, - 28291, - 28292, - 28293, - 28294, - 28295, - 28296, - 28297, - 28298, - 28299, - 28300, - 28301, - 28302, - 28303, - 28304, - 28305, - 28306, - 28307, - 28308, - 28309, - 28310, - 28311, - 28312, - 28313, - 28314, - 28315, - 28316, - 28317, - 28318, - 28319, - 28320, - 28321, - 28322, - 28323, - 28324, - 28325, - 28326, - 28327, - 28328, - 28329, - 28330, - 28331, - 28332, - 28333, - 28334, - 28335, - 28336, - 28337, - 28338, - 28339, - 28340, - 28341, - 28342, - 28343, - 28344, - 28345, - 28346, - 28347, - 28348, - 28349, - 28350, - 28351, - 28352, - 28353, - 28354, - 28355, - 28356, - 28357, - 28358, - 28359, - 28360, - 28361, - 28362, - 28363, - 28364, - 28365, - 28366, - 28367, - 28368, - 28369, - 28370, - 28371, - 28372, - 28373, - 28374, - 28375, - 28376, - 28377, - 28378, - 28379, - 28380, - 28381, - 28382, - 28383, - 28384, - 28385, - 28386, - 28387, - 28388, - 28389, - 28390, - 28391, - 28392, - 28393, - 28394, - 28395, - 28396, - 28397, - 28398, - 28399, - 28400, - 28401, - 28402, - 28403, - 28404, - 28405, - 28406, - 28407, - 28408, - 28409, - 28410, - 28411, - 28412, - 28413, - 28414, - 28415, - 28416, - 28417, - 28418, - 28419, - 28420, - 28421, - 28422, - 28423, - 28424, - 28425, - 28426, - 28427, - 28428, - 28429, - 28430, - 28431, - 28432, - 28433, - 28434, - 28435, - 28436, - 28437, - 28438, - 28439, - 28440, - 28441, - 28442, - 28443, - 28444, - 28445, - 28446, - 28447, - 28448, - 28449, - 28450, - 28451, - 28452, - 28453, - 28454, - 28455, - 28456, - 28457, - 28458, - 28459, - 28460, - 28461, - 28462, - 28463, - 28464, - 28465, - 28466, - 28467, - 28468, - 28469, - 28470, - 28471, - 28472, - 28473, - 28474, - 28475, - 28476, - 28477, - 28478, - 28479, - 28480, - 28481, - 28482, - 28483, - 28484, - 28485, - 28486, - 28487, - 28488, - 28489, - 28490, - 28491, - 28492, - 28493, - 28494, - 28495, - 28496, - 28497, - 28498, - 28499, - 28500, - 28501, - 28502, - 28503, - 28504, - 28505, - 28506, - 28507, - 28508, - 28509, - 28510, - 28511, - 28512, - 28513, - 28514, - 28515, - 28516, - 28517, - 28518, - 28519, - 28520, - 28521, - 28522, - 28523, - 28524, - 28525, - 28526, - 28527, - 28528, - 28529, - 28530, - 28531, - 28532, - 28533, - 28534, - 28535, - 28536, - 28537, - 28538, - 28539, - 28540, - 28541, - 28542, - 28543, - 28544, - 28545, - 28546, - 28547, - 28548, - 28549, - 28550, - 28551, - 28552, - 28553, - 28554, - 28555, - 28556, - 28557, - 28558, - 28559, - 28560, - 28561, - 28562, - 28563, - 28564, - 28565, - 28566, - 28567, - 28568, - 28569, - 28570, - 28571, - 28572, - 28573, - 28574, - 28575, - 28576, - 28577, - 28578, - 28579, - 28580, - 28581, - 28582, - 28583, - 28584, - 28585, - 28586, - 28587, - 28588, - 28589, - 28590, - 28591, - 28592, - 28593, - 28594, - 28595, - 28596, - 28597, - 28598, - 28599, - 28600, - 28601, - 28602, - 28603, - 28604, - 28605, - 28606, - 28607, - 28608, - 28609, - 28610, - 28611, - 28612, - 28613, - 28614, - 28615, - 28616, - 28617, - 28618, - 28619, - 28620, - 28621, - 28622, - 28623, - 28624, - 28625, - 28626, - 28627, - 28628, - 28629, - 28630, - 28631, - 28632, - 28633, - 28634, - 28635, - 28636, - 28637, - 28638, - 28639, - 28640, - 28641, - 28642, - 28643, - 28644, - 28645, - 28646, - 28647, - 28648, - 28649, - 28650, - 28651, - 28652, - 28653, - 28654, - 28655, - 28656, - 28657, - 28658, - 28659, - 28660, - 28661, - 28662, - 28663, - 28664, - 28665, - 28666, - 28667, - 28668, - 28669, - 28670, - 28671, - 28672, - 28673, - 28674, - 28675, - 28676, - 28677, - 28678, - 28679, - 28680, - 28681, - 28682, - 28683, - 28684, - 28685, - 28686, - 28687, - 28688, - 28689, - 28690, - 28691, - 28692, - 28693, - 28694, - 28695, - 28696, - 28697, - 28698, - 28699, - 28700, - 28701, - 28702, - 28703, - 28704, - 28705, - 28706, - 28707, - 28708, - 28709, - 28710, - 28711, - 28712, - 28713, - 28714, - 28715, - 28716, - 28717, - 28718, - 28719, - 28720, - 28721, - 28722, - 28723, - 28724, - 28725, - 28726, - 28727, - 28728, - 28729, - 28730, - 28731, - 28732, - 28733, - 28734, - 28735, - 28736, - 28737, - 28738, - 28739, - 28740, - 28741, - 28742, - 28743, - 28744, - 28745, - 28746, - 28747, - 28748, - 28749, - 28750, - 28751, - 28752, - 28753, - 28754, - 28755, - 28756, - 28757, - 28758, - 28759, - 28760, - 28761, - 28762, - 28763, - 28764, - 28765, - 28766, - 28767, - 28768, - 28769, - 28770, - 28771, - 28772, - 28773, - 28774, - 28775, - 28776, - 28777, - 28778, - 28779, - 28780, - 28781, - 28782, - 28783, - 28784, - 28785, - 28786, - 28787, - 28788, - 28789, - 28790, - 28791, - 28792, - 28793, - 28794, - 28795, - 28796, - 28797, - 28798, - 28799, - 28800, - 28801, - 28802, - 28803, - 28804, - 28805, - 28806, - 28807, - 28808, - 28809, - 28810, - 28811, - 28812, - 28813, - 28814, - 28815, - 28816, - 28817, - 28818, - 28819, - 28820, - 28821, - 28822, - 28823, - 28824, - 28825, - 28826, - 28827, - 28828, - 28829, - 28830, - 28831, - 28832, - 28833, - 28834, - 28835, - 28836, - 28837, - 28838, - 28839, - 28840, - 28841, - 28842, - 28843, - 28844, - 28845, - 28846, - 28847, - 28848, - 28849, - 28850, - 28851, - 28852, - 28853, - 28854, - 28855, - 28856, - 28857, - 28858, - 28859, - 28860, - 28861, - 28862, - 28863, - 28864, - 28865, - 28866, - 28867, - 28868, - 28869, - 28870, - 28871, - 28872, - 28873, - 28874, - 28875, - 28876, - 28877, - 28878, - 28879, - 28880, - 28881, - 28882, - 28883, - 28884, - 28885, - 28886, - 28887, - 28888, - 28889, - 28890, - 28891, - 28892, - 28893, - 28894, - 28895, - 28896, - 28897, - 28898, - 28899, - 28900, - 28901, - 28902, - 28903, - 28904, - 28905, - 28906, - 28907, - 28908, - 28909, - 28910, - 28911, - 28912, - 28913, - 28914, - 28915, - 28916, - 28917, - 28918, - 28919, - 28920, - 28921, - 28922, - 28923, - 28924, - 28925, - 28926, - 28927, - 28928, - 28929, - 28930, - 28931, - 28932, - 28933, - 28934, - 28935, - 28936, - 28937, - 28938, - 28939, - 28940, - 28941, - 28942, - 28943, - 28944, - 28945, - 28946, - 28947, - 28948, - 28949, - 28950, - 28951, - 28952, - 28953, - 28954, - 28955, - 28956, - 28957, - 28958, - 28959, - 28960, - 28961, - 28962, - 28963, - 28964, - 28965, - 28966, - 28967, - 28968, - 28969, - 28970, - 28971, - 28972, - 28973, - 28974, - 28975, - 28976, - 28977, - 28978, - 28979, - 28980, - 28981, - 28982, - 28983, - 28984, - 28985, - 28986, - 28987, - 28988, - 28989, - 28990, - 28991, - 28992, - 28993, - 28994, - 28995, - 28996, - 28997, - 28998, - 28999, - 29000, - 29001, - 29002, - 29003, - 29004, - 29005, - 29006, - 29007, - 29008, - 29009, - 29010, - 29011, - 29012, - 29013, - 29014, - 29015, - 29016, - 29017, - 29018, - 29019, - 29020, - 29021, - 29022, - 29023, - 29024, - 29025, - 29026, - 29027, - 29028, - 29029, - 29030, - 29031, - 29032, - 29033, - 29034, - 29035, - 29036, - 29037, - 29038, - 29039, - 29040, - 29041, - 29042, - 29043, - 29044, - 29045, - 29046, - 29047, - 29048, - 29049, - 29050, - 29051, - 29052, - 29053, - 29054, - 29055, - 29056, - 29057, - 29058, - 29059, - 29060, - 29061, - 29062, - 29063, - 29064, - 29065, - 29066, - 29067, - 29068, - 29069, - 29070, - 29071, - 29072, - 29073, - 29074, - 29075, - 29076, - 29077, - 29078, - 29079, - 29080, - 29081, - 29082, - 29083, - 29084, - 29085, - 29086, - 29087, - 29088, - 29089, - 29090, - 29091, - 29092, - 29093, - 29094, - 29095, - 29096, - 29097, - 29098, - 29099, - 29100, - 29101, - 29102, - 29103, - 29104, - 29105, - 29106, - 29107, - 29108, - 29109, - 29110, - 29111, - 29112, - 29113, - 29114, - 29115, - 29116, - 29117, - 29118, - 29119, - 29120, - 29121, - 29122, - 29123, - 29124, - 29125, - 29126, - 29127, - 29128, - 29129, - 29130, - 29131, - 29132, - 29133, - 29134, - 29135, - 29136, - 29137, - 29138, - 29139, - 29140, - 29141, - 29142, - 29143, - 29144, - 29145, - 29146, - 29147, - 29148, - 29149, - 29150, - 29151, - 29152, - 29153, - 29154, - 29155, - 29156, - 29157, - 29158, - 29159, - 29160, - 29161, - 29162, - 29163, - 29164, - 29165, - 29166, - 29167, - 29168, - 29169, - 29170, - 29171, - 29172, - 29173, - 29174, - 29175, - 29176, - 29177, - 29178, - 29179, - 29180, - 29181, - 29182, - 29183, - 29184, - 29185, - 29186, - 29187, - 29188, - 29189, - 29190, - 29191, - 29192, - 29193, - 29194, - 29195, - 29196, - 29197, - 29198, - 29199, - 29200, - 29201, - 29202, - 29203, - 29204, - 29205, - 29206, - 29207, - 29208, - 29209, - 29210, - 29211, - 29212, - 29213, - 29214, - 29215, - 29216, - 29217, - 29218, - 29219, - 29220, - 29221, - 29222, - 29223, - 29224, - 29225, - 29226, - 29227, - 29228, - 29229, - 29230, - 29231, - 29232, - 29233, - 29234, - 29235, - 29236, - 29237, - 29238, - 29239, - 29240, - 29241, - 29242, - 29243, - 29244, - 29245, - 29246, - 29247, - 29248, - 29249, - 29250, - 29251, - 29252, - 29253, - 29254, - 29255, - 29256, - 29257, - 29258, - 29259, - 29260, - 29261, - 29262, - 29263, - 29264, - 29265, - 29266, - 29267, - 29268, - 29269, - 29270, - 29271, - 29272, - 29273, - 29274, - 29275, - 29276, - 29277, - 29278, - 29279, - 29280, - 29281, - 29282, - 29283, - 29284, - 29285, - 29286, - 29287, - 29288, - 29289, - 29290, - 29291, - 29292, - 29293, - 29294, - 29295, - 29296, - 29297, - 29298, - 29299, - 29300, - 29301, - 29302, - 29303, - 29304, - 29305, - 29306, - 29307, - 29308, - 29309, - 29310, - 29311, - 29312, - 29313, - 29314, - 29315, - 29316, - 29317, - 29318, - 29319, - 29320, - 29321, - 29322, - 29323, - 29324, - 29325, - 29326, - 29327, - 29328, - 29329, - 29330, - 29331, - 29332, - 29333, - 29334, - 29335, - 29336, - 29337, - 29338, - 29339, - 29340, - 29341, - 29342, - 29343, - 29344, - 29345, - 29346, - 29347, - 29348, - 29349, - 29350, - 29351, - 29352, - 29353, - 29354, - 29355, - 29356, - 29357, - 29358, - 29359, - 29360, - 29361, - 29362, - 29363, - 29364, - 29365, - 29366, - 29367, - 29368, - 29369, - 29370, - 29371, - 29372, - 29373, - 29374, - 29375, - 29376, - 29377, - 29378, - 29379, - 29380, - 29381, - 29382, - 29383, - 29384, - 29385, - 29386, - 29387, - 29388, - 29389, - 29390, - 29391, - 29392, - 29393, - 29394, - 29395, - 29396, - 29397, - 29398, - 29399, - 29400, - 29401, - 29402, - 29403, - 29404, - 29405, - 29406, - 29407, - 29408, - 29409, - 29410, - 29411, - 29412, - 29413, - 29414, - 29415, - 29416, - 29417, - 29418, - 29419, - 29420, - 29421, - 29422, - 29423, - 29424, - 29425, - 29426, - 29427, - 29428, - 29429, - 29430, - 29431, - 29432, - 29433, - 29434, - 29435, - 29436, - 29437, - 29438, - 29439, - 29440, - 29441, - 29442, - 29443, - 29444, - 29445, - 29446, - 29447, - 29448, - 29449, - 29450, - 29451, - 29452, - 29453, - 29454, - 29455, - 29456, - 29457, - 29458, - 29459, - 29460, - 29461, - 29462, - 29463, - 29464, - 29465, - 29466, - 29467, - 29468, - 29469, - 29470, - 29471, - 29472, - 29473, - 29474, - 29475, - 29476, - 29477, - 29478, - 29479, - 29480, - 29481, - 29482, - 29483, - 29484, - 29485, - 29486, - 29487, - 29488, - 29489, - 29490, - 29491, - 29492, - 29493, - 29494, - 29495, - 29496, - 29497, - 29498, - 29499, - 29500, - 29501, - 29502, - 29503, - 29504, - 29505, - 29506, - 29507, - 29508, - 29509, - 29510, - 29511, - 29512, - 29513, - 29514, - 29515, - 29516, - 29517, - 29518, - 29519, - 29520, - 29521, - 29522, - 29523, - 29524, - 29525, - 29526, - 29527, - 29528, - 29529, - 29530, - 29531, - 29532, - 29533, - 29534, - 29535, - 29536, - 29537, - 29538, - 29539, - 29540, - 29541, - 29542, - 29543, - 29544, - 29545, - 29546, - 29547, - 29548, - 29549, - 29550, - 29551, - 29552, - 29553, - 29554, - 29555, - 29556, - 29557, - 29558, - 29559, - 29560, - 29561, - 29562, - 29563, - 29564, - 29565, - 29566, - 29567, - 29568, - 29569, - 29570, - 29571, - 29572, - 29573, - 29574, - 29575, - 29576, - 29577, - 29578, - 29579, - 29580, - 29581, - 29582, - 29583, - 29584, - 29585, - 29586, - 29587, - 29588, - 29589, - 29590, - 29591, - 29592, - 29593, - 29594, - 29595, - 29596, - 29597, - 29598, - 29599, - 29600, - 29601, - 29602, - 29603, - 29604, - 29605, - 29606, - 29607, - 29608, - 29609, - 29610, - 29611, - 29612, - 29613, - 29614, - 29615, - 29616, - 29617, - 29618, - 29619, - 29620, - 29621, - 29622, - 29623, - 29624, - 29625, - 29626, - 29627, - 29628, - 29629, - 29630, - 29631, - 29632, - 29633, - 29634, - 29635, - 29636, - 29637, - 29638, - 29639, - 29640, - 29641, - 29642, - 29643, - 29644, - 29645, - 29646, - 29647, - 29648, - 29649, - 29650, - 29651, - 29652, - 29653, - 29654, - 29655, - 29656, - 29657, - 29658, - 29659, - 29660, - 29661, - 29662, - 29663, - 29664, - 29665, - 29666, - 29667, - 29668, - 29669, - 29670, - 29671, - 29672, - 29673, - 29674, - 29675, - 29676, - 29677, - 29678, - 29679, - 29680, - 29681, - 29682, - 29683, - 29684, - 29685, - 29686, - 29687, - 29688, - 29689, - 29690, - 29691, - 29692, - 29693, - 29694, - 29695, - 29696, - 29697, - 29698, - 29699, - 29700, - 29701, - 29702, - 29703, - 29704, - 29705, - 29706, - 29707, - 29708, - 29709, - 29710, - 29711, - 29712, - 29713, - 29714, - 29715, - 29716, - 29717, - 29718, - 29719, - 29720, - 29721, - 29722, - 29723, - 29724, - 29725, - 29726, - 29727, - 29728, - 29729, - 29730, - 29731, - 29732, - 29733, - 29734, - 29735, - 29736, - 29737, - 29738, - 29739, - 29740, - 29741, - 29742, - 29743, - 29744, - 29745, - 29746, - 29747, - 29748, - 29749, - 29750, - 29751, - 29752, - 29753, - 29754, - 29755, - 29756, - 29757, - 29758, - 29759, - 29760, - 29761, - 29762, - 29763, - 29764, - 29765, - 29766, - 29767, - 29768, - 29769, - 29770, - 29771, - 29772, - 29773, - 29774, - 29775, - 29776, - 29777, - 29778, - 29779, - 29780, - 29781, - 29782, - 29783, - 29784, - 29785, - 29786, - 29787, - 29788, - 29789, - 29790, - 29791, - 29792, - 29793, - 29794, - 29795, - 29796, - 29797, - 29798, - 29799, - 29800, - 29801, - 29802, - 29803, - 29804, - 29805, - 29806, - 29807, - 29808, - 29809, - 29810, - 29811, - 29812, - 29813, - 29814, - 29815, - 29816, - 29817, - 29818, - 29819, - 29820, - 29821, - 29822, - 29823, - 29824, - 29825, - 29826, - 29827, - 29828, - 29829, - 29830, - 29831, - 29832, - 29833, - 29834, - 29835, - 29836, - 29837, - 29838, - 29839, - 29840, - 29841, - 29842, - 29843, - 29844, - 29845, - 29846, - 29847, - 29848, - 29849, - 29850, - 29851, - 29852, - 29853, - 29854, - 29855, - 29856, - 29857, - 29858, - 29859, - 29860, - 29861, - 29862, - 29863, - 29864, - 29865, - 29866, - 29867, - 29868, - 29869, - 29870, - 29871, - 29872, - 29873, - 29874, - 29875, - 29876, - 29877, - 29878, - 29879, - 29880, - 29881, - 29882, - 29883, - 29884, - 29885, - 29886, - 29887, - 29888, - 29889, - 29890, - 29891, - 29892, - 29893, - 29894, - 29895, - 29896, - 29897, - 29898, - 29899, - 29900, - 29901, - 29902, - 29903, - 29904, - 29905, - 29906, - 29907, - 29908, - 29909, - 29910, - 29911, - 29912, - 29913, - 29914, - 29915, - 29916, - 29917, - 29918, - 29919, - 29920, - 29921, - 29922, - 29923, - 29924, - 29925, - 29926, - 29927, - 29928, - 29929, - 29930, - 29931, - 29932, - 29933, - 29934, - 29935, - 29936, - 29937, - 29938, - 29939, - 29940, - 29941, - 29942, - 29943, - 29944, - 29945, - 29946, - 29947, - 29948, - 29949, - 29950, - 29951, - 29952, - 29953, - 29954, - 29955, - 29956, - 29957, - 29958, - 29959, - 29960, - 29961, - 29962, - 29963, - 29964, - 29965, - 29966, - 29967, - 29968, - 29969, - 29970, - 29971, - 29972, - 29973, - 29974, - 29975, - 29976, - 29977, - 29978, - 29979, - 29980, - 29981, - 29982, - 29983, - 29984, - 29985, - 29986, - 29987, - 29988, - 29989, - 29990, - 29991, - 29992, - 29993, - 29994, - 29995, - 29996, - 29997, - 29998, - 29999, - 30000, - 30001, - 30002, - 30003, - 30004, - 30005, - 30006, - 30007, - 30008, - 30009, - 30010, - 30011, - 30012, - 30013, - 30014, - 30015, - 30016, - 30017, - 30018, - 30019, - 30020, - 30021, - 30022, - 30023, - 30024, - 30025, - 30026, - 30027, - 30028, - 30029, - 30030, - 30031, - 30032, - 30033, - 30034, - 30035, - 30036, - 30037, - 30038, - 30039, - 30040, - 30041, - 30042, - 30043, - 30044, - 30045, - 30046, - 30047, - 30048, - 30049, - 30050, - 30051, - 30052, - 30053, - 30054, - 30055, - 30056, - 30057, - 30058, - 30059, - 30060, - 30061, - 30062, - 30063, - 30064, - 30065, - 30066, - 30067, - 30068, - 30069, - 30070, - 30071, - 30072, - 30073, - 30074, - 30075, - 30076, - 30077, - 30078, - 30079, - 30080, - 30081, - 30082, - 30083, - 30084, - 30085, - 30086, - 30087, - 30088, - 30089, - 30090, - 30091, - 30092, - 30093, - 30094, - 30095, - 30096, - 30097, - 30098, - 30099, - 30100, - 30101, - 30102, - 30103, - 30104, - 30105, - 30106, - 30107, - 30108, - 30109, - 30110, - 30111, - 30112, - 30113, - 30114, - 30115, - 30116, - 30117, - 30118, - 30119, - 30120, - 30121, - 30122, - 30123, - 30124, - 30125, - 30126, - 30127, - 30128, - 30129, - 30130, - 30131, - 30132, - 30133, - 30134, - 30135, - 30136, - 30137, - 30138, - 30139, - 30140, - 30141, - 30142, - 30143, - 30144, - 30145, - 30146, - 30147, - 30148, - 30149, - 30150, - 30151, - 30152, - 30153, - 30154, - 30155, - 30156, - 30157, - 30158, - 30159, - 30160, - 30161, - 30162, - 30163, - 30164, - 30165, - 30166, - 30167, - 30168, - 30169, - 30170, - 30171, - 30172, - 30173, - 30174, - 30175, - 30176, - 30177, - 30178, - 30179, - 30180, - 30181, - 30182, - 30183, - 30184, - 30185, - 30186, - 30187, - 30188, - 30189, - 30190, - 30191, - 30192, - 30193, - 30194, - 30195, - 30196, - 30197, - 30198, - 30199, - 30200, - 30201, - 30202, - 30203, - 30204, - 30205, - 30206, - 30207, - 30208, - 30209, - 30210, - 30211, - 30212, - 30213, - 30214, - 30215, - 30216, - 30217, - 30218, - 30219, - 30220, - 30221, - 30222, - 30223, - 30224, - 30225, - 30226, - 30227, - 30228, - 30229, - 30230, - 30231, - 30232, - 30233, - 30234, - 30235, - 30236, - 30237, - 30238, - 30239, - 30240, - 30241, - 30242, - 30243, - 30244, - 30245, - 30246, - 30247, - 30248, - 30249, - 30250, - 30251, - 30252, - 30253, - 30254, - 30255, - 30256, - 30257, - 30258, - 30259, - 30260, - 30261, - 30262, - 30263, - 30264, - 30265, - 30266, - 30267, - 30268, - 30269, - 30270, - 30271, - 30272, - 30273, - 30274, - 30275, - 30276, - 30277, - 30278, - 30279, - 30280, - 30281, - 30282, - 30283, - 30284, - 30285, - 30286, - 30287, - 30288, - 30289, - 30290, - 30291, - 30292, - 30293, - 30294, - 30295, - 30296, - 30297, - 30298, - 30299, - 30300, - 30301, - 30302, - 30303, - 30304, - 30305, - 30306, - 30307, - 30308, - 30309, - 30310, - 30311, - 30312, - 30313, - 30314, - 30315, - 30316, - 30317, - 30318, - 30319, - 30320, - 30321, - 30322, - 30323, - 30324, - 30325, - 30326, - 30327, - 30328, - 30329, - 30330, - 30331, - 30332, - 30333, - 30334, - 30335, - 30336, - 30337, - 30338, - 30339, - 30340, - 30341, - 30342, - 30343, - 30344, - 30345, - 30346, - 30347, - 30348, - 30349, - 30350, - 30351, - 30352, - 30353, - 30354, - 30355, - 30356, - 30357, - 30358, - 30359, - 30360, - 30361, - 30362, - 30363, - 30364, - 30365, - 30366, - 30367, - 30368, - 30369, - 30370, - 30371, - 30372, - 30373, - 30374, - 30375, - 30376, - 30377, - 30378, - 30379, - 30380, - 30381, - 30382, - 30383, - 30384, - 30385, - 30386, - 30387, - 30388, - 30389, - 30390, - 30391, - 30392, - 30393, - 30394, - 30395, - 30396, - 30397, - 30398, - 30399, - 30400, - 30401, - 30402, - 30403, - 30404, - 30405, - 30406, - 30407, - 30408, - 30409, - 30410, - 30411, - 30412, - 30413, - 30414, - 30415, - 30416, - 30417, - 30418, - 30419, - 30420, - 30421, - 30422, - 30423, - 30424, - 30425, - 30426, - 30427, - 30428, - 30429, - 30430, - 30431, - 30432, - 30433, - 30434, - 30435, - 30436, - 30437, - 30438, - 30439, - 30440, - 30441, - 30442, - 30443, - 30444, - 30445, - 30446, - 30447, - 30448, - 30449, - 30450, - 30451, - 30452, - 30453, - 30454, - 30455, - 30456, - 30457, - 30458, - 30459, - 30460, - 30461, - 30462, - 30463, - 30464, - 30465, - 30466, - 30467, - 30468, - 30469, - 30470, - 30471, - 30472, - 30473, - 30474, - 30475, - 30476, - 30477, - 30478, - 30479, - 30480, - 30481, - 30482, - 30483, - 30484, - 30485, - 30486, - 30487, - 30488, - 30489, - 30490, - 30491, - 30492, - 30493, - 30494, - 30495, - 30496, - 30497, - 30498, - 30499, - 30500, - 30501, - 30502, - 30503, - 30504, - 30505, - 30506, - 30507, - 30508, - 30509, - 30510, - 30511, - 30512, - 30513, - 30514, - 30515, - 30516, - 30517, - 30518, - 30519, - 30520, - 30521, - 30522, - 30523, - 30524, - 30525, - 30526, - 30527, - 30528, - 30529, - 30530, - 30531, - 30532, - 30533, - 30534, - 30535, - 30536, - 30537, - 30538, - 30539, - 30540, - 30541, - 30542, - 30543, - 30544, - 30545, - 30546, - 30547, - 30548, - 30549, - 30550, - 30551, - 30552, - 30553, - 30554, - 30555, - 30556, - 30557, - 30558, - 30559, - 30560, - 30561, - 30562, - 30563, - 30564, - 30565, - 30566, - 30567, - 30568, - 30569, - 30570, - 30571, - 30572, - 30573, - 30574, - 30575, - 30576, - 30577, - 30578, - 30579, - 30580, - 30581, - 30582, - 30583, - 30584, - 30585, - 30586, - 30587, - 30588, - 30589, - 30590, - 30591, - 30592, - 30593, - 30594, - 30595, - 30596, - 30597, - 30598, - 30599, - 30600, - 30601, - 30602, - 30603, - 30604, - 30605, - 30606, - 30607, - 30608, - 30609, - 30610, - 30611, - 30612, - 30613, - 30614, - 30615, - 30616, - 30617, - 30618, - 30619, - 30620, - 30621, - 30622, - 30623, - 30624, - 30625, - 30626, - 30627, - 30628, - 30629, - 30630, - 30631, - 30632, - 30633, - 30634, - 30635, - 30636, - 30637, - 30638, - 30639, - 30640, - 30641, - 30642, - 30643, - 30644, - 30645, - 30646, - 30647, - 30648, - 30649, - 30650, - 30651, - 30652, - 30653, - 30654, - 30655, - 30656, - 30657, - 30658, - 30659, - 30660, - 30661, - 30662, - 30663, - 30664, - 30665, - 30666, - 30667, - 30668, - 30669, - 30670, - 30671, - 30672, - 30673, - 30674, - 30675, - 30676, - 30677, - 30678, - 30679, - 30680, - 30681, - 30682, - 30683, - 30684, - 30685, - 30686, - 30687, - 30688, - 30689, - 30690, - 30691, - 30692, - 30693, - 30694, - 30695, - 30696, - 30697, - 30698, - 30699, - 30700, - 30701, - 30702, - 30703, - 30704, - 30705, - 30706, - 30707, - 30708, - 30709, - 30710, - 30711, - 30712, - 30713, - 30714, - 30715, - 30716, - 30717, - 30718, - 30719, - 30720, - 30721, - 30722, - 30723, - 30724, - 30725, - 30726, - 30727, - 30728, - 30729, - 30730, - 30731, - 30732, - 30733, - 30734, - 30735, - 30736, - 30737, - 30738, - 30739, - 30740, - 30741, - 30742, - 30743, - 30744, - 30745, - 30746, - 30747, - 30748, - 30749, - 30750, - 30751, - 30752, - 30753, - 30754, - 30755, - 30756, - 30757, - 30758, - 30759, - 30760, - 30761, - 30762, - 30763, - 30764, - 30765, - 30766, - 30767, - 30768, - 30769, - 30770, - 30771, - 30772, - 30773, - 30774, - 30775, - 30776, - 30777, - 30778, - 30779, - 30780, - 30781, - 30782, - 30783, - 30784, - 30785, - 30786, - 30787, - 30788, - 30789, - 30790, - 30791, - 30792, - 30793, - 30794, - 30795, - 30796, - 30797, - 30798, - 30799, - 30800, - 30801, - 30802, - 30803, - 30804, - 30805, - 30806, - 30807, - 30808, - 30809, - 30810, - 30811, - 30812, - 30813, - 30814, - 30815, - 30816, - 30817, - 30818, - 30819, - 30820, - 30821, - 30822, - 30823, - 30824, - 30825, - 30826, - 30827, - 30828, - 30829, - 30830, - 30831, - 30832, - 30833, - 30834, - 30835, - 30836, - 30837, - 30838, - 30839, - 30840, - 30841, - 30842, - 30843, - 30844, - 30845, - 30846, - 30847, - 30848, - 30849, - 30850, - 30851, - 30852, - 30853, - 30854, - 30855, - 30856, - 30857, - 30858, - 30859, - 30860, - 30861, - 30862, - 30863, - 30864, - 30865, - 30866, - 30867, - 30868, - 30869, - 30870, - 30871, - 30872, - 30873, - 30874, - 30875, - 30876, - 30877, - 30878, - 30879, - 30880, - 30881, - 30882, - 30883, - 30884, - 30885, - 30886, - 30887, - 30888, - 30889, - 30890, - 30891, - 30892, - 30893, - 30894, - 30895, - 30896, - 30897, - 30898, - 30899, - 30900, - 30901, - 30902, - 30903, - 30904, - 30905, - 30906, - 30907, - 30908, - 30909, - 30910, - 30911, - 30912, - 30913, - 30914, - 30915, - 30916, - 30917, - 30918, - 30919, - 30920, - 30921, - 30922, - 30923, - 30924, - 30925, - 30926, - 30927, - 30928, - 30929, - 30930, - 30931, - 30932, - 30933, - 30934, - 30935, - 30936, - 30937, - 30938, - 30939, - 30940, - 30941, - 30942, - 30943, - 30944, - 30945, - 30946, - 30947, - 30948, - 30949, - 30950, - 30951, - 30952, - 30953, - 30954, - 30955, - 30956, - 30957, - 30958, - 30959, - 30960, - 30961, - 30962, - 30963, - 30964, - 30965, - 30966, - 30967, - 30968, - 30969, - 30970, - 30971, - 30972, - 30973, - 30974, - 30975, - 30976, - 30977, - 30978, - 30979, - 30980, - 30981, - 30982, - 30983, - 30984, - 30985, - 30986, - 30987, - 30988, - 30989, - 30990, - 30991, - 30992, - 30993, - 30994, - 30995, - 30996, - 30997, - 30998, - 30999, - 31000, - 31001, - 31002, - 31003, - 31004, - 31005, - 31006, - 31007, - 31008, - 31009, - 31010, - 31011, - 31012, - 31013, - 31014, - 31015, - 31016, - 31017, - 31018, - 31019, - 31020, - 31021, - 31022, - 31023, - 31024, - 31025, - 31026, - 31027, - 31028, - 31029, - 31030, - 31031, - 31032, - 31033, - 31034, - 31035, - 31036, - 31037, - 31038, - 31039, - 31040, - 31041, - 31042, - 31043, - 31044, - 31045, - 31046, - 31047, - 31048, - 31049, - 31050, - 31051, - 31052, - 31053, - 31054, - 31055, - 31056, - 31057, - 31058, - 31059, - 31060, - 31061, - 31062, - 31063, - 31064, - 31065, - 31066, - 31067, - 31068, - 31069, - 31070, - 31071, - 31072, - 31073, - 31074, - 31075, - 31076, - 31077, - 31078, - 31079, - 31080, - 31081, - 31082, - 31083, - 31084, - 31085, - 31086, - 31087, - 31088, - 31089, - 31090, - 31091, - 31092, - 31093, - 31094, - 31095, - 31096, - 31097, - 31098, - 31099, - 31100, - 31101, - 31102, - 31103, - 31104, - 31105, - 31106, - 31107, - 31108, - 31109, - 31110, - 31111, - 31112, - 31113, - 31114, - 31115, - 31116, - 31117, - 31118, - 31119, - 31120, - 31121, - 31122, - 31123, - 31124, - 31125, - 31126, - 31127, - 31128, - 31129, - 31130, - 31131, - 31132, - 31133, - 31134, - 31135, - 31136, - 31137, - 31138, - 31139, - 31140, - 31141, - 31142, - 31143, - 31144, - 31145, - 31146, - 31147, - 31148, - 31149, - 31150, - 31151, - 31152, - 31153, - 31154, - 31155, - 31156, - 31157, - 31158, - 31159, - 31160, - 31161, - 31162, - 31163, - 31164, - 31165, - 31166, - 31167, - 31168, - 31169, - 31170, - 31171, - 31172, - 31173, - 31174, - 31175, - 31176, - 31177, - 31178, - 31179, - 31180, - 31181, - 31182, - 31183, - 31184, - 31185, - 31186, - 31187, - 31188, - 31189, - 31190, - 31191, - 31192, - 31193, - 31194, - 31195, - 31196, - 31197, - 31198, - 31199, - 31200, - 31201, - 31202, - 31203, - 31204, - 31205, - 31206, - 31207, - 31208, - 31209, - 31210, - 31211, - 31212, - 31213, - 31214, - 31215, - 31216, - 31217, - 31218, - 31219, - 31220, - 31221, - 31222, - 31223, - 31224, - 31225, - 31226, - 31227, - 31228, - 31229, - 31230, - 31231, - 31232, - 31233, - 31234, - 31235, - 31236, - 31237, - 31238, - 31239, - 31240, - 31241, - 31242, - 31243, - 31244, - 31245, - 31246, - 31247, - 31248, - 31249, - 31250, - 31251, - 31252, - 31253, - 31254, - 31255, - 31256, - 31257, - 31258, - 31259, - 31260, - 31261, - 31262, - 31263, - 31264, - 31265, - 31266, - 31267, - 31268, - 31269, - 31270, - 31271, - 31272, - 31273, - 31274, - 31275, - 31276, - 31277, - 31278, - 31279, - 31280, - 31281, - 31282, - 31283, - 31284, - 31285, - 31286, - 31287, - 31288, - 31289, - 31290, - 31291, - 31292, - 31293, - 31294, - 31295, - 31296, - 31297, - 31298, - 31299, - 31300, - 31301, - 31302, - 31303, - 31304, - 31305, - 31306, - 31307, - 31308, - 31309, - 31310, - 31311, - 31312, - 31313, - 31314, - 31315, - 31316, - 31317, - 31318, - 31319, - 31320, - 31321, - 31322, - 31323, - 31324, - 31325, - 31326, - 31327, - 31328, - 31329, - 31330, - 31331, - 31332, - 31333, - 31334, - 31335, - 31336, - 31337, - 31338, - 31339, - 31340, - 31341, - 31342, - 31343, - 31344, - 31345, - 31346, - 31347, - 31348, - 31349, - 31350, - 31351, - 31352, - 31353, - 31354, - 31355, - 31356, - 31357, - 31358, - 31359, - 31360, - 31361, - 31362, - 31363, - 31364, - 31365, - 31366, - 31367, - 31368, - 31369, - 31370, - 31371, - 31372, - 31373, - 31374, - 31375, - 31376, - 31377, - 31378, - 31379, - 31380, - 31381, - 31382, - 31383, - 31384, - 31385, - 31386, - 31387, - 31388, - 31389, - 31390, - 31391, - 31392, - 31393, - 31394, - 31395, - 31396, - 31397, - 31398, - 31399, - 31400, - 31401, - 31402, - 31403, - 31404, - 31405, - 31406, - 31407, - 31408, - 31409, - 31410, - 31411, - 31412, - 31413, - 31414, - 31415, - 31416, - 31417, - 31418, - 31419, - 31420, - 31421, - 31422, - 31423, - 31424, - 31425, - 31426, - 31427, - 31428, - 31429, - 31430, - 31431, - 31432, - 31433, - 31434, - 31435, - 31436, - 31437, - 31438, - 31439, - 31440, - 31441, - 31442, - 31443, - 31444, - 31445, - 31446, - 31447, - 31448, - 31449, - 31450, - 31451, - 31452, - 31453, - 31454, - 31455, - 31456, - 31457, - 31458, - 31459, - 31460, - 31461, - 31462, - 31463, - 31464, - 31465, - 31466, - 31467, - 31468, - 31469, - 31470, - 31471, - 31472, - 31473, - 31474, - 31475, - 31476, - 31477, - 31478, - 31479, - 31480, - 31481, - 31482, - 31483, - 31484, - 31485, - 31486, - 31487, - 31488, - 31489, - 31490, - 31491, - 31492, - 31493, - 31494, - 31495, - 31496, - 31497, - 31498, - 31499, - 31500, - 31501, - 31502, - 31503, - 31504, - 31505, - 31506, - 31507, - 31508, - 31509, - 31510, - 31511, - 31512, - 31513, - 31514, - 31515, - 31516, - 31517, - 31518, - 31519, - 31520, - 31521, - 31522, - 31523, - 31524, - 31525, - 31526, - 31527, - 31528, - 31529, - 31530, - 31531, - 31532, - 31533, - 31534, - 31535, - 31536, - 31537, - 31538, - 31539, - 31540, - 31541, - 31542, - 31543, - 31544, - 31545, - 31546, - 31547, - 31548, - 31549, - 31550, - 31551, - 31552, - 31553, - 31554, - 31555, - 31556, - 31557, - 31558, - 31559, - 31560, - 31561, - 31562, - 31563, - 31564, - 31565, - 31566, - 31567, - 31568, - 31569, - 31570, - 31571, - 31572, - 31573, - 31574, - 31575, - 31576, - 31577, - 31578, - 31579, - 31580, - 31581, - 31582, - 31583, - 31584, - 31585, - 31586, - 31587, - 31588, - 31589, - 31590, - 31591, - 31592, - 31593, - 31594, - 31595, - 31596, - 31597, - 31598, - 31599, - 31600, - 31601, - 31602, - 31603, - 31604, - 31605, - 31606, - 31607, - 31608, - 31609, - 31610, - 31611, - 31612, - 31613, - 31614, - 31615, - 31616, - 31617, - 31618, - 31619, - 31620, - 31621, - 31622, - 31623, - 31624, - 31625, - 31626, - 31627, - 31628, - 31629, - 31630, - 31631, - 31632, - 31633, - 31634, - 31635, - 31636, - 31637, - 31638, - 31639, - 31640, - 31641, - 31642, - 31643, - 31644, - 31645, - 31646, - 31647, - 31648, - 31649, - 31650, - 31651, - 31652, - 31653, - 31654, - 31655, - 31656, - 31657, - 31658, - 31659, - 31660, - 31661, - 31662, - 31663, - 31664, - 31665, - 31666, - 31667, - 31668, - 31669, - 31670, - 31671, - 31672, - 31673, - 31674, - 31675, - 31676, - 31677, - 31678, - 31679, - 31680, - 31681, - 31682, - 31683, - 31684, - 31685, - 31686, - 31687, - 31688, - 31689, - 31690, - 31691, - 31692, - 31693, - 31694, - 31695, - 31696, - 31697, - 31698, - 31699, - 31700, - 31701, - 31702, - 31703, - 31704, - 31705, - 31706, - 31707, - 31708, - 31709, - 31710, - 31711, - 31712, - 31713, - 31714, - 31715, - 31716, - 31717, - 31718, - 31719, - 31720, - 31721, - 31722, - 31723, - 31724, - 31725, - 31726, - 31727, - 31728, - 31729, - 31730, - 31731, - 31732, - 31733, - 31734, - 31735, - 31736, - 31737, - 31738, - 31739, - 31740, - 31741, - 31742, - 31743, - 31744, - 31745, - 31746, - 31747, - 31748, - 31749, - 31750, - 31751, - 31752, - 31753, - 31754, - 31755, - 31756, - 31757, - 31758, - 31759, - 31760, - 31761, - 31762, - 31763, - 31764, - 31765, - 31766, - 31767, - 31768, - 31769, - 31770, - 31771, - 31772, - 31773, - 31774, - 31775, - 31776, - 31777, - 31778, - 31779, - 31780, - 31781, - 31782, - 31783, - 31784, - 31785, - 31786, - 31787, - 31788, - 31789, - 31790, - 31791, - 31792, - 31793, - 31794, - 31795, - 31796, - 31797, - 31798, - 31799, - 31800, - 31801, - 31802, - 31803, - 31804, - 31805, - 31806, - 31807, - 31808, - 31809, - 31810, - 31811, - 31812, - 31813, - 31814, - 31815, - 31816, - 31817, - 31818, - 31819, - 31820, - 31821, - 31822, - 31823, - 31824, - 31825, - 31826, - 31827, - 31828, - 31829, - 31830, - 31831, - 31832, - 31833, - 31834, - 31835, - 31836, - 31837, - 31838, - 31839, - 31840, - 31841, - 31842, - 31843, - 31844, - 31845, - 31846, - 31847, - 31848, - 31849, - 31850, - 31851, - 31852, - 31853, - 31854, - 31855, - 31856, - 31857, - 31858, - 31859, - 31860, - 31861, - 31862, - 31863, - 31864, - 31865, - 31866, - 31867, - 31868, - 31869, - 31870, - 31871, - 31872, - 31873, - 31874, - 31875, - 31876, - 31877, - 31878, - 31879, - 31880, - 31881, - 31882, - 31883, - 31884, - 31885, - 31886, - 31887, - 31888, - 31889, - 31890, - 31891, - 31892, - 31893, - 31894, - 31895, - 31896, - 31897, - 31898, - 31899, - 31900, - 31901, - 31902, - 31903, - 31904, - 31905, - 31906, - 31907, - 31908, - 31909, - 31910, - 31911, - 31912, - 31913, - 31914, - 31915, - 31916, - 31917, - 31918, - 31919, - 31920, - 31921, - 31922, - 31923, - 31924, - 31925, - 31926, - 31927, - 31928, - 31929, - 31930, - 31931, - 31932, - 31933, - 31934, - 31935, - 31936, - 31937, - 31938, - 31939, - 31940, - 31941, - 31942, - 31943, - 31944, - 31945, - 31946, - 31947, - 31948, - 31949, - 31950, - 31951, - 31952, - 31953, - 31954, - 31955, - 31956, - 31957, - 31958, - 31959, - 31960, - 31961, - 31962, - 31963, - 31964, - 31965, - 31966, - 31967, - 31968, - 31969, - 31970, - 31971, - 31972, - 31973, - 31974, - 31975, - 31976, - 31977, - 31978, - 31979, - 31980, - 31981, - 31982, - 31983, - 31984, - 31985, - 31986, - 31987, - 31988, - 31989, - 31990, - 31991, - 31992, - 31993, - 31994, - 31995, - 31996, - 31997, - 31998, - 31999, - 32000, - 32001, - 32002, - 32003, - 32004, - 32005, - 32006, - 32007, - 32008, - 32009, - 32010, - 32011, - 32012, - 32013, - 32014, - 32015, - 32016, - 32017, - 32018, - 32019, - 32020, - 32021, - 32022, - 32023, - 32024, - 32025, - 32026, - 32027, - 32028, - 32029, - 32030, - 32031, - 32032, - 32033, - 32034, - 32035, - 32036, - 32037, - 32038, - 32039, - 32040, - 32041, - 32042, - 32043, - 32044, - 32045, - 32046, - 32047, - 32048, - 32049, - 32050, - 32051, - 32052, - 32053, - 32054, - 32055, - 32056, - 32057, - 32058, - 32059, - 32060, - 32061, - 32062, - 32063, - 32064, - 32065, - 32066, - 32067, - 32068, - 32069, - 32070, - 32071, - 32072, - 32073, - 32074, - 32075, - 32076, - 32077, - 32078, - 32079, - 32080, - 32081, - 32082, - 32083, - 32084, - 32085, - 32086, - 32087, - 32088, - 32089, - 32090, - 32091, - 32092, - 32093, - 32094, - 32095, - 32096, - 32097, - 32098, - 32099, - 32100, - 32101, - 32102, - 32103, - 32104, - 32105, - 32106, - 32107, - 32108, - 32109, - 32110, - 32111, - 32112, - 32113, - 32114, - 32115, - 32116, - 32117, - 32118, - 32119, - 32120, - 32121, - 32122, - 32123, - 32124, - 32125, - 32126, - 32127, - 32128, - 32129, - 32130, - 32131, - 32132, - 32133, - 32134, - 32135, - 32136, - 32137, - 32138, - 32139, - 32140, - 32141, - 32142, - 32143, - 32144, - 32145, - 32146, - 32147, - 32148, - 32149, - 32150, - 32151, - 32152, - 32153, - 32154, - 32155, - 32156, - 32157, - 32158, - 32159, - 32160, - 32161, - 32162, - 32163, - 32164, - 32165, - 32166, - 32167, - 32168, - 32169, - 32170, - 32171, - 32172, - 32173, - 32174, - 32175, - 32176, - 32177, - 32178, - 32179, - 32180, - 32181, - 32182, - 32183, - 32184, - 32185, - 32186, - 32187, - 32188, - 32189, - 32190, - 32191, - 32192, - 32193, - 32194, - 32195, - 32196, - 32197, - 32198, - 32199, - 32200, - 32201, - 32202, - 32203, - 32204, - 32205, - 32206, - 32207, - 32208, - 32209, - 32210, - 32211, - 32212, - 32213, - 32214, - 32215, - 32216, - 32217, - 32218, - 32219, - 32220, - 32221, - 32222, - 32223, - 32224, - 32225, - 32226, - 32227, - 32228, - 32229, - 32230, - 32231, - 32232, - 32233, - 32234, - 32235, - 32236, - 32237, - 32238, - 32239, - 32240, - 32241, - 32242, - 32243, - 32244, - 32245, - 32246, - 32247, - 32248, - 32249, - 32250, - 32251, - 32252, - 32253, - 32254, - 32255, - 32256, - 32257, - 32258, - 32259, - 32260, - 32261, - 32262, - 32263, - 32264, - 32265, - 32266, - 32267, - 32268, - 32269, - 32270, - 32271, - 32272, - 32273, - 32274, - 32275, - 32276, - 32277, - 32278, - 32279, - 32280, - 32281, - 32282, - 32283, - 32284, - 32285, - 32286, - 32287, - 32288, - 32289, - 32290, - 32291, - 32292, - 32293, - 32294, - 32295, - 32296, - 32297, - 32298, - 32299, - 32300, - 32301, - 32302, - 32303, - 32304, - 32305, - 32306, - 32307, - 32308, - 32309, - 32310, - 32311, - 32312, - 32313, - 32314, - 32315, - 32316, - 32317, - 32318, - 32319, - 32320, - 32321, - 32322, - 32323, - 32324, - 32325, - 32326, - 32327, - 32328, - 32329, - 32330, - 32331, - 32332, - 32333, - 32334, - 32335, - 32336, - 32337, - 32338, - 32339, - 32340, - 32341, - 32342, - 32343, - 32344, - 32345, - 32346, - 32347, - 32348, - 32349, - 32350, - 32351, - 32352, - 32353, - 32354, - 32355, - 32356, - 32357, - 32358, - 32359, - 32360, - 32361, - 32362, - 32363, - 32364, - 32365, - 32366, - 32367, - 32368, - 32369, - 32370, - 32371, - 32372, - 32373, - 32374, - 32375, - 32376, - 32377, - 32378, - 32379, - 32380, - 32381, - 32382, - 32383, - 32384, - 32385, - 32386, - 32387, - 32388, - 32389, - 32390, - 32391, - 32392, - 32393, - 32394, - 32395, - 32396, - 32397, - 32398, - 32399, - 32400, - 32401, - 32402, - 32403, - 32404, - 32405, - 32406, - 32407, - 32408, - 32409, - 32410, - 32411, - 32412, - 32413, - 32414, - 32415, - 32416, - 32417, - 32418, - 32419, - 32420, - 32421, - 32422, - 32423, - 32424, - 32425, - 32426, - 32427, - 32428, - 32429, - 32430, - 32431, - 32432, - 32433, - 32434, - 32435, - 32436, - 32437, - 32438, - 32439, - 32440, - 32441, - 32442, - 32443, - 32444, - 32445, - 32446, - 32447, - 32448, - 32449, - 32450, - 32451, - 32452, - 32453, - 32454, - 32455, - 32456, - 32457, - 32458, - 32459, - 32460, - 32461, - 32462, - 32463, - 32464, - 32465, - 32466, - 32467, - 32468, - 32469, - 32470, - 32471, - 32472, - 32473, - 32474, - 32475, - 32476, - 32477, - 32478, - 32479, - 32480, - 32481, - 32482, - 32483, - 32484, - 32485, - 32486, - 32487, - 32488, - 32489, - 32490, - 32491, - 32492, - 32493, - 32494, - 32495, - 32496, - 32497, - 32498, - 32499, - 32500, - 32501, - 32502, - 32503, - 32504, - 32505, - 32506, - 32507, - 32508, - 32509, - 32510, - 32511, - 32512, - 32513, - 32514, - 32515, - 32516, - 32517, - 32518, - 32519, - 32520, - 32521, - 32522, - 32523, - 32524, - 32525, - 32526, - 32527, - 32528, - 32529, - 32530, - 32531, - 32532, - 32533, - 32534, - 32535, - 32536, - 32537, - 32538, - 32539, - 32540, - 32541, - 32542, - 32543, - 32544, - 32545, - 32546, - 32547, - 32548, - 32549, - 32550, - 32551, - 32552, - 32553, - 32554, - 32555, - 32556, - 32557, - 32558, - 32559, - 32560, - 32561, - 32562, - 32563, - 32564, - 32565, - 32566, - 32567, - 32568, - 32569, - 32570, - 32571, - 32572, - 32573, - 32574, - 32575, - 32576, - 32577, - 32578, - 32579, - 32580, - 32581, - 32582, - 32583, - 32584, - 32585, - 32586, - 32587, - 32588, - 32589, - 32590, - 32591, - 32592, - 32593, - 32594, - 32595, - 32596, - 32597, - 32598, - 32599, - 32600, - 32601, - 32602, - 32603, - 32604, - 32605, - 32606, - 32607, - 32608, - 32609, - 32610, - 32611, - 32612, - 32613, - 32614, - 32615, - 32616, - 32617, - 32618, - 32619, - 32620, - 32621, - 32622, - 32623, - 32624, - 32625, - 32626, - 32627, - 32628, - 32629, - 32630, - 32631, - 32632, - 32633, - 32634, - 32635, - 32636, - 32637, - 32638, - 32639, - 32640, - 32641, - 32642, - 32643, - 32644, - 32645, - 32646, - 32647, - 32648, - 32649, - 32650, - 32651, - 32652, - 32653, - 32654, - 32655, - 32656, - 32657, - 32658, - 32659, - 32660, - 32661, - 32662, - 32663, - 32664, - 32665, - 32666, - 32667, - 32668, - 32669, - 32670, - 32671, - 32672, - 32673, - 32674, - 32675, - 32676, - 32677, - 32678, - 32679, - 32680, - 32681, - 32682, - 32683, - 32684, - 32685, - 32686, - 32687, - 32688, - 32689, - 32690, - 32691, - 32692, - 32693, - 32694, - 32695, - 32696, - 32697, - 32698, - 32699, - 32700, - 32701, - 32702, - 32703, - 32704, - 32705, - 32706, - 32707, - 32708, - 32709, - 32710, - 32711, - 32712, - 32713, - 32714, - 32715, - 32716, - 32717, - 32718, - 32719, - 32720, - 32721, - 32722, - 32723, - 32724, - 32725, - 32726, - 32727, - 32728, - 32729, - 32730, - 32731, - 32732, - 32733, - 32734, - 32735, - 32736, - 32737, - 32738, - 32739, - 32740, - 32741, - 32742, - 32743, - 32744, - 32745, - 32746, - 32747, - 32748, - 32749, - 32750, - 32751, - 32752, - 32753, - 32754, - 32755, - 32756, - 32757, - 32758, - 32759, - 32760, - 32761, - 32762, - 32763, - 32764, - 32765, - 32766, - 32767, - 32768, - 32769, - 32770, - 32771, - 32772, - 32773, - 32774, - 32775, - 32776, - 32777, - 32778, - 32779, - 32780, - 32781, - 32782, - 32783, - 32784, - 32785, - 32786, - 32787, - 32788, - 32789, - 32790, - 32791, - 32792, - 32793, - 32794, - 32795, - 32796, - 32797, - 32798, - 32799, - 32800, - 32801, - 32802, - 32803, - 32804, - 32805, - 32806, - 32807, - 32808, - 32809, - 32810, - 32811, - 32812, - 32813, - 32814, - 32815, - 32816, - 32817, - 32818, - 32819, - 32820, - 32821, - 32822, - 32823, - 32824, - 32825, - 32826, - 32827, - 32828, - 32829, - 32830, - 32831, - 32832, - 32833, - 32834, - 32835, - 32836, - 32837, - 32838, - 32839, - 32840, - 32841, - 32842, - 32843, - 32844, - 32845, - 32846, - 32847, - 32848, - 32849, - 32850, - 32851, - 32852, - 32853, - 32854, - 32855, - 32856, - 32857, - 32858, - 32859, - 32860, - 32861, - 32862, - 32863, - 32864, - 32865, - 32866, - 32867, - 32868, - 32869, - 32870, - 32871, - 32872, - 32873, - 32874, - 32875, - 32876, - 32877, - 32878, - 32879, - 32880, - 32881, - 32882, - 32883, - 32884, - 32885, - 32886, - 32887, - 32888, - 32889, - 32890, - 32891, - 32892, - 32893, - 32894, - 32895, - 32896, - 32897, - 32898, - 32899, - 32900, - 32901, - 32902, - 32903, - 32904, - 32905, - 32906, - 32907, - 32908, - 32909, - 32910, - 32911, - 32912, - 32913, - 32914, - 32915, - 32916, - 32917, - 32918, - 32919, - 32920, - 32921, - 32922, - 32923, - 32924, - 32925, - 32926, - 32927, - 32928, - 32929, - 32930, - 32931, - 32932, - 32933, - 32934, - 32935, - 32936, - 32937, - 32938, - 32939, - 32940, - 32941, - 32942, - 32943, - 32944, - 32945, - 32946, - 32947, - 32948, - 32949, - 32950, - 32951, - 32952, - 32953, - 32954, - 32955, - 32956, - 32957, - 32958, - 32959, - 32960, - 32961, - 32962, - 32963, - 32964, - 32965, - 32966, - 32967, - 32968, - 32969, - 32970, - 32971, - 32972, - 32973, - 32974, - 32975, - 32976, - 32977, - 32978, - 32979, - 32980, - 32981, - 32982, - 32983, - 32984, - 32985, - 32986, - 32987, - 32988, - 32989, - 32990, - 32991, - 32992, - 32993, - 32994, - 32995, - 32996, - 32997, - 32998, - 32999, - 33000, - 33001, - 33002, - 33003, - 33004, - 33005, - 33006, - 33007, - 33008, - 33009, - 33010, - 33011, - 33012, - 33013, - 33014, - 33015, - 33016, - 33017, - 33018, - 33019, - 33020, - 33021, - 33022, - 33023, - 33024, - 33025, - 33026, - 33027, - 33028, - 33029, - 33030, - 33031, - 33032, - 33033, - 33034, - 33035, - 33036, - 33037, - 33038, - 33039, - 33040, - 33041, - 33042, - 33043, - 33044, - 33045, - 33046, - 33047, - 33048, - 33049, - 33050, - 33051, - 33052, - 33053, - 33054, - 33055, - 33056, - 33057, - 33058, - 33059, - 33060, - 33061, - 33062, - 33063, - 33064, - 33065, - 33066, - 33067, - 33068, - 33069, - 33070, - 33071, - 33072, - 33073, - 33074, - 33075, - 33076, - 33077, - 33078, - 33079, - 33080, - 33081, - 33082, - 33083, - 33084, - 33085, - 33086, - 33087, - 33088, - 33089, - 33090, - 33091, - 33092, - 33093, - 33094, - 33095, - 33096, - 33097, - 33098, - 33099, - 33100, - 33101, - 33102, - 33103, - 33104, - 33105, - 33106, - 33107, - 33108, - 33109, - 33110, - 33111, - 33112, - 33113, - 33114, - 33115, - 33116, - 33117, - 33118, - 33119, - 33120, - 33121, - 33122, - 33123, - 33124, - 33125, - 33126, - 33127, - 33128, - 33129, - 33130, - 33131, - 33132, - 33133, - 33134, - 33135, - 33136, - 33137, - 33138, - 33139, - 33140, - 33141, - 33142, - 33143, - 33144, - 33145, - 33146, - 33147, - 33148, - 33149, - 33150, - 33151, - 33152, - 33153, - 33154, - 33155, - 33156, - 33157, - 33158, - 33159, - 33160, - 33161, - 33162, - 33163, - 33164, - 33165, - 33166, - 33167, - 33168, - 33169, - 33170, - 33171, - 33172, - 33173, - 33174, - 33175, - 33176, - 33177, - 33178, - 33179, - 33180, - 33181, - 33182, - 33183, - 33184, - 33185, - 33186, - 33187, - 33188, - 33189, - 33190, - 33191, - 33192, - 33193, - 33194, - 33195, - 33196, - 33197, - 33198, - 33199, - 33200, - 33201, - 33202, - 33203, - 33204, - 33205, - 33206, - 33207, - 33208, - 33209, - 33210, - 33211, - 33212, - 33213, - 33214, - 33215, - 33216, - 33217, - 33218, - 33219, - 33220, - 33221, - 33222, - 33223, - 33224, - 33225, - 33226, - 33227, - 33228, - 33229, - 33230, - 33231, - 33232, - 33233, - 33234, - 33235, - 33236, - 33237, - 33238, - 33239, - 33240, - 33241, - 33242, - 33243, - 33244, - 33245, - 33246, - 33247, - 33248, - 33249, - 33250, - 33251, - 33252, - 33253, - 33254, - 33255, - 33256, - 33257, - 33258, - 33259, - 33260, - 33261, - 33262, - 33263, - 33264, - 33265, - 33266, - 33267, - 33268, - 33269, - 33270, - 33271, - 33272, - 33273, - 33274, - 33275, - 33276, - 33277, - 33278, - 33279, - 33280, - 33281, - 33282, - 33283, - 33284, - 33285, - 33286, - 33287, - 33288, - 33289, - 33290, - 33291, - 33292, - 33293, - 33294, - 33295, - 33296, - 33297, - 33298, - 33299, - 33300, - 33301, - 33302, - 33303, - 33304, - 33305, - 33306, - 33307, - 33308, - 33309, - 33310, - 33311, - 33312, - 33313, - 33314, - 33315, - 33316, - 33317, - 33318, - 33319, - 33320, - 33321, - 33322, - 33323, - 33324, - 33325, - 33326, - 33327, - 33328, - 33329, - 33330, - 33331, - 33332, - 33333, - 33334, - 33335, - 33336, - 33337, - 33338, - 33339, - 33340, - 33341, - 33342, - 33343, - 33344, - 33345, - 33346, - 33347, - 33348, - 33349, - 33350, - 33351, - 33352, - 33353, - 33354, - 33355, - 33356, - 33357, - 33358, - 33359, - 33360, - 33361, - 33362, - 33363, - 33364, - 33365, - 33366, - 33367, - 33368, - 33369, - 33370, - 33371, - 33372, - 33373, - 33374, - 33375, - 33376, - 33377, - 33378, - 33379, - 33380, - 33381, - 33382, - 33383, - 33384, - 33385, - 33386, - 33387, - 33388, - 33389, - 33390, - 33391, - 33392, - 33393, - 33394, - 33395, - 33396, - 33397, - 33398, - 33399, - 33400, - 33401, - 33402, - 33403, - 33404, - 33405, - 33406, - 33407, - 33408, - 33409, - 33410, - 33411, - 33412, - 33413, - 33414, - 33415, - 33416, - 33417, - 33418, - 33419, - 33420, - 33421, - 33422, - 33423, - 33424, - 33425, - 33426, - 33427, - 33428, - 33429, - 33430, - 33431, - 33432, - 33433, - 33434, - 33435, - 33436, - 33437, - 33438, - 33439, - 33440, - 33441, - 33442, - 33443, - 33444, - 33445, - 33446, - 33447, - 33448, - 33449, - 33450, - 33451, - 33452, - 33453, - 33454, - 33455, - 33456, - 33457, - 33458, - 33459, - 33460, - 33461, - 33462, - 33463, - 33464, - 33465, - 33466, - 33467, - 33468, - 33469, - 33470, - 33471, - 33472, - 33473, - 33474, - 33475, - 33476, - 33477, - 33478, - 33479, - 33480, - 33481, - 33482, - 33483, - 33484, - 33485, - 33486, - 33487, - 33488, - 33489, - 33490, - 33491, - 33492, - 33493, - 33494, - 33495, - 33496, - 33497, - 33498, - 33499, - 33500, - 33501, - 33502, - 33503, - 33504, - 33505, - 33506, - 33507, - 33508, - 33509, - 33510, - 33511, - 33512, - 33513, - 33514, - 33515, - 33516, - 33517, - 33518, - 33519, - 33520, - 33521, - 33522, - 33523, - 33524, - 33525, - 33526, - 33527, - 33528, - 33529, - 33530, - 33531, - 33532, - 33533, - 33534, - 33535, - 33536, - 33537, - 33538, - 33539, - 33540, - 33541, - 33542, - 33543, - 33544, - 33545, - 33546, - 33547, - 33548, - 33549, - 33550, - 33551, - 33552, - 33553, - 33554, - 33555, - 33556, - 33557, - 33558, - 33559, - 33560, - 33561, - 33562, - 33563, - 33564, - 33565, - 33566, - 33567, - 33568, - 33569, - 33570, - 33571, - 33572, - 33573, - 33574, - 33575, - 33576, - 33577, - 33578, - 33579, - 33580, - 33581, - 33582, - 33583, - 33584, - 33585, - 33586, - 33587, - 33588, - 33589, - 33590, - 33591, - 33592, - 33593, - 33594, - 33595, - 33596, - 33597, - 33598, - 33599, - 33600, - 33601, - 33602, - 33603, - 33604, - 33605, - 33606, - 33607, - 33608, - 33609, - 33610, - 33611, - 33612, - 33613, - 33614, - 33615, - 33616, - 33617, - 33618, - 33619, - 33620, - 33621, - 33622, - 33623, - 33624, - 33625, - 33626, - 33627, - 33628, - 33629, - 33630, - 33631, - 33632, - 33633, - 33634, - 33635, - 33636, - 33637, - 33638, - 33639, - 33640, - 33641, - 33642, - 33643, - 33644, - 33645, - 33646, - 33647, - 33648, - 33649, - 33650, - 33651, - 33652, - 33653, - 33654, - 33655, - 33656, - 33657, - 33658, - 33659, - 33660, - 33661, - 33662, - 33663, - 33664, - 33665, - 33666, - 33667, - 33668, - 33669, - 33670, - 33671, - 33672, - 33673, - 33674, - 33675, - 33676, - 33677, - 33678, - 33679, - 33680, - 33681, - 33682, - 33683, - 33684, - 33685, - 33686, - 33687, - 33688, - 33689, - 33690, - 33691, - 33692, - 33693, - 33694, - 33695, - 33696, - 33697, - 33698, - 33699, - 33700, - 33701, - 33702, - 33703, - 33704, - 33705, - 33706, - 33707, - 33708, - 33709, - 33710, - 33711, - 33712, - 33713, - 33714, - 33715, - 33716, - 33717, - 33718, - 33719, - 33720, - 33721, - 33722, - 33723, - 33724, - 33725, - 33726, - 33727, - 33728, - 33729, - 33730, - 33731, - 33732, - 33733, - 33734, - 33735, - 33736, - 33737, - 33738, - 33739, - 33740, - 33741, - 33742, - 33743, - 33744, - 33745, - 33746, - 33747, - 33748, - 33749, - 33750, - 33751, - 33752, - 33753, - 33754, - 33755, - 33756, - 33757, - 33758, - 33759, - 33760, - 33761, - 33762, - 33763, - 33764, - 33765, - 33766, - 33767, - 33768, - 33769, - 33770, - 33771, - 33772, - 33773, - 33774, - 33775, - 33776, - 33777, - 33778, - 33779, - 33780, - 33781, - 33782, - 33783, - 33784, - 33785, - 33786, - 33787, - 33788, - 33789, - 33790, - 33791, - 33792, - 33793, - 33794, - 33795, - 33796, - 33797, - 33798, - 33799, - 33800, - 33801, - 33802, - 33803, - 33804, - 33805, - 33806, - 33807, - 33808, - 33809, - 33810, - 33811, - 33812, - 33813, - 33814, - 33815, - 33816, - 33817, - 33818, - 33819, - 33820, - 33821, - 33822, - 33823, - 33824, - 33825, - 33826, - 33827, - 33828, - 33829, - 33830, - 33831, - 33832, - 33833, - 33834, - 33835, - 33836, - 33837, - 33838, - 33839, - 33840, - 33841, - 33842, - 33843, - 33844, - 33845, - 33846, - 33847, - 33848, - 33849, - 33850, - 33851, - 33852, - 33853, - 33854, - 33855, - 33856, - 33857, - 33858, - 33859, - 33860, - 33861, - 33862, - 33863, - 33864, - 33865, - 33866, - 33867, - 33868, - 33869, - 33870, - 33871, - 33872, - 33873, - 33874, - 33875, - 33876, - 33877, - 33878, - 33879, - 33880, - 33881, - 33882, - 33883, - 33884, - 33885, - 33886, - 33887, - 33888, - 33889, - 33890, - 33891, - 33892, - 33893, - 33894, - 33895, - 33896, - 33897, - 33898, - 33899, - 33900, - 33901, - 33902, - 33903, - 33904, - 33905, - 33906, - 33907, - 33908, - 33909, - 33910, - 33911, - 33912, - 33913, - 33914, - 33915, - 33916, - 33917, - 33918, - 33919, - 33920, - 33921, - 33922, - 33923, - 33924, - 33925, - 33926, - 33927, - 33928, - 33929, - 33930, - 33931, - 33932, - 33933, - 33934, - 33935, - 33936, - 33937, - 33938, - 33939, - 33940, - 33941, - 33942, - 33943, - 33944, - 33945, - 33946, - 33947, - 33948, - 33949, - 33950, - 33951, - 33952, - 33953, - 33954, - 33955, - 33956, - 33957, - 33958, - 33959, - 33960, - 33961, - 33962, - 33963, - 33964, - 33965, - 33966, - 33967, - 33968, - 33969, - 33970, - 33971, - 33972, - 33973, - 33974, - 33975, - 33976, - 33977, - 33978, - 33979, - 33980, - 33981, - 33982, - 33983, - 33984, - 33985, - 33986, - 33987, - 33988, - 33989, - 33990, - 33991, - 33992, - 33993, - 33994, - 33995, - 33996, - 33997, - 33998, - 33999, - 34000, - 34001, - 34002, - 34003, - 34004, - 34005, - 34006, - 34007, - 34008, - 34009, - 34010, - 34011, - 34012, - 34013, - 34014, - 34015, - 34016, - 34017, - 34018, - 34019, - 34020, - 34021, - 34022, - 34023, - 34024, - 34025, - 34026, - 34027, - 34028, - 34029, - 34030, - 34031, - 34032, - 34033, - 34034, - 34035, - 34036, - 34037, - 34038, - 34039, - 34040, - 34041, - 34042, - 34043, - 34044, - 34045, - 34046, - 34047, - 34048, - 34049, - 34050, - 34051, - 34052, - 34053, - 34054, - 34055, - 34056, - 34057, - 34058, - 34059, - 34060, - 34061, - 34062, - 34063, - 34064, - 34065, - 34066, - 34067, - 34068, - 34069, - 34070, - 34071, - 34072, - 34073, - 34074, - 34075, - 34076, - 34077, - 34078, - 34079, - 34080, - 34081, - 34082, - 34083, - 34084, - 34085, - 34086, - 34087, - 34088, - 34089, - 34090, - 34091, - 34092, - 34093, - 34094, - 34095, - 34096, - 34097, - 34098, - 34099, - 34100, - 34101, - 34102, - 34103, - 34104, - 34105, - 34106, - 34107, - 34108, - 34109, - 34110, - 34111, - 34112, - 34113, - 34114, - 34115, - 34116, - 34117, - 34118, - 34119, - 34120, - 34121, - 34122, - 34123, - 34124, - 34125, - 34126, - 34127, - 34128, - 34129, - 34130, - 34131, - 34132, - 34133, - 34134, - 34135, - 34136, - 34137, - 34138, - 34139, - 34140, - 34141, - 34142, - 34143, - 34144, - 34145, - 34146, - 34147, - 34148, - 34149, - 34150, - 34151, - 34152, - 34153, - 34154, - 34155, - 34156, - 34157, - 34158, - 34159, - 34160, - 34161, - 34162, - 34163, - 34164, - 34165, - 34166, - 34167, - 34168, - 34169, - 34170, - 34171, - 34172, - 34173, - 34174, - 34175, - 34176, - 34177, - 34178, - 34179, - 34180, - 34181, - 34182, - 34183, - 34184, - 34185, - 34186, - 34187, - 34188, - 34189, - 34190, - 34191, - 34192, - 34193, - 34194, - 34195, - 34196, - 34197, - 34198, - 34199, - 34200, - 34201, - 34202, - 34203, - 34204, - 34205, - 34206, - 34207, - 34208, - 34209, - 34210, - 34211, - 34212, - 34213, - 34214, - 34215, - 34216, - 34217, - 34218, - 34219, - 34220, - 34221, - 34222, - 34223, - 34224, - 34225, - 34226, - 34227, - 34228, - 34229, - 34230, - 34231, - 34232, - 34233, - 34234, - 34235, - 34236, - 34237, - 34238, - 34239, - 34240, - 34241, - 34242, - 34243, - 34244, - 34245, - 34246, - 34247, - 34248, - 34249, - 34250, - 34251, - 34252, - 34253, - 34254, - 34255, - 34256, - 34257, - 34258, - 34259, - 34260, - 34261, - 34262, - 34263, - 34264, - 34265, - 34266, - 34267, - 34268, - 34269, - 34270, - 34271, - 34272, - 34273, - 34274, - 34275, - 34276, - 34277, - 34278, - 34279, - 34280, - 34281, - 34282, - 34283, - 34284, - 34285, - 34286, - 34287, - 34288, - 34289, - 34290, - 34291, - 34292, - 34293, - 34294, - 34295, - 34296, - 34297, - 34298, - 34299, - 34300, - 34301, - 34302, - 34303, - 34304, - 34305, - 34306, - 34307, - 34308, - 34309, - 34310, - 34311, - 34312, - 34313, - 34314, - 34315, - 34316, - 34317, - 34318, - 34319, - 34320, - 34321, - 34322, - 34323, - 34324, - 34325, - 34326, - 34327, - 34328, - 34329, - 34330, - 34331, - 34332, - 34333, - 34334, - 34335, - 34336, - 34337, - 34338, - 34339, - 34340, - 34341, - 34342, - 34343, - 34344, - 34345, - 34346, - 34347, - 34348, - 34349, - 34350, - 34351, - 34352, - 34353, - 34354, - 34355, - 34356, - 34357, - 34358, - 34359, - 34360, - 34361, - 34362, - 34363, - 34364, - 34365, - 34366, - 34367, - 34368, - 34369, - 34370, - 34371, - 34372, - 34373, - 34374, - 34375, - 34376, - 34377, - 34378, - 34379, - 34380, - 34381, - 34382, - 34383, - 34384, - 34385, - 34386, - 34387, - 34388, - 34389, - 34390, - 34391, - 34392, - 34393, - 34394, - 34395, - 34396, - 34397, - 34398, - 34399, - 34400, - 34401, - 34402, - 34403, - 34404, - 34405, - 34406, - 34407, - 34408, - 34409, - 34410, - 34411, - 34412, - 34413, - 34414, - 34415, - 34416, - 34417, - 34418, - 34419, - 34420, - 34421, - 34422, - 34423, - 34424, - 34425, - 34426, - 34427, - 34428, - 34429, - 34430, - 34431, - 34432, - 34433, - 34434, - 34435, - 34436, - 34437, - 34438, - 34439, - 34440, - 34441, - 34442, - 34443, - 34444, - 34445, - 34446, - 34447, - 34448, - 34449, - 34450, - 34451, - 34452, - 34453, - 34454, - 34455, - 34456, - 34457, - 34458, - 34459, - 34460, - 34461, - 34462, - 34463, - 34464, - 34465, - 34466, - 34467, - 34468, - 34469, - 34470, - 34471, - 34472, - 34473, - 34474, - 34475, - 34476, - 34477, - 34478, - 34479, - 34480, - 34481, - 34482, - 34483, - 34484, - 34485, - 34486, - 34487, - 34488, - 34489, - 34490, - 34491, - 34492, - 34493, - 34494, - 34495, - 34496, - 34497, - 34498, - 34499, - 34500, - 34501, - 34502, - 34503, - 34504, - 34505, - 34506, - 34507, - 34508, - 34509, - 34510, - 34511, - 34512, - 34513, - 34514, - 34515, - 34516, - 34517, - 34518, - 34519, - 34520, - 34521, - 34522, - 34523, - 34524, - 34525, - 34526, - 34527, - 34528, - 34529, - 34530, - 34531, - 34532, - 34533, - 34534, - 34535, - 34536, - 34537, - 34538, - 34539, - 34540, - 34541, - 34542, - 34543, - 34544, - 34545, - 34546, - 34547, - 34548, - 34549, - 34550, - 34551, - 34552, - 34553, - 34554, - 34555, - 34556, - 34557, - 34558, - 34559, - 34560, - 34561, - 34562, - 34563, - 34564, - 34565, - 34566, - 34567, - 34568, - 34569, - 34570, - 34571, - 34572, - 34573, - 34574, - 34575, - 34576, - 34577, - 34578, - 34579, - 34580, - 34581, - 34582, - 34583, - 34584, - 34585, - 34586, - 34587, - 34588, - 34589, - 34590, - 34591, - 34592, - 34593, - 34594, - 34595, - 34596, - 34597, - 34598, - 34599, - 34600, - 34601, - 34602, - 34603, - 34604, - 34605, - 34606, - 34607, - 34608, - 34609, - 34610, - 34611, - 34612, - 34613, - 34614, - 34615, - 34616, - 34617, - 34618, - 34619, - 34620, - 34621, - 34622, - 34623, - 34624, - 34625, - 34626, - 34627, - 34628, - 34629, - 34630, - 34631, - 34632, - 34633, - 34634, - 34635, - 34636, - 34637, - 34638, - 34639, - 34640, - 34641, - 34642, - 34643, - 34644, - 34645, - 34646, - 34647, - 34648, - 34649, - 34650, - 34651, - 34652, - 34653, - 34654, - 34655, - 34656, - 34657, - 34658, - 34659, - 34660, - 34661, - 34662, - 34663, - 34664, - 34665, - 34666, - 34667, - 34668, - 34669, - 34670, - 34671, - 34672, - 34673, - 34674, - 34675, - 34676, - 34677, - 34678, - 34679, - 34680, - 34681, - 34682, - 34683, - 34684, - 34685, - 34686, - 34687, - 34688, - 34689, - 34690, - 34691, - 34692, - 34693, - 34694, - 34695, - 34696, - 34697, - 34698, - 34699, - 34700, - 34701, - 34702, - 34703, - 34704, - 34705, - 34706, - 34707, - 34708, - 34709, - 34710, - 34711, - 34712, - 34713, - 34714, - 34715, - 34716, - 34717, - 34718, - 34719, - 34720, - 34721, - 34722, - 34723, - 34724, - 34725, - 34726, - 34727, - 34728, - 34729, - 34730, - 34731, - 34732, - 34733, - 34734, - 34735, - 34736, - 34737, - 34738, - 34739, - 34740, - 34741, - 34742, - 34743, - 34744, - 34745, - 34746, - 34747, - 34748, - 34749, - 34750, - 34751, - 34752, - 34753, - 34754, - 34755, - 34756, - 34757, - 34758, - 34759, - 34760, - 34761, - 34762, - 34763, - 34764, - 34765, - 34766, - 34767, - 34768, - 34769, - 34770, - 34771, - 34772, - 34773, - 34774, - 34775, - 34776, - 34777, - 34778, - 34779, - 34780, - 34781, - 34782, - 34783, - 34784, - 34785, - 34786, - 34787, - 34788, - 34789, - 34790, - 34791, - 34792, - 34793, - 34794, - 34795, - 34796, - 34797, - 34798, - 34799, - 34800, - 34801, - 34802, - 34803, - 34804, - 34805, - 34806, - 34807, - 34808, - 34809, - 34810, - 34811, - 34812, - 34813, - 34814, - 34815, - 34816, - 34817, - 34818, - 34819, - 34820, - 34821, - 34822, - 34823, - 34824, - 34825, - 34826, - 34827, - 34828, - 34829, - 34830, - 34831, - 34832, - 34833, - 34834, - 34835, - 34836, - 34837, - 34838, - 34839, - 34840, - 34841, - 34842, - 34843, - 34844, - 34845, - 34846, - 34847, - 34848, - 34849, - 34850, - 34851, - 34852, - 34853, - 34854, - 34855, - 34856, - 34857, - 34858, - 34859, - 34860, - 34861, - 34862, - 34863, - 34864, - 34865, - 34866, - 34867, - 34868, - 34869, - 34870, - 34871, - 34872, - 34873, - 34874, - 34875, - 34876, - 34877, - 34878, - 34879, - 34880, - 34881, - 34882, - 34883, - 34884, - 34885, - 34886, - 34887, - 34888, - 34889, - 34890, - 34891, - 34892, - 34893, - 34894, - 34895, - 34896, - 34897, - 34898, - 34899, - 34900, - 34901, - 34902, - 34903, - 34904, - 34905, - 34906, - 34907, - 34908, - 34909, - 34910, - 34911, - 34912, - 34913, - 34914, - 34915, - 34916, - 34917, - 34918, - 34919, - 34920, - 34921, - 34922, - 34923, - 34924, - 34925, - 34926, - 34927, - 34928, - 34929, - 34930, - 34931, - 34932, - 34933, - 34934, - 34935, - 34936, - 34937, - 34938, - 34939, - 34940, - 34941, - 34942, - 34943, - 34944, - 34945, - 34946, - 34947, - 34948, - 34949, - 34950, - 34951, - 34952, - 34953, - 34954, - 34955, - 34956, - 34957, - 34958, - 34959, - 34960, - 34961, - 34962, - 34963, - 34964, - 34965, - 34966, - 34967, - 34968, - 34969, - 34970, - 34971, - 34972, - 34973, - 34974, - 34975, - 34976, - 34977, - 34978, - 34979, - 34980, - 34981, - 34982, - 34983, - 34984, - 34985, - 34986, - 34987, - 34988, - 34989, - 34990, - 34991, - 34992, - 34993, - 34994, - 34995, - 34996, - 34997, - 34998, - 34999, - 35000, - 35001, - 35002, - 35003, - 35004, - 35005, - 35006, - 35007, - 35008, - 35009, - 35010, - 35011, - 35012, - 35013, - 35014, - 35015, - 35016, - 35017, - 35018, - 35019, - 35020, - 35021, - 35022, - 35023, - 35024, - 35025, - 35026, - 35027, - 35028, - 35029, - 35030, - 35031, - 35032, - 35033, - 35034, - 35035, - 35036, - 35037, - 35038, - 35039, - 35040, - 35041, - 35042, - 35043, - 35044, - 35045, - 35046, - 35047, - 35048, - 35049, - 35050, - 35051, - 35052, - 35053, - 35054, - 35055, - 35056, - 35057, - 35058, - 35059, - 35060, - 35061, - 35062, - 35063, - 35064, - 35065, - 35066, - 35067, - 35068, - 35069, - 35070, - 35071, - 35072, - 35073, - 35074, - 35075, - 35076, - 35077, - 35078, - 35079, - 35080, - 35081, - 35082, - 35083, - 35084, - 35085, - 35086, - 35087, - 35088, - 35089, - 35090, - 35091, - 35092, - 35093, - 35094, - 35095, - 35096, - 35097, - 35098, - 35099, - 35100, - 35101, - 35102, - 35103, - 35104, - 35105, - 35106, - 35107, - 35108, - 35109, - 35110, - 35111, - 35112, - 35113, - 35114, - 35115, - 35116, - 35117, - 35118, - 35119, - 35120, - 35121, - 35122, - 35123, - 35124, - 35125, - 35126, - 35127, - 35128, - 35129, - 35130, - 35131, - 35132, - 35133, - 35134, - 35135, - 35136, - 35137, - 35138, - 35139, - 35140, - 35141, - 35142, - 35143, - 35144, - 35145, - 35146, - 35147, - 35148, - 35149, - 35150, - 35151, - 35152, - 35153, - 35154, - 35155, - 35156, - 35157, - 35158, - 35159, - 35160, - 35161, - 35162, - 35163, - 35164, - 35165, - 35166, - 35167, - 35168, - 35169, - 35170, - 35171, - 35172, - 35173, - 35174, - 35175, - 35176, - 35177, - 35178, - 35179, - 35180, - 35181, - 35182, - 35183, - 35184, - 35185, - 35186, - 35187, - 35188, - 35189, - 35190, - 35191, - 35192, - 35193, - 35194, - 35195, - 35196, - 35197, - 35198, - 35199, - 35200, - 35201, - 35202, - 35203, - 35204, - 35205, - 35206, - 35207, - 35208, - 35209, - 35210, - 35211, - 35212, - 35213, - 35214, - 35215, - 35216, - 35217, - 35218, - 35219, - 35220, - 35221, - 35222, - 35223, - 35224, - 35225, - 35226, - 35227, - 35228, - 35229, - 35230, - 35231, - 35232, - 35233, - 35234, - 35235, - 35236, - 35237, - 35238, - 35239, - 35240, - 35241, - 35242, - 35243, - 35244, - 35245, - 35246, - 35247, - 35248, - 35249, - 35250, - 35251, - 35252, - 35253, - 35254, - 35255, - 35256, - 35257, - 35258, - 35259, - 35260, - 35261, - 35262, - 35263, - 35264, - 35265, - 35266, - 35267, - 35268, - 35269, - 35270, - 35271, - 35272, - 35273, - 35274, - 35275, - 35276, - 35277, - 35278, - 35279, - 35280, - 35281, - 35282, - 35283, - 35284, - 35285, - 35286, - 35287, - 35288, - 35289, - 35290, - 35291, - 35292, - 35293, - 35294, - 35295, - 35296, - 35297, - 35298, - 35299, - 35300, - 35301, - 35302, - 35303, - 35304, - 35305, - 35306, - 35307, - 35308, - 35309, - 35310, - 35311, - 35312, - 35313, - 35314, - 35315, - 35316, - 35317, - 35318, - 35319, - 35320, - 35321, - 35322, - 35323, - 35324, - 35325, - 35326, - 35327, - 35328, - 35329, - 35330, - 35331, - 35332, - 35333, - 35334, - 35335, - 35336, - 35337, - 35338, - 35339, - 35340, - 35341, - 35342, - 35343, - 35344, - 35345, - 35346, - 35347, - 35348, - 35349, - 35350, - 35351, - 35352, - 35353, - 35354, - 35355, - 35356, - 35357, - 35358, - 35359, - 35360, - 35361, - 35362, - 35363, - 35364, - 35365, - 35366, - 35367, - 35368, - 35369, - 35370, - 35371, - 35372, - 35373, - 35374, - 35375, - 35376, - 35377, - 35378, - 35379, - 35380, - 35381, - 35382, - 35383, - 35384, - 35385, - 35386, - 35387, - 35388, - 35389, - 35390, - 35391, - 35392, - 35393, - 35394, - 35395, - 35396, - 35397, - 35398, - 35399, - 35400, - 35401, - 35402, - 35403, - 35404, - 35405, - 35406, - 35407, - 35408, - 35409, - 35410, - 35411, - 35412, - 35413, - 35414, - 35415, - 35416, - 35417, - 35418, - 35419, - 35420, - 35421, - 35422, - 35423, - 35424, - 35425, - 35426, - 35427, - 35428, - 35429, - 35430, - 35431, - 35432, - 35433, - 35434, - 35435, - 35436, - 35437, - 35438, - 35439, - 35440, - 35441, - 35442, - 35443, - 35444, - 35445, - 35446, - 35447, - 35448, - 35449, - 35450, - 35451, - 35452, - 35453, - 35454, - 35455, - 35456, - 35457, - 35458, - 35459, - 35460, - 35461, - 35462, - 35463, - 35464, - 35465, - 35466, - 35467, - 35468, - 35469, - 35470, - 35471, - 35472, - 35473, - 35474, - 35475, - 35476, - 35477, - 35478, - 35479, - 35480, - 35481, - 35482, - 35483, - 35484, - 35485, - 35486, - 35487, - 35488, - 35489, - 35490, - 35491, - 35492, - 35493, - 35494, - 35495, - 35496, - 35497, - 35498, - 35499, - 35500, - 35501, - 35502, - 35503, - 35504, - 35505, - 35506, - 35507, - 35508, - 35509, - 35510, - 35511, - 35512, - 35513, - 35514, - 35515, - 35516, - 35517, - 35518, - 35519, - 35520, - 35521, - 35522, - 35523, - 35524, - 35525, - 35526, - 35527, - 35528, - 35529, - 35530, - 35531, - 35532, - 35533, - 35534, - 35535, - 35536, - 35537, - 35538, - 35539, - 35540, - 35541, - 35542, - 35543, - 35544, - 35545, - 35546, - 35547, - 35548, - 35549, - 35550, - 35551, - 35552, - 35553, - 35554, - 35555, - 35556, - 35557, - 35558, - 35559, - 35560, - 35561, - 35562, - 35563, - 35564, - 35565, - 35566, - 35567, - 35568, - 35569, - 35570, - 35571, - 35572, - 35573, - 35574, - 35575, - 35576, - 35577, - 35578, - 35579, - 35580, - 35581, - 35582, - 35583, - 35584, - 35585, - 35586, - 35587, - 35588, - 35589, - 35590, - 35591, - 35592, - 35593, - 35594, - 35595, - 35596, - 35597, - 35598, - 35599, - 35600, - 35601, - 35602, - 35603, - 35604, - 35605, - 35606, - 35607, - 35608, - 35609, - 35610, - 35611, - 35612, - 35613, - 35614, - 35615, - 35616, - 35617, - 35618, - 35619, - 35620, - 35621, - 35622, - 35623, - 35624, - 35625, - 35626, - 35627, - 35628, - 35629, - 35630, - 35631, - 35632, - 35633, - 35634, - 35635, - 35636, - 35637, - 35638, - 35639, - 35640, - 35641, - 35642, - 35643, - 35644, - 35645, - 35646, - 35647, - 35648, - 35649, - 35650, - 35651, - 35652, - 35653, - 35654, - 35655, - 35656, - 35657, - 35658, - 35659, - 35660, - 35661, - 35662, - 35663, - 35664, - 35665, - 35666, - 35667, - 35668, - 35669, - 35670, - 35671, - 35672, - 35673, - 35674, - 35675, - 35676, - 35677, - 35678, - 35679, - 35680, - 35681, - 35682, - 35683, - 35684, - 35685, - 35686, - 35687, - 35688, - 35689, - 35690, - 35691, - 35692, - 35693, - 35694, - 35695, - 35696, - 35697, - 35698, - 35699, - 35700, - 35701, - 35702, - 35703, - 35704, - 35705, - 35706, - 35707, - 35708, - 35709, - 35710, - 35711, - 35712, - 35713, - 35714, - 35715, - 35716, - 35717, - 35718, - 35719, - 35720, - 35721, - 35722, - 35723, - 35724, - 35725, - 35726, - 35727, - 35728, - 35729, - 35730, - 35731, - 35732, - 35733, - 35734, - 35735, - 35736, - 35737, - 35738, - 35739, - 35740, - 35741, - 35742, - 35743, - 35744, - 35745, - 35746, - 35747, - 35748, - 35749, - 35750, - 35751, - 35752, - 35753, - 35754, - 35755, - 35756, - 35757, - 35758, - 35759, - 35760, - 35761, - 35762, - 35763, - 35764, - 35765, - 35766, - 35767, - 35768, - 35769, - 35770, - 35771, - 35772, - 35773, - 35774, - 35775, - 35776, - 35777, - 35778, - 35779, - 35780, - 35781, - 35782, - 35783, - 35784, - 35785, - 35786, - 35787, - 35788, - 35789, - 35790, - 35791, - 35792, - 35793, - 35794, - 35795, - 35796, - 35797, - 35798, - 35799, - 35800, - 35801, - 35802, - 35803, - 35804, - 35805, - 35806, - 35807, - 35808, - 35809, - 35810, - 35811, - 35812, - 35813, - 35814, - 35815, - 35816, - 35817, - 35818, - 35819, - 35820, - 35821, - 35822, - 35823, - 35824, - 35825, - 35826, - 35827, - 35828, - 35829, - 35830, - 35831, - 35832, - 35833, - 35834, - 35835, - 35836, - 35837, - 35838, - 35839, - 35840, - 35841, - 35842, - 35843, - 35844, - 35845, - 35846, - 35847, - 35848, - 35849, - 35850, - 35851, - 35852, - 35853, - 35854, - 35855, - 35856, - 35857, - 35858, - 35859, - 35860, - 35861, - 35862, - 35863, - 35864, - 35865, - 35866, - 35867, - 35868, - 35869, - 35870, - 35871, - 35872, - 35873, - 35874, - 35875, - 35876, - 35877, - 35878, - 35879, - 35880, - 35881, - 35882, - 35883, - 35884, - 35885, - 35886, - 35887, - 35888, - 35889, - 35890, - 35891, - 35892, - 35893, - 35894, - 35895, - 35896, - 35897, - 35898, - 35899, - 35900, - 35901, - 35902, - 35903, - 35904, - 35905, - 35906, - 35907, - 35908, - 35909, - 35910, - 35911, - 35912, - 35913, - 35914, - 35915, - 35916, - 35917, - 35918, - 35919, - 35920, - 35921, - 35922, - 35923, - 35924, - 35925, - 35926, - 35927, - 35928, - 35929, - 35930, - 35931, - 35932, - 35933, - 35934, - 35935, - 35936, - 35937, - 35938, - 35939, - 35940, - 35941, - 35942, - 35943, - 35944, - 35945, - 35946, - 35947, - 35948, - 35949, - 35950, - 35951, - 35952, - 35953, - 35954, - 35955, - 35956, - 35957, - 35958, - 35959, - 35960, - 35961, - 35962, - 35963, - 35964, - 35965, - 35966, - 35967, - 35968, - 35969, - 35970, - 35971, - 35972, - 35973, - 35974, - 35975, - 35976, - 35977, - 35978, - 35979, - 35980, - 35981, - 35982, - 35983, - 35984, - 35985, - 35986, - 35987, - 35988, - 35989, - 35990, - 35991, - 35992, - 35993, - 35994, - 35995, - 35996, - 35997, - 35998, - 35999, - 36000, - 36001, - 36002, - 36003, - 36004, - 36005, - 36006, - 36007, - 36008, - 36009, - 36010, - 36011, - 36012, - 36013, - 36014, - 36015, - 36016, - 36017, - 36018, - 36019, - 36020, - 36021, - 36022, - 36023, - 36024, - 36025, - 36026, - 36027, - 36028, - 36029, - 36030, - 36031, - 36032, - 36033, - 36034, - 36035, - 36036, - 36037, - 36038, - 36039, - 36040, - 36041, - 36042, - 36043, - 36044, - 36045, - 36046, - 36047, - 36048, - 36049, - 36050, - 36051, - 36052, - 36053, - 36054, - 36055, - 36056, - 36057, - 36058, - 36059, - 36060, - 36061, - 36062, - 36063, - 36064, - 36065, - 36066, - 36067, - 36068, - 36069, - 36070, - 36071, - 36072, - 36073, - 36074, - 36075, - 36076, - 36077, - 36078, - 36079, - 36080, - 36081, - 36082, - 36083, - 36084, - 36085, - 36086, - 36087, - 36088, - 36089, - 36090, - 36091, - 36092, - 36093, - 36094, - 36095, - 36096, - 36097, - 36098, - 36099, - 36100, - 36101, - 36102, - 36103, - 36104, - 36105, - 36106, - 36107, - 36108, - 36109, - 36110, - 36111, - 36112, - 36113, - 36114, - 36115, - 36116, - 36117, - 36118, - 36119, - 36120, - 36121, - 36122, - 36123, - 36124, - 36125, - 36126, - 36127, - 36128, - 36129, - 36130, - 36131, - 36132, - 36133, - 36134, - 36135, - 36136, - 36137, - 36138, - 36139, - 36140, - 36141, - 36142, - 36143, - 36144, - 36145, - 36146, - 36147, - 36148, - 36149, - 36150, - 36151, - 36152, - 36153, - 36154, - 36155, - 36156, - 36157, - 36158, - 36159, - 36160, - 36161, - 36162, - 36163, - 36164, - 36165, - 36166, - 36167, - 36168, - 36169, - 36170, - 36171, - 36172, - 36173, - 36174, - 36175, - 36176, - 36177, - 36178, - 36179, - 36180, - 36181, - 36182, - 36183, - 36184, - 36185, - 36186, - 36187, - 36188, - 36189, - 36190, - 36191, - 36192, - 36193, - 36194, - 36195, - 36196, - 36197, - 36198, - 36199, - 36200, - 36201, - 36202, - 36203, - 36204, - 36205, - 36206, - 36207, - 36208, - 36209, - 36210, - 36211, - 36212, - 36213, - 36214, - 36215, - 36216, - 36217, - 36218, - 36219, - 36220, - 36221, - 36222, - 36223, - 36224, - 36225, - 36226, - 36227, - 36228, - 36229, - 36230, - 36231, - 36232, - 36233, - 36234, - 36235, - 36236, - 36237, - 36238, - 36239, - 36240, - 36241, - 36242, - 36243, - 36244, - 36245, - 36246, - 36247, - 36248, - 36249, - 36250, - 36251, - 36252, - 36253, - 36254, - 36255, - 36256, - 36257, - 36258, - 36259, - 36260, - 36261, - 36262, - 36263, - 36264, - 36265, - 36266, - 36267, - 36268, - 36269, - 36270, - 36271, - 36272, - 36273, - 36274, - 36275, - 36276, - 36277, - 36278, - 36279, - 36280, - 36281, - 36282, - 36283, - 36284, - 36285, - 36286, - 36287, - 36288, - 36289, - 36290, - 36291, - 36292, - 36293, - 36294, - 36295, - 36296, - 36297, - 36298, - 36299, - 36300, - 36301, - 36302, - 36303, - 36304, - 36305, - 36306, - 36307, - 36308, - 36309, - 36310, - 36311, - 36312, - 36313, - 36314, - 36315, - 36316, - 36317, - 36318, - 36319, - 36320, - 36321, - 36322, - 36323, - 36324, - 36325, - 36326, - 36327, - 36328, - 36329, - 36330, - 36331, - 36332, - 36333, - 36334, - 36335, - 36336, - 36337, - 36338, - 36339, - 36340, - 36341, - 36342, - 36343, - 36344, - 36345, - 36346, - 36347, - 36348, - 36349, - 36350, - 36351, - 36352, - 36353, - 36354, - 36355, - 36356, - 36357, - 36358, - 36359, - 36360, - 36361, - 36362, - 36363, - 36364, - 36365, - 36366, - 36367, - 36368, - 36369, - 36370, - 36371, - 36372, - 36373, - 36374, - 36375, - 36376, - 36377, - 36378, - 36379, - 36380, - 36381, - 36382, - 36383, - 36384, - 36385, - 36386, - 36387, - 36388, - 36389, - 36390, - 36391, - 36392, - 36393, - 36394, - 36395, - 36396, - 36397, - 36398, - 36399, - 36400, - 36401, - 36402, - 36403, - 36404, - 36405, - 36406, - 36407, - 36408, - 36409, - 36410, - 36411, - 36412, - 36413, - 36414, - 36415, - 36416, - 36417, - 36418, - 36419, - 36420, - 36421, - 36422, - 36423, - 36424, - 36425, - 36426, - 36427, - 36428, - 36429, - 36430, - 36431, - 36432, - 36433, - 36434, - 36435, - 36436, - 36437, - 36438, - 36439, - 36440, - 36441, - 36442, - 36443, - 36444, - 36445, - 36446, - 36447, - 36448, - 36449, - 36450, - 36451, - 36452, - 36453, - 36454, - 36455, - 36456, - 36457, - 36458, - 36459, - 36460, - 36461, - 36462, - 36463, - 36464, - 36465, - 36466, - 36467, - 36468, - 36469, - 36470, - 36471, - 36472, - 36473, - 36474, - 36475, - 36476, - 36477, - 36478, - 36479, - 36480, - 36481, - 36482, - 36483, - 36484, - 36485, - 36486, - 36487, - 36488, - 36489, - 36490, - 36491, - 36492, - 36493, - 36494, - 36495, - 36496, - 36497, - 36498, - 36499, - 36500, - 36501, - 36502, - 36503, - 36504, - 36505, - 36506, - 36507, - 36508, - 36509, - 36510, - 36511, - 36512, - 36513, - 36514, - 36515, - 36516, - 36517, - 36518, - 36519, - 36520, - 36521, - 36522, - 36523, - 36524, - 36525, - 36526, - 36527, - 36528, - 36529, - 36530, - 36531, - 36532, - 36533, - 36534, - 36535, - 36536, - 36537, - 36538, - 36539, - 36540, - 36541, - 36542, - 36543, - 36544, - 36545, - 36546, - 36547, - 36548, - 36549, - 36550, - 36551, - 36552, - 36553, - 36554, - 36555, - 36556, - 36557, - 36558, - 36559, - 36560, - 36561, - 36562, - 36563, - 36564, - 36565, - 36566, - 36567, - 36568, - 36569, - 36570, - 36571, - 36572, - 36573, - 36574, - 36575, - 36576, - 36577, - 36578, - 36579, - 36580, - 36581, - 36582, - 36583, - 36584, - 36585, - 36586, - 36587, - 36588, - 36589, - 36590, - 36591, - 36592, - 36593, - 36594, - 36595, - 36596, - 36597, - 36598, - 36599, - 36600, - 36601, - 36602, - 36603, - 36604, - 36605, - 36606, - 36607, - 36608, - 36609, - 36610, - 36611, - 36612, - 36613, - 36614, - 36615, - 36616, - 36617, - 36618, - 36619, - 36620, - 36621, - 36622, - 36623, - 36624, - 36625, - 36626, - 36627, - 36628, - 36629, - 36630, - 36631, - 36632, - 36633, - 36634, - 36635, - 36636, - 36637, - 36638, - 36639, - 36640, - 36641, - 36642, - 36643, - 36644, - 36645, - 36646, - 36647, - 36648, - 36649, - 36650, - 36651, - 36652, - 36653, - 36654, - 36655, - 36656, - 36657, - 36658, - 36659, - 36660, - 36661, - 36662, - 36663, - 36664, - 36665, - 36666, - 36667, - 36668, - 36669, - 36670, - 36671, - 36672, - 36673, - 36674, - 36675, - 36676, - 36677, - 36678, - 36679, - 36680, - 36681, - 36682, - 36683, - 36684, - 36685, - 36686, - 36687, - 36688, - 36689, - 36690, - 36691, - 36692, - 36693, - 36694, - 36695, - 36696, - 36697, - 36698, - 36699, - 36700, - 36701, - 36702, - 36703, - 36704, - 36705, - 36706, - 36707, - 36708, - 36709, - 36710, - 36711, - 36712, - 36713, - 36714, - 36715, - 36716, - 36717, - 36718, - 36719, - 36720, - 36721, - 36722, - 36723, - 36724, - 36725, - 36726, - 36727, - 36728, - 36729, - 36730, - 36731, - 36732, - 36733, - 36734, - 36735, - 36736, - 36737, - 36738, - 36739, - 36740, - 36741, - 36742, - 36743, - 36744, - 36745, - 36746, - 36747, - 36748, - 36749, - 36750, - 36751, - 36752, - 36753, - 36754, - 36755, - 36756, - 36757, - 36758, - 36759, - 36760, - 36761, - 36762, - 36763, - 36764, - 36765, - 36766, - 36767, - 36768, - 36769, - 36770, - 36771, - 36772, - 36773, - 36774, - 36775, - 36776, - 36777, - 36778, - 36779, - 36780, - 36781, - 36782, - 36783, - 36784, - 36785, - 36786, - 36787, - 36788, - 36789, - 36790, - 36791, - 36792, - 36793, - 36794, - 36795, - 36796, - 36797, - 36798, - 36799, - 36800, - 36801, - 36802, - 36803, - 36804, - 36805, - 36806, - 36807, - 36808, - 36809, - 36810, - 36811, - 36812, - 36813, - 36814, - 36815, - 36816, - 36817, - 36818, - 36819, - 36820, - 36821, - 36822, - 36823, - 36824, - 36825, - 36826, - 36827, - 36828, - 36829, - 36830, - 36831, - 36832, - 36833, - 36834, - 36835, - 36836, - 36837, - 36838, - 36839, - 36840, - 36841, - 36842, - 36843, - 36844, - 36845, - 36846, - 36847, - 36848, - 36849, - 36850, - 36851, - 36852, - 36853, - 36854, - 36855, - 36856, - 36857, - 36858, - 36859, - 36860, - 36861, - 36862, - 36863, - 36864, - 36865, - 36866, - 36867, - 36868, - 36869, - 36870, - 36871, - 36872, - 36873, - 36874, - 36875, - 36876, - 36877, - 36878, - 36879, - 36880, - 36881, - 36882, - 36883, - 36884, - 36885, - 36886, - 36887, - 36888, - 36889, - 36890, - 36891, - 36892, - 36893, - 36894, - 36895, - 36896, - 36897, - 36898, - 36899, - 36900, - 36901, - 36902, - 36903, - 36904, - 36905, - 36906, - 36907, - 36908, - 36909, - 36910, - 36911, - 36912, - 36913, - 36914, - 36915, - 36916, - 36917, - 36918, - 36919, - 36920, - 36921, - 36922, - 36923, - 36924, - 36925, - 36926, - 36927, - 36928, - 36929, - 36930, - 36931, - 36932, - 36933, - 36934, - 36935, - 36936, - 36937, - 36938, - 36939, - 36940, - 36941, - 36942, - 36943, - 36944, - 36945, - 36946, - 36947, - 36948, - 36949, - 36950, - 36951, - 36952, - 36953, - 36954, - 36955, - 36956, - 36957, - 36958, - 36959, - 36960, - 36961, - 36962, - 36963, - 36964, - 36965, - 36966, - 36967, - 36968, - 36969, - 36970, - 36971, - 36972, - 36973, - 36974, - 36975, - 36976, - 36977, - 36978, - 36979, - 36980, - 36981, - 36982, - 36983, - 36984, - 36985, - 36986, - 36987, - 36988, - 36989, - 36990, - 36991, - 36992, - 36993, - 36994, - 36995, - 36996, - 36997, - 36998, - 36999, - 37000, - 37001, - 37002, - 37003, - 37004, - 37005, - 37006, - 37007, - 37008, - 37009, - 37010, - 37011, - 37012, - 37013, - 37014, - 37015, - 37016, - 37017, - 37018, - 37019, - 37020, - 37021, - 37022, - 37023, - 37024, - 37025, - 37026, - 37027, - 37028, - 37029, - 37030, - 37031, - 37032, - 37033, - 37034, - 37035, - 37036, - 37037, - 37038, - 37039, - 37040, - 37041, - 37042, - 37043, - 37044, - 37045, - 37046, - 37047, - 37048, - 37049, - 37050, - 37051, - 37052, - 37053, - 37054, - 37055, - 37056, - 37057, - 37058, - 37059, - 37060, - 37061, - 37062, - 37063, - 37064, - 37065, - 37066, - 37067, - 37068, - 37069, - 37070, - 37071, - 37072, - 37073, - 37074, - 37075, - 37076, - 37077, - 37078, - 37079, - 37080, - 37081, - 37082, - 37083, - 37084, - 37085, - 37086, - 37087, - 37088, - 37089, - 37090, - 37091, - 37092, - 37093, - 37094, - 37095, - 37096, - 37097, - 37098, - 37099, - 37100, - 37101, - 37102, - 37103, - 37104, - 37105, - 37106, - 37107, - 37108, - 37109, - 37110, - 37111, - 37112, - 37113, - 37114, - 37115, - 37116, - 37117, - 37118, - 37119, - 37120, - 37121, - 37122, - 37123, - 37124, - 37125, - 37126, - 37127, - 37128, - 37129, - 37130, - 37131, - 37132, - 37133, - 37134, - 37135, - 37136, - 37137, - 37138, - 37139, - 37140, - 37141, - 37142, - 37143, - 37144, - 37145, - 37146, - 37147, - 37148, - 37149, - 37150, - 37151, - 37152, - 37153, - 37154, - 37155, - 37156, - 37157, - 37158, - 37159, - 37160, - 37161, - 37162, - 37163, - 37164, - 37165, - 37166, - 37167, - 37168, - 37169, - 37170, - 37171, - 37172, - 37173, - 37174, - 37175, - 37176, - 37177, - 37178, - 37179, - 37180, - 37181, - 37182, - 37183, - 37184, - 37185, - 37186, - 37187, - 37188, - 37189, - 37190, - 37191, - 37192, - 37193, - 37194, - 37195, - 37196, - 37197, - 37198, - 37199, - 37200, - 37201, - 37202, - 37203, - 37204, - 37205, - 37206, - 37207, - 37208, - 37209, - 37210, - 37211, - 37212, - 37213, - 37214, - 37215, - 37216, - 37217, - 37218, - 37219, - 37220, - 37221, - 37222, - 37223, - 37224, - 37225, - 37226, - 37227, - 37228, - 37229, - 37230, - 37231, - 37232, - 37233, - 37234, - 37235, - 37236, - 37237, - 37238, - 37239, - 37240, - 37241, - 37242, - 37243, - 37244, - 37245, - 37246, - 37247, - 37248, - 37249, - 37250, - 37251, - 37252, - 37253, - 37254, - 37255, - 37256, - 37257, - 37258, - 37259, - 37260, - 37261, - 37262, - 37263, - 37264, - 37265, - 37266, - 37267, - 37268, - 37269, - 37270, - 37271, - 37272, - 37273, - 37274, - 37275, - 37276, - 37277, - 37278, - 37279, - 37280, - 37281, - 37282, - 37283, - 37284, - 37285, - 37286, - 37287, - 37288, - 37289, - 37290, - 37291, - 37292, - 37293, - 37294, - 37295, - 37296, - 37297, - 37298, - 37299, - 37300, - 37301, - 37302, - 37303, - 37304, - 37305, - 37306, - 37307, - 37308, - 37309, - 37310, - 37311, - 37312, - 37313, - 37314, - 37315, - 37316, - 37317, - 37318, - 37319, - 37320, - 37321, - 37322, - 37323, - 37324, - 37325, - 37326, - 37327, - 37328, - 37329, - 37330, - 37331, - 37332, - 37333, - 37334, - 37335, - 37336, - 37337, - 37338, - 37339, - 37340, - 37341, - 37342, - 37343, - 37344, - 37345, - 37346, - 37347, - 37348, - 37349, - 37350, - 37351, - 37352, - 37353, - 37354, - 37355, - 37356, - 37357, - 37358, - 37359, - 37360, - 37361, - 37362, - 37363, - 37364, - 37365, - 37366, - 37367, - 37368, - 37369, - 37370, - 37371, - 37372, - 37373, - 37374, - 37375, - 37376, - 37377, - 37378, - 37379, - 37380, - 37381, - 37382, - 37383, - 37384, - 37385, - 37386, - 37387, - 37388, - 37389, - 37390, - 37391, - 37392, - 37393, - 37394, - 37395, - 37396, - 37397, - 37398, - 37399, - 37400, - 37401, - 37402, - 37403, - 37404, - 37405, - 37406, - 37407, - 37408, - 37409, - 37410, - 37411, - 37412, - 37413, - 37414, - 37415, - 37416, - 37417, - 37418, - 37419, - 37420, - 37421, - 37422, - 37423, - 37424, - 37425, - 37426, - 37427, - 37428, - 37429, - 37430, - 37431, - 37432, - 37433, - 37434, - 37435, - 37436, - 37437, - 37438, - 37439, - 37440, - 37441, - 37442, - 37443, - 37444, - 37445, - 37446, - 37447, - 37448, - 37449, - 37450, - 37451, - 37452, - 37453, - 37454, - 37455, - 37456, - 37457, - 37458, - 37459, - 37460, - 37461, - 37462, - 37463, - 37464, - 37465, - 37466, - 37467, - 37468, - 37469, - 37470, - 37471, - 37472, - 37473, - 37474, - 37475, - 37476, - 37477, - 37478, - 37479, - 37480, - 37481, - 37482, - 37483, - 37484, - 37485, - 37486, - 37487, - 37488, - 37489, - 37490, - 37491, - 37492, - 37493, - 37494, - 37495, - 37496, - 37497, - 37498, - 37499, - 37500, - 37501, - 37502, - 37503, - 37504, - 37505, - 37506, - 37507, - 37508, - 37509, - 37510, - 37511, - 37512, - 37513, - 37514, - 37515, - 37516, - 37517, - 37518, - 37519, - 37520, - 37521, - 37522, - 37523, - 37524, - 37525, - 37526, - 37527, - 37528, - 37529, - 37530, - 37531, - 37532, - 37533, - 37534, - 37535, - 37536, - 37537, - 37538, - 37539, - 37540, - 37541, - 37542, - 37543, - 37544, - 37545, - 37546, - 37547, - 37548, - 37549, - 37550, - 37551, - 37552, - 37553, - 37554, - 37555, - 37556, - 37557, - 37558, - 37559, - 37560, - 37561, - 37562, - 37563, - 37564, - 37565, - 37566, - 37567, - 37568, - 37569, - 37570, - 37571, - 37572, - 37573, - 37574, - 37575, - 37576, - 37577, - 37578, - 37579, - 37580, - 37581, - 37582, - 37583, - 37584, - 37585, - 37586, - 37587, - 37588, - 37589, - 37590, - 37591, - 37592, - 37593, - 37594, - 37595, - 37596, - 37597, - 37598, - 37599, - 37600, - 37601, - 37602, - 37603, - 37604, - 37605, - 37606, - 37607, - 37608, - 37609, - 37610, - 37611, - 37612, - 37613, - 37614, - 37615, - 37616, - 37617, - 37618, - 37619, - 37620, - 37621, - 37622, - 37623, - 37624, - 37625, - 37626, - 37627, - 37628, - 37629, - 37630, - 37631, - 37632, - 37633, - 37634, - 37635, - 37636, - 37637, - 37638, - 37639, - 37640, - 37641, - 37642, - 37643, - 37644, - 37645, - 37646, - 37647, - 37648, - 37649, - 37650, - 37651, - 37652, - 37653, - 37654, - 37655, - 37656, - 37657, - 37658, - 37659, - 37660, - 37661, - 37662, - 37663, - 37664, - 37665, - 37666, - 37667, - 37668, - 37669, - 37670, - 37671, - 37672, - 37673, - 37674, - 37675, - 37676, - 37677, - 37678, - 37679, - 37680, - 37681, - 37682, - 37683, - 37684, - 37685, - 37686, - 37687, - 37688, - 37689, - 37690, - 37691, - 37692, - 37693, - 37694, - 37695, - 37696, - 37697, - 37698, - 37699, - 37700, - 37701, - 37702, - 37703, - 37704, - 37705, - 37706, - 37707, - 37708, - 37709, - 37710, - 37711, - 37712, - 37713, - 37714, - 37715, - 37716, - 37717, - 37718, - 37719, - 37720, - 37721, - 37722, - 37723, - 37724, - 37725, - 37726, - 37727, - 37728, - 37729, - 37730, - 37731, - 37732, - 37733, - 37734, - 37735, - 37736, - 37737, - 37738, - 37739, - 37740, - 37741, - 37742, - 37743, - 37744, - 37745, - 37746, - 37747, - 37748, - 37749, - 37750, - 37751, - 37752, - 37753, - 37754, - 37755, - 37756, - 37757, - 37758, - 37759, - 37760, - 37761, - 37762, - 37763, - 37764, - 37765, - 37766, - 37767, - 37768, - 37769, - 37770, - 37771, - 37772, - 37773, - 37774, - 37775, - 37776, - 37777, - 37778, - 37779, - 37780, - 37781, - 37782, - 37783, - 37784, - 37785, - 37786, - 37787, - 37788, - 37789, - 37790, - 37791, - 37792, - 37793, - 37794, - 37795, - 37796, - 37797, - 37798, - 37799, - 37800, - 37801, - 37802, - 37803, - 37804, - 37805, - 37806, - 37807, - 37808, - 37809, - 37810, - 37811, - 37812, - 37813, - 37814, - 37815, - 37816, - 37817, - 37818, - 37819, - 37820, - 37821, - 37822, - 37823, - 37824, - 37825, - 37826, - 37827, - 37828, - 37829, - 37830, - 37831, - 37832, - 37833, - 37834, - 37835, - 37836, - 37837, - 37838, - 37839, - 37840, - 37841, - 37842, - 37843, - 37844, - 37845, - 37846, - 37847, - 37848, - 37849, - 37850, - 37851, - 37852, - 37853, - 37854, - 37855, - 37856, - 37857, - 37858, - 37859, - 37860, - 37861, - 37862, - 37863, - 37864, - 37865, - 37866, - 37867, - 37868, - 37869, - 37870, - 37871, - 37872, - 37873, - 37874, - 37875, - 37876, - 37877, - 37878, - 37879, - 37880, - 37881, - 37882, - 37883, - 37884, - 37885, - 37886, - 37887, - 37888, - 37889, - 37890, - 37891, - 37892, - 37893, - 37894, - 37895, - 37896, - 37897, - 37898, - 37899, - 37900, - 37901, - 37902, - 37903, - 37904, - 37905, - 37906, - 37907, - 37908, - 37909, - 37910, - 37911, - 37912, - 37913, - 37914, - 37915, - 37916, - 37917, - 37918, - 37919, - 37920, - 37921, - 37922, - 37923, - 37924, - 37925, - 37926, - 37927, - 37928, - 37929, - 37930, - 37931, - 37932, - 37933, - 37934, - 37935, - 37936, - 37937, - 37938, - 37939, - 37940, - 37941, - 37942, - 37943, - 37944, - 37945, - 37946, - 37947, - 37948, - 37949, - 37950, - 37951, - 37952, - 37953, - 37954, - 37955, - 37956, - 37957, - 37958, - 37959, - 37960, - 37961, - 37962, - 37963, - 37964, - 37965, - 37966, - 37967, - 37968, - 37969, - 37970, - 37971, - 37972, - 37973, - 37974, - 37975, - 37976, - 37977, - 37978, - 37979, - 37980, - 37981, - 37982, - 37983, - 37984, - 37985, - 37986, - 37987, - 37988, - 37989, - 37990, - 37991, - 37992, - 37993, - 37994, - 37995, - 37996, - 37997, - 37998, - 37999, - 38000, - 38001, - 38002, - 38003, - 38004, - 38005, - 38006, - 38007, - 38008, - 38009, - 38010, - 38011, - 38012, - 38013, - 38014, - 38015, - 38016, - 38017, - 38018, - 38019, - 38020, - 38021, - 38022, - 38023, - 38024, - 38025, - 38026, - 38027, - 38028, - 38029, - 38030, - 38031, - 38032, - 38033, - 38034, - 38035, - 38036, - 38037, - 38038, - 38039, - 38040, - 38041, - 38042, - 38043, - 38044, - 38045, - 38046, - 38047, - 38048, - 38049, - 38050, - 38051, - 38052, - 38053, - 38054, - 38055, - 38056, - 38057, - 38058, - 38059, - 38060, - 38061, - 38062, - 38063, - 38064, - 38065, - 38066, - 38067, - 38068, - 38069, - 38070, - 38071, - 38072, - 38073, - 38074, - 38075, - 38076, - 38077, - 38078, - 38079, - 38080, - 38081, - 38082, - 38083, - 38084, - 38085, - 38086, - 38087, - 38088, - 38089, - 38090, - 38091, - 38092, - 38093, - 38094, - 38095, - 38096, - 38097, - 38098, - 38099, - 38100, - 38101, - 38102, - 38103, - 38104, - 38105, - 38106, - 38107, - 38108, - 38109, - 38110, - 38111, - 38112, - 38113, - 38114, - 38115, - 38116, - 38117, - 38118, - 38119, - 38120, - 38121, - 38122, - 38123, - 38124, - 38125, - 38126, - 38127, - 38128, - 38129, - 38130, - 38131, - 38132, - 38133, - 38134, - 38135, - 38136, - 38137, - 38138, - 38139, - 38140, - 38141, - 38142, - 38143, - 38144, - 38145, - 38146, - 38147, - 38148, - 38149, - 38150, - 38151, - 38152, - 38153, - 38154, - 38155, - 38156, - 38157, - 38158, - 38159, - 38160, - 38161, - 38162, - 38163, - 38164, - 38165, - 38166, - 38167, - 38168, - 38169, - 38170, - 38171, - 38172, - 38173, - 38174, - 38175, - 38176, - 38177, - 38178, - 38179, - 38180, - 38181, - 38182, - 38183, - 38184, - 38185, - 38186, - 38187, - 38188, - 38189, - 38190, - 38191, - 38192, - 38193, - 38194, - 38195, - 38196, - 38197, - 38198, - 38199, - 38200, - 38201, - 38202, - 38203, - 38204, - 38205, - 38206, - 38207, - 38208, - 38209, - 38210, - 38211, - 38212, - 38213, - 38214, - 38215, - 38216, - 38217, - 38218, - 38219, - 38220, - 38221, - 38222, - 38223, - 38224, - 38225, - 38226, - 38227, - 38228, - 38229, - 38230, - 38231, - 38232, - 38233, - 38234, - 38235, - 38236, - 38237, - 38238, - 38239, - 38240, - 38241, - 38242, - 38243, - 38244, - 38245, - 38246, - 38247, - 38248, - 38249, - 38250, - 38251, - 38252, - 38253, - 38254, - 38255, - 38256, - 38257, - 38258, - 38259, - 38260, - 38261, - 38262, - 38263, - 38264, - 38265, - 38266, - 38267, - 38268, - 38269, - 38270, - 38271, - 38272, - 38273, - 38274, - 38275, - 38276, - 38277, - 38278, - 38279, - 38280, - 38281, - 38282, - 38283, - 38284, - 38285, - 38286, - 38287, - 38288, - 38289, - 38290, - 38291, - 38292, - 38293, - 38294, - 38295, - 38296, - 38297, - 38298, - 38299, - 38300, - 38301, - 38302, - 38303, - 38304, - 38305, - 38306, - 38307, - 38308, - 38309, - 38310, - 38311, - 38312, - 38313, - 38314, - 38315, - 38316, - 38317, - 38318, - 38319, - 38320, - 38321, - 38322, - 38323, - 38324, - 38325, - 38326, - 38327, - 38328, - 38329, - 38330, - 38331, - 38332, - 38333, - 38334, - 38335, - 38336, - 38337, - 38338, - 38339, - 38340, - 38341, - 38342, - 38343, - 38344, - 38345, - 38346, - 38347, - 38348, - 38349, - 38350, - 38351, - 38352, - 38353, - 38354, - 38355, - 38356, - 38357, - 38358, - 38359, - 38360, - 38361, - 38362, - 38363, - 38364, - 38365, - 38366, - 38367, - 38368, - 38369, - 38370, - 38371, - 38372, - 38373, - 38374, - 38375, - 38376, - 38377, - 38378, - 38379, - 38380, - 38381, - 38382, - 38383, - 38384, - 38385, - 38386, - 38387, - 38388, - 38389, - 38390, - 38391, - 38392, - 38393, - 38394, - 38395, - 38396, - 38397, - 38398, - 38399, - 38400, - 38401, - 38402, - 38403, - 38404, - 38405, - 38406, - 38407, - 38408, - 38409, - 38410, - 38411, - 38412, - 38413, - 38414, - 38415, - 38416, - 38417, - 38418, - 38419, - 38420, - 38421, - 38422, - 38423, - 38424, - 38425, - 38426, - 38427, - 38428, - 38429, - 38430, - 38431, - 38432, - 38433, - 38434, - 38435, - 38436, - 38437, - 38438, - 38439, - 38440, - 38441, - 38442, - 38443, - 38444, - 38445, - 38446, - 38447, - 38448, - 38449, - 38450, - 38451, - 38452, - 38453, - 38454, - 38455, - 38456, - 38457, - 38458, - 38459, - 38460, - 38461, - 38462, - 38463, - 38464, - 38465, - 38466, - 38467, - 38468, - 38469, - 38470, - 38471, - 38472, - 38473, - 38474, - 38475, - 38476, - 38477, - 38478, - 38479, - 38480, - 38481, - 38482, - 38483, - 38484, - 38485, - 38486, - 38487, - 38488, - 38489, - 38490, - 38491, - 38492, - 38493, - 38494, - 38495, - 38496, - 38497, - 38498, - 38499, - 38500, - 38501, - 38502, - 38503, - 38504, - 38505, - 38506, - 38507, - 38508, - 38509, - 38510, - 38511, - 38512, - 38513, - 38514, - 38515, - 38516, - 38517, - 38518, - 38519, - 38520, - 38521, - 38522, - 38523, - 38524, - 38525, - 38526, - 38527, - 38528, - 38529, - 38530, - 38531, - 38532, - 38533, - 38534, - 38535, - 38536, - 38537, - 38538, - 38539, - 38540, - 38541, - 38542, - 38543, - 38544, - 38545, - 38546, - 38547, - 38548, - 38549, - 38550, - 38551, - 38552, - 38553, - 38554, - 38555, - 38556, - 38557, - 38558, - 38559, - 38560, - 38561, - 38562, - 38563, - 38564, - 38565, - 38566, - 38567, - 38568, - 38569, - 38570, - 38571, - 38572, - 38573, - 38574, - 38575, - 38576, - 38577, - 38578, - 38579, - 38580, - 38581, - 38582, - 38583, - 38584, - 38585, - 38586, - 38587, - 38588, - 38589, - 38590, - 38591, - 38592, - 38593, - 38594, - 38595, - 38596, - 38597, - 38598, - 38599, - 38600, - 38601, - 38602, - 38603, - 38604, - 38605, - 38606, - 38607, - 38608, - 38609, - 38610, - 38611, - 38612, - 38613, - 38614, - 38615, - 38616, - 38617, - 38618, - 38619, - 38620, - 38621, - 38622, - 38623, - 38624, - 38625, - 38626, - 38627, - 38628, - 38629, - 38630, - 38631, - 38632, - 38633, - 38634, - 38635, - 38636, - 38637, - 38638, - 38639, - 38640, - 38641, - 38642, - 38643, - 38644, - 38645, - 38646, - 38647, - 38648, - 38649, - 38650, - 38651, - 38652, - 38653, - 38654, - 38655, - 38656, - 38657, - 38658, - 38659, - 38660, - 38661, - 38662, - 38663, - 38664, - 38665, - 38666, - 38667, - 38668, - 38669, - 38670, - 38671, - 38672, - 38673, - 38674, - 38675, - 38676, - 38677, - 38678, - 38679, - 38680, - 38681, - 38682, - 38683, - 38684, - 38685, - 38686, - 38687, - 38688, - 38689, - 38690, - 38691, - 38692, - 38693, - 38694, - 38695, - 38696, - 38697, - 38698, - 38699, - 38700, - 38701, - 38702, - 38703, - 38704, - 38705, - 38706, - 38707, - 38708, - 38709, - 38710, - 38711, - 38712, - 38713, - 38714, - 38715, - 38716, - 38717, - 38718, - 38719, - 38720, - 38721, - 38722, - 38723, - 38724, - 38725, - 38726, - 38727, - 38728, - 38729, - 38730, - 38731, - 38732, - 38733, - 38734, - 38735, - 38736, - 38737, - 38738, - 38739, - 38740, - 38741, - 38742, - 38743, - 38744, - 38745, - 38746, - 38747, - 38748, - 38749, - 38750, - 38751, - 38752, - 38753, - 38754, - 38755, - 38756, - 38757, - 38758, - 38759, - 38760, - 38761, - 38762, - 38763, - 38764, - 38765, - 38766, - 38767, - 38768, - 38769, - 38770, - 38771, - 38772, - 38773, - 38774, - 38775, - 38776, - 38777, - 38778, - 38779, - 38780, - 38781, - 38782, - 38783, - 38784, - 38785, - 38786, - 38787, - 38788, - 38789, - 38790, - 38791, - 38792, - 38793, - 38794, - 38795, - 38796, - 38797, - 38798, - 38799, - 38800, - 38801, - 38802, - 38803, - 38804, - 38805, - 38806, - 38807, - 38808, - 38809, - 38810, - 38811, - 38812, - 38813, - 38814, - 38815, - 38816, - 38817, - 38818, - 38819, - 38820, - 38821, - 38822, - 38823, - 38824, - 38825, - 38826, - 38827, - 38828, - 38829, - 38830, - 38831, - 38832, - 38833, - 38834, - 38835, - 38836, - 38837, - 38838, - 38839, - 38840, - 38841, - 38842, - 38843, - 38844, - 38845, - 38846, - 38847, - 38848, - 38849, - 38850, - 38851, - 38852, - 38853, - 38854, - 38855, - 38856, - 38857, - 38858, - 38859, - 38860, - 38861, - 38862, - 38863, - 38864, - 38865, - 38866, - 38867, - 38868, - 38869, - 38870, - 38871, - 38872, - 38873, - 38874, - 38875, - 38876, - 38877, - 38878, - 38879, - 38880, - 38881, - 38882, - 38883, - 38884, - 38885, - 38886, - 38887, - 38888, - 38889, - 38890, - 38891, - 38892, - 38893, - 38894, - 38895, - 38896, - 38897, - 38898, - 38899, - 38900, - 38901, - 38902, - 38903, - 38904, - 38905, - 38906, - 38907, - 38908, - 38909, - 38910, - 38911, - 38912, - 38913, - 38914, - 38915, - 38916, - 38917, - 38918, - 38919, - 38920, - 38921, - 38922, - 38923, - 38924, - 38925, - 38926, - 38927, - 38928, - 38929, - 38930, - 38931, - 38932, - 38933, - 38934, - 38935, - 38936, - 38937, - 38938, - 38939, - 38940, - 38941, - 38942, - 38943, - 38944, - 38945, - 38946, - 38947, - 38948, - 38949, - 38950, - 38951, - 38952, - 38953, - 38954, - 38955, - 38956, - 38957, - 38958, - 38959, - 38960, - 38961, - 38962, - 38963, - 38964, - 38965, - 38966, - 38967, - 38968, - 38969, - 38970, - 38971, - 38972, - 38973, - 38974, - 38975, - 38976, - 38977, - 38978, - 38979, - 38980, - 38981, - 38982, - 38983, - 38984, - 38985, - 38986, - 38987, - 38988, - 38989, - 38990, - 38991, - 38992, - 38993, - 38994, - 38995, - 38996, - 38997, - 38998, - 38999, - 39000, - 39001, - 39002, - 39003, - 39004, - 39005, - 39006, - 39007, - 39008, - 39009, - 39010, - 39011, - 39012, - 39013, - 39014, - 39015, - 39016, - 39017, - 39018, - 39019, - 39020, - 39021, - 39022, - 39023, - 39024, - 39025, - 39026, - 39027, - 39028, - 39029, - 39030, - 39031, - 39032, - 39033, - 39034, - 39035, - 39036, - 39037, - 39038, - 39039, - 39040, - 39041, - 39042, - 39043, - 39044, - 39045, - 39046, - 39047, - 39048, - 39049, - 39050, - 39051, - 39052, - 39053, - 39054, - 39055, - 39056, - 39057, - 39058, - 39059, - 39060, - 39061, - 39062, - 39063, - 39064, - 39065, - 39066, - 39067, - 39068, - 39069, - 39070, - 39071, - 39072, - 39073, - 39074, - 39075, - 39076, - 39077, - 39078, - 39079, - 39080, - 39081, - 39082, - 39083, - 39084, - 39085, - 39086, - 39087, - 39088, - 39089, - 39090, - 39091, - 39092, - 39093, - 39094, - 39095, - 39096, - 39097, - 39098, - 39099, - 39100, - 39101, - 39102, - 39103, - 39104, - 39105, - 39106, - 39107, - 39108, - 39109, - 39110, - 39111, - 39112, - 39113, - 39114, - 39115, - 39116, - 39117, - 39118, - 39119, - 39120, - 39121, - 39122, - 39123, - 39124, - 39125, - 39126, - 39127, - 39128, - 39129, - 39130, - 39131, - 39132, - 39133, - 39134, - 39135, - 39136, - 39137, - 39138, - 39139, - 39140, - 39141, - 39142, - 39143, - 39144, - 39145, - 39146, - 39147, - 39148, - 39149, - 39150, - 39151, - 39152, - 39153, - 39154, - 39155, - 39156, - 39157, - 39158, - 39159, - 39160, - 39161, - 39162, - 39163, - 39164, - 39165, - 39166, - 39167, - 39168, - 39169, - 39170, - 39171, - 39172, - 39173, - 39174, - 39175, - 39176, - 39177, - 39178, - 39179, - 39180, - 39181, - 39182, - 39183, - 39184, - 39185, - 39186, - 39187, - 39188, - 39189, - 39190, - 39191, - 39192, - 39193, - 39194, - 39195, - 39196, - 39197, - 39198, - 39199, - 39200, - 39201, - 39202, - 39203, - 39204, - 39205, - 39206, - 39207, - 39208, - 39209, - 39210, - 39211, - 39212, - 39213, - 39214, - 39215, - 39216, - 39217, - 39218, - 39219, - 39220, - 39221, - 39222, - 39223, - 39224, - 39225, - 39226, - 39227, - 39228, - 39229, - 39230, - 39231, - 39232, - 39233, - 39234, - 39235, - 39236, - 39237, - 39238, - 39239, - 39240, - 39241, - 39242, - 39243, - 39244, - 39245, - 39246, - 39247, - 39248, - 39249, - 39250, - 39251, - 39252, - 39253, - 39254, - 39255, - 39256, - 39257, - 39258, - 39259, - 39260, - 39261, - 39262, - 39263, - 39264, - 39265, - 39266, - 39267, - 39268, - 39269, - 39270, - 39271, - 39272, - 39273, - 39274, - 39275, - 39276, - 39277, - 39278, - 39279, - 39280, - 39281, - 39282, - 39283, - 39284, - 39285, - 39286, - 39287, - 39288, - 39289, - 39290, - 39291, - 39292, - 39293, - 39294, - 39295, - 39296, - 39297, - 39298, - 39299, - 39300, - 39301, - 39302, - 39303, - 39304, - 39305, - 39306, - 39307, - 39308, - 39309, - 39310, - 39311, - 39312, - 39313, - 39314, - 39315, - 39316, - 39317, - 39318, - 39319, - 39320, - 39321, - 39322, - 39323, - 39324, - 39325, - 39326, - 39327, - 39328, - 39329, - 39330, - 39331, - 39332, - 39333, - 39334, - 39335, - 39336, - 39337, - 39338, - 39339, - 39340, - 39341, - 39342, - 39343, - 39344, - 39345, - 39346, - 39347, - 39348, - 39349, - 39350, - 39351, - 39352, - 39353, - 39354, - 39355, - 39356, - 39357, - 39358, - 39359, - 39360, - 39361, - 39362, - 39363, - 39364, - 39365, - 39366, - 39367, - 39368, - 39369, - 39370, - 39371, - 39372, - 39373, - 39374, - 39375, - 39376, - 39377, - 39378, - 39379, - 39380, - 39381, - 39382, - 39383, - 39384, - 39385, - 39386, - 39387, - 39388, - 39389, - 39390, - 39391, - 39392, - 39393, - 39394, - 39395, - 39396, - 39397, - 39398, - 39399, - 39400, - 39401, - 39402, - 39403, - 39404, - 39405, - 39406, - 39407, - 39408, - 39409, - 39410, - 39411, - 39412, - 39413, - 39414, - 39415, - 39416, - 39417, - 39418, - 39419, - 39420, - 39421, - 39422, - 39423, - 39424, - 39425, - 39426, - 39427, - 39428, - 39429, - 39430, - 39431, - 39432, - 39433, - 39434, - 39435, - 39436, - 39437, - 39438, - 39439, - 39440, - 39441, - 39442, - 39443, - 39444, - 39445, - 39446, - 39447, - 39448, - 39449, - 39450, - 39451, - 39452, - 39453, - 39454, - 39455, - 39456, - 39457, - 39458, - 39459, - 39460, - 39461, - 39462, - 39463, - 39464, - 39465, - 39466, - 39467, - 39468, - 39469, - 39470, - 39471, - 39472, - 39473, - 39474, - 39475, - 39476, - 39477, - 39478, - 39479, - 39480, - 39481, - 39482, - 39483, - 39484, - 39485, - 39486, - 39487, - 39488, - 39489, - 39490, - 39491, - 39492, - 39493, - 39494, - 39495, - 39496, - 39497, - 39498, - 39499, - 39500, - 39501, - 39502, - 39503, - 39504, - 39505, - 39506, - 39507, - 39508, - 39509, - 39510, - 39511, - 39512, - 39513, - 39514, - 39515, - 39516, - 39517, - 39518, - 39519, - 39520, - 39521, - 39522, - 39523, - 39524, - 39525, - 39526, - 39527, - 39528, - 39529, - 39530, - 39531, - 39532, - 39533, - 39534, - 39535, - 39536, - 39537, - 39538, - 39539, - 39540, - 39541, - 39542, - 39543, - 39544, - 39545, - 39546, - 39547, - 39548, - 39549, - 39550, - 39551, - 39552, - 39553, - 39554, - 39555, - 39556, - 39557, - 39558, - 39559, - 39560, - 39561, - 39562, - 39563, - 39564, - 39565, - 39566, - 39567, - 39568, - 39569, - 39570, - 39571, - 39572, - 39573, - 39574, - 39575, - 39576, - 39577, - 39578, - 39579, - 39580, - 39581, - 39582, - 39583, - 39584, - 39585, - 39586, - 39587, - 39588, - 39589, - 39590, - 39591, - 39592, - 39593, - 39594, - 39595, - 39596, - 39597, - 39598, - 39599, - 39600, - 39601, - 39602, - 39603, - 39604, - 39605, - 39606, - 39607, - 39608, - 39609, - 39610, - 39611, - 39612, - 39613, - 39614, - 39615, - 39616, - 39617, - 39618, - 39619, - 39620, - 39621, - 39622, - 39623, - 39624, - 39625, - 39626, - 39627, - 39628, - 39629, - 39630, - 39631, - 39632, - 39633, - 39634, - 39635, - 39636, - 39637, - 39638, - 39639, - 39640, - 39641, - 39642, - 39643, - 39644, - 39645, - 39646, - 39647, - 39648, - 39649, - 39650, - 39651, - 39652, - 39653, - 39654, - 39655, - 39656, - 39657, - 39658, - 39659, - 39660, - 39661, - 39662, - 39663, - 39664, - 39665, - 39666, - 39667, - 39668, - 39669, - 39670, - 39671, - 39672, - 39673, - 39674, - 39675, - 39676, - 39677, - 39678, - 39679, - 39680, - 39681, - 39682, - 39683, - 39684, - 39685, - 39686, - 39687, - 39688, - 39689, - 39690, - 39691, - 39692, - 39693, - 39694, - 39695, - 39696, - 39697, - 39698, - 39699, - 39700, - 39701, - 39702, - 39703, - 39704, - 39705, - 39706, - 39707, - 39708, - 39709, - 39710, - 39711, - 39712, - 39713, - 39714, - 39715, - 39716, - 39717, - 39718, - 39719, - 39720, - 39721, - 39722, - 39723, - 39724, - 39725, - 39726, - 39727, - 39728, - 39729, - 39730, - 39731, - 39732, - 39733, - 39734, - 39735, - 39736, - 39737, - 39738, - 39739, - 39740, - 39741, - 39742, - 39743, - 39744, - 39745, - 39746, - 39747, - 39748, - 39749, - 39750, - 39751, - 39752, - 39753, - 39754, - 39755, - 39756, - 39757, - 39758, - 39759, - 39760, - 39761, - 39762, - 39763, - 39764, - 39765, - 39766, - 39767, - 39768, - 39769, - 39770, - 39771, - 39772, - 39773, - 39774, - 39775, - 39776, - 39777, - 39778, - 39779, - 39780, - 39781, - 39782, - 39783, - 39784, - 39785, - 39786, - 39787, - 39788, - 39789, - 39790, - 39791, - 39792, - 39793, - 39794, - 39795, - 39796, - 39797, - 39798, - 39799, - 39800, - 39801, - 39802, - 39803, - 39804, - 39805, - 39806, - 39807, - 39808, - 39809, - 39810, - 39811, - 39812, - 39813, - 39814, - 39815, - 39816, - 39817, - 39818, - 39819, - 39820, - 39821, - 39822, - 39823, - 39824, - 39825, - 39826, - 39827, - 39828, - 39829, - 39830, - 39831, - 39832, - 39833, - 39834, - 39835, - 39836, - 39837, - 39838, - 39839, - 39840, - 39841, - 39842, - 39843, - 39844, - 39845, - 39846, - 39847, - 39848, - 39849, - 39850, - 39851, - 39852, - 39853, - 39854, - 39855, - 39856, - 39857, - 39858, - 39859, - 39860, - 39861, - 39862, - 39863, - 39864, - 39865, - 39866, - 39867, - 39868, - 39869, - 39870, - 39871, - 39872, - 39873, - 39874, - 39875, - 39876, - 39877, - 39878, - 39879, - 39880, - 39881, - 39882, - 39883, - 39884, - 39885, - 39886, - 39887, - 39888, - 39889, - 39890, - 39891, - 39892, - 39893, - 39894, - 39895, - 39896, - 39897, - 39898, - 39899, - 39900, - 39901, - 39902, - 39903, - 39904, - 39905, - 39906, - 39907, - 39908, - 39909, - 39910, - 39911, - 39912, - 39913, - 39914, - 39915, - 39916, - 39917, - 39918, - 39919, - 39920, - 39921, - 39922, - 39923, - 39924, - 39925, - 39926, - 39927, - 39928, - 39929, - 39930, - 39931, - 39932, - 39933, - 39934, - 39935, - 39936, - 39937, - 39938, - 39939, - 39940, - 39941, - 39942, - 39943, - 39944, - 39945, - 39946, - 39947, - 39948, - 39949, - 39950, - 39951, - 39952, - 39953, - 39954, - 39955, - 39956, - 39957, - 39958, - 39959, - 39960, - 39961, - 39962, - 39963, - 39964, - 39965, - 39966, - 39967, - 39968, - 39969, - 39970, - 39971, - 39972, - 39973, - 39974, - 39975, - 39976, - 39977, - 39978, - 39979, - 39980, - 39981, - 39982, - 39983, - 39984, - 39985, - 39986, - 39987, - 39988, - 39989, - 39990, - 39991, - 39992, - 39993, - 39994, - 39995, - 39996, - 39997, - 39998, - 39999, - 40000, - 40001, - 40002, - 40003, - 40004, - 40005, - 40006, - 40007, - 40008, - 40009, - 40010, - 40011, - 40012, - 40013, - 40014, - 40015, - 40016, - 40017, - 40018, - 40019, - 40020, - 40021, - 40022, - 40023, - 40024, - 40025, - 40026, - 40027, - 40028, - 40029, - 40030, - 40031, - 40032, - 40033, - 40034, - 40035, - 40036, - 40037, - 40038, - 40039, - 40040, - 40041, - 40042, - 40043, - 40044, - 40045, - 40046, - 40047, - 40048, - 40049, - 40050, - 40051, - 40052, - 40053, - 40054, - 40055, - 40056, - 40057, - 40058, - 40059, - 40060, - 40061, - 40062, - 40063, - 40064, - 40065, - 40066, - 40067, - 40068, - 40069, - 40070, - 40071, - 40072, - 40073, - 40074, - 40075, - 40076, - 40077, - 40078, - 40079, - 40080, - 40081, - 40082, - 40083, - 40084, - 40085, - 40086, - 40087, - 40088, - 40089, - 40090, - 40091, - 40092, - 40093, - 40094, - 40095, - 40096, - 40097, - 40098, - 40099, - 40100, - 40101, - 40102, - 40103, - 40104, - 40105, - 40106, - 40107, - 40108, - 40109, - 40110, - 40111, - 40112, - 40113, - 40114, - 40115, - 40116, - 40117, - 40118, - 40119, - 40120, - 40121, - 40122, - 40123, - 40124, - 40125, - 40126, - 40127, - 40128, - 40129, - 40130, - 40131, - 40132, - 40133, - 40134, - 40135, - 40136, - 40137, - 40138, - 40139, - 40140, - 40141, - 40142, - 40143, - 40144, - 40145, - 40146, - 40147, - 40148, - 40149, - 40150, - 40151, - 40152, - 40153, - 40154, - 40155, - 40156, - 40157, - 40158, - 40159, - 40160, - 40161, - 40162, - 40163, - 40164, - 40165, - 40166, - 40167, - 40168, - 40169, - 40170, - 40171, - 40172, - 40173, - 40174, - 40175, - 40176, - 40177, - 40178, - 40179, - 40180, - 40181, - 40182, - 40183, - 40184, - 40185, - 40186, - 40187, - 40188, - 40189, - 40190, - 40191, - 40192, - 40193, - 40194, - 40195, - 40196, - 40197, - 40198, - 40199, - 40200, - 40201, - 40202, - 40203, - 40204, - 40205, - 40206, - 40207, - 40208, - 40209, - 40210, - 40211, - 40212, - 40213, - 40214, - 40215, - 40216, - 40217, - 40218, - 40219, - 40220, - 40221, - 40222, - 40223, - 40224, - 40225, - 40226, - 40227, - 40228, - 40229, - 40230, - 40231, - 40232, - 40233, - 40234, - 40235, - 40236, - 40237, - 40238, - 40239, - 40240, - 40241, - 40242, - 40243, - 40244, - 40245, - 40246, - 40247, - 40248, - 40249, - 40250, - 40251, - 40252, - 40253, - 40254, - 40255, - 40256, - 40257, - 40258, - 40259, - 40260, - 40261, - 40262, - 40263, - 40264, - 40265, - 40266, - 40267, - 40268, - 40269, - 40270, - 40271, - 40272, - 40273, - 40274, - 40275, - 40276, - 40277, - 40278, - 40279, - 40280, - 40281, - 40282, - 40283, - 40284, - 40285, - 40286, - 40287, - 40288, - 40289, - 40290, - 40291, - 40292, - 40293, - 40294, - 40295, - 40296, - 40297, - 40298, - 40299, - 40300, - 40301, - 40302, - 40303, - 40304, - 40305, - 40306, - 40307, - 40308, - 40309, - 40310, - 40311, - 40312, - 40313, - 40314, - 40315, - 40316, - 40317, - 40318, - 40319, - 40320, - 40321, - 40322, - 40323, - 40324, - 40325, - 40326, - 40327, - 40328, - 40329, - 40330, - 40331, - 40332, - 40333, - 40334, - 40335, - 40336, - 40337, - 40338, - 40339, - 40340, - 40341, - 40342, - 40343, - 40344, - 40345, - 40346, - 40347, - 40348, - 40349, - 40350, - 40351, - 40352, - 40353, - 40354, - 40355, - 40356, - 40357, - 40358, - 40359, - 40360, - 40361, - 40362, - 40363, - 40364, - 40365, - 40366, - 40367, - 40368, - 40369, - 40370, - 40371, - 40372, - 40373, - 40374, - 40375, - 40376, - 40377, - 40378, - 40379, - 40380, - 40381, - 40382, - 40383, - 40384, - 40385, - 40386, - 40387, - 40388, - 40389, - 40390, - 40391, - 40392, - 40393, - 40394, - 40395, - 40396, - 40397, - 40398, - 40399, - 40400, - 40401, - 40402, - 40403, - 40404, - 40405, - 40406, - 40407, - 40408, - 40409, - 40410, - 40411, - 40412, - 40413, - 40414, - 40415, - 40416, - 40417, - 40418, - 40419, - 40420, - 40421, - 40422, - 40423, - 40424, - 40425, - 40426, - 40427, - 40428, - 40429, - 40430, - 40431, - 40432, - 40433, - 40434, - 40435, - 40436, - 40437, - 40438, - 40439, - 40440, - 40441, - 40442, - 40443, - 40444, - 40445, - 40446, - 40447, - 40448, - 40449, - 40450, - 40451, - 40452, - 40453, - 40454, - 40455, - 40456, - 40457, - 40458, - 40459, - 40460, - 40461, - 40462, - 40463, - 40464, - 40465, - 40466, - 40467, - 40468, - 40469, - 40470, - 40471, - 40472, - 40473, - 40474, - 40475, - 40476, - 40477, - 40478, - 40479, - 40480, - 40481, - 40482, - 40483, - 40484, - 40485, - 40486, - 40487, - 40488, - 40489, - 40490, - 40491, - 40492, - 40493, - 40494, - 40495, - 40496, - 40497, - 40498, - 40499, - 40500, - 40501, - 40502, - 40503, - 40504, - 40505, - 40506, - 40507, - 40508, - 40509, - 40510, - 40511, - 40512, - 40513, - 40514, - 40515, - 40516, - 40517, - 40518, - 40519, - 40520, - 40521, - 40522, - 40523, - 40524, - 40525, - 40526, - 40527, - 40528, - 40529, - 40530, - 40531, - 40532, - 40533, - 40534, - 40535, - 40536, - 40537, - 40538, - 40539, - 40540, - 40541, - 40542, - 40543, - 40544, - 40545, - 40546, - 40547, - 40548, - 40549, - 40550, - 40551, - 40552, - 40553, - 40554, - 40555, - 40556, - 40557, - 40558, - 40559, - 40560, - 40561, - 40562, - 40563, - 40564, - 40565, - 40566, - 40567, - 40568, - 40569, - 40570, - 40571, - 40572, - 40573, - 40574, - 40575, - 40576, - 40577, - 40578, - 40579, - 40580, - 40581, - 40582, - 40583, - 40584, - 40585, - 40586, - 40587, - 40588, - 40589, - 40590, - 40591, - 40592, - 40593, - 40594, - 40595, - 40596, - 40597, - 40598, - 40599, - 40600, - 40601, - 40602, - 40603, - 40604, - 40605, - 40606, - 40607, - 40608, - 40609, - 40610, - 40611, - 40612, - 40613, - 40614, - 40615, - 40616, - 40617, - 40618, - 40619, - 40620, - 40621, - 40622, - 40623, - 40624, - 40625, - 40626, - 40627, - 40628, - 40629, - 40630, - 40631, - 40632, - 40633, - 40634, - 40635, - 40636, - 40637, - 40638, - 40639, - 40640, - 40641, - 40642, - 40643, - 40644, - 40645, - 40646, - 40647, - 40648, - 40649, - 40650, - 40651, - 40652, - 40653, - 40654, - 40655, - 40656, - 40657, - 40658, - 40659, - 40660, - 40661, - 40662, - 40663, - 40664, - 40665, - 40666, - 40667, - 40668, - 40669, - 40670, - 40671, - 40672, - 40673, - 40674, - 40675, - 40676, - 40677, - 40678, - 40679, - 40680, - 40681, - 40682, - 40683, - 40684, - 40685, - 40686, - 40687, - 40688, - 40689, - 40690, - 40691, - 40692, - 40693, - 40694, - 40695, - 40696, - 40697, - 40698, - 40699, - 40700, - 40701, - 40702, - 40703, - 40704, - 40705, - 40706, - 40707, - 40708, - 40709, - 40710, - 40711, - 40712, - 40713, - 40714, - 40715, - 40716, - 40717, - 40718, - 40719, - 40720, - 40721, - 40722, - 40723, - 40724, - 40725, - 40726, - 40727, - 40728, - 40729, - 40730, - 40731, - 40732, - 40733, - 40734, - 40735, - 40736, - 40737, - 40738, - 40739, - 40740, - 40741, - 40742, - 40743, - 40744, - 40745, - 40746, - 40747, - 40748, - 40749, - 40750, - 40751, - 40752, - 40753, - 40754, - 40755, - 40756, - 40757, - 40758, - 40759, - 40760, - 40761, - 40762, - 40763, - 40764, - 40765, - 40766, - 40767, - 40768, - 40769, - 40770, - 40771, - 40772, - 40773, - 40774, - 40775, - 40776, - 40777, - 40778, - 40779, - 40780, - 40781, - 40782, - 40783, - 40784, - 40785, - 40786, - 40787, - 40788, - 40789, - 40790, - 40791, - 40792, - 40793, - 40794, - 40795, - 40796, - 40797, - 40798, - 40799, - 40800, - 40801, - 40802, - 40803, - 40804, - 40805, - 40806, - 40807, - 40808, - 40809, - 40810, - 40811, - 40812, - 40813, - 40814, - 40815, - 40816, - 40817, - 40818, - 40819, - 40820, - 40821, - 40822, - 40823, - 40824, - 40825, - 40826, - 40827, - 40828, - 40829, - 40830, - 40831, - 40832, - 40833, - 40834, - 40835, - 40836, - 40837, - 40838, - 40839, - 40840, - 40841, - 40842, - 40843, - 40844, - 40845, - 40846, - 40847, - 40848, - 40849, - 40850, - 40851, - 40852, - 40853, - 40854, - 40855, - 40856, - 40857, - 40858, - 40859, - 40860, - 40861, - 40862, - 40863, - 40864, - 40865, - 40866, - 40867, - 40868, - 40869, - 40870, - 40871, - 40872, - 40873, - 40874, - 40875, - 40876, - 40877, - 40878, - 40879, - 40880, - 40881, - 40882, - 40883, - 40884, - 40885, - 40886, - 40887, - 40888, - 40889, - 40890, - 40891, - 40892, - 40893, - 40894, - 40895, - 40896, - 40897, - 40898, - 40899, - 40900, - 40901, - 40902, - 40903, - 40904, - 40905, - 40906, - 40907, - 40908, - 40960, - 40961, - 40962, - 40963, - 40964, - 40965, - 40966, - 40967, - 40968, - 40969, - 40970, - 40971, - 40972, - 40973, - 40974, - 40975, - 40976, - 40977, - 40978, - 40979, - 40980, - 40981, - 40982, - 40983, - 40984, - 40985, - 40986, - 40987, - 40988, - 40989, - 40990, - 40991, - 40992, - 40993, - 40994, - 40995, - 40996, - 40997, - 40998, - 40999, - 41000, - 41001, - 41002, - 41003, - 41004, - 41005, - 41006, - 41007, - 41008, - 41009, - 41010, - 41011, - 41012, - 41013, - 41014, - 41015, - 41016, - 41017, - 41018, - 41019, - 41020, - 41021, - 41022, - 41023, - 41024, - 41025, - 41026, - 41027, - 41028, - 41029, - 41030, - 41031, - 41032, - 41033, - 41034, - 41035, - 41036, - 41037, - 41038, - 41039, - 41040, - 41041, - 41042, - 41043, - 41044, - 41045, - 41046, - 41047, - 41048, - 41049, - 41050, - 41051, - 41052, - 41053, - 41054, - 41055, - 41056, - 41057, - 41058, - 41059, - 41060, - 41061, - 41062, - 41063, - 41064, - 41065, - 41066, - 41067, - 41068, - 41069, - 41070, - 41071, - 41072, - 41073, - 41074, - 41075, - 41076, - 41077, - 41078, - 41079, - 41080, - 41081, - 41082, - 41083, - 41084, - 41085, - 41086, - 41087, - 41088, - 41089, - 41090, - 41091, - 41092, - 41093, - 41094, - 41095, - 41096, - 41097, - 41098, - 41099, - 41100, - 41101, - 41102, - 41103, - 41104, - 41105, - 41106, - 41107, - 41108, - 41109, - 41110, - 41111, - 41112, - 41113, - 41114, - 41115, - 41116, - 41117, - 41118, - 41119, - 41120, - 41121, - 41122, - 41123, - 41124, - 41125, - 41126, - 41127, - 41128, - 41129, - 41130, - 41131, - 41132, - 41133, - 41134, - 41135, - 41136, - 41137, - 41138, - 41139, - 41140, - 41141, - 41142, - 41143, - 41144, - 41145, - 41146, - 41147, - 41148, - 41149, - 41150, - 41151, - 41152, - 41153, - 41154, - 41155, - 41156, - 41157, - 41158, - 41159, - 41160, - 41161, - 41162, - 41163, - 41164, - 41165, - 41166, - 41167, - 41168, - 41169, - 41170, - 41171, - 41172, - 41173, - 41174, - 41175, - 41176, - 41177, - 41178, - 41179, - 41180, - 41181, - 41182, - 41183, - 41184, - 41185, - 41186, - 41187, - 41188, - 41189, - 41190, - 41191, - 41192, - 41193, - 41194, - 41195, - 41196, - 41197, - 41198, - 41199, - 41200, - 41201, - 41202, - 41203, - 41204, - 41205, - 41206, - 41207, - 41208, - 41209, - 41210, - 41211, - 41212, - 41213, - 41214, - 41215, - 41216, - 41217, - 41218, - 41219, - 41220, - 41221, - 41222, - 41223, - 41224, - 41225, - 41226, - 41227, - 41228, - 41229, - 41230, - 41231, - 41232, - 41233, - 41234, - 41235, - 41236, - 41237, - 41238, - 41239, - 41240, - 41241, - 41242, - 41243, - 41244, - 41245, - 41246, - 41247, - 41248, - 41249, - 41250, - 41251, - 41252, - 41253, - 41254, - 41255, - 41256, - 41257, - 41258, - 41259, - 41260, - 41261, - 41262, - 41263, - 41264, - 41265, - 41266, - 41267, - 41268, - 41269, - 41270, - 41271, - 41272, - 41273, - 41274, - 41275, - 41276, - 41277, - 41278, - 41279, - 41280, - 41281, - 41282, - 41283, - 41284, - 41285, - 41286, - 41287, - 41288, - 41289, - 41290, - 41291, - 41292, - 41293, - 41294, - 41295, - 41296, - 41297, - 41298, - 41299, - 41300, - 41301, - 41302, - 41303, - 41304, - 41305, - 41306, - 41307, - 41308, - 41309, - 41310, - 41311, - 41312, - 41313, - 41314, - 41315, - 41316, - 41317, - 41318, - 41319, - 41320, - 41321, - 41322, - 41323, - 41324, - 41325, - 41326, - 41327, - 41328, - 41329, - 41330, - 41331, - 41332, - 41333, - 41334, - 41335, - 41336, - 41337, - 41338, - 41339, - 41340, - 41341, - 41342, - 41343, - 41344, - 41345, - 41346, - 41347, - 41348, - 41349, - 41350, - 41351, - 41352, - 41353, - 41354, - 41355, - 41356, - 41357, - 41358, - 41359, - 41360, - 41361, - 41362, - 41363, - 41364, - 41365, - 41366, - 41367, - 41368, - 41369, - 41370, - 41371, - 41372, - 41373, - 41374, - 41375, - 41376, - 41377, - 41378, - 41379, - 41380, - 41381, - 41382, - 41383, - 41384, - 41385, - 41386, - 41387, - 41388, - 41389, - 41390, - 41391, - 41392, - 41393, - 41394, - 41395, - 41396, - 41397, - 41398, - 41399, - 41400, - 41401, - 41402, - 41403, - 41404, - 41405, - 41406, - 41407, - 41408, - 41409, - 41410, - 41411, - 41412, - 41413, - 41414, - 41415, - 41416, - 41417, - 41418, - 41419, - 41420, - 41421, - 41422, - 41423, - 41424, - 41425, - 41426, - 41427, - 41428, - 41429, - 41430, - 41431, - 41432, - 41433, - 41434, - 41435, - 41436, - 41437, - 41438, - 41439, - 41440, - 41441, - 41442, - 41443, - 41444, - 41445, - 41446, - 41447, - 41448, - 41449, - 41450, - 41451, - 41452, - 41453, - 41454, - 41455, - 41456, - 41457, - 41458, - 41459, - 41460, - 41461, - 41462, - 41463, - 41464, - 41465, - 41466, - 41467, - 41468, - 41469, - 41470, - 41471, - 41472, - 41473, - 41474, - 41475, - 41476, - 41477, - 41478, - 41479, - 41480, - 41481, - 41482, - 41483, - 41484, - 41485, - 41486, - 41487, - 41488, - 41489, - 41490, - 41491, - 41492, - 41493, - 41494, - 41495, - 41496, - 41497, - 41498, - 41499, - 41500, - 41501, - 41502, - 41503, - 41504, - 41505, - 41506, - 41507, - 41508, - 41509, - 41510, - 41511, - 41512, - 41513, - 41514, - 41515, - 41516, - 41517, - 41518, - 41519, - 41520, - 41521, - 41522, - 41523, - 41524, - 41525, - 41526, - 41527, - 41528, - 41529, - 41530, - 41531, - 41532, - 41533, - 41534, - 41535, - 41536, - 41537, - 41538, - 41539, - 41540, - 41541, - 41542, - 41543, - 41544, - 41545, - 41546, - 41547, - 41548, - 41549, - 41550, - 41551, - 41552, - 41553, - 41554, - 41555, - 41556, - 41557, - 41558, - 41559, - 41560, - 41561, - 41562, - 41563, - 41564, - 41565, - 41566, - 41567, - 41568, - 41569, - 41570, - 41571, - 41572, - 41573, - 41574, - 41575, - 41576, - 41577, - 41578, - 41579, - 41580, - 41581, - 41582, - 41583, - 41584, - 41585, - 41586, - 41587, - 41588, - 41589, - 41590, - 41591, - 41592, - 41593, - 41594, - 41595, - 41596, - 41597, - 41598, - 41599, - 41600, - 41601, - 41602, - 41603, - 41604, - 41605, - 41606, - 41607, - 41608, - 41609, - 41610, - 41611, - 41612, - 41613, - 41614, - 41615, - 41616, - 41617, - 41618, - 41619, - 41620, - 41621, - 41622, - 41623, - 41624, - 41625, - 41626, - 41627, - 41628, - 41629, - 41630, - 41631, - 41632, - 41633, - 41634, - 41635, - 41636, - 41637, - 41638, - 41639, - 41640, - 41641, - 41642, - 41643, - 41644, - 41645, - 41646, - 41647, - 41648, - 41649, - 41650, - 41651, - 41652, - 41653, - 41654, - 41655, - 41656, - 41657, - 41658, - 41659, - 41660, - 41661, - 41662, - 41663, - 41664, - 41665, - 41666, - 41667, - 41668, - 41669, - 41670, - 41671, - 41672, - 41673, - 41674, - 41675, - 41676, - 41677, - 41678, - 41679, - 41680, - 41681, - 41682, - 41683, - 41684, - 41685, - 41686, - 41687, - 41688, - 41689, - 41690, - 41691, - 41692, - 41693, - 41694, - 41695, - 41696, - 41697, - 41698, - 41699, - 41700, - 41701, - 41702, - 41703, - 41704, - 41705, - 41706, - 41707, - 41708, - 41709, - 41710, - 41711, - 41712, - 41713, - 41714, - 41715, - 41716, - 41717, - 41718, - 41719, - 41720, - 41721, - 41722, - 41723, - 41724, - 41725, - 41726, - 41727, - 41728, - 41729, - 41730, - 41731, - 41732, - 41733, - 41734, - 41735, - 41736, - 41737, - 41738, - 41739, - 41740, - 41741, - 41742, - 41743, - 41744, - 41745, - 41746, - 41747, - 41748, - 41749, - 41750, - 41751, - 41752, - 41753, - 41754, - 41755, - 41756, - 41757, - 41758, - 41759, - 41760, - 41761, - 41762, - 41763, - 41764, - 41765, - 41766, - 41767, - 41768, - 41769, - 41770, - 41771, - 41772, - 41773, - 41774, - 41775, - 41776, - 41777, - 41778, - 41779, - 41780, - 41781, - 41782, - 41783, - 41784, - 41785, - 41786, - 41787, - 41788, - 41789, - 41790, - 41791, - 41792, - 41793, - 41794, - 41795, - 41796, - 41797, - 41798, - 41799, - 41800, - 41801, - 41802, - 41803, - 41804, - 41805, - 41806, - 41807, - 41808, - 41809, - 41810, - 41811, - 41812, - 41813, - 41814, - 41815, - 41816, - 41817, - 41818, - 41819, - 41820, - 41821, - 41822, - 41823, - 41824, - 41825, - 41826, - 41827, - 41828, - 41829, - 41830, - 41831, - 41832, - 41833, - 41834, - 41835, - 41836, - 41837, - 41838, - 41839, - 41840, - 41841, - 41842, - 41843, - 41844, - 41845, - 41846, - 41847, - 41848, - 41849, - 41850, - 41851, - 41852, - 41853, - 41854, - 41855, - 41856, - 41857, - 41858, - 41859, - 41860, - 41861, - 41862, - 41863, - 41864, - 41865, - 41866, - 41867, - 41868, - 41869, - 41870, - 41871, - 41872, - 41873, - 41874, - 41875, - 41876, - 41877, - 41878, - 41879, - 41880, - 41881, - 41882, - 41883, - 41884, - 41885, - 41886, - 41887, - 41888, - 41889, - 41890, - 41891, - 41892, - 41893, - 41894, - 41895, - 41896, - 41897, - 41898, - 41899, - 41900, - 41901, - 41902, - 41903, - 41904, - 41905, - 41906, - 41907, - 41908, - 41909, - 41910, - 41911, - 41912, - 41913, - 41914, - 41915, - 41916, - 41917, - 41918, - 41919, - 41920, - 41921, - 41922, - 41923, - 41924, - 41925, - 41926, - 41927, - 41928, - 41929, - 41930, - 41931, - 41932, - 41933, - 41934, - 41935, - 41936, - 41937, - 41938, - 41939, - 41940, - 41941, - 41942, - 41943, - 41944, - 41945, - 41946, - 41947, - 41948, - 41949, - 41950, - 41951, - 41952, - 41953, - 41954, - 41955, - 41956, - 41957, - 41958, - 41959, - 41960, - 41961, - 41962, - 41963, - 41964, - 41965, - 41966, - 41967, - 41968, - 41969, - 41970, - 41971, - 41972, - 41973, - 41974, - 41975, - 41976, - 41977, - 41978, - 41979, - 41980, - 41981, - 41982, - 41983, - 41984, - 41985, - 41986, - 41987, - 41988, - 41989, - 41990, - 41991, - 41992, - 41993, - 41994, - 41995, - 41996, - 41997, - 41998, - 41999, - 42000, - 42001, - 42002, - 42003, - 42004, - 42005, - 42006, - 42007, - 42008, - 42009, - 42010, - 42011, - 42012, - 42013, - 42014, - 42015, - 42016, - 42017, - 42018, - 42019, - 42020, - 42021, - 42022, - 42023, - 42024, - 42025, - 42026, - 42027, - 42028, - 42029, - 42030, - 42031, - 42032, - 42033, - 42034, - 42035, - 42036, - 42037, - 42038, - 42039, - 42040, - 42041, - 42042, - 42043, - 42044, - 42045, - 42046, - 42047, - 42048, - 42049, - 42050, - 42051, - 42052, - 42053, - 42054, - 42055, - 42056, - 42057, - 42058, - 42059, - 42060, - 42061, - 42062, - 42063, - 42064, - 42065, - 42066, - 42067, - 42068, - 42069, - 42070, - 42071, - 42072, - 42073, - 42074, - 42075, - 42076, - 42077, - 42078, - 42079, - 42080, - 42081, - 42082, - 42083, - 42084, - 42085, - 42086, - 42087, - 42088, - 42089, - 42090, - 42091, - 42092, - 42093, - 42094, - 42095, - 42096, - 42097, - 42098, - 42099, - 42100, - 42101, - 42102, - 42103, - 42104, - 42105, - 42106, - 42107, - 42108, - 42109, - 42110, - 42111, - 42112, - 42113, - 42114, - 42115, - 42116, - 42117, - 42118, - 42119, - 42120, - 42121, - 42122, - 42123, - 42124, - 42192, - 42193, - 42194, - 42195, - 42196, - 42197, - 42198, - 42199, - 42200, - 42201, - 42202, - 42203, - 42204, - 42205, - 42206, - 42207, - 42208, - 42209, - 42210, - 42211, - 42212, - 42213, - 42214, - 42215, - 42216, - 42217, - 42218, - 42219, - 42220, - 42221, - 42222, - 42223, - 42224, - 42225, - 42226, - 42227, - 42228, - 42229, - 42230, - 42231, - 42232, - 42233, - 42234, - 42235, - 42236, - 42237, - 42240, - 42241, - 42242, - 42243, - 42244, - 42245, - 42246, - 42247, - 42248, - 42249, - 42250, - 42251, - 42252, - 42253, - 42254, - 42255, - 42256, - 42257, - 42258, - 42259, - 42260, - 42261, - 42262, - 42263, - 42264, - 42265, - 42266, - 42267, - 42268, - 42269, - 42270, - 42271, - 42272, - 42273, - 42274, - 42275, - 42276, - 42277, - 42278, - 42279, - 42280, - 42281, - 42282, - 42283, - 42284, - 42285, - 42286, - 42287, - 42288, - 42289, - 42290, - 42291, - 42292, - 42293, - 42294, - 42295, - 42296, - 42297, - 42298, - 42299, - 42300, - 42301, - 42302, - 42303, - 42304, - 42305, - 42306, - 42307, - 42308, - 42309, - 42310, - 42311, - 42312, - 42313, - 42314, - 42315, - 42316, - 42317, - 42318, - 42319, - 42320, - 42321, - 42322, - 42323, - 42324, - 42325, - 42326, - 42327, - 42328, - 42329, - 42330, - 42331, - 42332, - 42333, - 42334, - 42335, - 42336, - 42337, - 42338, - 42339, - 42340, - 42341, - 42342, - 42343, - 42344, - 42345, - 42346, - 42347, - 42348, - 42349, - 42350, - 42351, - 42352, - 42353, - 42354, - 42355, - 42356, - 42357, - 42358, - 42359, - 42360, - 42361, - 42362, - 42363, - 42364, - 42365, - 42366, - 42367, - 42368, - 42369, - 42370, - 42371, - 42372, - 42373, - 42374, - 42375, - 42376, - 42377, - 42378, - 42379, - 42380, - 42381, - 42382, - 42383, - 42384, - 42385, - 42386, - 42387, - 42388, - 42389, - 42390, - 42391, - 42392, - 42393, - 42394, - 42395, - 42396, - 42397, - 42398, - 42399, - 42400, - 42401, - 42402, - 42403, - 42404, - 42405, - 42406, - 42407, - 42408, - 42409, - 42410, - 42411, - 42412, - 42413, - 42414, - 42415, - 42416, - 42417, - 42418, - 42419, - 42420, - 42421, - 42422, - 42423, - 42424, - 42425, - 42426, - 42427, - 42428, - 42429, - 42430, - 42431, - 42432, - 42433, - 42434, - 42435, - 42436, - 42437, - 42438, - 42439, - 42440, - 42441, - 42442, - 42443, - 42444, - 42445, - 42446, - 42447, - 42448, - 42449, - 42450, - 42451, - 42452, - 42453, - 42454, - 42455, - 42456, - 42457, - 42458, - 42459, - 42460, - 42461, - 42462, - 42463, - 42464, - 42465, - 42466, - 42467, - 42468, - 42469, - 42470, - 42471, - 42472, - 42473, - 42474, - 42475, - 42476, - 42477, - 42478, - 42479, - 42480, - 42481, - 42482, - 42483, - 42484, - 42485, - 42486, - 42487, - 42488, - 42489, - 42490, - 42491, - 42492, - 42493, - 42494, - 42495, - 42496, - 42497, - 42498, - 42499, - 42500, - 42501, - 42502, - 42503, - 42504, - 42505, - 42506, - 42507, - 42508, - 42512, - 42513, - 42514, - 42515, - 42516, - 42517, - 42518, - 42519, - 42520, - 42521, - 42522, - 42523, - 42524, - 42525, - 42526, - 42527, - 42538, - 42539, - 42560, - 42561, - 42562, - 42563, - 42564, - 42565, - 42566, - 42567, - 42568, - 42569, - 42570, - 42571, - 42572, - 42573, - 42574, - 42575, - 42576, - 42577, - 42578, - 42579, - 42580, - 42581, - 42582, - 42583, - 42584, - 42585, - 42586, - 42587, - 42588, - 42589, - 42590, - 42591, - 42592, - 42593, - 42594, - 42595, - 42596, - 42597, - 42598, - 42599, - 42600, - 42601, - 42602, - 42603, - 42604, - 42605, - 42606, - 42623, - 42624, - 42625, - 42626, - 42627, - 42628, - 42629, - 42630, - 42631, - 42632, - 42633, - 42634, - 42635, - 42636, - 42637, - 42638, - 42639, - 42640, - 42641, - 42642, - 42643, - 42644, - 42645, - 42646, - 42647, - 42656, - 42657, - 42658, - 42659, - 42660, - 42661, - 42662, - 42663, - 42664, - 42665, - 42666, - 42667, - 42668, - 42669, - 42670, - 42671, - 42672, - 42673, - 42674, - 42675, - 42676, - 42677, - 42678, - 42679, - 42680, - 42681, - 42682, - 42683, - 42684, - 42685, - 42686, - 42687, - 42688, - 42689, - 42690, - 42691, - 42692, - 42693, - 42694, - 42695, - 42696, - 42697, - 42698, - 42699, - 42700, - 42701, - 42702, - 42703, - 42704, - 42705, - 42706, - 42707, - 42708, - 42709, - 42710, - 42711, - 42712, - 42713, - 42714, - 42715, - 42716, - 42717, - 42718, - 42719, - 42720, - 42721, - 42722, - 42723, - 42724, - 42725, - 42726, - 42727, - 42728, - 42729, - 42730, - 42731, - 42732, - 42733, - 42734, - 42735, - 42775, - 42776, - 42777, - 42778, - 42779, - 42780, - 42781, - 42782, - 42783, - 42786, - 42787, - 42788, - 42789, - 42790, - 42791, - 42792, - 42793, - 42794, - 42795, - 42796, - 42797, - 42798, - 42799, - 42800, - 42801, - 42802, - 42803, - 42804, - 42805, - 42806, - 42807, - 42808, - 42809, - 42810, - 42811, - 42812, - 42813, - 42814, - 42815, - 42816, - 42817, - 42818, - 42819, - 42820, - 42821, - 42822, - 42823, - 42824, - 42825, - 42826, - 42827, - 42828, - 42829, - 42830, - 42831, - 42832, - 42833, - 42834, - 42835, - 42836, - 42837, - 42838, - 42839, - 42840, - 42841, - 42842, - 42843, - 42844, - 42845, - 42846, - 42847, - 42848, - 42849, - 42850, - 42851, - 42852, - 42853, - 42854, - 42855, - 42856, - 42857, - 42858, - 42859, - 42860, - 42861, - 42862, - 42863, - 42864, - 42865, - 42866, - 42867, - 42868, - 42869, - 42870, - 42871, - 42872, - 42873, - 42874, - 42875, - 42876, - 42877, - 42878, - 42879, - 42880, - 42881, - 42882, - 42883, - 42884, - 42885, - 42886, - 42887, - 42888, - 42891, - 42892, - 42893, - 42894, - 42896, - 42897, - 42898, - 42899, - 42912, - 42913, - 42914, - 42915, - 42916, - 42917, - 42918, - 42919, - 42920, - 42921, - 42922, - 43000, - 43001, - 43002, - 43003, - 43004, - 43005, - 43006, - 43007, - 43008, - 43009, - 43011, - 43012, - 43013, - 43015, - 43016, - 43017, - 43018, - 43020, - 43021, - 43022, - 43023, - 43024, - 43025, - 43026, - 43027, - 43028, - 43029, - 43030, - 43031, - 43032, - 43033, - 43034, - 43035, - 43036, - 43037, - 43038, - 43039, - 43040, - 43041, - 43042, - 43072, - 43073, - 43074, - 43075, - 43076, - 43077, - 43078, - 43079, - 43080, - 43081, - 43082, - 43083, - 43084, - 43085, - 43086, - 43087, - 43088, - 43089, - 43090, - 43091, - 43092, - 43093, - 43094, - 43095, - 43096, - 43097, - 43098, - 43099, - 43100, - 43101, - 43102, - 43103, - 43104, - 43105, - 43106, - 43107, - 43108, - 43109, - 43110, - 43111, - 43112, - 43113, - 43114, - 43115, - 43116, - 43117, - 43118, - 43119, - 43120, - 43121, - 43122, - 43123, - 43138, - 43139, - 43140, - 43141, - 43142, - 43143, - 43144, - 43145, - 43146, - 43147, - 43148, - 43149, - 43150, - 43151, - 43152, - 43153, - 43154, - 43155, - 43156, - 43157, - 43158, - 43159, - 43160, - 43161, - 43162, - 43163, - 43164, - 43165, - 43166, - 43167, - 43168, - 43169, - 43170, - 43171, - 43172, - 43173, - 43174, - 43175, - 43176, - 43177, - 43178, - 43179, - 43180, - 43181, - 43182, - 43183, - 43184, - 43185, - 43186, - 43187, - 43250, - 43251, - 43252, - 43253, - 43254, - 43255, - 43259, - 43274, - 43275, - 43276, - 43277, - 43278, - 43279, - 43280, - 43281, - 43282, - 43283, - 43284, - 43285, - 43286, - 43287, - 43288, - 43289, - 43290, - 43291, - 43292, - 43293, - 43294, - 43295, - 43296, - 43297, - 43298, - 43299, - 43300, - 43301, - 43312, - 43313, - 43314, - 43315, - 43316, - 43317, - 43318, - 43319, - 43320, - 43321, - 43322, - 43323, - 43324, - 43325, - 43326, - 43327, - 43328, - 43329, - 43330, - 43331, - 43332, - 43333, - 43334, - 43360, - 43361, - 43362, - 43363, - 43364, - 43365, - 43366, - 43367, - 43368, - 43369, - 43370, - 43371, - 43372, - 43373, - 43374, - 43375, - 43376, - 43377, - 43378, - 43379, - 43380, - 43381, - 43382, - 43383, - 43384, - 43385, - 43386, - 43387, - 43388, - 43396, - 43397, - 43398, - 43399, - 43400, - 43401, - 43402, - 43403, - 43404, - 43405, - 43406, - 43407, - 43408, - 43409, - 43410, - 43411, - 43412, - 43413, - 43414, - 43415, - 43416, - 43417, - 43418, - 43419, - 43420, - 43421, - 43422, - 43423, - 43424, - 43425, - 43426, - 43427, - 43428, - 43429, - 43430, - 43431, - 43432, - 43433, - 43434, - 43435, - 43436, - 43437, - 43438, - 43439, - 43440, - 43441, - 43442, - 43471, - 43520, - 43521, - 43522, - 43523, - 43524, - 43525, - 43526, - 43527, - 43528, - 43529, - 43530, - 43531, - 43532, - 43533, - 43534, - 43535, - 43536, - 43537, - 43538, - 43539, - 43540, - 43541, - 43542, - 43543, - 43544, - 43545, - 43546, - 43547, - 43548, - 43549, - 43550, - 43551, - 43552, - 43553, - 43554, - 43555, - 43556, - 43557, - 43558, - 43559, - 43560, - 43584, - 43585, - 43586, - 43588, - 43589, - 43590, - 43591, - 43592, - 43593, - 43594, - 43595, - 43616, - 43617, - 43618, - 43619, - 43620, - 43621, - 43622, - 43623, - 43624, - 43625, - 43626, - 43627, - 43628, - 43629, - 43630, - 43631, - 43632, - 43633, - 43634, - 43635, - 43636, - 43637, - 43638, - 43642, - 43648, - 43649, - 43650, - 43651, - 43652, - 43653, - 43654, - 43655, - 43656, - 43657, - 43658, - 43659, - 43660, - 43661, - 43662, - 43663, - 43664, - 43665, - 43666, - 43667, - 43668, - 43669, - 43670, - 43671, - 43672, - 43673, - 43674, - 43675, - 43676, - 43677, - 43678, - 43679, - 43680, - 43681, - 43682, - 43683, - 43684, - 43685, - 43686, - 43687, - 43688, - 43689, - 43690, - 43691, - 43692, - 43693, - 43694, - 43695, - 43697, - 43701, - 43702, - 43705, - 43706, - 43707, - 43708, - 43709, - 43712, - 43714, - 43739, - 43740, - 43741, - 43744, - 43745, - 43746, - 43747, - 43748, - 43749, - 43750, - 43751, - 43752, - 43753, - 43754, - 43762, - 43763, - 43764, - 43777, - 43778, - 43779, - 43780, - 43781, - 43782, - 43785, - 43786, - 43787, - 43788, - 43789, - 43790, - 43793, - 43794, - 43795, - 43796, - 43797, - 43798, - 43808, - 43809, - 43810, - 43811, - 43812, - 43813, - 43814, - 43816, - 43817, - 43818, - 43819, - 43820, - 43821, - 43822, - 43968, - 43969, - 43970, - 43971, - 43972, - 43973, - 43974, - 43975, - 43976, - 43977, - 43978, - 43979, - 43980, - 43981, - 43982, - 43983, - 43984, - 43985, - 43986, - 43987, - 43988, - 43989, - 43990, - 43991, - 43992, - 43993, - 43994, - 43995, - 43996, - 43997, - 43998, - 43999, - 44000, - 44001, - 44002, - 44032, - 44033, - 44034, - 44035, - 44036, - 44037, - 44038, - 44039, - 44040, - 44041, - 44042, - 44043, - 44044, - 44045, - 44046, - 44047, - 44048, - 44049, - 44050, - 44051, - 44052, - 44053, - 44054, - 44055, - 44056, - 44057, - 44058, - 44059, - 44060, - 44061, - 44062, - 44063, - 44064, - 44065, - 44066, - 44067, - 44068, - 44069, - 44070, - 44071, - 44072, - 44073, - 44074, - 44075, - 44076, - 44077, - 44078, - 44079, - 44080, - 44081, - 44082, - 44083, - 44084, - 44085, - 44086, - 44087, - 44088, - 44089, - 44090, - 44091, - 44092, - 44093, - 44094, - 44095, - 44096, - 44097, - 44098, - 44099, - 44100, - 44101, - 44102, - 44103, - 44104, - 44105, - 44106, - 44107, - 44108, - 44109, - 44110, - 44111, - 44112, - 44113, - 44114, - 44115, - 44116, - 44117, - 44118, - 44119, - 44120, - 44121, - 44122, - 44123, - 44124, - 44125, - 44126, - 44127, - 44128, - 44129, - 44130, - 44131, - 44132, - 44133, - 44134, - 44135, - 44136, - 44137, - 44138, - 44139, - 44140, - 44141, - 44142, - 44143, - 44144, - 44145, - 44146, - 44147, - 44148, - 44149, - 44150, - 44151, - 44152, - 44153, - 44154, - 44155, - 44156, - 44157, - 44158, - 44159, - 44160, - 44161, - 44162, - 44163, - 44164, - 44165, - 44166, - 44167, - 44168, - 44169, - 44170, - 44171, - 44172, - 44173, - 44174, - 44175, - 44176, - 44177, - 44178, - 44179, - 44180, - 44181, - 44182, - 44183, - 44184, - 44185, - 44186, - 44187, - 44188, - 44189, - 44190, - 44191, - 44192, - 44193, - 44194, - 44195, - 44196, - 44197, - 44198, - 44199, - 44200, - 44201, - 44202, - 44203, - 44204, - 44205, - 44206, - 44207, - 44208, - 44209, - 44210, - 44211, - 44212, - 44213, - 44214, - 44215, - 44216, - 44217, - 44218, - 44219, - 44220, - 44221, - 44222, - 44223, - 44224, - 44225, - 44226, - 44227, - 44228, - 44229, - 44230, - 44231, - 44232, - 44233, - 44234, - 44235, - 44236, - 44237, - 44238, - 44239, - 44240, - 44241, - 44242, - 44243, - 44244, - 44245, - 44246, - 44247, - 44248, - 44249, - 44250, - 44251, - 44252, - 44253, - 44254, - 44255, - 44256, - 44257, - 44258, - 44259, - 44260, - 44261, - 44262, - 44263, - 44264, - 44265, - 44266, - 44267, - 44268, - 44269, - 44270, - 44271, - 44272, - 44273, - 44274, - 44275, - 44276, - 44277, - 44278, - 44279, - 44280, - 44281, - 44282, - 44283, - 44284, - 44285, - 44286, - 44287, - 44288, - 44289, - 44290, - 44291, - 44292, - 44293, - 44294, - 44295, - 44296, - 44297, - 44298, - 44299, - 44300, - 44301, - 44302, - 44303, - 44304, - 44305, - 44306, - 44307, - 44308, - 44309, - 44310, - 44311, - 44312, - 44313, - 44314, - 44315, - 44316, - 44317, - 44318, - 44319, - 44320, - 44321, - 44322, - 44323, - 44324, - 44325, - 44326, - 44327, - 44328, - 44329, - 44330, - 44331, - 44332, - 44333, - 44334, - 44335, - 44336, - 44337, - 44338, - 44339, - 44340, - 44341, - 44342, - 44343, - 44344, - 44345, - 44346, - 44347, - 44348, - 44349, - 44350, - 44351, - 44352, - 44353, - 44354, - 44355, - 44356, - 44357, - 44358, - 44359, - 44360, - 44361, - 44362, - 44363, - 44364, - 44365, - 44366, - 44367, - 44368, - 44369, - 44370, - 44371, - 44372, - 44373, - 44374, - 44375, - 44376, - 44377, - 44378, - 44379, - 44380, - 44381, - 44382, - 44383, - 44384, - 44385, - 44386, - 44387, - 44388, - 44389, - 44390, - 44391, - 44392, - 44393, - 44394, - 44395, - 44396, - 44397, - 44398, - 44399, - 44400, - 44401, - 44402, - 44403, - 44404, - 44405, - 44406, - 44407, - 44408, - 44409, - 44410, - 44411, - 44412, - 44413, - 44414, - 44415, - 44416, - 44417, - 44418, - 44419, - 44420, - 44421, - 44422, - 44423, - 44424, - 44425, - 44426, - 44427, - 44428, - 44429, - 44430, - 44431, - 44432, - 44433, - 44434, - 44435, - 44436, - 44437, - 44438, - 44439, - 44440, - 44441, - 44442, - 44443, - 44444, - 44445, - 44446, - 44447, - 44448, - 44449, - 44450, - 44451, - 44452, - 44453, - 44454, - 44455, - 44456, - 44457, - 44458, - 44459, - 44460, - 44461, - 44462, - 44463, - 44464, - 44465, - 44466, - 44467, - 44468, - 44469, - 44470, - 44471, - 44472, - 44473, - 44474, - 44475, - 44476, - 44477, - 44478, - 44479, - 44480, - 44481, - 44482, - 44483, - 44484, - 44485, - 44486, - 44487, - 44488, - 44489, - 44490, - 44491, - 44492, - 44493, - 44494, - 44495, - 44496, - 44497, - 44498, - 44499, - 44500, - 44501, - 44502, - 44503, - 44504, - 44505, - 44506, - 44507, - 44508, - 44509, - 44510, - 44511, - 44512, - 44513, - 44514, - 44515, - 44516, - 44517, - 44518, - 44519, - 44520, - 44521, - 44522, - 44523, - 44524, - 44525, - 44526, - 44527, - 44528, - 44529, - 44530, - 44531, - 44532, - 44533, - 44534, - 44535, - 44536, - 44537, - 44538, - 44539, - 44540, - 44541, - 44542, - 44543, - 44544, - 44545, - 44546, - 44547, - 44548, - 44549, - 44550, - 44551, - 44552, - 44553, - 44554, - 44555, - 44556, - 44557, - 44558, - 44559, - 44560, - 44561, - 44562, - 44563, - 44564, - 44565, - 44566, - 44567, - 44568, - 44569, - 44570, - 44571, - 44572, - 44573, - 44574, - 44575, - 44576, - 44577, - 44578, - 44579, - 44580, - 44581, - 44582, - 44583, - 44584, - 44585, - 44586, - 44587, - 44588, - 44589, - 44590, - 44591, - 44592, - 44593, - 44594, - 44595, - 44596, - 44597, - 44598, - 44599, - 44600, - 44601, - 44602, - 44603, - 44604, - 44605, - 44606, - 44607, - 44608, - 44609, - 44610, - 44611, - 44612, - 44613, - 44614, - 44615, - 44616, - 44617, - 44618, - 44619, - 44620, - 44621, - 44622, - 44623, - 44624, - 44625, - 44626, - 44627, - 44628, - 44629, - 44630, - 44631, - 44632, - 44633, - 44634, - 44635, - 44636, - 44637, - 44638, - 44639, - 44640, - 44641, - 44642, - 44643, - 44644, - 44645, - 44646, - 44647, - 44648, - 44649, - 44650, - 44651, - 44652, - 44653, - 44654, - 44655, - 44656, - 44657, - 44658, - 44659, - 44660, - 44661, - 44662, - 44663, - 44664, - 44665, - 44666, - 44667, - 44668, - 44669, - 44670, - 44671, - 44672, - 44673, - 44674, - 44675, - 44676, - 44677, - 44678, - 44679, - 44680, - 44681, - 44682, - 44683, - 44684, - 44685, - 44686, - 44687, - 44688, - 44689, - 44690, - 44691, - 44692, - 44693, - 44694, - 44695, - 44696, - 44697, - 44698, - 44699, - 44700, - 44701, - 44702, - 44703, - 44704, - 44705, - 44706, - 44707, - 44708, - 44709, - 44710, - 44711, - 44712, - 44713, - 44714, - 44715, - 44716, - 44717, - 44718, - 44719, - 44720, - 44721, - 44722, - 44723, - 44724, - 44725, - 44726, - 44727, - 44728, - 44729, - 44730, - 44731, - 44732, - 44733, - 44734, - 44735, - 44736, - 44737, - 44738, - 44739, - 44740, - 44741, - 44742, - 44743, - 44744, - 44745, - 44746, - 44747, - 44748, - 44749, - 44750, - 44751, - 44752, - 44753, - 44754, - 44755, - 44756, - 44757, - 44758, - 44759, - 44760, - 44761, - 44762, - 44763, - 44764, - 44765, - 44766, - 44767, - 44768, - 44769, - 44770, - 44771, - 44772, - 44773, - 44774, - 44775, - 44776, - 44777, - 44778, - 44779, - 44780, - 44781, - 44782, - 44783, - 44784, - 44785, - 44786, - 44787, - 44788, - 44789, - 44790, - 44791, - 44792, - 44793, - 44794, - 44795, - 44796, - 44797, - 44798, - 44799, - 44800, - 44801, - 44802, - 44803, - 44804, - 44805, - 44806, - 44807, - 44808, - 44809, - 44810, - 44811, - 44812, - 44813, - 44814, - 44815, - 44816, - 44817, - 44818, - 44819, - 44820, - 44821, - 44822, - 44823, - 44824, - 44825, - 44826, - 44827, - 44828, - 44829, - 44830, - 44831, - 44832, - 44833, - 44834, - 44835, - 44836, - 44837, - 44838, - 44839, - 44840, - 44841, - 44842, - 44843, - 44844, - 44845, - 44846, - 44847, - 44848, - 44849, - 44850, - 44851, - 44852, - 44853, - 44854, - 44855, - 44856, - 44857, - 44858, - 44859, - 44860, - 44861, - 44862, - 44863, - 44864, - 44865, - 44866, - 44867, - 44868, - 44869, - 44870, - 44871, - 44872, - 44873, - 44874, - 44875, - 44876, - 44877, - 44878, - 44879, - 44880, - 44881, - 44882, - 44883, - 44884, - 44885, - 44886, - 44887, - 44888, - 44889, - 44890, - 44891, - 44892, - 44893, - 44894, - 44895, - 44896, - 44897, - 44898, - 44899, - 44900, - 44901, - 44902, - 44903, - 44904, - 44905, - 44906, - 44907, - 44908, - 44909, - 44910, - 44911, - 44912, - 44913, - 44914, - 44915, - 44916, - 44917, - 44918, - 44919, - 44920, - 44921, - 44922, - 44923, - 44924, - 44925, - 44926, - 44927, - 44928, - 44929, - 44930, - 44931, - 44932, - 44933, - 44934, - 44935, - 44936, - 44937, - 44938, - 44939, - 44940, - 44941, - 44942, - 44943, - 44944, - 44945, - 44946, - 44947, - 44948, - 44949, - 44950, - 44951, - 44952, - 44953, - 44954, - 44955, - 44956, - 44957, - 44958, - 44959, - 44960, - 44961, - 44962, - 44963, - 44964, - 44965, - 44966, - 44967, - 44968, - 44969, - 44970, - 44971, - 44972, - 44973, - 44974, - 44975, - 44976, - 44977, - 44978, - 44979, - 44980, - 44981, - 44982, - 44983, - 44984, - 44985, - 44986, - 44987, - 44988, - 44989, - 44990, - 44991, - 44992, - 44993, - 44994, - 44995, - 44996, - 44997, - 44998, - 44999, - 45000, - 45001, - 45002, - 45003, - 45004, - 45005, - 45006, - 45007, - 45008, - 45009, - 45010, - 45011, - 45012, - 45013, - 45014, - 45015, - 45016, - 45017, - 45018, - 45019, - 45020, - 45021, - 45022, - 45023, - 45024, - 45025, - 45026, - 45027, - 45028, - 45029, - 45030, - 45031, - 45032, - 45033, - 45034, - 45035, - 45036, - 45037, - 45038, - 45039, - 45040, - 45041, - 45042, - 45043, - 45044, - 45045, - 45046, - 45047, - 45048, - 45049, - 45050, - 45051, - 45052, - 45053, - 45054, - 45055, - 45056, - 45057, - 45058, - 45059, - 45060, - 45061, - 45062, - 45063, - 45064, - 45065, - 45066, - 45067, - 45068, - 45069, - 45070, - 45071, - 45072, - 45073, - 45074, - 45075, - 45076, - 45077, - 45078, - 45079, - 45080, - 45081, - 45082, - 45083, - 45084, - 45085, - 45086, - 45087, - 45088, - 45089, - 45090, - 45091, - 45092, - 45093, - 45094, - 45095, - 45096, - 45097, - 45098, - 45099, - 45100, - 45101, - 45102, - 45103, - 45104, - 45105, - 45106, - 45107, - 45108, - 45109, - 45110, - 45111, - 45112, - 45113, - 45114, - 45115, - 45116, - 45117, - 45118, - 45119, - 45120, - 45121, - 45122, - 45123, - 45124, - 45125, - 45126, - 45127, - 45128, - 45129, - 45130, - 45131, - 45132, - 45133, - 45134, - 45135, - 45136, - 45137, - 45138, - 45139, - 45140, - 45141, - 45142, - 45143, - 45144, - 45145, - 45146, - 45147, - 45148, - 45149, - 45150, - 45151, - 45152, - 45153, - 45154, - 45155, - 45156, - 45157, - 45158, - 45159, - 45160, - 45161, - 45162, - 45163, - 45164, - 45165, - 45166, - 45167, - 45168, - 45169, - 45170, - 45171, - 45172, - 45173, - 45174, - 45175, - 45176, - 45177, - 45178, - 45179, - 45180, - 45181, - 45182, - 45183, - 45184, - 45185, - 45186, - 45187, - 45188, - 45189, - 45190, - 45191, - 45192, - 45193, - 45194, - 45195, - 45196, - 45197, - 45198, - 45199, - 45200, - 45201, - 45202, - 45203, - 45204, - 45205, - 45206, - 45207, - 45208, - 45209, - 45210, - 45211, - 45212, - 45213, - 45214, - 45215, - 45216, - 45217, - 45218, - 45219, - 45220, - 45221, - 45222, - 45223, - 45224, - 45225, - 45226, - 45227, - 45228, - 45229, - 45230, - 45231, - 45232, - 45233, - 45234, - 45235, - 45236, - 45237, - 45238, - 45239, - 45240, - 45241, - 45242, - 45243, - 45244, - 45245, - 45246, - 45247, - 45248, - 45249, - 45250, - 45251, - 45252, - 45253, - 45254, - 45255, - 45256, - 45257, - 45258, - 45259, - 45260, - 45261, - 45262, - 45263, - 45264, - 45265, - 45266, - 45267, - 45268, - 45269, - 45270, - 45271, - 45272, - 45273, - 45274, - 45275, - 45276, - 45277, - 45278, - 45279, - 45280, - 45281, - 45282, - 45283, - 45284, - 45285, - 45286, - 45287, - 45288, - 45289, - 45290, - 45291, - 45292, - 45293, - 45294, - 45295, - 45296, - 45297, - 45298, - 45299, - 45300, - 45301, - 45302, - 45303, - 45304, - 45305, - 45306, - 45307, - 45308, - 45309, - 45310, - 45311, - 45312, - 45313, - 45314, - 45315, - 45316, - 45317, - 45318, - 45319, - 45320, - 45321, - 45322, - 45323, - 45324, - 45325, - 45326, - 45327, - 45328, - 45329, - 45330, - 45331, - 45332, - 45333, - 45334, - 45335, - 45336, - 45337, - 45338, - 45339, - 45340, - 45341, - 45342, - 45343, - 45344, - 45345, - 45346, - 45347, - 45348, - 45349, - 45350, - 45351, - 45352, - 45353, - 45354, - 45355, - 45356, - 45357, - 45358, - 45359, - 45360, - 45361, - 45362, - 45363, - 45364, - 45365, - 45366, - 45367, - 45368, - 45369, - 45370, - 45371, - 45372, - 45373, - 45374, - 45375, - 45376, - 45377, - 45378, - 45379, - 45380, - 45381, - 45382, - 45383, - 45384, - 45385, - 45386, - 45387, - 45388, - 45389, - 45390, - 45391, - 45392, - 45393, - 45394, - 45395, - 45396, - 45397, - 45398, - 45399, - 45400, - 45401, - 45402, - 45403, - 45404, - 45405, - 45406, - 45407, - 45408, - 45409, - 45410, - 45411, - 45412, - 45413, - 45414, - 45415, - 45416, - 45417, - 45418, - 45419, - 45420, - 45421, - 45422, - 45423, - 45424, - 45425, - 45426, - 45427, - 45428, - 45429, - 45430, - 45431, - 45432, - 45433, - 45434, - 45435, - 45436, - 45437, - 45438, - 45439, - 45440, - 45441, - 45442, - 45443, - 45444, - 45445, - 45446, - 45447, - 45448, - 45449, - 45450, - 45451, - 45452, - 45453, - 45454, - 45455, - 45456, - 45457, - 45458, - 45459, - 45460, - 45461, - 45462, - 45463, - 45464, - 45465, - 45466, - 45467, - 45468, - 45469, - 45470, - 45471, - 45472, - 45473, - 45474, - 45475, - 45476, - 45477, - 45478, - 45479, - 45480, - 45481, - 45482, - 45483, - 45484, - 45485, - 45486, - 45487, - 45488, - 45489, - 45490, - 45491, - 45492, - 45493, - 45494, - 45495, - 45496, - 45497, - 45498, - 45499, - 45500, - 45501, - 45502, - 45503, - 45504, - 45505, - 45506, - 45507, - 45508, - 45509, - 45510, - 45511, - 45512, - 45513, - 45514, - 45515, - 45516, - 45517, - 45518, - 45519, - 45520, - 45521, - 45522, - 45523, - 45524, - 45525, - 45526, - 45527, - 45528, - 45529, - 45530, - 45531, - 45532, - 45533, - 45534, - 45535, - 45536, - 45537, - 45538, - 45539, - 45540, - 45541, - 45542, - 45543, - 45544, - 45545, - 45546, - 45547, - 45548, - 45549, - 45550, - 45551, - 45552, - 45553, - 45554, - 45555, - 45556, - 45557, - 45558, - 45559, - 45560, - 45561, - 45562, - 45563, - 45564, - 45565, - 45566, - 45567, - 45568, - 45569, - 45570, - 45571, - 45572, - 45573, - 45574, - 45575, - 45576, - 45577, - 45578, - 45579, - 45580, - 45581, - 45582, - 45583, - 45584, - 45585, - 45586, - 45587, - 45588, - 45589, - 45590, - 45591, - 45592, - 45593, - 45594, - 45595, - 45596, - 45597, - 45598, - 45599, - 45600, - 45601, - 45602, - 45603, - 45604, - 45605, - 45606, - 45607, - 45608, - 45609, - 45610, - 45611, - 45612, - 45613, - 45614, - 45615, - 45616, - 45617, - 45618, - 45619, - 45620, - 45621, - 45622, - 45623, - 45624, - 45625, - 45626, - 45627, - 45628, - 45629, - 45630, - 45631, - 45632, - 45633, - 45634, - 45635, - 45636, - 45637, - 45638, - 45639, - 45640, - 45641, - 45642, - 45643, - 45644, - 45645, - 45646, - 45647, - 45648, - 45649, - 45650, - 45651, - 45652, - 45653, - 45654, - 45655, - 45656, - 45657, - 45658, - 45659, - 45660, - 45661, - 45662, - 45663, - 45664, - 45665, - 45666, - 45667, - 45668, - 45669, - 45670, - 45671, - 45672, - 45673, - 45674, - 45675, - 45676, - 45677, - 45678, - 45679, - 45680, - 45681, - 45682, - 45683, - 45684, - 45685, - 45686, - 45687, - 45688, - 45689, - 45690, - 45691, - 45692, - 45693, - 45694, - 45695, - 45696, - 45697, - 45698, - 45699, - 45700, - 45701, - 45702, - 45703, - 45704, - 45705, - 45706, - 45707, - 45708, - 45709, - 45710, - 45711, - 45712, - 45713, - 45714, - 45715, - 45716, - 45717, - 45718, - 45719, - 45720, - 45721, - 45722, - 45723, - 45724, - 45725, - 45726, - 45727, - 45728, - 45729, - 45730, - 45731, - 45732, - 45733, - 45734, - 45735, - 45736, - 45737, - 45738, - 45739, - 45740, - 45741, - 45742, - 45743, - 45744, - 45745, - 45746, - 45747, - 45748, - 45749, - 45750, - 45751, - 45752, - 45753, - 45754, - 45755, - 45756, - 45757, - 45758, - 45759, - 45760, - 45761, - 45762, - 45763, - 45764, - 45765, - 45766, - 45767, - 45768, - 45769, - 45770, - 45771, - 45772, - 45773, - 45774, - 45775, - 45776, - 45777, - 45778, - 45779, - 45780, - 45781, - 45782, - 45783, - 45784, - 45785, - 45786, - 45787, - 45788, - 45789, - 45790, - 45791, - 45792, - 45793, - 45794, - 45795, - 45796, - 45797, - 45798, - 45799, - 45800, - 45801, - 45802, - 45803, - 45804, - 45805, - 45806, - 45807, - 45808, - 45809, - 45810, - 45811, - 45812, - 45813, - 45814, - 45815, - 45816, - 45817, - 45818, - 45819, - 45820, - 45821, - 45822, - 45823, - 45824, - 45825, - 45826, - 45827, - 45828, - 45829, - 45830, - 45831, - 45832, - 45833, - 45834, - 45835, - 45836, - 45837, - 45838, - 45839, - 45840, - 45841, - 45842, - 45843, - 45844, - 45845, - 45846, - 45847, - 45848, - 45849, - 45850, - 45851, - 45852, - 45853, - 45854, - 45855, - 45856, - 45857, - 45858, - 45859, - 45860, - 45861, - 45862, - 45863, - 45864, - 45865, - 45866, - 45867, - 45868, - 45869, - 45870, - 45871, - 45872, - 45873, - 45874, - 45875, - 45876, - 45877, - 45878, - 45879, - 45880, - 45881, - 45882, - 45883, - 45884, - 45885, - 45886, - 45887, - 45888, - 45889, - 45890, - 45891, - 45892, - 45893, - 45894, - 45895, - 45896, - 45897, - 45898, - 45899, - 45900, - 45901, - 45902, - 45903, - 45904, - 45905, - 45906, - 45907, - 45908, - 45909, - 45910, - 45911, - 45912, - 45913, - 45914, - 45915, - 45916, - 45917, - 45918, - 45919, - 45920, - 45921, - 45922, - 45923, - 45924, - 45925, - 45926, - 45927, - 45928, - 45929, - 45930, - 45931, - 45932, - 45933, - 45934, - 45935, - 45936, - 45937, - 45938, - 45939, - 45940, - 45941, - 45942, - 45943, - 45944, - 45945, - 45946, - 45947, - 45948, - 45949, - 45950, - 45951, - 45952, - 45953, - 45954, - 45955, - 45956, - 45957, - 45958, - 45959, - 45960, - 45961, - 45962, - 45963, - 45964, - 45965, - 45966, - 45967, - 45968, - 45969, - 45970, - 45971, - 45972, - 45973, - 45974, - 45975, - 45976, - 45977, - 45978, - 45979, - 45980, - 45981, - 45982, - 45983, - 45984, - 45985, - 45986, - 45987, - 45988, - 45989, - 45990, - 45991, - 45992, - 45993, - 45994, - 45995, - 45996, - 45997, - 45998, - 45999, - 46000, - 46001, - 46002, - 46003, - 46004, - 46005, - 46006, - 46007, - 46008, - 46009, - 46010, - 46011, - 46012, - 46013, - 46014, - 46015, - 46016, - 46017, - 46018, - 46019, - 46020, - 46021, - 46022, - 46023, - 46024, - 46025, - 46026, - 46027, - 46028, - 46029, - 46030, - 46031, - 46032, - 46033, - 46034, - 46035, - 46036, - 46037, - 46038, - 46039, - 46040, - 46041, - 46042, - 46043, - 46044, - 46045, - 46046, - 46047, - 46048, - 46049, - 46050, - 46051, - 46052, - 46053, - 46054, - 46055, - 46056, - 46057, - 46058, - 46059, - 46060, - 46061, - 46062, - 46063, - 46064, - 46065, - 46066, - 46067, - 46068, - 46069, - 46070, - 46071, - 46072, - 46073, - 46074, - 46075, - 46076, - 46077, - 46078, - 46079, - 46080, - 46081, - 46082, - 46083, - 46084, - 46085, - 46086, - 46087, - 46088, - 46089, - 46090, - 46091, - 46092, - 46093, - 46094, - 46095, - 46096, - 46097, - 46098, - 46099, - 46100, - 46101, - 46102, - 46103, - 46104, - 46105, - 46106, - 46107, - 46108, - 46109, - 46110, - 46111, - 46112, - 46113, - 46114, - 46115, - 46116, - 46117, - 46118, - 46119, - 46120, - 46121, - 46122, - 46123, - 46124, - 46125, - 46126, - 46127, - 46128, - 46129, - 46130, - 46131, - 46132, - 46133, - 46134, - 46135, - 46136, - 46137, - 46138, - 46139, - 46140, - 46141, - 46142, - 46143, - 46144, - 46145, - 46146, - 46147, - 46148, - 46149, - 46150, - 46151, - 46152, - 46153, - 46154, - 46155, - 46156, - 46157, - 46158, - 46159, - 46160, - 46161, - 46162, - 46163, - 46164, - 46165, - 46166, - 46167, - 46168, - 46169, - 46170, - 46171, - 46172, - 46173, - 46174, - 46175, - 46176, - 46177, - 46178, - 46179, - 46180, - 46181, - 46182, - 46183, - 46184, - 46185, - 46186, - 46187, - 46188, - 46189, - 46190, - 46191, - 46192, - 46193, - 46194, - 46195, - 46196, - 46197, - 46198, - 46199, - 46200, - 46201, - 46202, - 46203, - 46204, - 46205, - 46206, - 46207, - 46208, - 46209, - 46210, - 46211, - 46212, - 46213, - 46214, - 46215, - 46216, - 46217, - 46218, - 46219, - 46220, - 46221, - 46222, - 46223, - 46224, - 46225, - 46226, - 46227, - 46228, - 46229, - 46230, - 46231, - 46232, - 46233, - 46234, - 46235, - 46236, - 46237, - 46238, - 46239, - 46240, - 46241, - 46242, - 46243, - 46244, - 46245, - 46246, - 46247, - 46248, - 46249, - 46250, - 46251, - 46252, - 46253, - 46254, - 46255, - 46256, - 46257, - 46258, - 46259, - 46260, - 46261, - 46262, - 46263, - 46264, - 46265, - 46266, - 46267, - 46268, - 46269, - 46270, - 46271, - 46272, - 46273, - 46274, - 46275, - 46276, - 46277, - 46278, - 46279, - 46280, - 46281, - 46282, - 46283, - 46284, - 46285, - 46286, - 46287, - 46288, - 46289, - 46290, - 46291, - 46292, - 46293, - 46294, - 46295, - 46296, - 46297, - 46298, - 46299, - 46300, - 46301, - 46302, - 46303, - 46304, - 46305, - 46306, - 46307, - 46308, - 46309, - 46310, - 46311, - 46312, - 46313, - 46314, - 46315, - 46316, - 46317, - 46318, - 46319, - 46320, - 46321, - 46322, - 46323, - 46324, - 46325, - 46326, - 46327, - 46328, - 46329, - 46330, - 46331, - 46332, - 46333, - 46334, - 46335, - 46336, - 46337, - 46338, - 46339, - 46340, - 46341, - 46342, - 46343, - 46344, - 46345, - 46346, - 46347, - 46348, - 46349, - 46350, - 46351, - 46352, - 46353, - 46354, - 46355, - 46356, - 46357, - 46358, - 46359, - 46360, - 46361, - 46362, - 46363, - 46364, - 46365, - 46366, - 46367, - 46368, - 46369, - 46370, - 46371, - 46372, - 46373, - 46374, - 46375, - 46376, - 46377, - 46378, - 46379, - 46380, - 46381, - 46382, - 46383, - 46384, - 46385, - 46386, - 46387, - 46388, - 46389, - 46390, - 46391, - 46392, - 46393, - 46394, - 46395, - 46396, - 46397, - 46398, - 46399, - 46400, - 46401, - 46402, - 46403, - 46404, - 46405, - 46406, - 46407, - 46408, - 46409, - 46410, - 46411, - 46412, - 46413, - 46414, - 46415, - 46416, - 46417, - 46418, - 46419, - 46420, - 46421, - 46422, - 46423, - 46424, - 46425, - 46426, - 46427, - 46428, - 46429, - 46430, - 46431, - 46432, - 46433, - 46434, - 46435, - 46436, - 46437, - 46438, - 46439, - 46440, - 46441, - 46442, - 46443, - 46444, - 46445, - 46446, - 46447, - 46448, - 46449, - 46450, - 46451, - 46452, - 46453, - 46454, - 46455, - 46456, - 46457, - 46458, - 46459, - 46460, - 46461, - 46462, - 46463, - 46464, - 46465, - 46466, - 46467, - 46468, - 46469, - 46470, - 46471, - 46472, - 46473, - 46474, - 46475, - 46476, - 46477, - 46478, - 46479, - 46480, - 46481, - 46482, - 46483, - 46484, - 46485, - 46486, - 46487, - 46488, - 46489, - 46490, - 46491, - 46492, - 46493, - 46494, - 46495, - 46496, - 46497, - 46498, - 46499, - 46500, - 46501, - 46502, - 46503, - 46504, - 46505, - 46506, - 46507, - 46508, - 46509, - 46510, - 46511, - 46512, - 46513, - 46514, - 46515, - 46516, - 46517, - 46518, - 46519, - 46520, - 46521, - 46522, - 46523, - 46524, - 46525, - 46526, - 46527, - 46528, - 46529, - 46530, - 46531, - 46532, - 46533, - 46534, - 46535, - 46536, - 46537, - 46538, - 46539, - 46540, - 46541, - 46542, - 46543, - 46544, - 46545, - 46546, - 46547, - 46548, - 46549, - 46550, - 46551, - 46552, - 46553, - 46554, - 46555, - 46556, - 46557, - 46558, - 46559, - 46560, - 46561, - 46562, - 46563, - 46564, - 46565, - 46566, - 46567, - 46568, - 46569, - 46570, - 46571, - 46572, - 46573, - 46574, - 46575, - 46576, - 46577, - 46578, - 46579, - 46580, - 46581, - 46582, - 46583, - 46584, - 46585, - 46586, - 46587, - 46588, - 46589, - 46590, - 46591, - 46592, - 46593, - 46594, - 46595, - 46596, - 46597, - 46598, - 46599, - 46600, - 46601, - 46602, - 46603, - 46604, - 46605, - 46606, - 46607, - 46608, - 46609, - 46610, - 46611, - 46612, - 46613, - 46614, - 46615, - 46616, - 46617, - 46618, - 46619, - 46620, - 46621, - 46622, - 46623, - 46624, - 46625, - 46626, - 46627, - 46628, - 46629, - 46630, - 46631, - 46632, - 46633, - 46634, - 46635, - 46636, - 46637, - 46638, - 46639, - 46640, - 46641, - 46642, - 46643, - 46644, - 46645, - 46646, - 46647, - 46648, - 46649, - 46650, - 46651, - 46652, - 46653, - 46654, - 46655, - 46656, - 46657, - 46658, - 46659, - 46660, - 46661, - 46662, - 46663, - 46664, - 46665, - 46666, - 46667, - 46668, - 46669, - 46670, - 46671, - 46672, - 46673, - 46674, - 46675, - 46676, - 46677, - 46678, - 46679, - 46680, - 46681, - 46682, - 46683, - 46684, - 46685, - 46686, - 46687, - 46688, - 46689, - 46690, - 46691, - 46692, - 46693, - 46694, - 46695, - 46696, - 46697, - 46698, - 46699, - 46700, - 46701, - 46702, - 46703, - 46704, - 46705, - 46706, - 46707, - 46708, - 46709, - 46710, - 46711, - 46712, - 46713, - 46714, - 46715, - 46716, - 46717, - 46718, - 46719, - 46720, - 46721, - 46722, - 46723, - 46724, - 46725, - 46726, - 46727, - 46728, - 46729, - 46730, - 46731, - 46732, - 46733, - 46734, - 46735, - 46736, - 46737, - 46738, - 46739, - 46740, - 46741, - 46742, - 46743, - 46744, - 46745, - 46746, - 46747, - 46748, - 46749, - 46750, - 46751, - 46752, - 46753, - 46754, - 46755, - 46756, - 46757, - 46758, - 46759, - 46760, - 46761, - 46762, - 46763, - 46764, - 46765, - 46766, - 46767, - 46768, - 46769, - 46770, - 46771, - 46772, - 46773, - 46774, - 46775, - 46776, - 46777, - 46778, - 46779, - 46780, - 46781, - 46782, - 46783, - 46784, - 46785, - 46786, - 46787, - 46788, - 46789, - 46790, - 46791, - 46792, - 46793, - 46794, - 46795, - 46796, - 46797, - 46798, - 46799, - 46800, - 46801, - 46802, - 46803, - 46804, - 46805, - 46806, - 46807, - 46808, - 46809, - 46810, - 46811, - 46812, - 46813, - 46814, - 46815, - 46816, - 46817, - 46818, - 46819, - 46820, - 46821, - 46822, - 46823, - 46824, - 46825, - 46826, - 46827, - 46828, - 46829, - 46830, - 46831, - 46832, - 46833, - 46834, - 46835, - 46836, - 46837, - 46838, - 46839, - 46840, - 46841, - 46842, - 46843, - 46844, - 46845, - 46846, - 46847, - 46848, - 46849, - 46850, - 46851, - 46852, - 46853, - 46854, - 46855, - 46856, - 46857, - 46858, - 46859, - 46860, - 46861, - 46862, - 46863, - 46864, - 46865, - 46866, - 46867, - 46868, - 46869, - 46870, - 46871, - 46872, - 46873, - 46874, - 46875, - 46876, - 46877, - 46878, - 46879, - 46880, - 46881, - 46882, - 46883, - 46884, - 46885, - 46886, - 46887, - 46888, - 46889, - 46890, - 46891, - 46892, - 46893, - 46894, - 46895, - 46896, - 46897, - 46898, - 46899, - 46900, - 46901, - 46902, - 46903, - 46904, - 46905, - 46906, - 46907, - 46908, - 46909, - 46910, - 46911, - 46912, - 46913, - 46914, - 46915, - 46916, - 46917, - 46918, - 46919, - 46920, - 46921, - 46922, - 46923, - 46924, - 46925, - 46926, - 46927, - 46928, - 46929, - 46930, - 46931, - 46932, - 46933, - 46934, - 46935, - 46936, - 46937, - 46938, - 46939, - 46940, - 46941, - 46942, - 46943, - 46944, - 46945, - 46946, - 46947, - 46948, - 46949, - 46950, - 46951, - 46952, - 46953, - 46954, - 46955, - 46956, - 46957, - 46958, - 46959, - 46960, - 46961, - 46962, - 46963, - 46964, - 46965, - 46966, - 46967, - 46968, - 46969, - 46970, - 46971, - 46972, - 46973, - 46974, - 46975, - 46976, - 46977, - 46978, - 46979, - 46980, - 46981, - 46982, - 46983, - 46984, - 46985, - 46986, - 46987, - 46988, - 46989, - 46990, - 46991, - 46992, - 46993, - 46994, - 46995, - 46996, - 46997, - 46998, - 46999, - 47000, - 47001, - 47002, - 47003, - 47004, - 47005, - 47006, - 47007, - 47008, - 47009, - 47010, - 47011, - 47012, - 47013, - 47014, - 47015, - 47016, - 47017, - 47018, - 47019, - 47020, - 47021, - 47022, - 47023, - 47024, - 47025, - 47026, - 47027, - 47028, - 47029, - 47030, - 47031, - 47032, - 47033, - 47034, - 47035, - 47036, - 47037, - 47038, - 47039, - 47040, - 47041, - 47042, - 47043, - 47044, - 47045, - 47046, - 47047, - 47048, - 47049, - 47050, - 47051, - 47052, - 47053, - 47054, - 47055, - 47056, - 47057, - 47058, - 47059, - 47060, - 47061, - 47062, - 47063, - 47064, - 47065, - 47066, - 47067, - 47068, - 47069, - 47070, - 47071, - 47072, - 47073, - 47074, - 47075, - 47076, - 47077, - 47078, - 47079, - 47080, - 47081, - 47082, - 47083, - 47084, - 47085, - 47086, - 47087, - 47088, - 47089, - 47090, - 47091, - 47092, - 47093, - 47094, - 47095, - 47096, - 47097, - 47098, - 47099, - 47100, - 47101, - 47102, - 47103, - 47104, - 47105, - 47106, - 47107, - 47108, - 47109, - 47110, - 47111, - 47112, - 47113, - 47114, - 47115, - 47116, - 47117, - 47118, - 47119, - 47120, - 47121, - 47122, - 47123, - 47124, - 47125, - 47126, - 47127, - 47128, - 47129, - 47130, - 47131, - 47132, - 47133, - 47134, - 47135, - 47136, - 47137, - 47138, - 47139, - 47140, - 47141, - 47142, - 47143, - 47144, - 47145, - 47146, - 47147, - 47148, - 47149, - 47150, - 47151, - 47152, - 47153, - 47154, - 47155, - 47156, - 47157, - 47158, - 47159, - 47160, - 47161, - 47162, - 47163, - 47164, - 47165, - 47166, - 47167, - 47168, - 47169, - 47170, - 47171, - 47172, - 47173, - 47174, - 47175, - 47176, - 47177, - 47178, - 47179, - 47180, - 47181, - 47182, - 47183, - 47184, - 47185, - 47186, - 47187, - 47188, - 47189, - 47190, - 47191, - 47192, - 47193, - 47194, - 47195, - 47196, - 47197, - 47198, - 47199, - 47200, - 47201, - 47202, - 47203, - 47204, - 47205, - 47206, - 47207, - 47208, - 47209, - 47210, - 47211, - 47212, - 47213, - 47214, - 47215, - 47216, - 47217, - 47218, - 47219, - 47220, - 47221, - 47222, - 47223, - 47224, - 47225, - 47226, - 47227, - 47228, - 47229, - 47230, - 47231, - 47232, - 47233, - 47234, - 47235, - 47236, - 47237, - 47238, - 47239, - 47240, - 47241, - 47242, - 47243, - 47244, - 47245, - 47246, - 47247, - 47248, - 47249, - 47250, - 47251, - 47252, - 47253, - 47254, - 47255, - 47256, - 47257, - 47258, - 47259, - 47260, - 47261, - 47262, - 47263, - 47264, - 47265, - 47266, - 47267, - 47268, - 47269, - 47270, - 47271, - 47272, - 47273, - 47274, - 47275, - 47276, - 47277, - 47278, - 47279, - 47280, - 47281, - 47282, - 47283, - 47284, - 47285, - 47286, - 47287, - 47288, - 47289, - 47290, - 47291, - 47292, - 47293, - 47294, - 47295, - 47296, - 47297, - 47298, - 47299, - 47300, - 47301, - 47302, - 47303, - 47304, - 47305, - 47306, - 47307, - 47308, - 47309, - 47310, - 47311, - 47312, - 47313, - 47314, - 47315, - 47316, - 47317, - 47318, - 47319, - 47320, - 47321, - 47322, - 47323, - 47324, - 47325, - 47326, - 47327, - 47328, - 47329, - 47330, - 47331, - 47332, - 47333, - 47334, - 47335, - 47336, - 47337, - 47338, - 47339, - 47340, - 47341, - 47342, - 47343, - 47344, - 47345, - 47346, - 47347, - 47348, - 47349, - 47350, - 47351, - 47352, - 47353, - 47354, - 47355, - 47356, - 47357, - 47358, - 47359, - 47360, - 47361, - 47362, - 47363, - 47364, - 47365, - 47366, - 47367, - 47368, - 47369, - 47370, - 47371, - 47372, - 47373, - 47374, - 47375, - 47376, - 47377, - 47378, - 47379, - 47380, - 47381, - 47382, - 47383, - 47384, - 47385, - 47386, - 47387, - 47388, - 47389, - 47390, - 47391, - 47392, - 47393, - 47394, - 47395, - 47396, - 47397, - 47398, - 47399, - 47400, - 47401, - 47402, - 47403, - 47404, - 47405, - 47406, - 47407, - 47408, - 47409, - 47410, - 47411, - 47412, - 47413, - 47414, - 47415, - 47416, - 47417, - 47418, - 47419, - 47420, - 47421, - 47422, - 47423, - 47424, - 47425, - 47426, - 47427, - 47428, - 47429, - 47430, - 47431, - 47432, - 47433, - 47434, - 47435, - 47436, - 47437, - 47438, - 47439, - 47440, - 47441, - 47442, - 47443, - 47444, - 47445, - 47446, - 47447, - 47448, - 47449, - 47450, - 47451, - 47452, - 47453, - 47454, - 47455, - 47456, - 47457, - 47458, - 47459, - 47460, - 47461, - 47462, - 47463, - 47464, - 47465, - 47466, - 47467, - 47468, - 47469, - 47470, - 47471, - 47472, - 47473, - 47474, - 47475, - 47476, - 47477, - 47478, - 47479, - 47480, - 47481, - 47482, - 47483, - 47484, - 47485, - 47486, - 47487, - 47488, - 47489, - 47490, - 47491, - 47492, - 47493, - 47494, - 47495, - 47496, - 47497, - 47498, - 47499, - 47500, - 47501, - 47502, - 47503, - 47504, - 47505, - 47506, - 47507, - 47508, - 47509, - 47510, - 47511, - 47512, - 47513, - 47514, - 47515, - 47516, - 47517, - 47518, - 47519, - 47520, - 47521, - 47522, - 47523, - 47524, - 47525, - 47526, - 47527, - 47528, - 47529, - 47530, - 47531, - 47532, - 47533, - 47534, - 47535, - 47536, - 47537, - 47538, - 47539, - 47540, - 47541, - 47542, - 47543, - 47544, - 47545, - 47546, - 47547, - 47548, - 47549, - 47550, - 47551, - 47552, - 47553, - 47554, - 47555, - 47556, - 47557, - 47558, - 47559, - 47560, - 47561, - 47562, - 47563, - 47564, - 47565, - 47566, - 47567, - 47568, - 47569, - 47570, - 47571, - 47572, - 47573, - 47574, - 47575, - 47576, - 47577, - 47578, - 47579, - 47580, - 47581, - 47582, - 47583, - 47584, - 47585, - 47586, - 47587, - 47588, - 47589, - 47590, - 47591, - 47592, - 47593, - 47594, - 47595, - 47596, - 47597, - 47598, - 47599, - 47600, - 47601, - 47602, - 47603, - 47604, - 47605, - 47606, - 47607, - 47608, - 47609, - 47610, - 47611, - 47612, - 47613, - 47614, - 47615, - 47616, - 47617, - 47618, - 47619, - 47620, - 47621, - 47622, - 47623, - 47624, - 47625, - 47626, - 47627, - 47628, - 47629, - 47630, - 47631, - 47632, - 47633, - 47634, - 47635, - 47636, - 47637, - 47638, - 47639, - 47640, - 47641, - 47642, - 47643, - 47644, - 47645, - 47646, - 47647, - 47648, - 47649, - 47650, - 47651, - 47652, - 47653, - 47654, - 47655, - 47656, - 47657, - 47658, - 47659, - 47660, - 47661, - 47662, - 47663, - 47664, - 47665, - 47666, - 47667, - 47668, - 47669, - 47670, - 47671, - 47672, - 47673, - 47674, - 47675, - 47676, - 47677, - 47678, - 47679, - 47680, - 47681, - 47682, - 47683, - 47684, - 47685, - 47686, - 47687, - 47688, - 47689, - 47690, - 47691, - 47692, - 47693, - 47694, - 47695, - 47696, - 47697, - 47698, - 47699, - 47700, - 47701, - 47702, - 47703, - 47704, - 47705, - 47706, - 47707, - 47708, - 47709, - 47710, - 47711, - 47712, - 47713, - 47714, - 47715, - 47716, - 47717, - 47718, - 47719, - 47720, - 47721, - 47722, - 47723, - 47724, - 47725, - 47726, - 47727, - 47728, - 47729, - 47730, - 47731, - 47732, - 47733, - 47734, - 47735, - 47736, - 47737, - 47738, - 47739, - 47740, - 47741, - 47742, - 47743, - 47744, - 47745, - 47746, - 47747, - 47748, - 47749, - 47750, - 47751, - 47752, - 47753, - 47754, - 47755, - 47756, - 47757, - 47758, - 47759, - 47760, - 47761, - 47762, - 47763, - 47764, - 47765, - 47766, - 47767, - 47768, - 47769, - 47770, - 47771, - 47772, - 47773, - 47774, - 47775, - 47776, - 47777, - 47778, - 47779, - 47780, - 47781, - 47782, - 47783, - 47784, - 47785, - 47786, - 47787, - 47788, - 47789, - 47790, - 47791, - 47792, - 47793, - 47794, - 47795, - 47796, - 47797, - 47798, - 47799, - 47800, - 47801, - 47802, - 47803, - 47804, - 47805, - 47806, - 47807, - 47808, - 47809, - 47810, - 47811, - 47812, - 47813, - 47814, - 47815, - 47816, - 47817, - 47818, - 47819, - 47820, - 47821, - 47822, - 47823, - 47824, - 47825, - 47826, - 47827, - 47828, - 47829, - 47830, - 47831, - 47832, - 47833, - 47834, - 47835, - 47836, - 47837, - 47838, - 47839, - 47840, - 47841, - 47842, - 47843, - 47844, - 47845, - 47846, - 47847, - 47848, - 47849, - 47850, - 47851, - 47852, - 47853, - 47854, - 47855, - 47856, - 47857, - 47858, - 47859, - 47860, - 47861, - 47862, - 47863, - 47864, - 47865, - 47866, - 47867, - 47868, - 47869, - 47870, - 47871, - 47872, - 47873, - 47874, - 47875, - 47876, - 47877, - 47878, - 47879, - 47880, - 47881, - 47882, - 47883, - 47884, - 47885, - 47886, - 47887, - 47888, - 47889, - 47890, - 47891, - 47892, - 47893, - 47894, - 47895, - 47896, - 47897, - 47898, - 47899, - 47900, - 47901, - 47902, - 47903, - 47904, - 47905, - 47906, - 47907, - 47908, - 47909, - 47910, - 47911, - 47912, - 47913, - 47914, - 47915, - 47916, - 47917, - 47918, - 47919, - 47920, - 47921, - 47922, - 47923, - 47924, - 47925, - 47926, - 47927, - 47928, - 47929, - 47930, - 47931, - 47932, - 47933, - 47934, - 47935, - 47936, - 47937, - 47938, - 47939, - 47940, - 47941, - 47942, - 47943, - 47944, - 47945, - 47946, - 47947, - 47948, - 47949, - 47950, - 47951, - 47952, - 47953, - 47954, - 47955, - 47956, - 47957, - 47958, - 47959, - 47960, - 47961, - 47962, - 47963, - 47964, - 47965, - 47966, - 47967, - 47968, - 47969, - 47970, - 47971, - 47972, - 47973, - 47974, - 47975, - 47976, - 47977, - 47978, - 47979, - 47980, - 47981, - 47982, - 47983, - 47984, - 47985, - 47986, - 47987, - 47988, - 47989, - 47990, - 47991, - 47992, - 47993, - 47994, - 47995, - 47996, - 47997, - 47998, - 47999, - 48000, - 48001, - 48002, - 48003, - 48004, - 48005, - 48006, - 48007, - 48008, - 48009, - 48010, - 48011, - 48012, - 48013, - 48014, - 48015, - 48016, - 48017, - 48018, - 48019, - 48020, - 48021, - 48022, - 48023, - 48024, - 48025, - 48026, - 48027, - 48028, - 48029, - 48030, - 48031, - 48032, - 48033, - 48034, - 48035, - 48036, - 48037, - 48038, - 48039, - 48040, - 48041, - 48042, - 48043, - 48044, - 48045, - 48046, - 48047, - 48048, - 48049, - 48050, - 48051, - 48052, - 48053, - 48054, - 48055, - 48056, - 48057, - 48058, - 48059, - 48060, - 48061, - 48062, - 48063, - 48064, - 48065, - 48066, - 48067, - 48068, - 48069, - 48070, - 48071, - 48072, - 48073, - 48074, - 48075, - 48076, - 48077, - 48078, - 48079, - 48080, - 48081, - 48082, - 48083, - 48084, - 48085, - 48086, - 48087, - 48088, - 48089, - 48090, - 48091, - 48092, - 48093, - 48094, - 48095, - 48096, - 48097, - 48098, - 48099, - 48100, - 48101, - 48102, - 48103, - 48104, - 48105, - 48106, - 48107, - 48108, - 48109, - 48110, - 48111, - 48112, - 48113, - 48114, - 48115, - 48116, - 48117, - 48118, - 48119, - 48120, - 48121, - 48122, - 48123, - 48124, - 48125, - 48126, - 48127, - 48128, - 48129, - 48130, - 48131, - 48132, - 48133, - 48134, - 48135, - 48136, - 48137, - 48138, - 48139, - 48140, - 48141, - 48142, - 48143, - 48144, - 48145, - 48146, - 48147, - 48148, - 48149, - 48150, - 48151, - 48152, - 48153, - 48154, - 48155, - 48156, - 48157, - 48158, - 48159, - 48160, - 48161, - 48162, - 48163, - 48164, - 48165, - 48166, - 48167, - 48168, - 48169, - 48170, - 48171, - 48172, - 48173, - 48174, - 48175, - 48176, - 48177, - 48178, - 48179, - 48180, - 48181, - 48182, - 48183, - 48184, - 48185, - 48186, - 48187, - 48188, - 48189, - 48190, - 48191, - 48192, - 48193, - 48194, - 48195, - 48196, - 48197, - 48198, - 48199, - 48200, - 48201, - 48202, - 48203, - 48204, - 48205, - 48206, - 48207, - 48208, - 48209, - 48210, - 48211, - 48212, - 48213, - 48214, - 48215, - 48216, - 48217, - 48218, - 48219, - 48220, - 48221, - 48222, - 48223, - 48224, - 48225, - 48226, - 48227, - 48228, - 48229, - 48230, - 48231, - 48232, - 48233, - 48234, - 48235, - 48236, - 48237, - 48238, - 48239, - 48240, - 48241, - 48242, - 48243, - 48244, - 48245, - 48246, - 48247, - 48248, - 48249, - 48250, - 48251, - 48252, - 48253, - 48254, - 48255, - 48256, - 48257, - 48258, - 48259, - 48260, - 48261, - 48262, - 48263, - 48264, - 48265, - 48266, - 48267, - 48268, - 48269, - 48270, - 48271, - 48272, - 48273, - 48274, - 48275, - 48276, - 48277, - 48278, - 48279, - 48280, - 48281, - 48282, - 48283, - 48284, - 48285, - 48286, - 48287, - 48288, - 48289, - 48290, - 48291, - 48292, - 48293, - 48294, - 48295, - 48296, - 48297, - 48298, - 48299, - 48300, - 48301, - 48302, - 48303, - 48304, - 48305, - 48306, - 48307, - 48308, - 48309, - 48310, - 48311, - 48312, - 48313, - 48314, - 48315, - 48316, - 48317, - 48318, - 48319, - 48320, - 48321, - 48322, - 48323, - 48324, - 48325, - 48326, - 48327, - 48328, - 48329, - 48330, - 48331, - 48332, - 48333, - 48334, - 48335, - 48336, - 48337, - 48338, - 48339, - 48340, - 48341, - 48342, - 48343, - 48344, - 48345, - 48346, - 48347, - 48348, - 48349, - 48350, - 48351, - 48352, - 48353, - 48354, - 48355, - 48356, - 48357, - 48358, - 48359, - 48360, - 48361, - 48362, - 48363, - 48364, - 48365, - 48366, - 48367, - 48368, - 48369, - 48370, - 48371, - 48372, - 48373, - 48374, - 48375, - 48376, - 48377, - 48378, - 48379, - 48380, - 48381, - 48382, - 48383, - 48384, - 48385, - 48386, - 48387, - 48388, - 48389, - 48390, - 48391, - 48392, - 48393, - 48394, - 48395, - 48396, - 48397, - 48398, - 48399, - 48400, - 48401, - 48402, - 48403, - 48404, - 48405, - 48406, - 48407, - 48408, - 48409, - 48410, - 48411, - 48412, - 48413, - 48414, - 48415, - 48416, - 48417, - 48418, - 48419, - 48420, - 48421, - 48422, - 48423, - 48424, - 48425, - 48426, - 48427, - 48428, - 48429, - 48430, - 48431, - 48432, - 48433, - 48434, - 48435, - 48436, - 48437, - 48438, - 48439, - 48440, - 48441, - 48442, - 48443, - 48444, - 48445, - 48446, - 48447, - 48448, - 48449, - 48450, - 48451, - 48452, - 48453, - 48454, - 48455, - 48456, - 48457, - 48458, - 48459, - 48460, - 48461, - 48462, - 48463, - 48464, - 48465, - 48466, - 48467, - 48468, - 48469, - 48470, - 48471, - 48472, - 48473, - 48474, - 48475, - 48476, - 48477, - 48478, - 48479, - 48480, - 48481, - 48482, - 48483, - 48484, - 48485, - 48486, - 48487, - 48488, - 48489, - 48490, - 48491, - 48492, - 48493, - 48494, - 48495, - 48496, - 48497, - 48498, - 48499, - 48500, - 48501, - 48502, - 48503, - 48504, - 48505, - 48506, - 48507, - 48508, - 48509, - 48510, - 48511, - 48512, - 48513, - 48514, - 48515, - 48516, - 48517, - 48518, - 48519, - 48520, - 48521, - 48522, - 48523, - 48524, - 48525, - 48526, - 48527, - 48528, - 48529, - 48530, - 48531, - 48532, - 48533, - 48534, - 48535, - 48536, - 48537, - 48538, - 48539, - 48540, - 48541, - 48542, - 48543, - 48544, - 48545, - 48546, - 48547, - 48548, - 48549, - 48550, - 48551, - 48552, - 48553, - 48554, - 48555, - 48556, - 48557, - 48558, - 48559, - 48560, - 48561, - 48562, - 48563, - 48564, - 48565, - 48566, - 48567, - 48568, - 48569, - 48570, - 48571, - 48572, - 48573, - 48574, - 48575, - 48576, - 48577, - 48578, - 48579, - 48580, - 48581, - 48582, - 48583, - 48584, - 48585, - 48586, - 48587, - 48588, - 48589, - 48590, - 48591, - 48592, - 48593, - 48594, - 48595, - 48596, - 48597, - 48598, - 48599, - 48600, - 48601, - 48602, - 48603, - 48604, - 48605, - 48606, - 48607, - 48608, - 48609, - 48610, - 48611, - 48612, - 48613, - 48614, - 48615, - 48616, - 48617, - 48618, - 48619, - 48620, - 48621, - 48622, - 48623, - 48624, - 48625, - 48626, - 48627, - 48628, - 48629, - 48630, - 48631, - 48632, - 48633, - 48634, - 48635, - 48636, - 48637, - 48638, - 48639, - 48640, - 48641, - 48642, - 48643, - 48644, - 48645, - 48646, - 48647, - 48648, - 48649, - 48650, - 48651, - 48652, - 48653, - 48654, - 48655, - 48656, - 48657, - 48658, - 48659, - 48660, - 48661, - 48662, - 48663, - 48664, - 48665, - 48666, - 48667, - 48668, - 48669, - 48670, - 48671, - 48672, - 48673, - 48674, - 48675, - 48676, - 48677, - 48678, - 48679, - 48680, - 48681, - 48682, - 48683, - 48684, - 48685, - 48686, - 48687, - 48688, - 48689, - 48690, - 48691, - 48692, - 48693, - 48694, - 48695, - 48696, - 48697, - 48698, - 48699, - 48700, - 48701, - 48702, - 48703, - 48704, - 48705, - 48706, - 48707, - 48708, - 48709, - 48710, - 48711, - 48712, - 48713, - 48714, - 48715, - 48716, - 48717, - 48718, - 48719, - 48720, - 48721, - 48722, - 48723, - 48724, - 48725, - 48726, - 48727, - 48728, - 48729, - 48730, - 48731, - 48732, - 48733, - 48734, - 48735, - 48736, - 48737, - 48738, - 48739, - 48740, - 48741, - 48742, - 48743, - 48744, - 48745, - 48746, - 48747, - 48748, - 48749, - 48750, - 48751, - 48752, - 48753, - 48754, - 48755, - 48756, - 48757, - 48758, - 48759, - 48760, - 48761, - 48762, - 48763, - 48764, - 48765, - 48766, - 48767, - 48768, - 48769, - 48770, - 48771, - 48772, - 48773, - 48774, - 48775, - 48776, - 48777, - 48778, - 48779, - 48780, - 48781, - 48782, - 48783, - 48784, - 48785, - 48786, - 48787, - 48788, - 48789, - 48790, - 48791, - 48792, - 48793, - 48794, - 48795, - 48796, - 48797, - 48798, - 48799, - 48800, - 48801, - 48802, - 48803, - 48804, - 48805, - 48806, - 48807, - 48808, - 48809, - 48810, - 48811, - 48812, - 48813, - 48814, - 48815, - 48816, - 48817, - 48818, - 48819, - 48820, - 48821, - 48822, - 48823, - 48824, - 48825, - 48826, - 48827, - 48828, - 48829, - 48830, - 48831, - 48832, - 48833, - 48834, - 48835, - 48836, - 48837, - 48838, - 48839, - 48840, - 48841, - 48842, - 48843, - 48844, - 48845, - 48846, - 48847, - 48848, - 48849, - 48850, - 48851, - 48852, - 48853, - 48854, - 48855, - 48856, - 48857, - 48858, - 48859, - 48860, - 48861, - 48862, - 48863, - 48864, - 48865, - 48866, - 48867, - 48868, - 48869, - 48870, - 48871, - 48872, - 48873, - 48874, - 48875, - 48876, - 48877, - 48878, - 48879, - 48880, - 48881, - 48882, - 48883, - 48884, - 48885, - 48886, - 48887, - 48888, - 48889, - 48890, - 48891, - 48892, - 48893, - 48894, - 48895, - 48896, - 48897, - 48898, - 48899, - 48900, - 48901, - 48902, - 48903, - 48904, - 48905, - 48906, - 48907, - 48908, - 48909, - 48910, - 48911, - 48912, - 48913, - 48914, - 48915, - 48916, - 48917, - 48918, - 48919, - 48920, - 48921, - 48922, - 48923, - 48924, - 48925, - 48926, - 48927, - 48928, - 48929, - 48930, - 48931, - 48932, - 48933, - 48934, - 48935, - 48936, - 48937, - 48938, - 48939, - 48940, - 48941, - 48942, - 48943, - 48944, - 48945, - 48946, - 48947, - 48948, - 48949, - 48950, - 48951, - 48952, - 48953, - 48954, - 48955, - 48956, - 48957, - 48958, - 48959, - 48960, - 48961, - 48962, - 48963, - 48964, - 48965, - 48966, - 48967, - 48968, - 48969, - 48970, - 48971, - 48972, - 48973, - 48974, - 48975, - 48976, - 48977, - 48978, - 48979, - 48980, - 48981, - 48982, - 48983, - 48984, - 48985, - 48986, - 48987, - 48988, - 48989, - 48990, - 48991, - 48992, - 48993, - 48994, - 48995, - 48996, - 48997, - 48998, - 48999, - 49000, - 49001, - 49002, - 49003, - 49004, - 49005, - 49006, - 49007, - 49008, - 49009, - 49010, - 49011, - 49012, - 49013, - 49014, - 49015, - 49016, - 49017, - 49018, - 49019, - 49020, - 49021, - 49022, - 49023, - 49024, - 49025, - 49026, - 49027, - 49028, - 49029, - 49030, - 49031, - 49032, - 49033, - 49034, - 49035, - 49036, - 49037, - 49038, - 49039, - 49040, - 49041, - 49042, - 49043, - 49044, - 49045, - 49046, - 49047, - 49048, - 49049, - 49050, - 49051, - 49052, - 49053, - 49054, - 49055, - 49056, - 49057, - 49058, - 49059, - 49060, - 49061, - 49062, - 49063, - 49064, - 49065, - 49066, - 49067, - 49068, - 49069, - 49070, - 49071, - 49072, - 49073, - 49074, - 49075, - 49076, - 49077, - 49078, - 49079, - 49080, - 49081, - 49082, - 49083, - 49084, - 49085, - 49086, - 49087, - 49088, - 49089, - 49090, - 49091, - 49092, - 49093, - 49094, - 49095, - 49096, - 49097, - 49098, - 49099, - 49100, - 49101, - 49102, - 49103, - 49104, - 49105, - 49106, - 49107, - 49108, - 49109, - 49110, - 49111, - 49112, - 49113, - 49114, - 49115, - 49116, - 49117, - 49118, - 49119, - 49120, - 49121, - 49122, - 49123, - 49124, - 49125, - 49126, - 49127, - 49128, - 49129, - 49130, - 49131, - 49132, - 49133, - 49134, - 49135, - 49136, - 49137, - 49138, - 49139, - 49140, - 49141, - 49142, - 49143, - 49144, - 49145, - 49146, - 49147, - 49148, - 49149, - 49150, - 49151, - 49152, - 49153, - 49154, - 49155, - 49156, - 49157, - 49158, - 49159, - 49160, - 49161, - 49162, - 49163, - 49164, - 49165, - 49166, - 49167, - 49168, - 49169, - 49170, - 49171, - 49172, - 49173, - 49174, - 49175, - 49176, - 49177, - 49178, - 49179, - 49180, - 49181, - 49182, - 49183, - 49184, - 49185, - 49186, - 49187, - 49188, - 49189, - 49190, - 49191, - 49192, - 49193, - 49194, - 49195, - 49196, - 49197, - 49198, - 49199, - 49200, - 49201, - 49202, - 49203, - 49204, - 49205, - 49206, - 49207, - 49208, - 49209, - 49210, - 49211, - 49212, - 49213, - 49214, - 49215, - 49216, - 49217, - 49218, - 49219, - 49220, - 49221, - 49222, - 49223, - 49224, - 49225, - 49226, - 49227, - 49228, - 49229, - 49230, - 49231, - 49232, - 49233, - 49234, - 49235, - 49236, - 49237, - 49238, - 49239, - 49240, - 49241, - 49242, - 49243, - 49244, - 49245, - 49246, - 49247, - 49248, - 49249, - 49250, - 49251, - 49252, - 49253, - 49254, - 49255, - 49256, - 49257, - 49258, - 49259, - 49260, - 49261, - 49262, - 49263, - 49264, - 49265, - 49266, - 49267, - 49268, - 49269, - 49270, - 49271, - 49272, - 49273, - 49274, - 49275, - 49276, - 49277, - 49278, - 49279, - 49280, - 49281, - 49282, - 49283, - 49284, - 49285, - 49286, - 49287, - 49288, - 49289, - 49290, - 49291, - 49292, - 49293, - 49294, - 49295, - 49296, - 49297, - 49298, - 49299, - 49300, - 49301, - 49302, - 49303, - 49304, - 49305, - 49306, - 49307, - 49308, - 49309, - 49310, - 49311, - 49312, - 49313, - 49314, - 49315, - 49316, - 49317, - 49318, - 49319, - 49320, - 49321, - 49322, - 49323, - 49324, - 49325, - 49326, - 49327, - 49328, - 49329, - 49330, - 49331, - 49332, - 49333, - 49334, - 49335, - 49336, - 49337, - 49338, - 49339, - 49340, - 49341, - 49342, - 49343, - 49344, - 49345, - 49346, - 49347, - 49348, - 49349, - 49350, - 49351, - 49352, - 49353, - 49354, - 49355, - 49356, - 49357, - 49358, - 49359, - 49360, - 49361, - 49362, - 49363, - 49364, - 49365, - 49366, - 49367, - 49368, - 49369, - 49370, - 49371, - 49372, - 49373, - 49374, - 49375, - 49376, - 49377, - 49378, - 49379, - 49380, - 49381, - 49382, - 49383, - 49384, - 49385, - 49386, - 49387, - 49388, - 49389, - 49390, - 49391, - 49392, - 49393, - 49394, - 49395, - 49396, - 49397, - 49398, - 49399, - 49400, - 49401, - 49402, - 49403, - 49404, - 49405, - 49406, - 49407, - 49408, - 49409, - 49410, - 49411, - 49412, - 49413, - 49414, - 49415, - 49416, - 49417, - 49418, - 49419, - 49420, - 49421, - 49422, - 49423, - 49424, - 49425, - 49426, - 49427, - 49428, - 49429, - 49430, - 49431, - 49432, - 49433, - 49434, - 49435, - 49436, - 49437, - 49438, - 49439, - 49440, - 49441, - 49442, - 49443, - 49444, - 49445, - 49446, - 49447, - 49448, - 49449, - 49450, - 49451, - 49452, - 49453, - 49454, - 49455, - 49456, - 49457, - 49458, - 49459, - 49460, - 49461, - 49462, - 49463, - 49464, - 49465, - 49466, - 49467, - 49468, - 49469, - 49470, - 49471, - 49472, - 49473, - 49474, - 49475, - 49476, - 49477, - 49478, - 49479, - 49480, - 49481, - 49482, - 49483, - 49484, - 49485, - 49486, - 49487, - 49488, - 49489, - 49490, - 49491, - 49492, - 49493, - 49494, - 49495, - 49496, - 49497, - 49498, - 49499, - 49500, - 49501, - 49502, - 49503, - 49504, - 49505, - 49506, - 49507, - 49508, - 49509, - 49510, - 49511, - 49512, - 49513, - 49514, - 49515, - 49516, - 49517, - 49518, - 49519, - 49520, - 49521, - 49522, - 49523, - 49524, - 49525, - 49526, - 49527, - 49528, - 49529, - 49530, - 49531, - 49532, - 49533, - 49534, - 49535, - 49536, - 49537, - 49538, - 49539, - 49540, - 49541, - 49542, - 49543, - 49544, - 49545, - 49546, - 49547, - 49548, - 49549, - 49550, - 49551, - 49552, - 49553, - 49554, - 49555, - 49556, - 49557, - 49558, - 49559, - 49560, - 49561, - 49562, - 49563, - 49564, - 49565, - 49566, - 49567, - 49568, - 49569, - 49570, - 49571, - 49572, - 49573, - 49574, - 49575, - 49576, - 49577, - 49578, - 49579, - 49580, - 49581, - 49582, - 49583, - 49584, - 49585, - 49586, - 49587, - 49588, - 49589, - 49590, - 49591, - 49592, - 49593, - 49594, - 49595, - 49596, - 49597, - 49598, - 49599, - 49600, - 49601, - 49602, - 49603, - 49604, - 49605, - 49606, - 49607, - 49608, - 49609, - 49610, - 49611, - 49612, - 49613, - 49614, - 49615, - 49616, - 49617, - 49618, - 49619, - 49620, - 49621, - 49622, - 49623, - 49624, - 49625, - 49626, - 49627, - 49628, - 49629, - 49630, - 49631, - 49632, - 49633, - 49634, - 49635, - 49636, - 49637, - 49638, - 49639, - 49640, - 49641, - 49642, - 49643, - 49644, - 49645, - 49646, - 49647, - 49648, - 49649, - 49650, - 49651, - 49652, - 49653, - 49654, - 49655, - 49656, - 49657, - 49658, - 49659, - 49660, - 49661, - 49662, - 49663, - 49664, - 49665, - 49666, - 49667, - 49668, - 49669, - 49670, - 49671, - 49672, - 49673, - 49674, - 49675, - 49676, - 49677, - 49678, - 49679, - 49680, - 49681, - 49682, - 49683, - 49684, - 49685, - 49686, - 49687, - 49688, - 49689, - 49690, - 49691, - 49692, - 49693, - 49694, - 49695, - 49696, - 49697, - 49698, - 49699, - 49700, - 49701, - 49702, - 49703, - 49704, - 49705, - 49706, - 49707, - 49708, - 49709, - 49710, - 49711, - 49712, - 49713, - 49714, - 49715, - 49716, - 49717, - 49718, - 49719, - 49720, - 49721, - 49722, - 49723, - 49724, - 49725, - 49726, - 49727, - 49728, - 49729, - 49730, - 49731, - 49732, - 49733, - 49734, - 49735, - 49736, - 49737, - 49738, - 49739, - 49740, - 49741, - 49742, - 49743, - 49744, - 49745, - 49746, - 49747, - 49748, - 49749, - 49750, - 49751, - 49752, - 49753, - 49754, - 49755, - 49756, - 49757, - 49758, - 49759, - 49760, - 49761, - 49762, - 49763, - 49764, - 49765, - 49766, - 49767, - 49768, - 49769, - 49770, - 49771, - 49772, - 49773, - 49774, - 49775, - 49776, - 49777, - 49778, - 49779, - 49780, - 49781, - 49782, - 49783, - 49784, - 49785, - 49786, - 49787, - 49788, - 49789, - 49790, - 49791, - 49792, - 49793, - 49794, - 49795, - 49796, - 49797, - 49798, - 49799, - 49800, - 49801, - 49802, - 49803, - 49804, - 49805, - 49806, - 49807, - 49808, - 49809, - 49810, - 49811, - 49812, - 49813, - 49814, - 49815, - 49816, - 49817, - 49818, - 49819, - 49820, - 49821, - 49822, - 49823, - 49824, - 49825, - 49826, - 49827, - 49828, - 49829, - 49830, - 49831, - 49832, - 49833, - 49834, - 49835, - 49836, - 49837, - 49838, - 49839, - 49840, - 49841, - 49842, - 49843, - 49844, - 49845, - 49846, - 49847, - 49848, - 49849, - 49850, - 49851, - 49852, - 49853, - 49854, - 49855, - 49856, - 49857, - 49858, - 49859, - 49860, - 49861, - 49862, - 49863, - 49864, - 49865, - 49866, - 49867, - 49868, - 49869, - 49870, - 49871, - 49872, - 49873, - 49874, - 49875, - 49876, - 49877, - 49878, - 49879, - 49880, - 49881, - 49882, - 49883, - 49884, - 49885, - 49886, - 49887, - 49888, - 49889, - 49890, - 49891, - 49892, - 49893, - 49894, - 49895, - 49896, - 49897, - 49898, - 49899, - 49900, - 49901, - 49902, - 49903, - 49904, - 49905, - 49906, - 49907, - 49908, - 49909, - 49910, - 49911, - 49912, - 49913, - 49914, - 49915, - 49916, - 49917, - 49918, - 49919, - 49920, - 49921, - 49922, - 49923, - 49924, - 49925, - 49926, - 49927, - 49928, - 49929, - 49930, - 49931, - 49932, - 49933, - 49934, - 49935, - 49936, - 49937, - 49938, - 49939, - 49940, - 49941, - 49942, - 49943, - 49944, - 49945, - 49946, - 49947, - 49948, - 49949, - 49950, - 49951, - 49952, - 49953, - 49954, - 49955, - 49956, - 49957, - 49958, - 49959, - 49960, - 49961, - 49962, - 49963, - 49964, - 49965, - 49966, - 49967, - 49968, - 49969, - 49970, - 49971, - 49972, - 49973, - 49974, - 49975, - 49976, - 49977, - 49978, - 49979, - 49980, - 49981, - 49982, - 49983, - 49984, - 49985, - 49986, - 49987, - 49988, - 49989, - 49990, - 49991, - 49992, - 49993, - 49994, - 49995, - 49996, - 49997, - 49998, - 49999, - 50000, - 50001, - 50002, - 50003, - 50004, - 50005, - 50006, - 50007, - 50008, - 50009, - 50010, - 50011, - 50012, - 50013, - 50014, - 50015, - 50016, - 50017, - 50018, - 50019, - 50020, - 50021, - 50022, - 50023, - 50024, - 50025, - 50026, - 50027, - 50028, - 50029, - 50030, - 50031, - 50032, - 50033, - 50034, - 50035, - 50036, - 50037, - 50038, - 50039, - 50040, - 50041, - 50042, - 50043, - 50044, - 50045, - 50046, - 50047, - 50048, - 50049, - 50050, - 50051, - 50052, - 50053, - 50054, - 50055, - 50056, - 50057, - 50058, - 50059, - 50060, - 50061, - 50062, - 50063, - 50064, - 50065, - 50066, - 50067, - 50068, - 50069, - 50070, - 50071, - 50072, - 50073, - 50074, - 50075, - 50076, - 50077, - 50078, - 50079, - 50080, - 50081, - 50082, - 50083, - 50084, - 50085, - 50086, - 50087, - 50088, - 50089, - 50090, - 50091, - 50092, - 50093, - 50094, - 50095, - 50096, - 50097, - 50098, - 50099, - 50100, - 50101, - 50102, - 50103, - 50104, - 50105, - 50106, - 50107, - 50108, - 50109, - 50110, - 50111, - 50112, - 50113, - 50114, - 50115, - 50116, - 50117, - 50118, - 50119, - 50120, - 50121, - 50122, - 50123, - 50124, - 50125, - 50126, - 50127, - 50128, - 50129, - 50130, - 50131, - 50132, - 50133, - 50134, - 50135, - 50136, - 50137, - 50138, - 50139, - 50140, - 50141, - 50142, - 50143, - 50144, - 50145, - 50146, - 50147, - 50148, - 50149, - 50150, - 50151, - 50152, - 50153, - 50154, - 50155, - 50156, - 50157, - 50158, - 50159, - 50160, - 50161, - 50162, - 50163, - 50164, - 50165, - 50166, - 50167, - 50168, - 50169, - 50170, - 50171, - 50172, - 50173, - 50174, - 50175, - 50176, - 50177, - 50178, - 50179, - 50180, - 50181, - 50182, - 50183, - 50184, - 50185, - 50186, - 50187, - 50188, - 50189, - 50190, - 50191, - 50192, - 50193, - 50194, - 50195, - 50196, - 50197, - 50198, - 50199, - 50200, - 50201, - 50202, - 50203, - 50204, - 50205, - 50206, - 50207, - 50208, - 50209, - 50210, - 50211, - 50212, - 50213, - 50214, - 50215, - 50216, - 50217, - 50218, - 50219, - 50220, - 50221, - 50222, - 50223, - 50224, - 50225, - 50226, - 50227, - 50228, - 50229, - 50230, - 50231, - 50232, - 50233, - 50234, - 50235, - 50236, - 50237, - 50238, - 50239, - 50240, - 50241, - 50242, - 50243, - 50244, - 50245, - 50246, - 50247, - 50248, - 50249, - 50250, - 50251, - 50252, - 50253, - 50254, - 50255, - 50256, - 50257, - 50258, - 50259, - 50260, - 50261, - 50262, - 50263, - 50264, - 50265, - 50266, - 50267, - 50268, - 50269, - 50270, - 50271, - 50272, - 50273, - 50274, - 50275, - 50276, - 50277, - 50278, - 50279, - 50280, - 50281, - 50282, - 50283, - 50284, - 50285, - 50286, - 50287, - 50288, - 50289, - 50290, - 50291, - 50292, - 50293, - 50294, - 50295, - 50296, - 50297, - 50298, - 50299, - 50300, - 50301, - 50302, - 50303, - 50304, - 50305, - 50306, - 50307, - 50308, - 50309, - 50310, - 50311, - 50312, - 50313, - 50314, - 50315, - 50316, - 50317, - 50318, - 50319, - 50320, - 50321, - 50322, - 50323, - 50324, - 50325, - 50326, - 50327, - 50328, - 50329, - 50330, - 50331, - 50332, - 50333, - 50334, - 50335, - 50336, - 50337, - 50338, - 50339, - 50340, - 50341, - 50342, - 50343, - 50344, - 50345, - 50346, - 50347, - 50348, - 50349, - 50350, - 50351, - 50352, - 50353, - 50354, - 50355, - 50356, - 50357, - 50358, - 50359, - 50360, - 50361, - 50362, - 50363, - 50364, - 50365, - 50366, - 50367, - 50368, - 50369, - 50370, - 50371, - 50372, - 50373, - 50374, - 50375, - 50376, - 50377, - 50378, - 50379, - 50380, - 50381, - 50382, - 50383, - 50384, - 50385, - 50386, - 50387, - 50388, - 50389, - 50390, - 50391, - 50392, - 50393, - 50394, - 50395, - 50396, - 50397, - 50398, - 50399, - 50400, - 50401, - 50402, - 50403, - 50404, - 50405, - 50406, - 50407, - 50408, - 50409, - 50410, - 50411, - 50412, - 50413, - 50414, - 50415, - 50416, - 50417, - 50418, - 50419, - 50420, - 50421, - 50422, - 50423, - 50424, - 50425, - 50426, - 50427, - 50428, - 50429, - 50430, - 50431, - 50432, - 50433, - 50434, - 50435, - 50436, - 50437, - 50438, - 50439, - 50440, - 50441, - 50442, - 50443, - 50444, - 50445, - 50446, - 50447, - 50448, - 50449, - 50450, - 50451, - 50452, - 50453, - 50454, - 50455, - 50456, - 50457, - 50458, - 50459, - 50460, - 50461, - 50462, - 50463, - 50464, - 50465, - 50466, - 50467, - 50468, - 50469, - 50470, - 50471, - 50472, - 50473, - 50474, - 50475, - 50476, - 50477, - 50478, - 50479, - 50480, - 50481, - 50482, - 50483, - 50484, - 50485, - 50486, - 50487, - 50488, - 50489, - 50490, - 50491, - 50492, - 50493, - 50494, - 50495, - 50496, - 50497, - 50498, - 50499, - 50500, - 50501, - 50502, - 50503, - 50504, - 50505, - 50506, - 50507, - 50508, - 50509, - 50510, - 50511, - 50512, - 50513, - 50514, - 50515, - 50516, - 50517, - 50518, - 50519, - 50520, - 50521, - 50522, - 50523, - 50524, - 50525, - 50526, - 50527, - 50528, - 50529, - 50530, - 50531, - 50532, - 50533, - 50534, - 50535, - 50536, - 50537, - 50538, - 50539, - 50540, - 50541, - 50542, - 50543, - 50544, - 50545, - 50546, - 50547, - 50548, - 50549, - 50550, - 50551, - 50552, - 50553, - 50554, - 50555, - 50556, - 50557, - 50558, - 50559, - 50560, - 50561, - 50562, - 50563, - 50564, - 50565, - 50566, - 50567, - 50568, - 50569, - 50570, - 50571, - 50572, - 50573, - 50574, - 50575, - 50576, - 50577, - 50578, - 50579, - 50580, - 50581, - 50582, - 50583, - 50584, - 50585, - 50586, - 50587, - 50588, - 50589, - 50590, - 50591, - 50592, - 50593, - 50594, - 50595, - 50596, - 50597, - 50598, - 50599, - 50600, - 50601, - 50602, - 50603, - 50604, - 50605, - 50606, - 50607, - 50608, - 50609, - 50610, - 50611, - 50612, - 50613, - 50614, - 50615, - 50616, - 50617, - 50618, - 50619, - 50620, - 50621, - 50622, - 50623, - 50624, - 50625, - 50626, - 50627, - 50628, - 50629, - 50630, - 50631, - 50632, - 50633, - 50634, - 50635, - 50636, - 50637, - 50638, - 50639, - 50640, - 50641, - 50642, - 50643, - 50644, - 50645, - 50646, - 50647, - 50648, - 50649, - 50650, - 50651, - 50652, - 50653, - 50654, - 50655, - 50656, - 50657, - 50658, - 50659, - 50660, - 50661, - 50662, - 50663, - 50664, - 50665, - 50666, - 50667, - 50668, - 50669, - 50670, - 50671, - 50672, - 50673, - 50674, - 50675, - 50676, - 50677, - 50678, - 50679, - 50680, - 50681, - 50682, - 50683, - 50684, - 50685, - 50686, - 50687, - 50688, - 50689, - 50690, - 50691, - 50692, - 50693, - 50694, - 50695, - 50696, - 50697, - 50698, - 50699, - 50700, - 50701, - 50702, - 50703, - 50704, - 50705, - 50706, - 50707, - 50708, - 50709, - 50710, - 50711, - 50712, - 50713, - 50714, - 50715, - 50716, - 50717, - 50718, - 50719, - 50720, - 50721, - 50722, - 50723, - 50724, - 50725, - 50726, - 50727, - 50728, - 50729, - 50730, - 50731, - 50732, - 50733, - 50734, - 50735, - 50736, - 50737, - 50738, - 50739, - 50740, - 50741, - 50742, - 50743, - 50744, - 50745, - 50746, - 50747, - 50748, - 50749, - 50750, - 50751, - 50752, - 50753, - 50754, - 50755, - 50756, - 50757, - 50758, - 50759, - 50760, - 50761, - 50762, - 50763, - 50764, - 50765, - 50766, - 50767, - 50768, - 50769, - 50770, - 50771, - 50772, - 50773, - 50774, - 50775, - 50776, - 50777, - 50778, - 50779, - 50780, - 50781, - 50782, - 50783, - 50784, - 50785, - 50786, - 50787, - 50788, - 50789, - 50790, - 50791, - 50792, - 50793, - 50794, - 50795, - 50796, - 50797, - 50798, - 50799, - 50800, - 50801, - 50802, - 50803, - 50804, - 50805, - 50806, - 50807, - 50808, - 50809, - 50810, - 50811, - 50812, - 50813, - 50814, - 50815, - 50816, - 50817, - 50818, - 50819, - 50820, - 50821, - 50822, - 50823, - 50824, - 50825, - 50826, - 50827, - 50828, - 50829, - 50830, - 50831, - 50832, - 50833, - 50834, - 50835, - 50836, - 50837, - 50838, - 50839, - 50840, - 50841, - 50842, - 50843, - 50844, - 50845, - 50846, - 50847, - 50848, - 50849, - 50850, - 50851, - 50852, - 50853, - 50854, - 50855, - 50856, - 50857, - 50858, - 50859, - 50860, - 50861, - 50862, - 50863, - 50864, - 50865, - 50866, - 50867, - 50868, - 50869, - 50870, - 50871, - 50872, - 50873, - 50874, - 50875, - 50876, - 50877, - 50878, - 50879, - 50880, - 50881, - 50882, - 50883, - 50884, - 50885, - 50886, - 50887, - 50888, - 50889, - 50890, - 50891, - 50892, - 50893, - 50894, - 50895, - 50896, - 50897, - 50898, - 50899, - 50900, - 50901, - 50902, - 50903, - 50904, - 50905, - 50906, - 50907, - 50908, - 50909, - 50910, - 50911, - 50912, - 50913, - 50914, - 50915, - 50916, - 50917, - 50918, - 50919, - 50920, - 50921, - 50922, - 50923, - 50924, - 50925, - 50926, - 50927, - 50928, - 50929, - 50930, - 50931, - 50932, - 50933, - 50934, - 50935, - 50936, - 50937, - 50938, - 50939, - 50940, - 50941, - 50942, - 50943, - 50944, - 50945, - 50946, - 50947, - 50948, - 50949, - 50950, - 50951, - 50952, - 50953, - 50954, - 50955, - 50956, - 50957, - 50958, - 50959, - 50960, - 50961, - 50962, - 50963, - 50964, - 50965, - 50966, - 50967, - 50968, - 50969, - 50970, - 50971, - 50972, - 50973, - 50974, - 50975, - 50976, - 50977, - 50978, - 50979, - 50980, - 50981, - 50982, - 50983, - 50984, - 50985, - 50986, - 50987, - 50988, - 50989, - 50990, - 50991, - 50992, - 50993, - 50994, - 50995, - 50996, - 50997, - 50998, - 50999, - 51000, - 51001, - 51002, - 51003, - 51004, - 51005, - 51006, - 51007, - 51008, - 51009, - 51010, - 51011, - 51012, - 51013, - 51014, - 51015, - 51016, - 51017, - 51018, - 51019, - 51020, - 51021, - 51022, - 51023, - 51024, - 51025, - 51026, - 51027, - 51028, - 51029, - 51030, - 51031, - 51032, - 51033, - 51034, - 51035, - 51036, - 51037, - 51038, - 51039, - 51040, - 51041, - 51042, - 51043, - 51044, - 51045, - 51046, - 51047, - 51048, - 51049, - 51050, - 51051, - 51052, - 51053, - 51054, - 51055, - 51056, - 51057, - 51058, - 51059, - 51060, - 51061, - 51062, - 51063, - 51064, - 51065, - 51066, - 51067, - 51068, - 51069, - 51070, - 51071, - 51072, - 51073, - 51074, - 51075, - 51076, - 51077, - 51078, - 51079, - 51080, - 51081, - 51082, - 51083, - 51084, - 51085, - 51086, - 51087, - 51088, - 51089, - 51090, - 51091, - 51092, - 51093, - 51094, - 51095, - 51096, - 51097, - 51098, - 51099, - 51100, - 51101, - 51102, - 51103, - 51104, - 51105, - 51106, - 51107, - 51108, - 51109, - 51110, - 51111, - 51112, - 51113, - 51114, - 51115, - 51116, - 51117, - 51118, - 51119, - 51120, - 51121, - 51122, - 51123, - 51124, - 51125, - 51126, - 51127, - 51128, - 51129, - 51130, - 51131, - 51132, - 51133, - 51134, - 51135, - 51136, - 51137, - 51138, - 51139, - 51140, - 51141, - 51142, - 51143, - 51144, - 51145, - 51146, - 51147, - 51148, - 51149, - 51150, - 51151, - 51152, - 51153, - 51154, - 51155, - 51156, - 51157, - 51158, - 51159, - 51160, - 51161, - 51162, - 51163, - 51164, - 51165, - 51166, - 51167, - 51168, - 51169, - 51170, - 51171, - 51172, - 51173, - 51174, - 51175, - 51176, - 51177, - 51178, - 51179, - 51180, - 51181, - 51182, - 51183, - 51184, - 51185, - 51186, - 51187, - 51188, - 51189, - 51190, - 51191, - 51192, - 51193, - 51194, - 51195, - 51196, - 51197, - 51198, - 51199, - 51200, - 51201, - 51202, - 51203, - 51204, - 51205, - 51206, - 51207, - 51208, - 51209, - 51210, - 51211, - 51212, - 51213, - 51214, - 51215, - 51216, - 51217, - 51218, - 51219, - 51220, - 51221, - 51222, - 51223, - 51224, - 51225, - 51226, - 51227, - 51228, - 51229, - 51230, - 51231, - 51232, - 51233, - 51234, - 51235, - 51236, - 51237, - 51238, - 51239, - 51240, - 51241, - 51242, - 51243, - 51244, - 51245, - 51246, - 51247, - 51248, - 51249, - 51250, - 51251, - 51252, - 51253, - 51254, - 51255, - 51256, - 51257, - 51258, - 51259, - 51260, - 51261, - 51262, - 51263, - 51264, - 51265, - 51266, - 51267, - 51268, - 51269, - 51270, - 51271, - 51272, - 51273, - 51274, - 51275, - 51276, - 51277, - 51278, - 51279, - 51280, - 51281, - 51282, - 51283, - 51284, - 51285, - 51286, - 51287, - 51288, - 51289, - 51290, - 51291, - 51292, - 51293, - 51294, - 51295, - 51296, - 51297, - 51298, - 51299, - 51300, - 51301, - 51302, - 51303, - 51304, - 51305, - 51306, - 51307, - 51308, - 51309, - 51310, - 51311, - 51312, - 51313, - 51314, - 51315, - 51316, - 51317, - 51318, - 51319, - 51320, - 51321, - 51322, - 51323, - 51324, - 51325, - 51326, - 51327, - 51328, - 51329, - 51330, - 51331, - 51332, - 51333, - 51334, - 51335, - 51336, - 51337, - 51338, - 51339, - 51340, - 51341, - 51342, - 51343, - 51344, - 51345, - 51346, - 51347, - 51348, - 51349, - 51350, - 51351, - 51352, - 51353, - 51354, - 51355, - 51356, - 51357, - 51358, - 51359, - 51360, - 51361, - 51362, - 51363, - 51364, - 51365, - 51366, - 51367, - 51368, - 51369, - 51370, - 51371, - 51372, - 51373, - 51374, - 51375, - 51376, - 51377, - 51378, - 51379, - 51380, - 51381, - 51382, - 51383, - 51384, - 51385, - 51386, - 51387, - 51388, - 51389, - 51390, - 51391, - 51392, - 51393, - 51394, - 51395, - 51396, - 51397, - 51398, - 51399, - 51400, - 51401, - 51402, - 51403, - 51404, - 51405, - 51406, - 51407, - 51408, - 51409, - 51410, - 51411, - 51412, - 51413, - 51414, - 51415, - 51416, - 51417, - 51418, - 51419, - 51420, - 51421, - 51422, - 51423, - 51424, - 51425, - 51426, - 51427, - 51428, - 51429, - 51430, - 51431, - 51432, - 51433, - 51434, - 51435, - 51436, - 51437, - 51438, - 51439, - 51440, - 51441, - 51442, - 51443, - 51444, - 51445, - 51446, - 51447, - 51448, - 51449, - 51450, - 51451, - 51452, - 51453, - 51454, - 51455, - 51456, - 51457, - 51458, - 51459, - 51460, - 51461, - 51462, - 51463, - 51464, - 51465, - 51466, - 51467, - 51468, - 51469, - 51470, - 51471, - 51472, - 51473, - 51474, - 51475, - 51476, - 51477, - 51478, - 51479, - 51480, - 51481, - 51482, - 51483, - 51484, - 51485, - 51486, - 51487, - 51488, - 51489, - 51490, - 51491, - 51492, - 51493, - 51494, - 51495, - 51496, - 51497, - 51498, - 51499, - 51500, - 51501, - 51502, - 51503, - 51504, - 51505, - 51506, - 51507, - 51508, - 51509, - 51510, - 51511, - 51512, - 51513, - 51514, - 51515, - 51516, - 51517, - 51518, - 51519, - 51520, - 51521, - 51522, - 51523, - 51524, - 51525, - 51526, - 51527, - 51528, - 51529, - 51530, - 51531, - 51532, - 51533, - 51534, - 51535, - 51536, - 51537, - 51538, - 51539, - 51540, - 51541, - 51542, - 51543, - 51544, - 51545, - 51546, - 51547, - 51548, - 51549, - 51550, - 51551, - 51552, - 51553, - 51554, - 51555, - 51556, - 51557, - 51558, - 51559, - 51560, - 51561, - 51562, - 51563, - 51564, - 51565, - 51566, - 51567, - 51568, - 51569, - 51570, - 51571, - 51572, - 51573, - 51574, - 51575, - 51576, - 51577, - 51578, - 51579, - 51580, - 51581, - 51582, - 51583, - 51584, - 51585, - 51586, - 51587, - 51588, - 51589, - 51590, - 51591, - 51592, - 51593, - 51594, - 51595, - 51596, - 51597, - 51598, - 51599, - 51600, - 51601, - 51602, - 51603, - 51604, - 51605, - 51606, - 51607, - 51608, - 51609, - 51610, - 51611, - 51612, - 51613, - 51614, - 51615, - 51616, - 51617, - 51618, - 51619, - 51620, - 51621, - 51622, - 51623, - 51624, - 51625, - 51626, - 51627, - 51628, - 51629, - 51630, - 51631, - 51632, - 51633, - 51634, - 51635, - 51636, - 51637, - 51638, - 51639, - 51640, - 51641, - 51642, - 51643, - 51644, - 51645, - 51646, - 51647, - 51648, - 51649, - 51650, - 51651, - 51652, - 51653, - 51654, - 51655, - 51656, - 51657, - 51658, - 51659, - 51660, - 51661, - 51662, - 51663, - 51664, - 51665, - 51666, - 51667, - 51668, - 51669, - 51670, - 51671, - 51672, - 51673, - 51674, - 51675, - 51676, - 51677, - 51678, - 51679, - 51680, - 51681, - 51682, - 51683, - 51684, - 51685, - 51686, - 51687, - 51688, - 51689, - 51690, - 51691, - 51692, - 51693, - 51694, - 51695, - 51696, - 51697, - 51698, - 51699, - 51700, - 51701, - 51702, - 51703, - 51704, - 51705, - 51706, - 51707, - 51708, - 51709, - 51710, - 51711, - 51712, - 51713, - 51714, - 51715, - 51716, - 51717, - 51718, - 51719, - 51720, - 51721, - 51722, - 51723, - 51724, - 51725, - 51726, - 51727, - 51728, - 51729, - 51730, - 51731, - 51732, - 51733, - 51734, - 51735, - 51736, - 51737, - 51738, - 51739, - 51740, - 51741, - 51742, - 51743, - 51744, - 51745, - 51746, - 51747, - 51748, - 51749, - 51750, - 51751, - 51752, - 51753, - 51754, - 51755, - 51756, - 51757, - 51758, - 51759, - 51760, - 51761, - 51762, - 51763, - 51764, - 51765, - 51766, - 51767, - 51768, - 51769, - 51770, - 51771, - 51772, - 51773, - 51774, - 51775, - 51776, - 51777, - 51778, - 51779, - 51780, - 51781, - 51782, - 51783, - 51784, - 51785, - 51786, - 51787, - 51788, - 51789, - 51790, - 51791, - 51792, - 51793, - 51794, - 51795, - 51796, - 51797, - 51798, - 51799, - 51800, - 51801, - 51802, - 51803, - 51804, - 51805, - 51806, - 51807, - 51808, - 51809, - 51810, - 51811, - 51812, - 51813, - 51814, - 51815, - 51816, - 51817, - 51818, - 51819, - 51820, - 51821, - 51822, - 51823, - 51824, - 51825, - 51826, - 51827, - 51828, - 51829, - 51830, - 51831, - 51832, - 51833, - 51834, - 51835, - 51836, - 51837, - 51838, - 51839, - 51840, - 51841, - 51842, - 51843, - 51844, - 51845, - 51846, - 51847, - 51848, - 51849, - 51850, - 51851, - 51852, - 51853, - 51854, - 51855, - 51856, - 51857, - 51858, - 51859, - 51860, - 51861, - 51862, - 51863, - 51864, - 51865, - 51866, - 51867, - 51868, - 51869, - 51870, - 51871, - 51872, - 51873, - 51874, - 51875, - 51876, - 51877, - 51878, - 51879, - 51880, - 51881, - 51882, - 51883, - 51884, - 51885, - 51886, - 51887, - 51888, - 51889, - 51890, - 51891, - 51892, - 51893, - 51894, - 51895, - 51896, - 51897, - 51898, - 51899, - 51900, - 51901, - 51902, - 51903, - 51904, - 51905, - 51906, - 51907, - 51908, - 51909, - 51910, - 51911, - 51912, - 51913, - 51914, - 51915, - 51916, - 51917, - 51918, - 51919, - 51920, - 51921, - 51922, - 51923, - 51924, - 51925, - 51926, - 51927, - 51928, - 51929, - 51930, - 51931, - 51932, - 51933, - 51934, - 51935, - 51936, - 51937, - 51938, - 51939, - 51940, - 51941, - 51942, - 51943, - 51944, - 51945, - 51946, - 51947, - 51948, - 51949, - 51950, - 51951, - 51952, - 51953, - 51954, - 51955, - 51956, - 51957, - 51958, - 51959, - 51960, - 51961, - 51962, - 51963, - 51964, - 51965, - 51966, - 51967, - 51968, - 51969, - 51970, - 51971, - 51972, - 51973, - 51974, - 51975, - 51976, - 51977, - 51978, - 51979, - 51980, - 51981, - 51982, - 51983, - 51984, - 51985, - 51986, - 51987, - 51988, - 51989, - 51990, - 51991, - 51992, - 51993, - 51994, - 51995, - 51996, - 51997, - 51998, - 51999, - 52000, - 52001, - 52002, - 52003, - 52004, - 52005, - 52006, - 52007, - 52008, - 52009, - 52010, - 52011, - 52012, - 52013, - 52014, - 52015, - 52016, - 52017, - 52018, - 52019, - 52020, - 52021, - 52022, - 52023, - 52024, - 52025, - 52026, - 52027, - 52028, - 52029, - 52030, - 52031, - 52032, - 52033, - 52034, - 52035, - 52036, - 52037, - 52038, - 52039, - 52040, - 52041, - 52042, - 52043, - 52044, - 52045, - 52046, - 52047, - 52048, - 52049, - 52050, - 52051, - 52052, - 52053, - 52054, - 52055, - 52056, - 52057, - 52058, - 52059, - 52060, - 52061, - 52062, - 52063, - 52064, - 52065, - 52066, - 52067, - 52068, - 52069, - 52070, - 52071, - 52072, - 52073, - 52074, - 52075, - 52076, - 52077, - 52078, - 52079, - 52080, - 52081, - 52082, - 52083, - 52084, - 52085, - 52086, - 52087, - 52088, - 52089, - 52090, - 52091, - 52092, - 52093, - 52094, - 52095, - 52096, - 52097, - 52098, - 52099, - 52100, - 52101, - 52102, - 52103, - 52104, - 52105, - 52106, - 52107, - 52108, - 52109, - 52110, - 52111, - 52112, - 52113, - 52114, - 52115, - 52116, - 52117, - 52118, - 52119, - 52120, - 52121, - 52122, - 52123, - 52124, - 52125, - 52126, - 52127, - 52128, - 52129, - 52130, - 52131, - 52132, - 52133, - 52134, - 52135, - 52136, - 52137, - 52138, - 52139, - 52140, - 52141, - 52142, - 52143, - 52144, - 52145, - 52146, - 52147, - 52148, - 52149, - 52150, - 52151, - 52152, - 52153, - 52154, - 52155, - 52156, - 52157, - 52158, - 52159, - 52160, - 52161, - 52162, - 52163, - 52164, - 52165, - 52166, - 52167, - 52168, - 52169, - 52170, - 52171, - 52172, - 52173, - 52174, - 52175, - 52176, - 52177, - 52178, - 52179, - 52180, - 52181, - 52182, - 52183, - 52184, - 52185, - 52186, - 52187, - 52188, - 52189, - 52190, - 52191, - 52192, - 52193, - 52194, - 52195, - 52196, - 52197, - 52198, - 52199, - 52200, - 52201, - 52202, - 52203, - 52204, - 52205, - 52206, - 52207, - 52208, - 52209, - 52210, - 52211, - 52212, - 52213, - 52214, - 52215, - 52216, - 52217, - 52218, - 52219, - 52220, - 52221, - 52222, - 52223, - 52224, - 52225, - 52226, - 52227, - 52228, - 52229, - 52230, - 52231, - 52232, - 52233, - 52234, - 52235, - 52236, - 52237, - 52238, - 52239, - 52240, - 52241, - 52242, - 52243, - 52244, - 52245, - 52246, - 52247, - 52248, - 52249, - 52250, - 52251, - 52252, - 52253, - 52254, - 52255, - 52256, - 52257, - 52258, - 52259, - 52260, - 52261, - 52262, - 52263, - 52264, - 52265, - 52266, - 52267, - 52268, - 52269, - 52270, - 52271, - 52272, - 52273, - 52274, - 52275, - 52276, - 52277, - 52278, - 52279, - 52280, - 52281, - 52282, - 52283, - 52284, - 52285, - 52286, - 52287, - 52288, - 52289, - 52290, - 52291, - 52292, - 52293, - 52294, - 52295, - 52296, - 52297, - 52298, - 52299, - 52300, - 52301, - 52302, - 52303, - 52304, - 52305, - 52306, - 52307, - 52308, - 52309, - 52310, - 52311, - 52312, - 52313, - 52314, - 52315, - 52316, - 52317, - 52318, - 52319, - 52320, - 52321, - 52322, - 52323, - 52324, - 52325, - 52326, - 52327, - 52328, - 52329, - 52330, - 52331, - 52332, - 52333, - 52334, - 52335, - 52336, - 52337, - 52338, - 52339, - 52340, - 52341, - 52342, - 52343, - 52344, - 52345, - 52346, - 52347, - 52348, - 52349, - 52350, - 52351, - 52352, - 52353, - 52354, - 52355, - 52356, - 52357, - 52358, - 52359, - 52360, - 52361, - 52362, - 52363, - 52364, - 52365, - 52366, - 52367, - 52368, - 52369, - 52370, - 52371, - 52372, - 52373, - 52374, - 52375, - 52376, - 52377, - 52378, - 52379, - 52380, - 52381, - 52382, - 52383, - 52384, - 52385, - 52386, - 52387, - 52388, - 52389, - 52390, - 52391, - 52392, - 52393, - 52394, - 52395, - 52396, - 52397, - 52398, - 52399, - 52400, - 52401, - 52402, - 52403, - 52404, - 52405, - 52406, - 52407, - 52408, - 52409, - 52410, - 52411, - 52412, - 52413, - 52414, - 52415, - 52416, - 52417, - 52418, - 52419, - 52420, - 52421, - 52422, - 52423, - 52424, - 52425, - 52426, - 52427, - 52428, - 52429, - 52430, - 52431, - 52432, - 52433, - 52434, - 52435, - 52436, - 52437, - 52438, - 52439, - 52440, - 52441, - 52442, - 52443, - 52444, - 52445, - 52446, - 52447, - 52448, - 52449, - 52450, - 52451, - 52452, - 52453, - 52454, - 52455, - 52456, - 52457, - 52458, - 52459, - 52460, - 52461, - 52462, - 52463, - 52464, - 52465, - 52466, - 52467, - 52468, - 52469, - 52470, - 52471, - 52472, - 52473, - 52474, - 52475, - 52476, - 52477, - 52478, - 52479, - 52480, - 52481, - 52482, - 52483, - 52484, - 52485, - 52486, - 52487, - 52488, - 52489, - 52490, - 52491, - 52492, - 52493, - 52494, - 52495, - 52496, - 52497, - 52498, - 52499, - 52500, - 52501, - 52502, - 52503, - 52504, - 52505, - 52506, - 52507, - 52508, - 52509, - 52510, - 52511, - 52512, - 52513, - 52514, - 52515, - 52516, - 52517, - 52518, - 52519, - 52520, - 52521, - 52522, - 52523, - 52524, - 52525, - 52526, - 52527, - 52528, - 52529, - 52530, - 52531, - 52532, - 52533, - 52534, - 52535, - 52536, - 52537, - 52538, - 52539, - 52540, - 52541, - 52542, - 52543, - 52544, - 52545, - 52546, - 52547, - 52548, - 52549, - 52550, - 52551, - 52552, - 52553, - 52554, - 52555, - 52556, - 52557, - 52558, - 52559, - 52560, - 52561, - 52562, - 52563, - 52564, - 52565, - 52566, - 52567, - 52568, - 52569, - 52570, - 52571, - 52572, - 52573, - 52574, - 52575, - 52576, - 52577, - 52578, - 52579, - 52580, - 52581, - 52582, - 52583, - 52584, - 52585, - 52586, - 52587, - 52588, - 52589, - 52590, - 52591, - 52592, - 52593, - 52594, - 52595, - 52596, - 52597, - 52598, - 52599, - 52600, - 52601, - 52602, - 52603, - 52604, - 52605, - 52606, - 52607, - 52608, - 52609, - 52610, - 52611, - 52612, - 52613, - 52614, - 52615, - 52616, - 52617, - 52618, - 52619, - 52620, - 52621, - 52622, - 52623, - 52624, - 52625, - 52626, - 52627, - 52628, - 52629, - 52630, - 52631, - 52632, - 52633, - 52634, - 52635, - 52636, - 52637, - 52638, - 52639, - 52640, - 52641, - 52642, - 52643, - 52644, - 52645, - 52646, - 52647, - 52648, - 52649, - 52650, - 52651, - 52652, - 52653, - 52654, - 52655, - 52656, - 52657, - 52658, - 52659, - 52660, - 52661, - 52662, - 52663, - 52664, - 52665, - 52666, - 52667, - 52668, - 52669, - 52670, - 52671, - 52672, - 52673, - 52674, - 52675, - 52676, - 52677, - 52678, - 52679, - 52680, - 52681, - 52682, - 52683, - 52684, - 52685, - 52686, - 52687, - 52688, - 52689, - 52690, - 52691, - 52692, - 52693, - 52694, - 52695, - 52696, - 52697, - 52698, - 52699, - 52700, - 52701, - 52702, - 52703, - 52704, - 52705, - 52706, - 52707, - 52708, - 52709, - 52710, - 52711, - 52712, - 52713, - 52714, - 52715, - 52716, - 52717, - 52718, - 52719, - 52720, - 52721, - 52722, - 52723, - 52724, - 52725, - 52726, - 52727, - 52728, - 52729, - 52730, - 52731, - 52732, - 52733, - 52734, - 52735, - 52736, - 52737, - 52738, - 52739, - 52740, - 52741, - 52742, - 52743, - 52744, - 52745, - 52746, - 52747, - 52748, - 52749, - 52750, - 52751, - 52752, - 52753, - 52754, - 52755, - 52756, - 52757, - 52758, - 52759, - 52760, - 52761, - 52762, - 52763, - 52764, - 52765, - 52766, - 52767, - 52768, - 52769, - 52770, - 52771, - 52772, - 52773, - 52774, - 52775, - 52776, - 52777, - 52778, - 52779, - 52780, - 52781, - 52782, - 52783, - 52784, - 52785, - 52786, - 52787, - 52788, - 52789, - 52790, - 52791, - 52792, - 52793, - 52794, - 52795, - 52796, - 52797, - 52798, - 52799, - 52800, - 52801, - 52802, - 52803, - 52804, - 52805, - 52806, - 52807, - 52808, - 52809, - 52810, - 52811, - 52812, - 52813, - 52814, - 52815, - 52816, - 52817, - 52818, - 52819, - 52820, - 52821, - 52822, - 52823, - 52824, - 52825, - 52826, - 52827, - 52828, - 52829, - 52830, - 52831, - 52832, - 52833, - 52834, - 52835, - 52836, - 52837, - 52838, - 52839, - 52840, - 52841, - 52842, - 52843, - 52844, - 52845, - 52846, - 52847, - 52848, - 52849, - 52850, - 52851, - 52852, - 52853, - 52854, - 52855, - 52856, - 52857, - 52858, - 52859, - 52860, - 52861, - 52862, - 52863, - 52864, - 52865, - 52866, - 52867, - 52868, - 52869, - 52870, - 52871, - 52872, - 52873, - 52874, - 52875, - 52876, - 52877, - 52878, - 52879, - 52880, - 52881, - 52882, - 52883, - 52884, - 52885, - 52886, - 52887, - 52888, - 52889, - 52890, - 52891, - 52892, - 52893, - 52894, - 52895, - 52896, - 52897, - 52898, - 52899, - 52900, - 52901, - 52902, - 52903, - 52904, - 52905, - 52906, - 52907, - 52908, - 52909, - 52910, - 52911, - 52912, - 52913, - 52914, - 52915, - 52916, - 52917, - 52918, - 52919, - 52920, - 52921, - 52922, - 52923, - 52924, - 52925, - 52926, - 52927, - 52928, - 52929, - 52930, - 52931, - 52932, - 52933, - 52934, - 52935, - 52936, - 52937, - 52938, - 52939, - 52940, - 52941, - 52942, - 52943, - 52944, - 52945, - 52946, - 52947, - 52948, - 52949, - 52950, - 52951, - 52952, - 52953, - 52954, - 52955, - 52956, - 52957, - 52958, - 52959, - 52960, - 52961, - 52962, - 52963, - 52964, - 52965, - 52966, - 52967, - 52968, - 52969, - 52970, - 52971, - 52972, - 52973, - 52974, - 52975, - 52976, - 52977, - 52978, - 52979, - 52980, - 52981, - 52982, - 52983, - 52984, - 52985, - 52986, - 52987, - 52988, - 52989, - 52990, - 52991, - 52992, - 52993, - 52994, - 52995, - 52996, - 52997, - 52998, - 52999, - 53000, - 53001, - 53002, - 53003, - 53004, - 53005, - 53006, - 53007, - 53008, - 53009, - 53010, - 53011, - 53012, - 53013, - 53014, - 53015, - 53016, - 53017, - 53018, - 53019, - 53020, - 53021, - 53022, - 53023, - 53024, - 53025, - 53026, - 53027, - 53028, - 53029, - 53030, - 53031, - 53032, - 53033, - 53034, - 53035, - 53036, - 53037, - 53038, - 53039, - 53040, - 53041, - 53042, - 53043, - 53044, - 53045, - 53046, - 53047, - 53048, - 53049, - 53050, - 53051, - 53052, - 53053, - 53054, - 53055, - 53056, - 53057, - 53058, - 53059, - 53060, - 53061, - 53062, - 53063, - 53064, - 53065, - 53066, - 53067, - 53068, - 53069, - 53070, - 53071, - 53072, - 53073, - 53074, - 53075, - 53076, - 53077, - 53078, - 53079, - 53080, - 53081, - 53082, - 53083, - 53084, - 53085, - 53086, - 53087, - 53088, - 53089, - 53090, - 53091, - 53092, - 53093, - 53094, - 53095, - 53096, - 53097, - 53098, - 53099, - 53100, - 53101, - 53102, - 53103, - 53104, - 53105, - 53106, - 53107, - 53108, - 53109, - 53110, - 53111, - 53112, - 53113, - 53114, - 53115, - 53116, - 53117, - 53118, - 53119, - 53120, - 53121, - 53122, - 53123, - 53124, - 53125, - 53126, - 53127, - 53128, - 53129, - 53130, - 53131, - 53132, - 53133, - 53134, - 53135, - 53136, - 53137, - 53138, - 53139, - 53140, - 53141, - 53142, - 53143, - 53144, - 53145, - 53146, - 53147, - 53148, - 53149, - 53150, - 53151, - 53152, - 53153, - 53154, - 53155, - 53156, - 53157, - 53158, - 53159, - 53160, - 53161, - 53162, - 53163, - 53164, - 53165, - 53166, - 53167, - 53168, - 53169, - 53170, - 53171, - 53172, - 53173, - 53174, - 53175, - 53176, - 53177, - 53178, - 53179, - 53180, - 53181, - 53182, - 53183, - 53184, - 53185, - 53186, - 53187, - 53188, - 53189, - 53190, - 53191, - 53192, - 53193, - 53194, - 53195, - 53196, - 53197, - 53198, - 53199, - 53200, - 53201, - 53202, - 53203, - 53204, - 53205, - 53206, - 53207, - 53208, - 53209, - 53210, - 53211, - 53212, - 53213, - 53214, - 53215, - 53216, - 53217, - 53218, - 53219, - 53220, - 53221, - 53222, - 53223, - 53224, - 53225, - 53226, - 53227, - 53228, - 53229, - 53230, - 53231, - 53232, - 53233, - 53234, - 53235, - 53236, - 53237, - 53238, - 53239, - 53240, - 53241, - 53242, - 53243, - 53244, - 53245, - 53246, - 53247, - 53248, - 53249, - 53250, - 53251, - 53252, - 53253, - 53254, - 53255, - 53256, - 53257, - 53258, - 53259, - 53260, - 53261, - 53262, - 53263, - 53264, - 53265, - 53266, - 53267, - 53268, - 53269, - 53270, - 53271, - 53272, - 53273, - 53274, - 53275, - 53276, - 53277, - 53278, - 53279, - 53280, - 53281, - 53282, - 53283, - 53284, - 53285, - 53286, - 53287, - 53288, - 53289, - 53290, - 53291, - 53292, - 53293, - 53294, - 53295, - 53296, - 53297, - 53298, - 53299, - 53300, - 53301, - 53302, - 53303, - 53304, - 53305, - 53306, - 53307, - 53308, - 53309, - 53310, - 53311, - 53312, - 53313, - 53314, - 53315, - 53316, - 53317, - 53318, - 53319, - 53320, - 53321, - 53322, - 53323, - 53324, - 53325, - 53326, - 53327, - 53328, - 53329, - 53330, - 53331, - 53332, - 53333, - 53334, - 53335, - 53336, - 53337, - 53338, - 53339, - 53340, - 53341, - 53342, - 53343, - 53344, - 53345, - 53346, - 53347, - 53348, - 53349, - 53350, - 53351, - 53352, - 53353, - 53354, - 53355, - 53356, - 53357, - 53358, - 53359, - 53360, - 53361, - 53362, - 53363, - 53364, - 53365, - 53366, - 53367, - 53368, - 53369, - 53370, - 53371, - 53372, - 53373, - 53374, - 53375, - 53376, - 53377, - 53378, - 53379, - 53380, - 53381, - 53382, - 53383, - 53384, - 53385, - 53386, - 53387, - 53388, - 53389, - 53390, - 53391, - 53392, - 53393, - 53394, - 53395, - 53396, - 53397, - 53398, - 53399, - 53400, - 53401, - 53402, - 53403, - 53404, - 53405, - 53406, - 53407, - 53408, - 53409, - 53410, - 53411, - 53412, - 53413, - 53414, - 53415, - 53416, - 53417, - 53418, - 53419, - 53420, - 53421, - 53422, - 53423, - 53424, - 53425, - 53426, - 53427, - 53428, - 53429, - 53430, - 53431, - 53432, - 53433, - 53434, - 53435, - 53436, - 53437, - 53438, - 53439, - 53440, - 53441, - 53442, - 53443, - 53444, - 53445, - 53446, - 53447, - 53448, - 53449, - 53450, - 53451, - 53452, - 53453, - 53454, - 53455, - 53456, - 53457, - 53458, - 53459, - 53460, - 53461, - 53462, - 53463, - 53464, - 53465, - 53466, - 53467, - 53468, - 53469, - 53470, - 53471, - 53472, - 53473, - 53474, - 53475, - 53476, - 53477, - 53478, - 53479, - 53480, - 53481, - 53482, - 53483, - 53484, - 53485, - 53486, - 53487, - 53488, - 53489, - 53490, - 53491, - 53492, - 53493, - 53494, - 53495, - 53496, - 53497, - 53498, - 53499, - 53500, - 53501, - 53502, - 53503, - 53504, - 53505, - 53506, - 53507, - 53508, - 53509, - 53510, - 53511, - 53512, - 53513, - 53514, - 53515, - 53516, - 53517, - 53518, - 53519, - 53520, - 53521, - 53522, - 53523, - 53524, - 53525, - 53526, - 53527, - 53528, - 53529, - 53530, - 53531, - 53532, - 53533, - 53534, - 53535, - 53536, - 53537, - 53538, - 53539, - 53540, - 53541, - 53542, - 53543, - 53544, - 53545, - 53546, - 53547, - 53548, - 53549, - 53550, - 53551, - 53552, - 53553, - 53554, - 53555, - 53556, - 53557, - 53558, - 53559, - 53560, - 53561, - 53562, - 53563, - 53564, - 53565, - 53566, - 53567, - 53568, - 53569, - 53570, - 53571, - 53572, - 53573, - 53574, - 53575, - 53576, - 53577, - 53578, - 53579, - 53580, - 53581, - 53582, - 53583, - 53584, - 53585, - 53586, - 53587, - 53588, - 53589, - 53590, - 53591, - 53592, - 53593, - 53594, - 53595, - 53596, - 53597, - 53598, - 53599, - 53600, - 53601, - 53602, - 53603, - 53604, - 53605, - 53606, - 53607, - 53608, - 53609, - 53610, - 53611, - 53612, - 53613, - 53614, - 53615, - 53616, - 53617, - 53618, - 53619, - 53620, - 53621, - 53622, - 53623, - 53624, - 53625, - 53626, - 53627, - 53628, - 53629, - 53630, - 53631, - 53632, - 53633, - 53634, - 53635, - 53636, - 53637, - 53638, - 53639, - 53640, - 53641, - 53642, - 53643, - 53644, - 53645, - 53646, - 53647, - 53648, - 53649, - 53650, - 53651, - 53652, - 53653, - 53654, - 53655, - 53656, - 53657, - 53658, - 53659, - 53660, - 53661, - 53662, - 53663, - 53664, - 53665, - 53666, - 53667, - 53668, - 53669, - 53670, - 53671, - 53672, - 53673, - 53674, - 53675, - 53676, - 53677, - 53678, - 53679, - 53680, - 53681, - 53682, - 53683, - 53684, - 53685, - 53686, - 53687, - 53688, - 53689, - 53690, - 53691, - 53692, - 53693, - 53694, - 53695, - 53696, - 53697, - 53698, - 53699, - 53700, - 53701, - 53702, - 53703, - 53704, - 53705, - 53706, - 53707, - 53708, - 53709, - 53710, - 53711, - 53712, - 53713, - 53714, - 53715, - 53716, - 53717, - 53718, - 53719, - 53720, - 53721, - 53722, - 53723, - 53724, - 53725, - 53726, - 53727, - 53728, - 53729, - 53730, - 53731, - 53732, - 53733, - 53734, - 53735, - 53736, - 53737, - 53738, - 53739, - 53740, - 53741, - 53742, - 53743, - 53744, - 53745, - 53746, - 53747, - 53748, - 53749, - 53750, - 53751, - 53752, - 53753, - 53754, - 53755, - 53756, - 53757, - 53758, - 53759, - 53760, - 53761, - 53762, - 53763, - 53764, - 53765, - 53766, - 53767, - 53768, - 53769, - 53770, - 53771, - 53772, - 53773, - 53774, - 53775, - 53776, - 53777, - 53778, - 53779, - 53780, - 53781, - 53782, - 53783, - 53784, - 53785, - 53786, - 53787, - 53788, - 53789, - 53790, - 53791, - 53792, - 53793, - 53794, - 53795, - 53796, - 53797, - 53798, - 53799, - 53800, - 53801, - 53802, - 53803, - 53804, - 53805, - 53806, - 53807, - 53808, - 53809, - 53810, - 53811, - 53812, - 53813, - 53814, - 53815, - 53816, - 53817, - 53818, - 53819, - 53820, - 53821, - 53822, - 53823, - 53824, - 53825, - 53826, - 53827, - 53828, - 53829, - 53830, - 53831, - 53832, - 53833, - 53834, - 53835, - 53836, - 53837, - 53838, - 53839, - 53840, - 53841, - 53842, - 53843, - 53844, - 53845, - 53846, - 53847, - 53848, - 53849, - 53850, - 53851, - 53852, - 53853, - 53854, - 53855, - 53856, - 53857, - 53858, - 53859, - 53860, - 53861, - 53862, - 53863, - 53864, - 53865, - 53866, - 53867, - 53868, - 53869, - 53870, - 53871, - 53872, - 53873, - 53874, - 53875, - 53876, - 53877, - 53878, - 53879, - 53880, - 53881, - 53882, - 53883, - 53884, - 53885, - 53886, - 53887, - 53888, - 53889, - 53890, - 53891, - 53892, - 53893, - 53894, - 53895, - 53896, - 53897, - 53898, - 53899, - 53900, - 53901, - 53902, - 53903, - 53904, - 53905, - 53906, - 53907, - 53908, - 53909, - 53910, - 53911, - 53912, - 53913, - 53914, - 53915, - 53916, - 53917, - 53918, - 53919, - 53920, - 53921, - 53922, - 53923, - 53924, - 53925, - 53926, - 53927, - 53928, - 53929, - 53930, - 53931, - 53932, - 53933, - 53934, - 53935, - 53936, - 53937, - 53938, - 53939, - 53940, - 53941, - 53942, - 53943, - 53944, - 53945, - 53946, - 53947, - 53948, - 53949, - 53950, - 53951, - 53952, - 53953, - 53954, - 53955, - 53956, - 53957, - 53958, - 53959, - 53960, - 53961, - 53962, - 53963, - 53964, - 53965, - 53966, - 53967, - 53968, - 53969, - 53970, - 53971, - 53972, - 53973, - 53974, - 53975, - 53976, - 53977, - 53978, - 53979, - 53980, - 53981, - 53982, - 53983, - 53984, - 53985, - 53986, - 53987, - 53988, - 53989, - 53990, - 53991, - 53992, - 53993, - 53994, - 53995, - 53996, - 53997, - 53998, - 53999, - 54000, - 54001, - 54002, - 54003, - 54004, - 54005, - 54006, - 54007, - 54008, - 54009, - 54010, - 54011, - 54012, - 54013, - 54014, - 54015, - 54016, - 54017, - 54018, - 54019, - 54020, - 54021, - 54022, - 54023, - 54024, - 54025, - 54026, - 54027, - 54028, - 54029, - 54030, - 54031, - 54032, - 54033, - 54034, - 54035, - 54036, - 54037, - 54038, - 54039, - 54040, - 54041, - 54042, - 54043, - 54044, - 54045, - 54046, - 54047, - 54048, - 54049, - 54050, - 54051, - 54052, - 54053, - 54054, - 54055, - 54056, - 54057, - 54058, - 54059, - 54060, - 54061, - 54062, - 54063, - 54064, - 54065, - 54066, - 54067, - 54068, - 54069, - 54070, - 54071, - 54072, - 54073, - 54074, - 54075, - 54076, - 54077, - 54078, - 54079, - 54080, - 54081, - 54082, - 54083, - 54084, - 54085, - 54086, - 54087, - 54088, - 54089, - 54090, - 54091, - 54092, - 54093, - 54094, - 54095, - 54096, - 54097, - 54098, - 54099, - 54100, - 54101, - 54102, - 54103, - 54104, - 54105, - 54106, - 54107, - 54108, - 54109, - 54110, - 54111, - 54112, - 54113, - 54114, - 54115, - 54116, - 54117, - 54118, - 54119, - 54120, - 54121, - 54122, - 54123, - 54124, - 54125, - 54126, - 54127, - 54128, - 54129, - 54130, - 54131, - 54132, - 54133, - 54134, - 54135, - 54136, - 54137, - 54138, - 54139, - 54140, - 54141, - 54142, - 54143, - 54144, - 54145, - 54146, - 54147, - 54148, - 54149, - 54150, - 54151, - 54152, - 54153, - 54154, - 54155, - 54156, - 54157, - 54158, - 54159, - 54160, - 54161, - 54162, - 54163, - 54164, - 54165, - 54166, - 54167, - 54168, - 54169, - 54170, - 54171, - 54172, - 54173, - 54174, - 54175, - 54176, - 54177, - 54178, - 54179, - 54180, - 54181, - 54182, - 54183, - 54184, - 54185, - 54186, - 54187, - 54188, - 54189, - 54190, - 54191, - 54192, - 54193, - 54194, - 54195, - 54196, - 54197, - 54198, - 54199, - 54200, - 54201, - 54202, - 54203, - 54204, - 54205, - 54206, - 54207, - 54208, - 54209, - 54210, - 54211, - 54212, - 54213, - 54214, - 54215, - 54216, - 54217, - 54218, - 54219, - 54220, - 54221, - 54222, - 54223, - 54224, - 54225, - 54226, - 54227, - 54228, - 54229, - 54230, - 54231, - 54232, - 54233, - 54234, - 54235, - 54236, - 54237, - 54238, - 54239, - 54240, - 54241, - 54242, - 54243, - 54244, - 54245, - 54246, - 54247, - 54248, - 54249, - 54250, - 54251, - 54252, - 54253, - 54254, - 54255, - 54256, - 54257, - 54258, - 54259, - 54260, - 54261, - 54262, - 54263, - 54264, - 54265, - 54266, - 54267, - 54268, - 54269, - 54270, - 54271, - 54272, - 54273, - 54274, - 54275, - 54276, - 54277, - 54278, - 54279, - 54280, - 54281, - 54282, - 54283, - 54284, - 54285, - 54286, - 54287, - 54288, - 54289, - 54290, - 54291, - 54292, - 54293, - 54294, - 54295, - 54296, - 54297, - 54298, - 54299, - 54300, - 54301, - 54302, - 54303, - 54304, - 54305, - 54306, - 54307, - 54308, - 54309, - 54310, - 54311, - 54312, - 54313, - 54314, - 54315, - 54316, - 54317, - 54318, - 54319, - 54320, - 54321, - 54322, - 54323, - 54324, - 54325, - 54326, - 54327, - 54328, - 54329, - 54330, - 54331, - 54332, - 54333, - 54334, - 54335, - 54336, - 54337, - 54338, - 54339, - 54340, - 54341, - 54342, - 54343, - 54344, - 54345, - 54346, - 54347, - 54348, - 54349, - 54350, - 54351, - 54352, - 54353, - 54354, - 54355, - 54356, - 54357, - 54358, - 54359, - 54360, - 54361, - 54362, - 54363, - 54364, - 54365, - 54366, - 54367, - 54368, - 54369, - 54370, - 54371, - 54372, - 54373, - 54374, - 54375, - 54376, - 54377, - 54378, - 54379, - 54380, - 54381, - 54382, - 54383, - 54384, - 54385, - 54386, - 54387, - 54388, - 54389, - 54390, - 54391, - 54392, - 54393, - 54394, - 54395, - 54396, - 54397, - 54398, - 54399, - 54400, - 54401, - 54402, - 54403, - 54404, - 54405, - 54406, - 54407, - 54408, - 54409, - 54410, - 54411, - 54412, - 54413, - 54414, - 54415, - 54416, - 54417, - 54418, - 54419, - 54420, - 54421, - 54422, - 54423, - 54424, - 54425, - 54426, - 54427, - 54428, - 54429, - 54430, - 54431, - 54432, - 54433, - 54434, - 54435, - 54436, - 54437, - 54438, - 54439, - 54440, - 54441, - 54442, - 54443, - 54444, - 54445, - 54446, - 54447, - 54448, - 54449, - 54450, - 54451, - 54452, - 54453, - 54454, - 54455, - 54456, - 54457, - 54458, - 54459, - 54460, - 54461, - 54462, - 54463, - 54464, - 54465, - 54466, - 54467, - 54468, - 54469, - 54470, - 54471, - 54472, - 54473, - 54474, - 54475, - 54476, - 54477, - 54478, - 54479, - 54480, - 54481, - 54482, - 54483, - 54484, - 54485, - 54486, - 54487, - 54488, - 54489, - 54490, - 54491, - 54492, - 54493, - 54494, - 54495, - 54496, - 54497, - 54498, - 54499, - 54500, - 54501, - 54502, - 54503, - 54504, - 54505, - 54506, - 54507, - 54508, - 54509, - 54510, - 54511, - 54512, - 54513, - 54514, - 54515, - 54516, - 54517, - 54518, - 54519, - 54520, - 54521, - 54522, - 54523, - 54524, - 54525, - 54526, - 54527, - 54528, - 54529, - 54530, - 54531, - 54532, - 54533, - 54534, - 54535, - 54536, - 54537, - 54538, - 54539, - 54540, - 54541, - 54542, - 54543, - 54544, - 54545, - 54546, - 54547, - 54548, - 54549, - 54550, - 54551, - 54552, - 54553, - 54554, - 54555, - 54556, - 54557, - 54558, - 54559, - 54560, - 54561, - 54562, - 54563, - 54564, - 54565, - 54566, - 54567, - 54568, - 54569, - 54570, - 54571, - 54572, - 54573, - 54574, - 54575, - 54576, - 54577, - 54578, - 54579, - 54580, - 54581, - 54582, - 54583, - 54584, - 54585, - 54586, - 54587, - 54588, - 54589, - 54590, - 54591, - 54592, - 54593, - 54594, - 54595, - 54596, - 54597, - 54598, - 54599, - 54600, - 54601, - 54602, - 54603, - 54604, - 54605, - 54606, - 54607, - 54608, - 54609, - 54610, - 54611, - 54612, - 54613, - 54614, - 54615, - 54616, - 54617, - 54618, - 54619, - 54620, - 54621, - 54622, - 54623, - 54624, - 54625, - 54626, - 54627, - 54628, - 54629, - 54630, - 54631, - 54632, - 54633, - 54634, - 54635, - 54636, - 54637, - 54638, - 54639, - 54640, - 54641, - 54642, - 54643, - 54644, - 54645, - 54646, - 54647, - 54648, - 54649, - 54650, - 54651, - 54652, - 54653, - 54654, - 54655, - 54656, - 54657, - 54658, - 54659, - 54660, - 54661, - 54662, - 54663, - 54664, - 54665, - 54666, - 54667, - 54668, - 54669, - 54670, - 54671, - 54672, - 54673, - 54674, - 54675, - 54676, - 54677, - 54678, - 54679, - 54680, - 54681, - 54682, - 54683, - 54684, - 54685, - 54686, - 54687, - 54688, - 54689, - 54690, - 54691, - 54692, - 54693, - 54694, - 54695, - 54696, - 54697, - 54698, - 54699, - 54700, - 54701, - 54702, - 54703, - 54704, - 54705, - 54706, - 54707, - 54708, - 54709, - 54710, - 54711, - 54712, - 54713, - 54714, - 54715, - 54716, - 54717, - 54718, - 54719, - 54720, - 54721, - 54722, - 54723, - 54724, - 54725, - 54726, - 54727, - 54728, - 54729, - 54730, - 54731, - 54732, - 54733, - 54734, - 54735, - 54736, - 54737, - 54738, - 54739, - 54740, - 54741, - 54742, - 54743, - 54744, - 54745, - 54746, - 54747, - 54748, - 54749, - 54750, - 54751, - 54752, - 54753, - 54754, - 54755, - 54756, - 54757, - 54758, - 54759, - 54760, - 54761, - 54762, - 54763, - 54764, - 54765, - 54766, - 54767, - 54768, - 54769, - 54770, - 54771, - 54772, - 54773, - 54774, - 54775, - 54776, - 54777, - 54778, - 54779, - 54780, - 54781, - 54782, - 54783, - 54784, - 54785, - 54786, - 54787, - 54788, - 54789, - 54790, - 54791, - 54792, - 54793, - 54794, - 54795, - 54796, - 54797, - 54798, - 54799, - 54800, - 54801, - 54802, - 54803, - 54804, - 54805, - 54806, - 54807, - 54808, - 54809, - 54810, - 54811, - 54812, - 54813, - 54814, - 54815, - 54816, - 54817, - 54818, - 54819, - 54820, - 54821, - 54822, - 54823, - 54824, - 54825, - 54826, - 54827, - 54828, - 54829, - 54830, - 54831, - 54832, - 54833, - 54834, - 54835, - 54836, - 54837, - 54838, - 54839, - 54840, - 54841, - 54842, - 54843, - 54844, - 54845, - 54846, - 54847, - 54848, - 54849, - 54850, - 54851, - 54852, - 54853, - 54854, - 54855, - 54856, - 54857, - 54858, - 54859, - 54860, - 54861, - 54862, - 54863, - 54864, - 54865, - 54866, - 54867, - 54868, - 54869, - 54870, - 54871, - 54872, - 54873, - 54874, - 54875, - 54876, - 54877, - 54878, - 54879, - 54880, - 54881, - 54882, - 54883, - 54884, - 54885, - 54886, - 54887, - 54888, - 54889, - 54890, - 54891, - 54892, - 54893, - 54894, - 54895, - 54896, - 54897, - 54898, - 54899, - 54900, - 54901, - 54902, - 54903, - 54904, - 54905, - 54906, - 54907, - 54908, - 54909, - 54910, - 54911, - 54912, - 54913, - 54914, - 54915, - 54916, - 54917, - 54918, - 54919, - 54920, - 54921, - 54922, - 54923, - 54924, - 54925, - 54926, - 54927, - 54928, - 54929, - 54930, - 54931, - 54932, - 54933, - 54934, - 54935, - 54936, - 54937, - 54938, - 54939, - 54940, - 54941, - 54942, - 54943, - 54944, - 54945, - 54946, - 54947, - 54948, - 54949, - 54950, - 54951, - 54952, - 54953, - 54954, - 54955, - 54956, - 54957, - 54958, - 54959, - 54960, - 54961, - 54962, - 54963, - 54964, - 54965, - 54966, - 54967, - 54968, - 54969, - 54970, - 54971, - 54972, - 54973, - 54974, - 54975, - 54976, - 54977, - 54978, - 54979, - 54980, - 54981, - 54982, - 54983, - 54984, - 54985, - 54986, - 54987, - 54988, - 54989, - 54990, - 54991, - 54992, - 54993, - 54994, - 54995, - 54996, - 54997, - 54998, - 54999, - 55000, - 55001, - 55002, - 55003, - 55004, - 55005, - 55006, - 55007, - 55008, - 55009, - 55010, - 55011, - 55012, - 55013, - 55014, - 55015, - 55016, - 55017, - 55018, - 55019, - 55020, - 55021, - 55022, - 55023, - 55024, - 55025, - 55026, - 55027, - 55028, - 55029, - 55030, - 55031, - 55032, - 55033, - 55034, - 55035, - 55036, - 55037, - 55038, - 55039, - 55040, - 55041, - 55042, - 55043, - 55044, - 55045, - 55046, - 55047, - 55048, - 55049, - 55050, - 55051, - 55052, - 55053, - 55054, - 55055, - 55056, - 55057, - 55058, - 55059, - 55060, - 55061, - 55062, - 55063, - 55064, - 55065, - 55066, - 55067, - 55068, - 55069, - 55070, - 55071, - 55072, - 55073, - 55074, - 55075, - 55076, - 55077, - 55078, - 55079, - 55080, - 55081, - 55082, - 55083, - 55084, - 55085, - 55086, - 55087, - 55088, - 55089, - 55090, - 55091, - 55092, - 55093, - 55094, - 55095, - 55096, - 55097, - 55098, - 55099, - 55100, - 55101, - 55102, - 55103, - 55104, - 55105, - 55106, - 55107, - 55108, - 55109, - 55110, - 55111, - 55112, - 55113, - 55114, - 55115, - 55116, - 55117, - 55118, - 55119, - 55120, - 55121, - 55122, - 55123, - 55124, - 55125, - 55126, - 55127, - 55128, - 55129, - 55130, - 55131, - 55132, - 55133, - 55134, - 55135, - 55136, - 55137, - 55138, - 55139, - 55140, - 55141, - 55142, - 55143, - 55144, - 55145, - 55146, - 55147, - 55148, - 55149, - 55150, - 55151, - 55152, - 55153, - 55154, - 55155, - 55156, - 55157, - 55158, - 55159, - 55160, - 55161, - 55162, - 55163, - 55164, - 55165, - 55166, - 55167, - 55168, - 55169, - 55170, - 55171, - 55172, - 55173, - 55174, - 55175, - 55176, - 55177, - 55178, - 55179, - 55180, - 55181, - 55182, - 55183, - 55184, - 55185, - 55186, - 55187, - 55188, - 55189, - 55190, - 55191, - 55192, - 55193, - 55194, - 55195, - 55196, - 55197, - 55198, - 55199, - 55200, - 55201, - 55202, - 55203, - 55216, - 55217, - 55218, - 55219, - 55220, - 55221, - 55222, - 55223, - 55224, - 55225, - 55226, - 55227, - 55228, - 55229, - 55230, - 55231, - 55232, - 55233, - 55234, - 55235, - 55236, - 55237, - 55238, - 55243, - 55244, - 55245, - 55246, - 55247, - 55248, - 55249, - 55250, - 55251, - 55252, - 55253, - 55254, - 55255, - 55256, - 55257, - 55258, - 55259, - 55260, - 55261, - 55262, - 55263, - 55264, - 55265, - 55266, - 55267, - 55268, - 55269, - 55270, - 55271, - 55272, - 55273, - 55274, - 55275, - 55276, - 55277, - 55278, - 55279, - 55280, - 55281, - 55282, - 55283, - 55284, - 55285, - 55286, - 55287, - 55288, - 55289, - 55290, - 55291, - 63744, - 63745, - 63746, - 63747, - 63748, - 63749, - 63750, - 63751, - 63752, - 63753, - 63754, - 63755, - 63756, - 63757, - 63758, - 63759, - 63760, - 63761, - 63762, - 63763, - 63764, - 63765, - 63766, - 63767, - 63768, - 63769, - 63770, - 63771, - 63772, - 63773, - 63774, - 63775, - 63776, - 63777, - 63778, - 63779, - 63780, - 63781, - 63782, - 63783, - 63784, - 63785, - 63786, - 63787, - 63788, - 63789, - 63790, - 63791, - 63792, - 63793, - 63794, - 63795, - 63796, - 63797, - 63798, - 63799, - 63800, - 63801, - 63802, - 63803, - 63804, - 63805, - 63806, - 63807, - 63808, - 63809, - 63810, - 63811, - 63812, - 63813, - 63814, - 63815, - 63816, - 63817, - 63818, - 63819, - 63820, - 63821, - 63822, - 63823, - 63824, - 63825, - 63826, - 63827, - 63828, - 63829, - 63830, - 63831, - 63832, - 63833, - 63834, - 63835, - 63836, - 63837, - 63838, - 63839, - 63840, - 63841, - 63842, - 63843, - 63844, - 63845, - 63846, - 63847, - 63848, - 63849, - 63850, - 63851, - 63852, - 63853, - 63854, - 63855, - 63856, - 63857, - 63858, - 63859, - 63860, - 63861, - 63862, - 63863, - 63864, - 63865, - 63866, - 63867, - 63868, - 63869, - 63870, - 63871, - 63872, - 63873, - 63874, - 63875, - 63876, - 63877, - 63878, - 63879, - 63880, - 63881, - 63882, - 63883, - 63884, - 63885, - 63886, - 63887, - 63888, - 63889, - 63890, - 63891, - 63892, - 63893, - 63894, - 63895, - 63896, - 63897, - 63898, - 63899, - 63900, - 63901, - 63902, - 63903, - 63904, - 63905, - 63906, - 63907, - 63908, - 63909, - 63910, - 63911, - 63912, - 63913, - 63914, - 63915, - 63916, - 63917, - 63918, - 63919, - 63920, - 63921, - 63922, - 63923, - 63924, - 63925, - 63926, - 63927, - 63928, - 63929, - 63930, - 63931, - 63932, - 63933, - 63934, - 63935, - 63936, - 63937, - 63938, - 63939, - 63940, - 63941, - 63942, - 63943, - 63944, - 63945, - 63946, - 63947, - 63948, - 63949, - 63950, - 63951, - 63952, - 63953, - 63954, - 63955, - 63956, - 63957, - 63958, - 63959, - 63960, - 63961, - 63962, - 63963, - 63964, - 63965, - 63966, - 63967, - 63968, - 63969, - 63970, - 63971, - 63972, - 63973, - 63974, - 63975, - 63976, - 63977, - 63978, - 63979, - 63980, - 63981, - 63982, - 63983, - 63984, - 63985, - 63986, - 63987, - 63988, - 63989, - 63990, - 63991, - 63992, - 63993, - 63994, - 63995, - 63996, - 63997, - 63998, - 63999, - 64000, - 64001, - 64002, - 64003, - 64004, - 64005, - 64006, - 64007, - 64008, - 64009, - 64010, - 64011, - 64012, - 64013, - 64014, - 64015, - 64016, - 64017, - 64018, - 64019, - 64020, - 64021, - 64022, - 64023, - 64024, - 64025, - 64026, - 64027, - 64028, - 64029, - 64030, - 64031, - 64032, - 64033, - 64034, - 64035, - 64036, - 64037, - 64038, - 64039, - 64040, - 64041, - 64042, - 64043, - 64044, - 64045, - 64046, - 64047, - 64048, - 64049, - 64050, - 64051, - 64052, - 64053, - 64054, - 64055, - 64056, - 64057, - 64058, - 64059, - 64060, - 64061, - 64062, - 64063, - 64064, - 64065, - 64066, - 64067, - 64068, - 64069, - 64070, - 64071, - 64072, - 64073, - 64074, - 64075, - 64076, - 64077, - 64078, - 64079, - 64080, - 64081, - 64082, - 64083, - 64084, - 64085, - 64086, - 64087, - 64088, - 64089, - 64090, - 64091, - 64092, - 64093, - 64094, - 64095, - 64096, - 64097, - 64098, - 64099, - 64100, - 64101, - 64102, - 64103, - 64104, - 64105, - 64106, - 64107, - 64108, - 64109, - 64112, - 64113, - 64114, - 64115, - 64116, - 64117, - 64118, - 64119, - 64120, - 64121, - 64122, - 64123, - 64124, - 64125, - 64126, - 64127, - 64128, - 64129, - 64130, - 64131, - 64132, - 64133, - 64134, - 64135, - 64136, - 64137, - 64138, - 64139, - 64140, - 64141, - 64142, - 64143, - 64144, - 64145, - 64146, - 64147, - 64148, - 64149, - 64150, - 64151, - 64152, - 64153, - 64154, - 64155, - 64156, - 64157, - 64158, - 64159, - 64160, - 64161, - 64162, - 64163, - 64164, - 64165, - 64166, - 64167, - 64168, - 64169, - 64170, - 64171, - 64172, - 64173, - 64174, - 64175, - 64176, - 64177, - 64178, - 64179, - 64180, - 64181, - 64182, - 64183, - 64184, - 64185, - 64186, - 64187, - 64188, - 64189, - 64190, - 64191, - 64192, - 64193, - 64194, - 64195, - 64196, - 64197, - 64198, - 64199, - 64200, - 64201, - 64202, - 64203, - 64204, - 64205, - 64206, - 64207, - 64208, - 64209, - 64210, - 64211, - 64212, - 64213, - 64214, - 64215, - 64216, - 64217, - 64256, - 64257, - 64258, - 64259, - 64260, - 64261, - 64262, - 64275, - 64276, - 64277, - 64278, - 64279, - 64285, - 64287, - 64288, - 64289, - 64290, - 64291, - 64292, - 64293, - 64294, - 64295, - 64296, - 64298, - 64299, - 64300, - 64301, - 64302, - 64303, - 64304, - 64305, - 64306, - 64307, - 64308, - 64309, - 64310, - 64312, - 64313, - 64314, - 64315, - 64316, - 64318, - 64320, - 64321, - 64323, - 64324, - 64326, - 64327, - 64328, - 64329, - 64330, - 64331, - 64332, - 64333, - 64334, - 64335, - 64336, - 64337, - 64338, - 64339, - 64340, - 64341, - 64342, - 64343, - 64344, - 64345, - 64346, - 64347, - 64348, - 64349, - 64350, - 64351, - 64352, - 64353, - 64354, - 64355, - 64356, - 64357, - 64358, - 64359, - 64360, - 64361, - 64362, - 64363, - 64364, - 64365, - 64366, - 64367, - 64368, - 64369, - 64370, - 64371, - 64372, - 64373, - 64374, - 64375, - 64376, - 64377, - 64378, - 64379, - 64380, - 64381, - 64382, - 64383, - 64384, - 64385, - 64386, - 64387, - 64388, - 64389, - 64390, - 64391, - 64392, - 64393, - 64394, - 64395, - 64396, - 64397, - 64398, - 64399, - 64400, - 64401, - 64402, - 64403, - 64404, - 64405, - 64406, - 64407, - 64408, - 64409, - 64410, - 64411, - 64412, - 64413, - 64414, - 64415, - 64416, - 64417, - 64418, - 64419, - 64420, - 64421, - 64422, - 64423, - 64424, - 64425, - 64426, - 64427, - 64428, - 64429, - 64430, - 64431, - 64432, - 64433, - 64467, - 64468, - 64469, - 64470, - 64471, - 64472, - 64473, - 64474, - 64475, - 64476, - 64477, - 64478, - 64479, - 64480, - 64481, - 64482, - 64483, - 64484, - 64485, - 64486, - 64487, - 64488, - 64489, - 64490, - 64491, - 64492, - 64493, - 64494, - 64495, - 64496, - 64497, - 64498, - 64499, - 64500, - 64501, - 64502, - 64503, - 64504, - 64505, - 64506, - 64507, - 64508, - 64509, - 64510, - 64511, - 64512, - 64513, - 64514, - 64515, - 64516, - 64517, - 64518, - 64519, - 64520, - 64521, - 64522, - 64523, - 64524, - 64525, - 64526, - 64527, - 64528, - 64529, - 64530, - 64531, - 64532, - 64533, - 64534, - 64535, - 64536, - 64537, - 64538, - 64539, - 64540, - 64541, - 64542, - 64543, - 64544, - 64545, - 64546, - 64547, - 64548, - 64549, - 64550, - 64551, - 64552, - 64553, - 64554, - 64555, - 64556, - 64557, - 64558, - 64559, - 64560, - 64561, - 64562, - 64563, - 64564, - 64565, - 64566, - 64567, - 64568, - 64569, - 64570, - 64571, - 64572, - 64573, - 64574, - 64575, - 64576, - 64577, - 64578, - 64579, - 64580, - 64581, - 64582, - 64583, - 64584, - 64585, - 64586, - 64587, - 64588, - 64589, - 64590, - 64591, - 64592, - 64593, - 64594, - 64595, - 64596, - 64597, - 64598, - 64599, - 64600, - 64601, - 64602, - 64603, - 64604, - 64605, - 64606, - 64607, - 64608, - 64609, - 64610, - 64611, - 64612, - 64613, - 64614, - 64615, - 64616, - 64617, - 64618, - 64619, - 64620, - 64621, - 64622, - 64623, - 64624, - 64625, - 64626, - 64627, - 64628, - 64629, - 64630, - 64631, - 64632, - 64633, - 64634, - 64635, - 64636, - 64637, - 64638, - 64639, - 64640, - 64641, - 64642, - 64643, - 64644, - 64645, - 64646, - 64647, - 64648, - 64649, - 64650, - 64651, - 64652, - 64653, - 64654, - 64655, - 64656, - 64657, - 64658, - 64659, - 64660, - 64661, - 64662, - 64663, - 64664, - 64665, - 64666, - 64667, - 64668, - 64669, - 64670, - 64671, - 64672, - 64673, - 64674, - 64675, - 64676, - 64677, - 64678, - 64679, - 64680, - 64681, - 64682, - 64683, - 64684, - 64685, - 64686, - 64687, - 64688, - 64689, - 64690, - 64691, - 64692, - 64693, - 64694, - 64695, - 64696, - 64697, - 64698, - 64699, - 64700, - 64701, - 64702, - 64703, - 64704, - 64705, - 64706, - 64707, - 64708, - 64709, - 64710, - 64711, - 64712, - 64713, - 64714, - 64715, - 64716, - 64717, - 64718, - 64719, - 64720, - 64721, - 64722, - 64723, - 64724, - 64725, - 64726, - 64727, - 64728, - 64729, - 64730, - 64731, - 64732, - 64733, - 64734, - 64735, - 64736, - 64737, - 64738, - 64739, - 64740, - 64741, - 64742, - 64743, - 64744, - 64745, - 64746, - 64747, - 64748, - 64749, - 64750, - 64751, - 64752, - 64753, - 64754, - 64755, - 64756, - 64757, - 64758, - 64759, - 64760, - 64761, - 64762, - 64763, - 64764, - 64765, - 64766, - 64767, - 64768, - 64769, - 64770, - 64771, - 64772, - 64773, - 64774, - 64775, - 64776, - 64777, - 64778, - 64779, - 64780, - 64781, - 64782, - 64783, - 64784, - 64785, - 64786, - 64787, - 64788, - 64789, - 64790, - 64791, - 64792, - 64793, - 64794, - 64795, - 64796, - 64797, - 64798, - 64799, - 64800, - 64801, - 64802, - 64803, - 64804, - 64805, - 64806, - 64807, - 64808, - 64809, - 64810, - 64811, - 64812, - 64813, - 64814, - 64815, - 64816, - 64817, - 64818, - 64819, - 64820, - 64821, - 64822, - 64823, - 64824, - 64825, - 64826, - 64827, - 64828, - 64829, - 64848, - 64849, - 64850, - 64851, - 64852, - 64853, - 64854, - 64855, - 64856, - 64857, - 64858, - 64859, - 64860, - 64861, - 64862, - 64863, - 64864, - 64865, - 64866, - 64867, - 64868, - 64869, - 64870, - 64871, - 64872, - 64873, - 64874, - 64875, - 64876, - 64877, - 64878, - 64879, - 64880, - 64881, - 64882, - 64883, - 64884, - 64885, - 64886, - 64887, - 64888, - 64889, - 64890, - 64891, - 64892, - 64893, - 64894, - 64895, - 64896, - 64897, - 64898, - 64899, - 64900, - 64901, - 64902, - 64903, - 64904, - 64905, - 64906, - 64907, - 64908, - 64909, - 64910, - 64911, - 64914, - 64915, - 64916, - 64917, - 64918, - 64919, - 64920, - 64921, - 64922, - 64923, - 64924, - 64925, - 64926, - 64927, - 64928, - 64929, - 64930, - 64931, - 64932, - 64933, - 64934, - 64935, - 64936, - 64937, - 64938, - 64939, - 64940, - 64941, - 64942, - 64943, - 64944, - 64945, - 64946, - 64947, - 64948, - 64949, - 64950, - 64951, - 64952, - 64953, - 64954, - 64955, - 64956, - 64957, - 64958, - 64959, - 64960, - 64961, - 64962, - 64963, - 64964, - 64965, - 64966, - 64967, - 65008, - 65009, - 65010, - 65011, - 65012, - 65013, - 65014, - 65015, - 65016, - 65017, - 65018, - 65019, - 65136, - 65137, - 65138, - 65139, - 65140, - 65142, - 65143, - 65144, - 65145, - 65146, - 65147, - 65148, - 65149, - 65150, - 65151, - 65152, - 65153, - 65154, - 65155, - 65156, - 65157, - 65158, - 65159, - 65160, - 65161, - 65162, - 65163, - 65164, - 65165, - 65166, - 65167, - 65168, - 65169, - 65170, - 65171, - 65172, - 65173, - 65174, - 65175, - 65176, - 65177, - 65178, - 65179, - 65180, - 65181, - 65182, - 65183, - 65184, - 65185, - 65186, - 65187, - 65188, - 65189, - 65190, - 65191, - 65192, - 65193, - 65194, - 65195, - 65196, - 65197, - 65198, - 65199, - 65200, - 65201, - 65202, - 65203, - 65204, - 65205, - 65206, - 65207, - 65208, - 65209, - 65210, - 65211, - 65212, - 65213, - 65214, - 65215, - 65216, - 65217, - 65218, - 65219, - 65220, - 65221, - 65222, - 65223, - 65224, - 65225, - 65226, - 65227, - 65228, - 65229, - 65230, - 65231, - 65232, - 65233, - 65234, - 65235, - 65236, - 65237, - 65238, - 65239, - 65240, - 65241, - 65242, - 65243, - 65244, - 65245, - 65246, - 65247, - 65248, - 65249, - 65250, - 65251, - 65252, - 65253, - 65254, - 65255, - 65256, - 65257, - 65258, - 65259, - 65260, - 65261, - 65262, - 65263, - 65264, - 65265, - 65266, - 65267, - 65268, - 65269, - 65270, - 65271, - 65272, - 65273, - 65274, - 65275, - 65276, - 65313, - 65314, - 65315, - 65316, - 65317, - 65318, - 65319, - 65320, - 65321, - 65322, - 65323, - 65324, - 65325, - 65326, - 65327, - 65328, - 65329, - 65330, - 65331, - 65332, - 65333, - 65334, - 65335, - 65336, - 65337, - 65338, - 65345, - 65346, - 65347, - 65348, - 65349, - 65350, - 65351, - 65352, - 65353, - 65354, - 65355, - 65356, - 65357, - 65358, - 65359, - 65360, - 65361, - 65362, - 65363, - 65364, - 65365, - 65366, - 65367, - 65368, - 65369, - 65370, - 65382, - 65383, - 65384, - 65385, - 65386, - 65387, - 65388, - 65389, - 65390, - 65391, - 65392, - 65393, - 65394, - 65395, - 65396, - 65397, - 65398, - 65399, - 65400, - 65401, - 65402, - 65403, - 65404, - 65405, - 65406, - 65407, - 65408, - 65409, - 65410, - 65411, - 65412, - 65413, - 65414, - 65415, - 65416, - 65417, - 65418, - 65419, - 65420, - 65421, - 65422, - 65423, - 65424, - 65425, - 65426, - 65427, - 65428, - 65429, - 65430, - 65431, - 65432, - 65433, - 65434, - 65435, - 65436, - 65437, - 65438, - 65439, - 65440, - 65441, - 65442, - 65443, - 65444, - 65445, - 65446, - 65447, - 65448, - 65449, - 65450, - 65451, - 65452, - 65453, - 65454, - 65455, - 65456, - 65457, - 65458, - 65459, - 65460, - 65461, - 65462, - 65463, - 65464, - 65465, - 65466, - 65467, - 65468, - 65469, - 65470, - 65474, - 65475, - 65476, - 65477, - 65478, - 65479, - 65482, - 65483, - 65484, - 65485, - 65486, - 65487, - 65490, - 65491, - 65492, - 65493, - 65494, - 65495, - 65498, - 65499, - 65500 -]; diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/.bin/shjs b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/.bin/shjs deleted file mode 120000 index a0449975..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/.bin/shjs +++ /dev/null @@ -1 +0,0 @@ -../shelljs/bin/shjs \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/README.md deleted file mode 100644 index 0fe30d4f..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/README.md +++ /dev/null @@ -1,196 +0,0 @@ -**cli is a toolkit for rapidly building command line apps - it includes:** - -- Full featured opts/args parser -- Plugin support for adding common options and switches -- Helper methods for working with input/output and spawning child processes -- Output colored/styled messages, [progress bars](https://github.com/chriso/cli/blob/master/examples/progress.js) or [spinners](https://github.com/chriso/cli/blob/master/examples/spinner.js) -- Command [auto-completion](https://github.com/chriso/cli/blob/master/examples/command.js) and [glob support](https://github.com/chriso/cli/blob/master/examples/glob.js) - -Install using `npm install cli` or just bundle [cli.js](https://github.com/chriso/cli/raw/master/cli-min.js) with your app. - -## Example apps - -### sort.js - -```javascript -#!/usr/bin/env node -require('cli').withStdinLines(function(lines, newline) { - this.output(lines.sort().join(newline)); -}); -``` - -Try it out - -```bash -$ ./sort.js < input.txt -``` - -Let's add support for an `-n` switch to use a numeric sort, and a `-r` switch to reverse output - only 5 extra lines of code (!) - -```javascript -var cli = require('cli'), options = cli.parse(); - -cli.withStdinLines(function(lines, newline) { - lines.sort(!options.n ? null : function(a, b) { - return parseInt(a) > parseInt(b); - }); - if (options.r) lines.reverse(); - this.output(lines.join(newline)); -}); -``` - -### static.js - -Let's create a static file server with daemon support to see the opts parser + plugins in use - note: this requires `npm install creationix daemon` - -```javascript -var cli = require('cli').enable('daemon', 'status'); //Enable 2 plugins - -cli.parse({ - log: ['l', 'Enable logging'], - port: ['p', 'Listen on this port', 'number', 8080], - serve: [false, 'Serve static files from PATH', 'path', './public'] -}); - -cli.main(function(args, options) { - var server, middleware = []; - - if (options.log) { - this.debug('Enabling logging'); - middleware.push(require('creationix/log')()); - } - - this.debug('Serving files from ' + options.serve); - middleware.push(require('creationix/static')('/', options.serve, 'index.html')); - - server = this.createServer(middleware).listen(options.port); - - this.ok('Listening on port ' + options.port); -}); -``` - -To output usage information - -```bash -$ ./static.js --help -``` - -To create a daemon that serves files from */tmp*, run - -```bash -$ ./static.js -ld --serve=/tmp -``` - -For more examples, see [./examples](https://github.com/chriso/cli/tree/master/examples) - -## Helper methods - -cli has methods that collect stdin (newline is autodetected as \n or \r\n) - -```javascript -cli.withStdin(callback); //callback receives stdin as a string -cli.withStdinLines(callback); //callback receives stdin split into an array of lines (lines, newline) -``` - -cli also has a lower level method for working with input line by line (see [./examples/cat.js](https://github.com/chriso/cli/blob/master/examples/cat.js) for an example). - -```javascript -cli.withInput(file, function (line, newline, eof) { - if (!eof) { - this.output(line + newline); - } -}); -``` - -*Note: `file` can be omitted if you want to work with stdin* - -To output a progress bar, call - -```javascript -cli.progress(progress); //Where 0 <= progress <= 1 -``` - -To spawn a child process, use - -```javascript -cli.exec(cmd, callback); //callback receives the output of the process (split into lines) -``` - -cli also comes bundled with kof's [node-natives](https://github.com/kof/node-natives) (access with cli.native) and creationix' [stack](https://github.com/creationix/stack) (access with cli.createServer) - -## Plugins - -Plugins are a way of adding common opts and can be enabled using - -```javascript -cli.enable(plugin1, [plugin2, ...]); //To disable, use the equivalent disable() method -``` - -**help** - *enabled by default* - -Adds `-h,--help` to output auto-generated usage information - -**version** - -Adds `-v,--version` to output version information for the app. cli will attempt to locate and parse a nearby *package.json* - -To set your own app name and version, use `cli.setApp(app_name, version)` - -**status** - -Adds options to show/hide the stylized status messages that are output to the console when using one of these methods - -```javascript -cli.debug(msg); //Only shown when using --debug -cli.error(msg); -cli.fatal(msg); //Exits the process after outputting msg -cli.info(msg); -cli.ok(msg); -``` - -`-k,--no-color` will omit ANSI color escapes from the output - -**glob** - *requires* `npm install glob` - -Enables glob matching of arguments - -**daemon** - *requires* `npm install daemon` - -Adds `-d,--daemon ARG` for daemonizing the process and controlling the resulting daemon - -`ARG` can be either start (default), stop, restart, pid (outputs the daemon's pid if it's running), or log (output the daemon's stdout+stderr) - -**timeout** - -Adds `-t,--timeout N` to exit the process after N seconds with an error - -**catchall** - -Adds `-c,--catch` to catch and output uncaughtExceptions and resume execution - -*Note: Plugins are automatically disabled if an option or switch of the same name is already defined* - -## LICENSE - -(MIT license) - -Copyright (c) 2010 Chris O'Hara <cohara87@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/cli.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/cli.js deleted file mode 100644 index f94e973f..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/cli.js +++ /dev/null @@ -1,1133 +0,0 @@ -/** - * Copyright (c) 2010 Chris O'Hara <cohara87@gmail.com> - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - //Note: cli includes kof/node-natives and creationix/stack. I couldn't find - //license information for either - contact me if you want your license added - -var cli = exports, - argv, curr_opt, curr_val, full_opt, is_long, - short_tags = [], opt_list, parsed = {}, - usage, argv_parsed, command_list, commands, - daemon, daemon_arg, no_color, show_debug; - -cli.app = null; -cli.version = null; -cli.argv = []; -cli.argc = 0; - -cli.options = {}; -cli.args = []; -cli.command; - -cli.width = 70; -cli.option_width = 25; - -/** - * Bind kof's node-natives (https://github.com/kof/node-natives) to `cli.native` - * - * Rather than requiring node natives (e.g. var fs = require('fs')), all - * native modules can be accessed like `cli.native.fs` - */ -cli.native = {}; -var define_native = function (module) { - Object.defineProperty(cli.native, module, { - enumerable: true, - configurable: true, - get: function() { - delete cli.native[module]; - return cli.native[module] = require(module); - } - }); -}; -var natives = process.binding('natives'); -for (var module in natives) { - define_native(module); -} - -cli.output = cli.native.util.print; -cli.exit = process.exit; - -/** - * Define plugins. Plugins can be enabled and disabled by calling: - * - * `cli.enable(plugin1, [plugin2, ...])` - * `cli.disable(plugin1, [plugin2, ...])` - * - * Methods are chainable - `cli.enable(plugin).disable(plugin2)`. - * - * The 'help' plugin is enabled by default. - */ -var enable = { - help: true, //Adds -h, --help - version: false, //Adds -v,--version => gets version by parsing a nearby package.json - daemon: false, //Adds -d,--daemon [ARG] => (see cli.daemon() below) - status: false, //Adds -k,--no-color & --debug => display plain status messages /display debug messages - timeout: false, //Adds -t,--timeout N => timeout the process after N seconds - catchall: false, //Adds -c,--catch => catch and output uncaughtExceptions - glob: false //Adds glob matching => use cli.glob(arg) -} -cli.enable = function (/*plugins*/) { - Array.prototype.slice.call(arguments).forEach(function (plugin) { - switch (plugin) { - case 'daemon': - try { - daemon = require('daemon'); - if (typeof daemon.daemonize !== 'function') { - throw 'Invalid module'; - } - } catch (e) { - cli.fatal('daemon.node not installed. Please run `npm install daemon`'); - } - break; - case 'catchall': - process.on('uncaughtException', function (err) { - cli.error('Uncaught exception: ' + (err.msg || err)); - }); - break; - case 'help': case 'version': case 'status': - case 'autocomplete': case 'timeout': - //Just add switches. - break; - case 'glob': - cli.glob = require('glob'); - break; - default: - cli.fatal('Unknown plugin "' + plugin + '"'); - break; - } - enable[plugin] = true; - }); - return cli; -} -cli.disable = function (/*plugins*/) { - Array.prototype.slice.call(arguments).forEach(function (plugin) { - if (enable[plugin]) { - enable[plugin] = false; - } - }); - return cli; -} - -/** - * Sets argv (default is process.argv). - * - * @param {Array|String} argv - * @param {Boolean} keep_arg0 (optional - default is false) - * @api public - */ -cli.setArgv = function (arr, keep_arg0) { - if (typeof arr == 'string') { - arr = arr.split(' '); - } else { - arr = arr.slice(); - } - cli.app = arr.shift(); - //Strip off argv[0] if it's a node binary - if (!keep_arg0 && ('node' === cli.native.path.basename(cli.app) - || process.execPath === cli.app)) { - cli.app = arr.shift(); - } - cli.app = cli.native.path.basename(cli.app); - argv_parsed = false; - cli.args = cli.argv = argv = arr; - cli.argc = argv.length; - cli.options = {}; - cli.command = null; -}; -cli.setArgv(process.argv); - -/** - * Returns the next opt, or false if no opts are found. - * - * @return {String} opt - * @api public - */ -cli.next = function () { - if (!argv_parsed) { - cli.args = []; - argv_parsed = true; - } - - curr_val = null; - - //If we're currently in a group of short opts (e.g. -abc), return the next opt - if (short_tags.length) { - curr_opt = short_tags.shift(); - full_opt = '-' + curr_opt; - return curr_opt; - } - - if (!argv.length) { - return false; - } - - curr_opt = argv.shift(); - - //If an escape sequence is found (- or --), subsequent opts are ignored - if (curr_opt === '-' || curr_opt === '--') { - while (argv.length) { - cli.args.push(argv.shift()); - } - return false; - } - - //If the next element in argv isn't an opt, add it to the list of args - if (curr_opt[0] !== '-') { - cli.args.push(curr_opt); - return cli.next(); - } else { - //Check if the opt is short/long - is_long = curr_opt[1] === '-'; - curr_opt = curr_opt.substr(is_long ? 2 : 1); - } - - //Accept grouped short opts, e.g. -abc => -a -b -c - if (!is_long && curr_opt.length > 1) { - short_tags = curr_opt.split(''); - return cli.next(); - } - - var eq, len; - - //Check if the long opt is in the form --option=VALUE - if (is_long && (eq = curr_opt.indexOf('=')) >= 0) { - curr_val = curr_opt.substr(eq + 1); - curr_opt = curr_opt.substr(0, eq); - len = curr_val.length; - //Allow values to be quoted - if ((curr_val[0] === '"' && curr_val[len - 1] === '"') || - (curr_val[0] === "'" && curr_val[len - 1] === "'")) - { - curr_val = curr_val.substr(1, len-2); - } - if (curr_val.match(/^[0-9]+$/)) { - curr_val = parseInt(curr_val, 10); - } - } - - //Save the opt representation for later - full_opt = (is_long ? '--' : '-') + curr_opt; - - return curr_opt; -}; - -/** - * Parses command line opts. - * - * `opts` must be an object with opts defined like: - * long_tag: [short_tag, description, value_type, default_value]; - * - * `commands` is an optional array or object for apps that are of the form - * my_app [OPTIONS] <command> [ARGS] - * The command list is output with usage information + there is bundled - * support for auto-completion, etc. - * - * See README.md for more information. - * - * @param {Object} opts - * @param {Object} commands (optional) - * @return {Object} opts (parsed) - * @api public - */ -cli.parse = function (opts, command_def) { - var default_val, i, parsed = cli.options, seen, - catch_all = !opts; - opt_list = opts || {}; - commands = command_def; - command_list = commands || []; - if (commands && !Array.isArray(commands)) { - command_list = Object.keys(commands); - } - while (o = cli.next()) { - seen = false; - for (opt in opt_list) { - if (!(opt_list[opt] instanceof Array)) { - continue; - } - if (!opt_list[opt][0]) { - opt_list[opt][0] = opt; - } - if (o === opt || o === opt_list[opt][0]) { - seen = true; - if (opt_list[opt].length === 2) { - parsed[opt] = true; - break; - } - default_val = null; - if (opt_list[opt].length === 4) { - default_val = opt_list[opt][3]; - } - if (opt_list[opt][2] instanceof Array) { - for (i = 0, l = opt_list[opt][2].length; i < l; i++) { - if (typeof opt_list[opt][2][i] === 'number') { - opt_list[opt][2][i] += ''; - } - } - parsed[opt] = cli.getArrayValue(opt_list[opt][2], is_long ? null : default_val); - break; - } - if (opt_list[opt][2].toLowerCase) { - opt_list[opt][2] = opt_list[opt][2].toLowerCase(); - } - switch (opt_list[opt][2]) { - case 'string': case 1: case true: - parsed[opt] = cli.getValue(default_val); - break; - case 'int': case 'number': case 'num': - case 'time': case 'seconds': case 'secs': case 'minutes': case 'mins': - case 'x': case 'n': - parsed[opt] = cli.getInt(default_val); - break; - case 'float': case 'decimal': - parsed[opt] = cli.getFloat(default_val); - break; - case 'path': case 'file': case 'directory': case 'dir': - parsed[opt] = cli.getPath(default_val, opt_list[opt][2]); - break; - case 'email': - parsed[opt] = cli.getEmail(default_val); - break; - case 'url': case 'uri': case 'domain': case 'host': - parsed[opt] = cli.getUrl(default_val, opt_list[opt][2]); - break; - case 'ip': - parsed[opt] = cli.getIp(default_val); - break; - case 'bool': case 'boolean': case 'on': - parsed[opt] = true; - break; - case 'false': case 'off': case false: case 0: - parsed[opt] = false; - break; - default: - cli.fatal('Unknown opt type "' + opt_list[opt][2] + '"'); - } - break; - } - } - if (process.env.NODE_DISABLE_COLORS) { - no_color = true; - } - if (!seen) { - if (enable.help && (o === 'h' || o === 'help')) { - cli.getUsage(); - process.exit(); - } else if (enable.version && (o === 'v' || o === 'version')) { - if (cli.version == null) { - cli.parsePackageJson(); - } - console.error(cli.app + ' v' + cli.version); - process.exit(); - } else if (enable.daemon && (o === 'd' || o === 'daemon')) { - daemon_arg = cli.getArrayValue(['start','stop','restart','pid','log'], is_long ? null : 'start'); - continue; - } else if (enable.catchall && (o === 'c' || o === 'catch')) { - continue; - } else if (enable.status && (o === 'k' || o === 'no-color' || o === 'debug')) { - no_color = (o === 'k' || o === 'no-color'); - show_debug = o === 'debug'; - continue; - } else if (enable.timeout && (o === 't' || o === 'timeout')) { - var secs = cli.getInt(); - setTimeout(function () { - cli.fatal('Process timed out after ' + secs + 's'); - }, secs * 1000); - continue; - } else if (catch_all) { - parsed[o] = curr_val || true; - continue; - } - cli.fatal('Unknown option ' + full_opt); - } - } - //Fill the remaining options with their default value or null - for (opt in opt_list) { - default_val = opt_list[opt].length === 4 ? opt_list[opt][3] : null; - if (!(opt_list[opt] instanceof Array)) { - parsed[opt] = opt_list[opt]; - continue; - } else if (typeof parsed[opt] === 'undefined') { - parsed[opt] = default_val; - } - } - if (command_list.length) { - if (cli.args.length === 0) { - if (enable.help) { - cli.getUsage(); - } else { - cli.fatal('A command is required (' + command_list.join(', ') + ').'); - } - process.exit(1); - } else { - cli.command = cli.autocompleteCommand(cli.args.shift()); - } - } - cli.argc = cli.args.length; - return parsed; -}; - -/** - * Helper method for matching a command from the command list. - * - * @param {String} command - * @return {String} full_command - * @api public - */ -cli.autocompleteCommand = function (command) { - var list; - if (!(command_list instanceof Array)) { - list = Object.keys(command_list); - } else { - list = command_list; - } - var i, j = 0, c = command.length, tmp_list; - if (list.length === 0 || list.indexOf(command) !== -1) { - return command; - } - for (i = 0; i < c; i++) { - tmp_list = []; - l = list.length; - if (l <= 1) break; - for (j = 0; j < l; j++) - if (list[j].length >= i && list[j][i] === command[i]) - tmp_list.push(list[j]); - list = tmp_list; - } - l = list.length; - if (l === 1) { - return list[0]; - } else if (l === 0) { - cli.fatal('Unknown command "' + command + '"' + (enable.help ? '. Please see --help for more information' : '')); - } else { - list.sort(); - cli.fatal('The command "' + command + '" is ambiguous and could mean "' + list.join('", "') + '"'); - } -}; - -/** - * Adds methods to output styled status messages to stderr. - * - * Added methods are cli.info(msg), cli.error(msg), cli.ok(msg), and - * cli.debug(msg). - * - * To control status messages, use the 'status' plugin - * 1) debug() messages are hidden by default. Display them with - * the --debug opt. - * 2) to hide all status messages, use the -s or --silent opt. - * - * @api private - */ -cli.status = function (msg, type) { - var pre; - switch (type) { - case 'info': - pre = no_color ? 'INFO:' : '\x1B[33mINFO\x1B[0m:'; - break; - case 'debug': - pre = no_color ? 'DEBUG:' : '\x1B[36mDEBUG\x1B[0m:'; - break; - case 'error': - case 'fatal': - pre = no_color ? 'ERROR:' : '\x1B[31mERROR\x1B[0m:'; - break; - case 'ok': - pre = no_color ? 'OK:' : '\x1B[32mOK\x1B[0m:'; - break; - } - msg = pre + ' ' + msg; - if (type === 'fatal') { - console.error(msg); - process.exit(1); - } - if (enable.status && !show_debug && type === 'debug') { - return; - } - console.error(msg); -}; -['info','error','ok','debug','fatal'].forEach(function (type) { - cli[type] = function (msg) { - cli.status(msg, type); - }; -}); - -/** - * Sets the app name and version. - * - * Usage: - * setApp('myapp', '0.1.0'); - * setApp('./package.json'); //Pull name/version from package.json - * - * @param {String} name - * @return cli (for chaining) - * @api public - */ -cli.setApp = function (name, version) { - if (name.indexOf('package.json') !== -1) { - cli.parsePackageJson(name); - } else { - cli.app = name; - cli.version = version; - } - return cli; -}; - -/** - * Parses the version number from package.json. If no path is specified, cli - * will attempt to locate a package.json in ./, ../ or ../../ - * - * @param {String} path (optional) - * @api public - */ -cli.parsePackageJson = function (path) { - var parse_packagejson = function (path) { - var packagejson = JSON.parse(cli.native.fs.readFileSync(path, 'utf8')); - cli.version = packagejson.version; - cli.app = packagejson.name; - }; - var try_all = function (arr, func, err) { - for (var i = 0, l = arr.length; i < l; i++) { - try { - func(arr[i]); - return; - } catch (e) { - if (i === l-1) { - cli.fatal(err); - } - } - } - }; - try { - if (path) { - return parse_packagejson(path); - } - try_all([ - __dirname + '/package.json', - __dirname + '/../package.json', - __dirname + '/../../package.json' - ], parse_packagejson); - } catch (e) { - cli.fatal('Could not detect ' + cli.app + ' version'); - } -}; - -/** - * Sets the usage string - default is `app [OPTIONS] [ARGS]`. - * - * @param {String} u - * @return cli (for chaining) - * @api public - */ -cli.setUsage = function (u) { - usage = u; - return cli; -}; - -var pad = function (str, len) { - if (typeof len === 'undefined') { - len = str; - str = ''; - } - if (str.length < len) { - len -= str.length; - while (len--) str += ' '; - } - return str; -}; - -/** - * Automatically build usage information from the opts list. If the help - * plugin is enabled (default), this info is displayed with -h, --help. - * - * @api public - */ -cli.getUsage = function () { - var short, desc, optional, line, seen_opts = [], - switch_pad = cli.option_width; - - var trunc_desc = function (pref, desc, len) { - var pref_len = pref.length, - desc_len = cli.width - pref_len, - truncated = ''; - if (desc.length <= desc_len) { - return desc; - } - var desc_words = (desc+'').split(' '), chars = 0, word; - while (desc_words.length) { - truncated += (word = desc_words.shift()) + ' '; - chars += word.length; - if (desc_words.length && chars + desc_words[0].length > desc_len) { - truncated += '\n' + pad(pref_len); - chars = 0; - } - } - return truncated; - }; - - usage = usage || cli.app + ' [OPTIONS]' + (command_list.length ? ' <command>' : '') + ' [ARGS]'; - if (no_color) { - console.error('Usage:\n ' + usage); - console.error('Options: '); - } else { - console.error('\x1b[1mUsage\x1b[0m:\n ' + usage); - console.error('\n\x1b[1mOptions\x1b[0m: '); - } - for (opt in opt_list) { - - if (opt.length === 1) { - long = opt_list[opt][0]; - short = opt; - } else { - long = opt; - short = opt_list[opt][0]; - } - - //Parse opt_list - desc = opt_list[opt][1].trim(); - type = opt_list[opt].length >= 3 ? opt_list[opt][2] : null; - optional = opt_list[opt].length === 4 ? opt_list[opt][3] : null; - - //Build usage line - if (short === long) { - if (short.length === 1) { - line = ' -' + short; - } else { - line = ' --' + long; - } - } else { - line = ' -' + short + ', --' + long; - } - line += ' '; - - if (type) { - if (type instanceof Array) { - desc += '. VALUE must be either [' + type.join('|') + ']'; - type = 'VALUE'; - } - if (type === true || type === 1) { - type = long.toUpperCase(); - } - type = type.toUpperCase(); - if (type === 'FLOAT' || type === 'INT') { - type = 'NUMBER'; - } - line += optional ? '[' + type + ']' : type; - } - line = pad(line, switch_pad); - line += trunc_desc(line, desc); - line += optional ? ' (Default is ' + optional + ')' : ''; - console.error(line.replace('%s', '%\0s')); - - seen_opts.push(short); - seen_opts.push(long); - } - if (enable.timeout && seen_opts.indexOf('t') === -1 && seen_opts.indexOf('timeout') === -1) { - console.error(pad(' -t, --timeout N', switch_pad) + 'Exit if the process takes longer than N seconds'); - } - if (enable.status) { - if (seen_opts.indexOf('k') === -1 && seen_opts.indexOf('no-color') === -1) { - console.error(pad(' -k, --no-color', switch_pad) + 'Omit color from output'); - } - if (seen_opts.indexOf('debug') === -1) { - console.error(pad(' --debug', switch_pad) + 'Show debug information'); - } - } - if (enable.catchall && seen_opts.indexOf('c') === -1 && seen_opts.indexOf('catch') === -1) { - console.error(pad(' -c, --catch', switch_pad) + 'Catch unanticipated errors'); - } - if (enable.daemon && seen_opts.indexOf('d') === -1 && seen_opts.indexOf('daemon') === -1) { - console.error(pad(' -d, --daemon [ARG]', switch_pad) + 'Daemonize the process. Control the daemon using [start, stop, restart, log, pid]'); - } - if (enable.version && seen_opts.indexOf('v') === -1 && seen_opts.indexOf('version') === -1) { - console.error(pad(' -v, --version', switch_pad) + 'Display the current version'); - } - if (enable.help && seen_opts.indexOf('h') === -1 && seen_opts.indexOf('help') === -1) { - console.error(pad(' -h, --help', switch_pad) + 'Display help and usage details'); - } - if (command_list.length) { - console.error('\n\x1b[1mCommands\x1b[0m: '); - if (!Array.isArray(commands)) { - for (var c in commands) { - line = ' ' + pad(c, switch_pad - 2); - line += trunc_desc(line, commands[c]); - console.error(line); - } - } else { - command_list.sort(); - console.error(' ' + trunc_desc(' ', command_list.join(', '))); - } - } - process.exit(); -}; - -/** - * Generates an error message when an opt is incorrectly used. - * - * @param {String} expects (e.g. 'a value') - * @param {String} type (e.g. 'VALUE') - * @api public - */ -cli.getOptError = function (expects, type) { - var err = full_opt + ' expects ' + expects - + '. Use `' + cli.app + ' ' + full_opt + (is_long ? '=' : ' ') + type + '`'; - return err; -}; - -/** - * Gets the next opt value and validates it with an optional validation - * function. If validation fails or no value can be obtained, this method - * will return the default value (if specified) or exit with err_msg. - * - * @param {String} default_val - * @param {Function} validate_func - * @param {String} err_msg - * @api public - */ -cli.getValue = function (default_val, validate_func, err_msg) { - err_msg = err_msg || cli.getOptError('a value', 'VALUE'); - - var value; - - try { - if (curr_val) { - if (validate_func) { - curr_val = validate_func(curr_val); - } - return curr_val; - } - - //Grouped short opts aren't allowed to have values - if (short_tags.length) { - throw 'Short tags'; - } - - //If there's no args left or the next arg is an opt, return the - //default value (if specified) - otherwise fail - if (!argv.length || (argv[0].length === 1 && argv[0][0] === '-')) { - throw 'No value'; - } - - value = argv.shift(); - - if (value.match(/^[0-9]+$/)) { - value = parseInt(value, 10); - } - - //Run the value through a validation/transformation function if specified - if (validate_func) { - value = validate_func(value); - } - } catch (e) { - - //The value didn't pass the validation/transformation. Unshift the value and - //return the default value (if specified) - if (value) { - argv.unshift(value); - } - return default_val != null ? default_val : cli.fatal(err_msg); - } - return value; -}; - -cli.getInt = function (default_val) { - return cli.getValue(default_val, function (value) { - if (typeof value === 'number') return value; - if (!value.match(/^(?:-?(?:0|[1-9][0-9]*))$/)) { - throw 'Invalid int'; - } - return parseInt(value); - }, cli.getOptError('a number', 'NUMBER')); -} - -cli.getFloat = function (default_val) { - return cli.getValue(default_val, function (value) { - if (!value.match(/^(?:-?(?:0|[1-9][0-9]*))?(?:\.[0-9]*)?$/)) { - throw 'Invalid float'; - } - return parseFloat(value, 10); - }, cli.getOptError('a number', 'NUMBER')); -} - -cli.getUrl = function (default_val, identifier) { - identifier = identifier || 'url'; - return cli.getValue(default_val, function (value) { - if (!value.match(/^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:\w+:\w+@)?((?:(?:[-\w\d{1-3}]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|edu|co\.uk|ac\.uk|it|fr|tv|museum|asia|local|travel|[a-z]{2})?)|((\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)(\.(\b25[0-5]\b|\b[2][0-4][0-9]\b|\b[0-1]?[0-9]?[0-9]\b)){3}))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$ |\/.,*:;=]|%[a-f\d]{2})*)?$/i)) { - throw 'Invalid URL'; - } - return value; - }, cli.getOptError('a ' + identifier, identifier.toUpperCase())); -} - -cli.getEmail = function (default_val) { - return cli.getValue(default_val, function (value) { - if (!value.match(/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/)) { - throw 'Invalid email'; - } - return value; - }, cli.getOptError('an email', 'EMAIL')); -} - -cli.getIp = function (default_val) { - return cli.getValue(default_val, function (value) { - if (!value.match(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/)) { - throw 'Invalid IP'; - } - return value; - }, cli.getOptError('an IP', 'IP')); -} - -cli.getPath = function (default_val, identifier) { - identifier = identifier || 'path'; - return cli.getValue(default_val, function (value) { - if (value.match(/[?*:;{}]/)) { - throw 'Invalid path'; - } - return value; - }, cli.getOptError('a ' + identifier, identifier.toUpperCase())); -} - -cli.getArrayValue = function (arr, default_val) { - return cli.getValue(default_val, function (value) { - if (arr.indexOf(value) === -1) { - throw 'Unexpected value'; - } - return value; - }, cli.getOptError('either [' + arr.join('|') + ']', 'VALUE')); -} - -/** - * Gets all data from STDIN (with optional encoding) and sends it to callback. - * - * @param {String} encoding (optional - default is 'utf8') - * @param {Function} callback - * @api public - */ -cli.withStdin = function (encoding, callback) { - if (typeof encoding === 'function') { - callback = encoding; - encoding = 'utf8'; - } - var stream = process.openStdin(), data = ''; - stream.setEncoding(encoding); - stream.on('data', function (chunk) { - data += chunk; - }); - stream.on('end', function () { - callback.apply(cli, [data]); - }); -}; - -/** - * Gets all data from STDIN, splits the data into lines and sends it - * to callback (callback isn't called until all of STDIN is read. To - * process each line as it's received, see the method below - * - * @param {Function} callback - * @api public - */ -cli.withStdinLines = function (callback) { - cli.withStdin(function (data) { - var sep = data.indexOf('\r\n') !== -1 ? '\r\n' : '\n'; - callback.apply(cli, [data.split(sep), sep]); - }); -}; - -/** - * Asynchronously reads a file line by line. When a line is received, - * callback is called with (line, sep) - when EOF is reached, callback - * receives (null, null, true) - * - * @param {String} file (optional - default is 'stdin') - * @param {String} encoding (optional - default is 'utf8') - * @param {Function} callback (line, sep, eof) - * @api public - */ -cli.withInput = function (file, encoding, callback) { - if (typeof encoding === 'function') { - callback = encoding; - encoding = 'utf8'; - } else if (typeof file === 'function') { - callback = file; - encoding = 'utf8'; - file = 'stdin'; - } - if (file === 'stdin') { - file = process.openStdin(); - } else { - try { - file = cli.native.fs.createReadStream(file); - file.on('error', cli.fatal); - } catch (e) { - return cli.fatal(e); - } - } - file.setEncoding(encoding); - var lines = [], data = '', eof, sep; - file.on('data', function (chunk) { - if (eof) return; - data += chunk; - if (!sep) { - if (data.indexOf('\r\n') !== -1) { - sep = '\r\n'; - } else if (data.indexOf('\n') !== -1) { - sep = '\n'; - } else { - last_line = data; - return; - } - } - lines = data.split(sep); - data = eof ? null : lines.pop(); - while (lines.length) { - callback.apply(cli, [lines.shift(), sep, false]); - } - }); - file.on('end', function () { - eof = true; - if (data.length) { - callback.apply(cli, [data, sep || '', false]); - } - callback.apply(cli, [null, null, true]); - }); -}; - -/** - * A method for creating and controlling a daemon. - * - * `arg` can be: - * start = daemonizes the process - * stop = stops the daemon if it is running - * restart = alias for stop -> start - * pid = outputs the daemon's PID if it is running - * log = outputs the daemon's log file (stdout + stderr) - * - * @param {String} arg (Optional - default is 'start') - * @param {Function} callback - * @api public - */ -cli.daemon = function (arg, callback) { - if (typeof daemon === 'undefined') { - cli.fatal('Daemon is not initialized'); - } - - if (typeof arg === 'function') { - callback = arg; - arg = 'start'; - } - - var lock_file = '/tmp/' + cli.app + '.pid', - log_file = '/tmp/' + cli.app + '.log'; - - var start = function () { - daemon.daemonize(log_file, lock_file, function (err) { - if (err) return cli.error('Error starting daemon: ' + err); - callback(); - }); - }; - - var stop = function () { - try { - cli.native.fs.readFileSync(lock_file); - } catch (e) { - return cli.error('Daemon is not running'); - }; - daemon.kill(lock_file, function (err, pid) { - if (err && err.errno === 3) { - return cli.error('Daemon is not running'); - } else if (err) { - return cli.error('Error stopping daemon: ' + err.errno); - } - cli.ok('Successfully stopped daemon with pid: ' + pid); - }); - }; - - switch(arg) { - case 'stop': - stop(); - break; - case 'restart': - daemon.stop(lock_file, function () { - start(); - }); - break; - case 'log': - try { - cli.native.fs.createReadStream(log_file, {encoding: 'utf8'}).pipe(process.stdout); - } catch (e) { - return cli.error('No daemon log file'); - }; - break; - case 'pid': - try { - var pid = cli.native.fs.readFileSync(lock_file, 'utf8'); - cli.native.fs.statSync('/proc/' + pid); - cli.info(pid); - } catch (e) { - return cli.error('Daemon is not running'); - }; - break; - default: - start(); - break; - } -} - -/** - * The main entry method. Calling cli.main() is only necessary in - * scripts that have daemon support enabled. `callback` receives (args, options) - * - * @param {Function} callback - * @api public - */ -cli.main = function (callback) { - var after = function () { - callback.apply(cli, [cli.args, cli.options]); - }; - if (enable.daemon && daemon_arg) { - cli.daemon(daemon_arg, after); - } else { - after(); - } -} - -/** - * Bind creationix's stack (https://github.com/creationix/stack). - * - * Create a simple middleware stack by calling: - * - * cli.createServer(middleware).listen(port); - * - * @return {Server} server - * @api public - */ -cli.createServer = function(/*layers*/) { - var defaultStackErrorHandler = function (req, res, err) { - if (err) { - console.error(err.stack); - res.writeHead(500, {"Content-Type": "text/plain"}); - return res.end(err.stack + "\n"); - } - res.writeHead(404, {"Content-Type": "text/plain"}); - res.end("Not Found\n"); - }; - var handle = error = defaultStackErrorHandler, - layers = Array.prototype.slice.call(arguments); - - //Allow createServer(a,b,c) and createServer([a,b,c]) - if (layers.length && layers[0] instanceof Array) { - layers = layers[0]; - } - layers.reverse().forEach(function (layer) { - var child = handle; - handle = function (req, res) { - try { - layer(req, res, function (err) { - if (err) return error(req, res, err); - child(req, res); - }); - } catch (err) { - error(req, res, err); - } - }; - }); - return cli.native.http.createServer(handle); -}; - -/** - * A wrapper for child_process.exec(). - * - * If the child_process exits successfully, `callback` receives an array of - * stdout lines. The current process exits if the child process has an error - * and `errback` isn't defined. - * - * @param {String} cmd - * @param {Function} callback (optional) - * @param {Function} errback (optional) - * @api public - */ -cli.exec = function (cmd, callback, errback) { - cli.native.child_process.exec(cmd, function (err, stdout, stderr) { - err = err || stderr; - if (err) { - if (errback) { - return errback(err, stdout); - } - return cli.fatal('exec() failed\n' + err); - } - if (callback) { - callback(stdout.split('\n')); - } - }); -}; - -/** - * Helper method for outputting a progress bar to the console. - * - * @param {Number} progress (0 <= progress <= 1) - * @api public - */ -var last_progress_call, progress_len = 74; -cli.progress = function (progress, decimals) { - if (progress < 0 || progress > 1 || isNaN(progress)) return; - if (!decimals) decimals = 0; - var now = (new Date()).getTime(); - if (last_progress_call && (now - last_progress_call) < 100 && progress !== 1) { - return; //Throttle progress calls - } - last_progress_call = now; - - - var barLength = Math.floor(progress_len * progress), - str = ''; - if (barLength == 0 && progress > 0) { - barLength = 1; - } - for (var i = 1; i <= progress_len; i++) { - str += i <= barLength ? '#' : ' '; - } - var pwr = Math.pow(10, decimals); - var percentage = Math.floor(progress * 100 * pwr) / pwr + '%'; - for (i = 0; i < decimals; i++) { - percentage += ' '; - } - cli.native.util.print('[' + str + '] ' + percentage + (progress === 1 ? '\n' : '\u000D')); -}; - -/** - * Helper method for outputting a spinner to the console. - * - * @param {String|Boolean} prefix (optional) - * @api public - */ -var spinnerInterval; -cli.spinner = function (prefix, end) { - if (end) { - cli.native.util.print('\u000D' + prefix); - return clearInterval(spinnerInterval); - } - prefix = prefix + ' ' || ''; - var spinner = ['-','\\','|','/'], i = 0, l = spinner.length; - spinnerInterval = setInterval(function () { - cli.native.util.print('\u000D' + prefix + spinner[i++]); - if (i == l) i = 0; - }, 200); -}; diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js deleted file mode 100755 index 14c4e79c..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/cat.js +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli'); - -var output_file = function (file) { - cli.withInput(file, function (line, sep, eof) { - if (!eof) { - cli.output(line + sep); - } else if (cli.args.length) { - output_file(cli.args.shift()); - } - }); -}; - -if (cli.args.length) { - output_file(cli.args.shift()); -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/command.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/command.js deleted file mode 100755 index 2f04491e..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/command.js +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli'); - -//The second (optional) argument of cli.parse() is a command list -//Type `./command.js --help` for usage info - -//cli enables auto-completion of commands (similiar to npm), e.g. all of -//the following are equivalent and result in "Command is: install": -// $ ./command.js install -// $ ./command.js inst -// $ ./command.js i - -cli.parse(null, ['install', 'test', 'edit', 'remove', 'uninstall', 'ls']); - -console.log('Command is: ' + cli.command); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/echo.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/echo.js deleted file mode 100755 index dac9ccaf..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/echo.js +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env node - -/* All of the following commands are equivalent and write `foo\tbar foo` to out.txt - $ ./echo.js -n -e --output=out.txt "foo\tbar" "foo" - $ ./echo.js --newline --escape --output "out.txt" "foo\tbar" "foo" - $ ./echo.js -ne --output=out.txt "foo\tbar" "foo" - $ ./echo.js -en --output="out.txt" "foo\tbar" "foo" -*/ - -var cli = require('cli'); - -cli.parse({ - newline: ['n', 'Do not output the trailing newline'], - escape: ['e', 'Enable interpretation of backslash escapes'], - separator: ['s', 'Separate arguments using this value', 'string', ' '], - output: [false, 'Write to FILE rather than the console', 'file'] -}); - -cli.main(function (args, options) { - var output = '', i, j, l, output_stream; - - if (this.argc) { - if (options.escape) { - var replace = {'\\n':'\n','\\r':'\r','\\t':'\t','\\e':'\e','\\v':'\v','\\f':'\f','\\c':'\c','\\b':'\b','\\a':'\a','\\\\':'\\'}; - var escape = function (str) { - string += ''; - for (j in replace) { - string = string.replace(i, replace[i]); - } - return string; - } - for (i = 0, l = this.argc; i < l; i++) { - args[i] = escape(args[i]); - } - options.separator = escape(options.separator); - } - output += args.join(options.separator); - } - - if (!options.newline) { - output += '\n'; - } - - try { - if (options.output) { - output_stream = this.native.fs.createWriteStream(options.output) - } else { - output_stream = process.stdout; - } - output_stream.write(output); - } catch (e) { - this.fatal('Could not write to output stream'); - } -}); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/glob.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/glob.js deleted file mode 100755 index 12585c01..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/glob.js +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli').enable('glob'); - -//Running `./glob.js *.js` will output a list of .js files in this directory -console.log(cli.args); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/long_desc.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/long_desc.js deleted file mode 100755 index 63632f4b..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/long_desc.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -var cli = require('../'); - -//You can (optionally) boost the width of output with: -//cli.width = 120; - -//You can also adjust the width of the options/command definitions -//cli.option_width = 25; - -var long_desc = 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s ' - + 'standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make' - + ' a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, ' - + 'remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing ' - + 'Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions' - + ' of Lorem Ipsum.'; - -cli.parse({ - foo: ['f', long_desc] -}); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/progress.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/progress.js deleted file mode 100755 index 300c6740..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/progress.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli'); - -var i = 0, interval = setInterval(function () { - cli.progress(++i / 100); - if (i === 100) { - clearInterval(interval); - cli.ok('Finished!'); - } -}, 50); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/sort.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/sort.js deleted file mode 100755 index 5d223133..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/sort.js +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli'); - -var options = cli.parse({ - numeric: ['n', 'Compare using a numeric sort'], - reverse: ['r', 'Reverse the results'] -}); - -cli.withStdinLines(function (lines, newline) { - lines.sort(!options.numeric ? null : function (a, b) { - return parseInt(a) > parseInt(b); - }); - if (options.reverse) { - lines.reverse(); - } - this.output(lines.join(newline)); -}); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/spinner.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/spinner.js deleted file mode 100755 index 61000013..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/spinner.js +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli'); - -cli.spinner('Working..'); - -setTimeout(function () { - cli.spinner('Working.. done!', true); //End the spinner -}, 3000); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.coffee b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.coffee deleted file mode 100755 index cbf3b16e..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.coffee +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env coffee - -cli = require 'cli' - -cli.enable('daemon','status') - .setUsage('static.coffee [OPTIONS]') - -cli.parse { - log: ['l', 'Enable logging'] - port: ['p', 'Listen on this port', 'number', 8080] - serve: [false, 'Serve static files from PATH', 'path', './public'] -} - -middleware = [] - -cli.main (args, options) -> - - if options.log - @debug 'Enabling logging' - middleware.push require('creationix/log')() - - @debug 'Serving files from ' + options.serve - middleware.push require('creationix/static')('/', options.serve, 'index.html') - - server = @createServer(middleware).listen options.port - - @ok 'Listening on port ' + options.port \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.js deleted file mode 100755 index eb6fd248..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/examples/static.js +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env node - -var cli = require('cli').enable('status', 'daemon'); - -cli.parse({ - log: ['l', 'Enable logging'], - port: ['p', 'Listen on this port', 'number', 8080], - serve: [false, 'Serve static files from PATH', 'path', './public'] -}); - -cli.main(function (args, options) { - var server, middleware = []; - - if (options.log) { - this.debug('Enabling logging'); - middleware.push(require('creationix/log')()); - } - - this.debug('Serving files from ' + options.serve); - middleware.push(require('creationix/static')('/', options.serve, 'index.html')); - - server = this.createServer(middleware).listen(options.port); - - this.ok('Listening on port ' + options.port); -}); \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/index.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/index.js deleted file mode 100644 index 3966bd73..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./cli'); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.npmignore b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.npmignore deleted file mode 100644 index 2af4b71c..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.*.swp -test/a/ diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.travis.yml b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.travis.yml deleted file mode 100644 index baa0031d..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/README.md deleted file mode 100644 index cc691645..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/README.md +++ /dev/null @@ -1,250 +0,0 @@ -# Glob - -Match files using the patterns the shell uses, like stars and stuff. - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -## Attention: node-glob users! - -The API has changed dramatically between 2.x and 3.x. This library is -now 100% JavaScript, and the integer flags have been replaced with an -options object. - -Also, there's an event emitter class, proper tests, and all the other -things you've come to expect from node modules. - -And best of all, no compilation! - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Features - -Please see the [minimatch -documentation](https://github.com/isaacs/minimatch) for more details. - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array<String>} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options]) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array<String>} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instanting the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array<String>} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `error` The error encountered. When an error is encountered, the - glob object is in an undefined state, and should be discarded. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. -* `statCache` Collection of all the stat results the glob search - performed. -* `cache` Convenience object. Each field has the following possible - values: - * `false` - Path does not exist - * `true` - Path exists - * `1` - Path exists, and is not a directory - * `2` - Path exists, and is a directory - * `[file, entries, ...]` - Path exists, is a directory, and the - array value is the results of `fs.readdir` - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `abort` Stop the search. - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the glob object, as well. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `dot` Include `.dot` files in normal matches and `globstar` matches. - Note that an explicit dot in a portion of the pattern will always - match dot files. -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. It will cause - ELOOP to be triggered one level sooner in the case of cyclical - symbolic links. -* `silent` When an unusual error is encountered - when attempting to read a directory, a warning will be printed to - stderr. Set the `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered - when attempting to read a directory, the process will just continue on - in search of other matches. Set the `strict` option to raise an error - in these cases. -* `cache` See `cache` property above. Pass in a previously generated - cache object to save some fs calls. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary to - set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `sync` Perform a synchronous glob search. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. - Set this flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `nocase` Perform a case-insensitive match. Note that case-insensitive - filesystems will sometimes result in glob returning results that are - case-insensitively matched anyway, since readdir and stat will not - raise an error. -* `debug` Set to enable debug logging in minimatch and glob. -* `globDebug` Set to enable debug logging in glob, but not minimatch. - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the cache or statCache objects are reused between glob -calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast majority -of operations, this is never a problem. diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js deleted file mode 100644 index be122df0..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "test/a/**/[cg]/../[cg]" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js deleted file mode 100644 index 327a425e..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "{./*/*,/*,/usr/local/*}" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/glob.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/glob.js deleted file mode 100644 index f646c448..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/glob.js +++ /dev/null @@ -1,728 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// readdir(PREFIX) as ENTRIES -// If fails, END -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $]) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $]) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - - - -module.exports = glob - -var fs = require("fs") -, minimatch = require("minimatch") -, Minimatch = minimatch.Minimatch -, inherits = require("inherits") -, EE = require("events").EventEmitter -, path = require("path") -, isDir = {} -, assert = require("assert").ok - -function glob (pattern, options, cb) { - if (typeof options === "function") cb = options, options = {} - if (!options) options = {} - - if (typeof options === "number") { - deprecated() - return - } - - var g = new Glob(pattern, options, cb) - return g.sync ? g.found : g -} - -glob.fnmatch = deprecated - -function deprecated () { - throw new Error("glob's interface has changed. Please see the docs.") -} - -glob.sync = globSync -function globSync (pattern, options) { - if (typeof options === "number") { - deprecated() - return - } - - options = options || {} - options.sync = true - return glob(pattern, options) -} - -this._processingEmitQueue = false - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (!(this instanceof Glob)) { - return new Glob(pattern, options, cb) - } - - if (typeof options === "function") { - cb = options - options = null - } - - if (typeof cb === "function") { - this.on("error", cb) - this.on("end", function (matches) { - cb(null, matches) - }) - } - - options = options || {} - - this._endEmitted = false - this.EOF = {} - this._emitQueue = [] - - this.paused = false - this._processingEmitQueue = false - - this.maxDepth = options.maxDepth || 1000 - this.maxLength = options.maxLength || Infinity - this.cache = options.cache || {} - this.statCache = options.statCache || {} - - this.changedCwd = false - var cwd = process.cwd() - if (!options.hasOwnProperty("cwd")) this.cwd = cwd - else { - this.cwd = options.cwd - this.changedCwd = path.resolve(options.cwd) !== cwd - } - - this.root = options.root || path.resolve(this.cwd, "/") - this.root = path.resolve(this.root) - if (process.platform === "win32") - this.root = this.root.replace(/\\/g, "/") - - this.nomount = !!options.nomount - - if (!pattern) { - throw new Error("must provide pattern") - } - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - this.strict = options.strict !== false - this.dot = !!options.dot - this.mark = !!options.mark - this.sync = !!options.sync - this.nounique = !!options.nounique - this.nonull = !!options.nonull - this.nosort = !!options.nosort - this.nocase = !!options.nocase - this.stat = !!options.stat - - this.debug = !!options.debug || !!options.globDebug - if (this.debug) - this.log = console.error - - this.silent = !!options.silent - - var mm = this.minimatch = new Minimatch(pattern, options) - this.options = mm.options - pattern = this.pattern = mm.pattern - - this.error = null - this.aborted = false - - // list of all the patterns that ** has resolved do, so - // we can avoid visiting multiple times. - this._globstars = {} - - EE.call(this) - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {<filename>: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - this.minimatch.set.forEach(iterator.bind(this)) - function iterator (pattern, i, set) { - this._process(pattern, 0, i, function (er) { - if (er) this.emit("error", er) - if (-- n <= 0) this._finish() - }) - } -} - -Glob.prototype.log = function () {} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - - var nou = this.nounique - , all = nou ? [] : {} - - for (var i = 0, l = this.matches.length; i < l; i ++) { - var matches = this.matches[i] - this.log("matches[%d] =", i, matches) - // do like the shell, and spit out the literal glob - if (!matches) { - if (this.nonull) { - var literal = this.minimatch.globSet[i] - if (nou) all.push(literal) - else all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) all.push.apply(all, m) - else m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) all = Object.keys(all) - - if (!this.nosort) { - all = all.sort(this.nocase ? alphasorti : alphasort) - } - - if (this.mark) { - // at *some* point we statted all of these - all = all.map(this._mark, this) - } - - this.log("emitting end", all) - - this.EOF = this.found = all - this.emitMatch(this.EOF) -} - -function alphasorti (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return alphasort(a, b) -} - -function alphasort (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -Glob.prototype._mark = function (p) { - var c = this.cache[p] - var m = p - if (c) { - var isDir = c === 2 || Array.isArray(c) - var slash = p.slice(-1) === '/' - - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) - - if (m !== p) { - this.statCache[m] = this.statCache[p] - this.cache[m] = this.cache[p] - } - } - - return m -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit("abort") -} - -Glob.prototype.pause = function () { - if (this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = true - this.emit("pause") -} - -Glob.prototype.resume = function () { - if (!this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = false - this.emit("resume") - this._processEmitQueue() - //process.nextTick(this.emit.bind(this, "resume")) -} - -Glob.prototype.emitMatch = function (m) { - this.log('emitMatch', m) - this._emitQueue.push(m) - this._processEmitQueue() -} - -Glob.prototype._processEmitQueue = function (m) { - this.log("pEQ paused=%j processing=%j m=%j", this.paused, - this._processingEmitQueue, m) - var done = false - while (!this._processingEmitQueue && - !this.paused) { - this._processingEmitQueue = true - var m = this._emitQueue.shift() - this.log(">processEmitQueue", m === this.EOF ? ":EOF:" : m) - if (!m) { - this.log(">processEmitQueue, falsey m") - this._processingEmitQueue = false - break - } - - if (m === this.EOF || !(this.mark && !this.stat)) { - this.log("peq: unmarked, or eof") - next.call(this, 0, false) - } else if (this.statCache[m]) { - var sc = this.statCache[m] - var exists - if (sc) - exists = sc.isDirectory() ? 2 : 1 - this.log("peq: stat cached") - next.call(this, exists, exists === 2) - } else { - this.log("peq: _stat, then next") - this._stat(m, next) - } - - function next(exists, isDir) { - this.log("next", m, exists, isDir) - var ev = m === this.EOF ? "end" : "match" - - // "end" can only happen once. - assert(!this._endEmitted) - if (ev === "end") - this._endEmitted = true - - if (exists) { - // Doesn't mean it necessarily doesn't exist, it's possible - // we just didn't check because we don't care that much, or - // this is EOF anyway. - if (isDir && !m.match(/\/$/)) { - m = m + "/" - } else if (!isDir && m.match(/\/$/)) { - m = m.replace(/\/+$/, "") - } - } - this.log("emit", ev, m) - this.emit(ev, m) - this._processingEmitQueue = false - if (done && m !== this.EOF && !this.paused) - this._processEmitQueue() - } - } - done = true -} - -Glob.prototype._process = function (pattern, depth, index, cb_) { - assert(this instanceof Glob) - - var cb = function cb (er, res) { - assert(this instanceof Glob) - if (this.paused) { - if (!this._processQueue) { - this._processQueue = [] - this.once("resume", function () { - var q = this._processQueue - this._processQueue = null - q.forEach(function (cb) { cb() }) - }) - } - this._processQueue.push(cb_.bind(this, er, res)) - } else { - cb_.call(this, er, res) - } - }.bind(this) - - if (this.aborted) return cb() - - if (depth > this.maxDepth) return cb() - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === "string") { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - prefix = pattern.join("/") - this._stat(prefix, function (exists, isDir) { - // either it's there, or it isn't. - // nothing more to do, either way. - if (exists) { - if (prefix && isAbsolute(prefix) && !this.nomount) { - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - } - } - - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][prefix] = true - this.emitMatch(prefix) - } - return cb() - }) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's "absolute" like /foo/bar, - // or "relative" like "../baz" - prefix = pattern.slice(0, n) - prefix = prefix.join("/") - break - } - - // get the list of entries. - var read - if (prefix === null) read = "." - else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { - if (!prefix || !isAbsolute(prefix)) { - prefix = path.join("/", prefix) - } - read = prefix = path.resolve(prefix) - - // if (process.platform === "win32") - // read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/") - - this.log('absolute: ', prefix, this.root, pattern, read) - } else { - read = prefix - } - - this.log('readdir(%j)', read, this.cwd, this.root) - - return this._readdir(read, function (er, entries) { - if (er) { - // not a directory! - // this means that, whatever else comes after this, it can never match - return cb() - } - - // globstar is special - if (pattern[n] === minimatch.GLOBSTAR) { - // test without the globstar, and with every child both below - // and replacing the globstar. - var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ] - entries.forEach(function (e) { - if (e.charAt(0) === "." && !this.dot) return - // instead of the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))) - // below the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n))) - }, this) - - s = s.filter(function (pattern) { - var key = gsKey(pattern) - var seen = !this._globstars[key] - this._globstars[key] = true - return seen - }, this) - - if (!s.length) - return cb() - - // now asyncForEach over this - var l = s.length - , errState = null - s.forEach(function (gsPattern) { - this._process(gsPattern, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l <= 0) return cb() - }) - }, this) - - return - } - - // not a globstar - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = pattern[n] - var rawGlob = pattern[n]._glob - , dotOk = this.dot || rawGlob.charAt(0) === "." - - entries = entries.filter(function (e) { - return (e.charAt(0) !== "." || dotOk) && - e.match(pattern[n]) - }) - - // If n === pattern.length - 1, then there's no need for the extra stat - // *unless* the user has specified "mark" or "stat" explicitly. - // We know that they exist, since the readdir returned them. - if (n === pattern.length - 1 && - !this.mark && - !this.stat) { - entries.forEach(function (e) { - if (prefix) { - if (prefix !== "/") e = prefix + "/" + e - else e = prefix + e - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e) - } - - if (process.platform === "win32") - e = e.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][e] = true - this.emitMatch(e) - }, this) - return cb.call(this) - } - - - // now test all the remaining entries as stand-ins for that part - // of the pattern. - var l = entries.length - , errState = null - if (l === 0) return cb() // no matches possible - entries.forEach(function (e) { - var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)) - this._process(p, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l === 0) return cb.call(this) - }) - }, this) - }) - -} - -function gsKey (pattern) { - return '**' + pattern.map(function (p) { - return (p === minimatch.GLOBSTAR) ? '**' : (''+p) - }).join('/') -} - -Glob.prototype._stat = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterStat(f, abs, cb, er) - } - - this.log('stat', [this.cwd, f, '=', abs]) - - if (!this.stat && this.cache.hasOwnProperty(f)) { - var exists = this.cache[f] - , isDir = exists && (Array.isArray(exists) || exists === 2) - if (this.sync) return cb.call(this, !!exists, isDir) - return process.nextTick(cb.bind(this, !!exists, isDir)) - } - - var stat = this.statCache[abs] - if (this.sync || stat) { - var er - try { - stat = fs.statSync(abs) - } catch (e) { - er = e - } - this._afterStat(f, abs, cb, er, stat) - } else { - fs.stat(abs, this._afterStat.bind(this, f, abs, cb)) - } -} - -Glob.prototype._afterStat = function (f, abs, cb, er, stat) { - var exists - assert(this instanceof Glob) - - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) { - this.log("should be ENOTDIR, fake it") - - er = new Error("ENOTDIR, not a directory '" + abs + "'") - er.path = abs - er.code = "ENOTDIR" - stat = null - } - - var emit = !this.statCache[abs] - this.statCache[abs] = stat - - if (er || !stat) { - exists = false - } else { - exists = stat.isDirectory() ? 2 : 1 - if (emit) - this.emit('stat', f, stat) - } - this.cache[f] = this.cache[f] || exists - cb.call(this, !!exists, exists === 2) -} - -Glob.prototype._readdir = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (isAbsolute(f)) { - abs = f - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterReaddir(f, abs, cb, er) - } - - this.log('readdir', [this.cwd, f, abs]) - if (this.cache.hasOwnProperty(f)) { - var c = this.cache[f] - if (Array.isArray(c)) { - if (this.sync) return cb.call(this, null, c) - return process.nextTick(cb.bind(this, null, c)) - } - - if (!c || c === 1) { - // either ENOENT or ENOTDIR - var code = c ? "ENOTDIR" : "ENOENT" - , er = new Error((c ? "Not a directory" : "Not found") + ": " + f) - er.path = f - er.code = code - this.log(f, er) - if (this.sync) return cb.call(this, er) - return process.nextTick(cb.bind(this, er)) - } - - // at this point, c === 2, meaning it's a dir, but we haven't - // had to read it yet, or c === true, meaning it's *something* - // but we don't have any idea what. Need to read it, either way. - } - - if (this.sync) { - var er, entries - try { - entries = fs.readdirSync(abs) - } catch (e) { - er = e - } - return this._afterReaddir(f, abs, cb, er, entries) - } - - fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb)) -} - -Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) { - assert(this instanceof Glob) - if (entries && !er) { - this.cache[f] = entries - // if we haven't asked to stat everything for suresies, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. This also gets us one step - // further into ELOOP territory. - if (!this.mark && !this.stat) { - entries.forEach(function (e) { - if (f === "/") e = f + e - else e = f + "/" + e - this.cache[e] = true - }, this) - } - - return cb.call(this, er, entries) - } - - // now handle errors, and cache the information - if (er) switch (er.code) { - case "ENOTDIR": // totally normal. means it *does* exist. - this.cache[f] = 1 - return cb.call(this, er) - case "ENOENT": // not terribly unusual - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.cache[f] = false - return cb.call(this, er) - default: // some unusual error. Treat as failure. - this.cache[f] = false - if (this.strict) this.emit("error", er) - if (!this.silent) console.error("glob error", er) - return cb.call(this, er) - } -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json deleted file mode 100644 index 5bf0db56..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "homepage": "https://github.com/isaacs/inherits", - "_id": "inherits@2.0.1", - "_from": "inherits@2" -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/package.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/package.json deleted file mode 100644 index 3e4b130e..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "name": "glob", - "description": "a little globber", - "version": "3.2.9", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "main": "glob.js", - "engines": { - "node": "*" - }, - "dependencies": { - "minimatch": "~0.2.11", - "inherits": "2" - }, - "devDependencies": { - "tap": "~0.4.0", - "mkdirp": "0", - "rimraf": "1" - }, - "scripts": { - "test": "tap test/*.js", - "test-regen": "TEST_REGEN=1 node test/00-setup.js" - }, - "license": "BSD", - "readme": "# Glob\n\nMatch files using the patterns the shell uses, like stars and stuff.\n\nThis is a glob implementation in JavaScript. It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n // files is an array of filenames.\n // If the `nonull` option is set, and nothing\n // was found, then files is [\"**/*.js\"]\n // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n * `err` {Error | null}\n * `matches` {Array<String>} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options])\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array<String>} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n * `err` {Error | null}\n * `matches` {Array<String>} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered. When an error is encountered, the\n glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`. There\n is no way at this time to continue a glob search after aborting, but\n you can re-use the statCache to avoid having to duplicate syscalls.\n* `statCache` Collection of all the stat results the glob search\n performed.\n* `cache` Convenience object. Each field has the following possible\n values:\n * `false` - Path does not exist\n * `true` - Path exists\n * `1` - Path exists, and is not a directory\n * `2` - Path exists, and is a directory\n * `[file, entries, ...]` - Path exists, is a directory, and the\n array value is the results of `fs.readdir`\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n matches found. If the `nonull` option is set, and no match was found,\n then the `matches` list contains the original pattern. The matches\n are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior. Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search. Defaults\n to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n onto. Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n systems, and `C:\\` or some such on Windows.)\n* `dot` Include `.dot` files in normal matches and `globstar` matches.\n Note that an explicit dot in a portion of the pattern will always\n match dot files.\n* `nomount` By default, a pattern starting with a forward-slash will be\n \"mounted\" onto the root setting, so that a valid filesystem path is\n returned. Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results. This reduces performance\n somewhat, and is completely unnecessary, unless `readdir` is presumed\n to be an untrustworthy indicator of file existence. It will cause\n ELOOP to be triggered one level sooner in the case of cyclical\n symbolic links.\n* `silent` When an unusual error is encountered\n when attempting to read a directory, a warning will be printed to\n stderr. Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n when attempting to read a directory, the process will just continue on\n in search of other matches. Set the `strict` option to raise an error\n in these cases.\n* `cache` See `cache` property above. Pass in a previously generated\n cache object to save some fs calls.\n* `statCache` A cache of results of filesystem information, to prevent\n unnecessary stat calls. While it should not normally be necessary to\n set this, you may pass the statCache from one glob() call to the\n options object of another, if you know that the filesystem will not\n change between calls. (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n same file showing up multiple times in the result set. By default,\n this implementation prevents duplicates in the result set.\n Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n containing the pattern itself. This is the default in glob(3).\n* `nocase` Perform a case-insensitive match. Note that case-insensitive\n filesystems will sometimes result in glob returning results that are\n case-insensitively matched anyway, since readdir and stat will not\n raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`. On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead. However, this also makes it even more susceptible to races,\nespecially if the cache or statCache objects are reused between glob\ncalls.\n\nUsers are thus advised not to use a glob result as a guarantee of\nfilesystem state in the face of rapid changes. For the vast majority\nof operations, this is never a problem.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "homepage": "https://github.com/isaacs/node-glob", - "_id": "glob@3.2.9", - "dist": { - "shasum": "5a9ddcb5d7fa59e4f5411e9532073d479024cfec" - }, - "_from": "glob@>= 3.1.4", - "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.9.tgz" -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js deleted file mode 100644 index 245afafd..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js +++ /dev/null @@ -1,176 +0,0 @@ -// just a little pre-run script to set up the fixtures. -// zz-finish cleans it up - -var mkdirp = require("mkdirp") -var path = require("path") -var i = 0 -var tap = require("tap") -var fs = require("fs") -var rimraf = require("rimraf") - -var files = -[ "a/.abcdef/x/y/z/a" -, "a/abcdef/g/h" -, "a/abcfed/g/h" -, "a/b/c/d" -, "a/bc/e/f" -, "a/c/d/c/b" -, "a/cb/e/f" -] - -var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c") -var symlinkFrom = "../.." - -files = files.map(function (f) { - return path.resolve(__dirname, f) -}) - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) - -files.forEach(function (f) { - tap.test(f, function (t) { - var d = path.dirname(f) - mkdirp(d, 0755, function (er) { - if (er) { - t.fail(er) - return t.bailout() - } - fs.writeFile(f, "i like tests", function (er) { - t.ifError(er, "make file") - t.end() - }) - }) - }) -}) - -if (process.platform !== "win32") { - tap.test("symlinky", function (t) { - var d = path.dirname(symlinkTo) - console.error("mkdirp", d) - mkdirp(d, 0755, function (er) { - t.ifError(er) - fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) { - t.ifError(er, "make symlink") - t.end() - }) - }) - }) -} - -;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) { - w = "/tmp/glob-test/" + w - tap.test("create " + w, function (t) { - mkdirp(w, function (er) { - if (er) - throw er - t.pass(w) - t.end() - }) - }) -}) - - -// generate the bash pattern test-fixtures if possible -if (process.platform === "win32" || !process.env.TEST_REGEN) { - console.error("Windows, or TEST_REGEN unset. Using cached fixtures.") - return -} - -var spawn = require("child_process").spawn; -var globs = - // put more patterns here. - // anything that would be directly in / should be in /tmp/glob-test - ["test/a/*/+(c|g)/./d" - ,"test/a/**/[cg]/../[cg]" - ,"test/a/{b,c,d,e,f}/**/g" - ,"test/a/b/**" - ,"test/**/g" - ,"test/a/abc{fed,def}/g/h" - ,"test/a/abc{fed/g,def}/**/" - ,"test/a/abc{fed/g,def}/**///**/" - ,"test/**/a/**/" - ,"test/+(a|b|c)/a{/,bc*}/**" - ,"test/*/*/*/f" - ,"test/**/f" - ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**" - ,"{./*/*,/tmp/glob-test/*}" - ,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me! - ,"test/a/!(symlink)/**" - ] -var bashOutput = {} -var fs = require("fs") - -globs.forEach(function (pattern) { - tap.test("generate fixture " + pattern, function (t) { - var cmd = "shopt -s globstar && " + - "shopt -s extglob && " + - "shopt -s nullglob && " + - // "shopt >&2; " + - "eval \'for i in " + pattern + "; do echo $i; done\'" - var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) }) - var out = [] - cp.stdout.on("data", function (c) { - out.push(c) - }) - cp.stderr.pipe(process.stderr) - cp.on("close", function (code) { - out = flatten(out) - if (!out) - out = [] - else - out = cleanResults(out.split(/\r*\n/)) - - bashOutput[pattern] = out - t.notOk(code, "bash test should finish nicely") - t.end() - }) - }) -}) - -tap.test("save fixtures", function (t) { - var fname = path.resolve(__dirname, "bash-results.json") - var data = JSON.stringify(bashOutput, null, 2) + "\n" - fs.writeFile(fname, data, function (er) { - t.ifError(er) - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -function flatten (chunks) { - var s = 0 - chunks.forEach(function (c) { s += c.length }) - var out = new Buffer(s) - s = 0 - chunks.forEach(function (c) { - c.copy(out, s) - s += c.length - }) - - return out.toString().trim() -} - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js deleted file mode 100644 index 239ed1a9..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js +++ /dev/null @@ -1,63 +0,0 @@ -// basic test -// show that it does the same thing by default as the shell. -var tap = require("tap") -, child_process = require("child_process") -, bashResults = require("./bash-results.json") -, globs = Object.keys(bashResults) -, glob = require("../") -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -globs.forEach(function (pattern) { - var expect = bashResults[pattern] - // anything regarding the symlink thing will fail on windows, so just skip it - if (process.platform === "win32" && - expect.some(function (m) { - return /\/symlink\//.test(m) - })) - return - - tap.test(pattern, function (t) { - glob(pattern, function (er, matches) { - if (er) - throw er - - // sort and unmark, just to match the shell results - matches = cleanResults(matches) - - t.deepEqual(matches, expect, pattern) - t.end() - }) - }) - - tap.test(pattern + " sync", function (t) { - var matches = cleanResults(glob.sync(pattern)) - - t.deepEqual(matches, expect, "should match shell") - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/') - }) -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json deleted file mode 100644 index 8051c723..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "test/a/*/+(c|g)/./d": [ - "test/a/b/c/./d" - ], - "test/a/**/[cg]/../[cg]": [ - "test/a/abcdef/g/../g", - "test/a/abcfed/g/../g", - "test/a/b/c/../c", - "test/a/c/../c", - "test/a/c/d/c/../c", - "test/a/symlink/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c" - ], - "test/a/{b,c,d,e,f}/**/g": [], - "test/a/b/**": [ - "test/a/b", - "test/a/b/c", - "test/a/b/c/d" - ], - "test/**/g": [ - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed,def}/g/h": [ - "test/a/abcdef/g/h", - "test/a/abcfed/g/h" - ], - "test/a/abc{fed/g,def}/**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed/g,def}/**///**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/**/a/**/": [ - "test/a", - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/b", - "test/a/b/c", - "test/a/bc", - "test/a/bc/e", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/cb", - "test/a/cb/e", - "test/a/symlink", - "test/a/symlink/a", - "test/a/symlink/a/b", - "test/a/symlink/a/b/c", - "test/a/symlink/a/b/c/a", - "test/a/symlink/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b" - ], - "test/+(a|b|c)/a{/,bc*}/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h" - ], - "test/*/*/*/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/**/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [ - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c" - ], - "{./*/*,/tmp/glob-test/*}": [ - "./examples/g.js", - "./examples/usr-local.js", - "./node_modules/inherits", - "./node_modules/minimatch", - "./node_modules/mkdirp", - "./node_modules/rimraf", - "./node_modules/tap", - "./test/00-setup.js", - "./test/a", - "./test/bash-comparison.js", - "./test/bash-results.json", - "./test/cwd-test.js", - "./test/globstar-match.js", - "./test/mark.js", - "./test/new-glob-optional-options.js", - "./test/nocase-nomagic.js", - "./test/pause-resume.js", - "./test/readme-issue.js", - "./test/root-nomount.js", - "./test/root.js", - "./test/stat.js", - "./test/zz-cleanup.js", - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq" - ], - "{/tmp/glob-test/*,*}": [ - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq", - "examples", - "glob.js", - "LICENSE", - "node_modules", - "package.json", - "README.md", - "test" - ], - "test/a/!(symlink)/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h", - "test/a/b", - "test/a/b/c", - "test/a/b/c/d", - "test/a/bc", - "test/a/bc/e", - "test/a/bc/e/f", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/c/d/c/b", - "test/a/cb", - "test/a/cb/e", - "test/a/cb/e/f" - ] -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js deleted file mode 100644 index 352c27ef..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js +++ /dev/null @@ -1,55 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing cwd and searching for **/d", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('**/d', function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('a', function (t) { - glob('**/d', {cwd:path.resolve('a')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'b/c/d', 'c/d' ]) - t.end() - }) - }) - - t.test('a/b', function (t) { - glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('a/b/', function (t) { - glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('.', function (t) { - glob('**/d', {cwd: process.cwd()}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js deleted file mode 100644 index 9b234fa2..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js +++ /dev/null @@ -1,19 +0,0 @@ -var Glob = require("../glob.js").Glob -var test = require('tap').test - -test('globstar should not have dupe matches', function(t) { - var pattern = 'a/**/[gh]' - var g = new Glob(pattern, { cwd: __dirname }) - var matches = [] - g.on('match', function(m) { - console.error('match %j', m) - matches.push(m) - }) - g.on('end', function(set) { - console.error('set', set) - matches = matches.sort() - set = set.sort() - t.same(matches, set, 'should have same set of matches') - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js deleted file mode 100644 index bf411c0e..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js +++ /dev/null @@ -1,118 +0,0 @@ -var test = require("tap").test -var glob = require('../') -process.chdir(__dirname) - -// expose timing issues -var lag = 5 -glob.Glob.prototype._stat = function(o) { return function(f, cb) { - var args = arguments - setTimeout(function() { - o.call(this, f, cb) - }.bind(this), lag += 5) -}}(glob.Glob.prototype._stat) - - -test("mark, with **", function (t) { - glob("a/*b*/**", {mark: true}, function (er, results) { - if (er) - throw er - var expect = - [ 'a/abcdef/', - 'a/abcdef/g/', - 'a/abcdef/g/h', - 'a/abcfed/', - 'a/abcfed/g/', - 'a/abcfed/g/h', - 'a/b/', - 'a/b/c/', - 'a/b/c/d', - 'a/bc/', - 'a/bc/e/', - 'a/bc/e/f', - 'a/cb/', - 'a/cb/e/', - 'a/cb/e/f' ] - - t.same(results, expect) - t.end() - }) -}) - -test("mark, no / on pattern", function (t) { - glob("a/*", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - - if (process.platform !== "win32") - expect.push('a/symlink/') - - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) - -test("mark=false, no / on pattern", function (t) { - glob("a/*", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef', - 'a/abcfed', - 'a/b', - 'a/bc', - 'a/c', - 'a/cb' ] - - if (process.platform !== "win32") - expect.push('a/symlink') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /[^\/]$/) - }) -}) - -test("mark=true, / on pattern", function (t) { - glob("a/*/", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) - -test("mark=false, / on pattern", function (t) { - glob("a/*/", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }).on('match', function(m) { - t.similar(m, /\/$/) - }) -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js deleted file mode 100644 index 3e7dc5ac..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js +++ /dev/null @@ -1,10 +0,0 @@ -var Glob = require('../glob.js').Glob; -var test = require('tap').test; - -test('new glob, with cb, and no options', function (t) { - new Glob(__filename, function(er, results) { - if (er) throw er; - t.same(results, [__filename]); - t.end(); - }); -}); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js deleted file mode 100644 index 2503f231..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js +++ /dev/null @@ -1,113 +0,0 @@ -var fs = require('fs'); -var test = require('tap').test; -var glob = require('../'); - -test('mock fs', function(t) { - var stat = fs.stat - var statSync = fs.statSync - var readdir = fs.readdir - var readdirSync = fs.readdirSync - - function fakeStat(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = { isDirectory: function() { return true } } - break - case '/tmp/a': - ret = { isDirectory: function() { return false } } - break - } - return ret - } - - fs.stat = function(path, cb) { - var f = fakeStat(path); - if (f) { - process.nextTick(function() { - cb(null, f) - }) - } else { - stat.call(fs, path, cb) - } - } - - fs.statSync = function(path) { - return fakeStat(path) || statSync.call(fs, path) - } - - function fakeReaddir(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = [ 'a', 'A' ] - break - case '/': - ret = ['tmp', 'tMp', 'tMP', 'TMP'] - } - return ret - } - - fs.readdir = function(path, cb) { - var f = fakeReaddir(path) - if (f) - process.nextTick(function() { - cb(null, f) - }) - else - readdir.call(fs, path, cb) - } - - fs.readdirSync = function(path) { - return fakeReaddir(path) || readdirSync.call(fs, path) - } - - t.pass('mocked') - t.end() -}) - -test('nocase, nomagic', function(t) { - var n = 2 - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/a', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) - glob('/tmp/A', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) -}) - -test('nocase, with some magic', function(t) { - t.plan(2) - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js deleted file mode 100644 index e1ffbab1..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -// show that no match events happen while paused. -var tap = require("tap") -, child_process = require("child_process") -// just some gnarly pattern with lots of matches -, pattern = "test/a/!(symlink)/**" -, bashResults = require("./bash-results.json") -, patterns = Object.keys(bashResults) -, glob = require("../") -, Glob = glob.Glob -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -var globResults = [] -tap.test("use a Glob object, and pause/resume it", function (t) { - var g = new Glob(pattern) - , paused = false - , res = [] - , expect = bashResults[pattern] - - g.on("pause", function () { - console.error("pause") - }) - - g.on("resume", function () { - console.error("resume") - }) - - g.on("match", function (m) { - t.notOk(g.paused, "must not be paused") - globResults.push(m) - g.pause() - t.ok(g.paused, "must be paused") - setTimeout(g.resume.bind(g), 10) - }) - - g.on("end", function (matches) { - t.pass("reached glob end") - globResults = cleanResults(globResults) - matches = cleanResults(matches) - t.deepEqual(matches, globResults, - "end event matches should be the same as match events") - - t.deepEqual(matches, expect, - "glob matches should be the same as bash results") - - t.end() - }) -}) - diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js deleted file mode 100644 index 0b4e0be2..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js +++ /dev/null @@ -1,36 +0,0 @@ -var test = require("tap").test -var glob = require("../") - -var mkdirp = require("mkdirp") -var fs = require("fs") -var rimraf = require("rimraf") -var dir = __dirname + "/package" - -test("setup", function (t) { - mkdirp.sync(dir) - fs.writeFileSync(dir + "/package.json", "{}", "ascii") - fs.writeFileSync(dir + "/README", "x", "ascii") - t.pass("setup done") - t.end() -}) - -test("glob", function (t) { - var opt = { - cwd: dir, - nocase: true, - mark: true - } - - glob("README?(.*)", opt, function (er, files) { - if (er) - throw er - t.same(files, ["README"]) - t.end() - }) -}) - -test("cleanup", function (t) { - rimraf.sync(dir) - t.pass("clean") - t.end() -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js deleted file mode 100644 index 3ac5979b..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js +++ /dev/null @@ -1,39 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing root and searching for /b*/**", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) - }) - - t.test('a', function (t) { - glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js deleted file mode 100644 index 95c23f99..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js +++ /dev/null @@ -1,46 +0,0 @@ -var t = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -var glob = require('../') -var path = require('path') - -t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) -}) - - -t.test('a', function (t) { - console.error("root=" + path.resolve('a')) - glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) { - t.ifError(er) - var wanted = [ - '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' - ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - }) - - t.like(matches, wanted) - t.end() - }) -}) - -t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - })) - t.end() - }) -}) - -t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js deleted file mode 100644 index 62917114..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js +++ /dev/null @@ -1,32 +0,0 @@ -var glob = require('../') -var test = require('tap').test -var path = require('path') - -test('stat all the things', function(t) { - var g = new glob.Glob('a/*abc*/**', { stat: true, cwd: __dirname }) - var matches = [] - g.on('match', function(m) { - matches.push(m) - }) - var stats = [] - g.on('stat', function(m) { - stats.push(m) - }) - g.on('end', function(eof) { - stats = stats.sort() - matches = matches.sort() - eof = eof.sort() - t.same(stats, matches) - t.same(eof, matches) - var cache = Object.keys(this.statCache) - t.same(cache.map(function (f) { - return path.relative(__dirname, f) - }).sort(), matches) - - cache.forEach(function(c) { - t.equal(typeof this.statCache[c], 'object') - }, this) - - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js deleted file mode 100644 index e085f0fa..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js +++ /dev/null @@ -1,11 +0,0 @@ -// remove the fixtures -var tap = require("tap") -, rimraf = require("rimraf") -, path = require("path") - -tap.test("cleanup fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "removed") - t.end() - }) -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/package.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/package.json deleted file mode 100755 index 44ca4377..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/cli/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "cli", - "description": "A tool for rapidly building command line apps", - "version": "0.4.5", - "homepage": "http://github.com/chriso/cli", - "keywords": [ - "cli", - "command line", - "opts", - "parseopt", - "opt", - "args", - "console", - "argsparse", - "optparse", - "daemon", - "autocomplete", - "command", - "autocompletion" - ], - "author": { - "name": "Chris O'Hara", - "email": "cohara87@gmail.com" - }, - "main": "cli.js", - "bugs": { - "url": "http://github.com/chriso/cli/issues" - }, - "repository": { - "type": "git", - "url": "http://github.com/chriso/cli.git" - }, - "dependencies": { - "glob": ">= 3.1.4" - }, - "contributors": [ - { - "name": "Douglas Meyer" - } - ], - "engines": { - "node": ">=0.2.5" - }, - "licenses": [ - { - "type": "MIT" - } - ], - "readme": "**cli is a toolkit for rapidly building command line apps - it includes:**\n\n- Full featured opts/args parser\n- Plugin support for adding common options and switches\n- Helper methods for working with input/output and spawning child processes\n- Output colored/styled messages, [progress bars](https://github.com/chriso/cli/blob/master/examples/progress.js) or [spinners](https://github.com/chriso/cli/blob/master/examples/spinner.js)\n- Command [auto-completion](https://github.com/chriso/cli/blob/master/examples/command.js) and [glob support](https://github.com/chriso/cli/blob/master/examples/glob.js)\n\nInstall using `npm install cli` or just bundle [cli.js](https://github.com/chriso/cli/raw/master/cli-min.js) with your app.\n\n## Example apps\n\n### sort.js\n\n```javascript\n#!/usr/bin/env node\nrequire('cli').withStdinLines(function(lines, newline) {\n this.output(lines.sort().join(newline));\n});\n```\n\nTry it out\n\n```bash\n$ ./sort.js < input.txt\n```\n\nLet's add support for an `-n` switch to use a numeric sort, and a `-r` switch to reverse output - only 5 extra lines of code (!)\n\n```javascript\nvar cli = require('cli'), options = cli.parse();\n\ncli.withStdinLines(function(lines, newline) {\n lines.sort(!options.n ? null : function(a, b) {\n return parseInt(a) > parseInt(b);\n });\n if (options.r) lines.reverse();\n this.output(lines.join(newline));\n});\n```\n\n### static.js\n\nLet's create a static file server with daemon support to see the opts parser + plugins in use - note: this requires `npm install creationix daemon`\n\n```javascript\nvar cli = require('cli').enable('daemon', 'status'); //Enable 2 plugins\n\ncli.parse({\n log: ['l', 'Enable logging'],\n port: ['p', 'Listen on this port', 'number', 8080],\n serve: [false, 'Serve static files from PATH', 'path', './public']\n});\n\ncli.main(function(args, options) {\n var server, middleware = [];\n\n if (options.log) {\n this.debug('Enabling logging');\n middleware.push(require('creationix/log')());\n }\n\n this.debug('Serving files from ' + options.serve);\n middleware.push(require('creationix/static')('/', options.serve, 'index.html'));\n\n server = this.createServer(middleware).listen(options.port);\n\n this.ok('Listening on port ' + options.port);\n});\n```\n\nTo output usage information\n\n```bash\n$ ./static.js --help\n```\n\nTo create a daemon that serves files from */tmp*, run\n\n```bash\n$ ./static.js -ld --serve=/tmp\n```\n\nFor more examples, see [./examples](https://github.com/chriso/cli/tree/master/examples)\n\n## Helper methods\n\ncli has methods that collect stdin (newline is autodetected as \\n or \\r\\n)\n\n```javascript\ncli.withStdin(callback); //callback receives stdin as a string\ncli.withStdinLines(callback); //callback receives stdin split into an array of lines (lines, newline)\n```\n\ncli also has a lower level method for working with input line by line (see [./examples/cat.js](https://github.com/chriso/cli/blob/master/examples/cat.js) for an example). \n\n```javascript\ncli.withInput(file, function (line, newline, eof) {\n if (!eof) {\n this.output(line + newline);\n }\n});\n```\n\n*Note: `file` can be omitted if you want to work with stdin*\n\nTo output a progress bar, call\n\n```javascript\ncli.progress(progress); //Where 0 <= progress <= 1\n```\n\nTo spawn a child process, use\n\n```javascript\ncli.exec(cmd, callback); //callback receives the output of the process (split into lines)\n```\n\ncli also comes bundled with kof's [node-natives](https://github.com/kof/node-natives) (access with cli.native) and creationix' [stack](https://github.com/creationix/stack) (access with cli.createServer)\n\n## Plugins\n\nPlugins are a way of adding common opts and can be enabled using \n\n```javascript\ncli.enable(plugin1, [plugin2, ...]); //To disable, use the equivalent disable() method\n```\n\n**help** - *enabled by default*\n\nAdds `-h,--help` to output auto-generated usage information\n\n**version**\n\nAdds `-v,--version` to output version information for the app. cli will attempt to locate and parse a nearby *package.json*\n\nTo set your own app name and version, use `cli.setApp(app_name, version)`\n\n**status**\n\nAdds options to show/hide the stylized status messages that are output to the console when using one of these methods\n\n```javascript\ncli.debug(msg); //Only shown when using --debug\ncli.error(msg);\ncli.fatal(msg); //Exits the process after outputting msg\ncli.info(msg);\ncli.ok(msg);\n```\n\n`-k,--no-color` will omit ANSI color escapes from the output\n\n**glob** - *requires* `npm install glob`\n\nEnables glob matching of arguments\n\n**daemon** - *requires* `npm install daemon`\n\nAdds `-d,--daemon ARG` for daemonizing the process and controlling the resulting daemon\n\n`ARG` can be either start (default), stop, restart, pid (outputs the daemon's pid if it's running), or log (output the daemon's stdout+stderr)\n\n**timeout**\n\nAdds `-t,--timeout N` to exit the process after N seconds with an error\n\n**catchall**\n\nAdds `-c,--catch` to catch and output uncaughtExceptions and resume execution\n\n*Note: Plugins are automatically disabled if an option or switch of the same name is already defined*\n\n## LICENSE\n\n(MIT license)\n\nCopyright (c) 2010 Chris O'Hara <cohara87@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "cli@0.4.5", - "_from": "cli@0.4.x" -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.npmignore b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.npmignore deleted file mode 100644 index aa3fd4b8..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.npmignore +++ /dev/null @@ -1,14 +0,0 @@ -.DS_Store -.monitor -.*.swp -.nodemonignore -releases -*.log -*.err -fleet.json -public/browserify -bin/*.json -.bin -build -compile -.lock-wscript diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.testem.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.testem.json deleted file mode 100644 index 633c2ba8..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.testem.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "launchers": { - "node": { - "command": "npm test" - } - }, - "src_files": [ - "./**/*.js" - ], - "before_tests": "npm run build", - "on_exit": "rm test/static/bundle.js", - "test_page": "test/static/index.html", - "launch_in_dev": ["node", "phantomjs"] -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.travis.yml b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.travis.yml deleted file mode 100644 index ed178f63..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.9 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/LICENCE b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/LICENCE deleted file mode 100644 index a23e08a8..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/README.md deleted file mode 100644 index 5e480ba5..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# console-browserify - -[![build status][1]][2] - -[![browser support][3]][4] - -Emulate console for all the browsers - -## Example - -```js -var console = require("console-browserify") - -console.log("hello world!") -``` - -## Installation - -`npm install console-browserify` - -## Contributors - - - Raynos - -## MIT Licenced - - - - [1]: https://secure.travis-ci.org/Raynos/console-browserify.png - [2]: http://travis-ci.org/Raynos/console-browserify - [3]: http://ci.testling.com/Raynos/console-browserify.png - [4]: http://ci.testling.com/Raynos/console-browserify diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/index.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/index.js deleted file mode 100644 index bfdf4b35..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/*global window, global*/ -var util = require("util") -var assert = require("assert") - -var slice = Array.prototype.slice -var console -var times = {} - -if (typeof global !== "undefined" && global.console) { - console = global.console -} else if (typeof window !== "undefined" && window.console) { - console = window.console -} else { - console = window.console = {} -} - -var functions = [ - [log, "log"] - , [info, "info"] - , [warn, "warn"] - , [error, "error"] - , [time, "time"] - , [timeEnd, "timeEnd"] - , [trace, "trace"] - , [dir, "dir"] - , [assert, "assert"] -] - -for (var i = 0; i < functions.length; i++) { - var tuple = functions[i] - var f = tuple[0] - var name = tuple[1] - - if (!console[name]) { - console[name] = f - } -} - -module.exports = console - -function log() {} - -function info() { - console.log.apply(console, arguments) -} - -function warn() { - console.log.apply(console, arguments) -} - -function error() { - console.warn.apply(console, arguments) -} - -function time(label) { - times[label] = Date.now() -} - -function timeEnd(label) { - var time = times[label] - if (!time) { - throw new Error("No such label: " + label) - } - - var duration = Date.now() - time - console.log(label + ": " + duration + "ms") -} - -function trace() { - var err = new Error() - err.name = "Trace" - err.message = util.format.apply(null, arguments) - console.error(err.stack) -} - -function dir(object) { - console.log(util.inspect(object) + "\n") -} - -function assert(expression) { - if (!expression) { - var arr = slice.call(arguments, 1) - assert.ok(false, util.format.apply(null, arr)) - } -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/package.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/package.json deleted file mode 100644 index dbd58ae5..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "console-browserify", - "version": "0.1.6", - "description": "Emulate console for all the browsers", - "keywords": [], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/console-browserify.git" - }, - "main": "index", - "homepage": "https://github.com/Raynos/console-browserify", - "contributors": [ - { - "name": "Raynos" - } - ], - "bugs": { - "url": "https://github.com/Raynos/console-browserify/issues", - "email": "raynos2@gmail.com" - }, - "dependencies": {}, - "devDependencies": { - "tape": "~0.2.2", - "browserify": "https://github.com/raynos/node-browserify/tarball/master", - "testem": "~0.2.55", - "jsonify": "0.0.0" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/Raynos/console-browserify/raw/master/LICENSE" - } - ], - "scripts": { - "test": "node ./test", - "build": "browserify test/index.js -o test/static/bundle.js", - "testem": "testem" - }, - "testling": { - "files": "test/index.js", - "browsers": { - "ie": [ - "6", - "7", - "8", - "9", - "10" - ], - "firefox": [ - "16", - "17", - "nightly" - ], - "chrome": [ - "22", - "23", - "canary" - ], - "opera": [ - "12", - "next" - ], - "safari": [ - "5.1" - ] - } - }, - "readme": "# console-browserify\n\n[![build status][1]][2]\n\n[![browser support][3]][4]\n\nEmulate console for all the browsers\n\n## Example\n\n```js\nvar console = require(\"console-browserify\")\n\nconsole.log(\"hello world!\")\n```\n\n## Installation\n\n`npm install console-browserify`\n\n## Contributors\n\n - Raynos\n\n## MIT Licenced\n\n\n\n [1]: https://secure.travis-ci.org/Raynos/console-browserify.png\n [2]: http://travis-ci.org/Raynos/console-browserify\n [3]: http://ci.testling.com/Raynos/console-browserify.png\n [4]: http://ci.testling.com/Raynos/console-browserify\n", - "readmeFilename": "README.md", - "_id": "console-browserify@0.1.6", - "_from": "console-browserify@0.1.x" -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/index.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/index.js deleted file mode 100644 index 26dfaad6..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/index.js +++ /dev/null @@ -1,67 +0,0 @@ -var console = require("../index") -var test = require("tape") - -if (typeof window !== "undefined" && !window.JSON) { - window.JSON = require("jsonify") -} - -test("console has expected methods", function (assert) { - assert.ok(console.log) - assert.ok(console.info) - assert.ok(console.warn) - assert.ok(console.dir) - assert.ok(console.time, "time") - assert.ok(console.timeEnd, "timeEnd") - assert.ok(console.trace, "trace") - assert.ok(console.assert) - - assert.end() -}) - -test("invoke console.log", function (assert) { - console.log("test-log") - - assert.end() -}) - -test("invoke console.info", function (assert) { - console.info("test-info") - - assert.end() -}) - -test("invoke console.warn", function (assert) { - console.warn("test-warn") - - assert.end() -}) - -test("invoke console.time", function (assert) { - console.time("label") - - assert.end() -}) - -test("invoke console.trace", function (assert) { - console.trace("test-trace") - - assert.end() -}) - -test("invoke console.assert", function (assert) { - console.assert(true) - - assert.end() -}) - -test("invoke console.dir", function (assert) { - console.dir("test-dir") - - assert.end() -}) - -test("invoke console.timeEnd", function (assert) { - console.timeEnd("label") - - assert.end() -}) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/index.html b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/index.html deleted file mode 100644 index dd55012f..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/index.html +++ /dev/null @@ -1,12 +0,0 @@ -<!doctype html> -<html> -<head> - <meta http-equiv="x-ua-compatible" content="IE=8" > - <title>TAPE Example - - - - - - - diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js deleted file mode 100644 index 8b4c12dc..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js +++ /dev/null @@ -1,53 +0,0 @@ -(function () { - var Testem = window.Testem - var regex = /^((?:not )?ok) (\d+) (.+)$/ - - Testem.useCustomAdapter(tapAdapter) - - function tapAdapter(socket){ - var results = { - failed: 0 - , passed: 0 - , total: 0 - , tests: [] - } - - socket.emit('tests-start') - - Testem.handleConsoleMessage = function(msg){ - var m = msg.match(regex) - if (m) { - var passed = m[1] === 'ok' - var test = { - passed: passed ? 1 : 0, - failed: passed ? 0 : 1, - total: 1, - id: m[2], - name: m[3], - items: [] - } - - if (passed) { - results.passed++ - } else { - console.error("failure", m) - - results.failed++ - } - - results.total++ - - // console.log("emitted test", test) - socket.emit('test-result', test) - results.tests.push(test) - } else if (msg === '# ok' || msg.match(/^# tests \d+/)){ - // console.log("emitted all test") - socket.emit('all-test-results', results) - } - - // return false if you want to prevent the console message from - // going to the console - // return false - } - } -}()) diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.jshintrc b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.jshintrc deleted file mode 100644 index 2b7e39bf..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.jshintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": "nofunc", - "newcap": true, - "noarg": true, - "sub": true, - "undef": true, - "unused": true, - "boss": true, - "eqnull": true, - "node": true -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.npmignore b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.npmignore deleted file mode 100644 index e69de29b..00000000 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.travis.yml b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.travis.yml deleted file mode 100644 index 42d43029..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - 0.8 - - '0.10' -before_script: - - npm install -g grunt-cli diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/Gruntfile.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/Gruntfile.js deleted file mode 100644 index ff37751b..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/Gruntfile.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -module.exports = function(grunt) { - - // Project configuration. - grunt.initConfig({ - nodeunit: { - files: ['test/**/*_test.js'], - }, - jshint: { - options: { - jshintrc: '.jshintrc' - }, - gruntfile: { - src: 'Gruntfile.js' - }, - lib: { - src: ['lib/**/*.js'] - }, - test: { - src: ['test/**/*.js'] - }, - }, - watch: { - gruntfile: { - files: '<%= jshint.gruntfile.src %>', - tasks: ['jshint:gruntfile'] - }, - lib: { - files: '<%= jshint.lib.src %>', - tasks: ['jshint:lib', 'nodeunit'] - }, - test: { - files: '<%= jshint.test.src %>', - tasks: ['jshint:test', 'nodeunit'] - }, - }, - }); - - // These plugins provide necessary tasks. - grunt.loadNpmTasks('grunt-contrib-nodeunit'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-watch'); - - // Default task. - grunt.registerTask('default', ['jshint', 'nodeunit']); - -}; diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/LICENSE-MIT b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/LICENSE-MIT deleted file mode 100644 index bb2aad6d..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 "Cowboy" Ben Alman - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/README.md deleted file mode 100644 index 20c364eb..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit) - -A replacement for process.exit that ensures stdio are fully drained before exiting. - -To make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`. - -See [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference. - -Tested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18. - -Based on some code by [@vladikoff](https://github.com/vladikoff). - -## Getting Started -Install the module with: `npm install exit` - -```javascript -var exit = require('exit'); - -// These lines should appear in the output, EVEN ON WINDOWS. -console.log("omg"); -console.error("yay"); - -// process.exit(5); -exit(5); - -// These lines shouldn't appear in the output. -console.log("wtf"); -console.error("bro"); -``` - -## Don't believe me? Try it for yourself. - -In Windows, clone the repo and cd to the `test\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly. - -This test was done using cmd.exe, but you can see the same results using `| grep "std"` in either PowerShell or git-bash. - -``` -C:\node-exit\test\fixtures>node log.js 0 10 stdout stderr 2>&1 | find "std" -stdout 0 -stderr 0 -stdout 1 -stderr 1 -stdout 2 -stderr 2 -stdout 3 -stderr 3 -stdout 4 -stderr 4 -stdout 5 -stderr 5 -stdout 6 -stderr 6 -stdout 7 -stderr 7 -stdout 8 -stderr 8 -stdout 9 -stderr 9 - -C:\node-exit\test\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find "std" - -C:\node-exit\test\fixtures> -``` - -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). - -## Release History -2013-11-26 - v0.1.2 - Fixed a bug with hanging processes. -2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now! -2013-09-20 - v0.1.0 - Initial release. - -## License -Copyright (c) 2013 "Cowboy" Ben Alman -Licensed under the MIT license. diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/lib/exit.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/lib/exit.js deleted file mode 100644 index 2883e059..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/lib/exit.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * exit - * https://github.com/cowboy/node-exit - * - * Copyright (c) 2013 "Cowboy" Ben Alman - * Licensed under the MIT license. - */ - -'use strict'; - -module.exports = function exit(exitCode, streams) { - if (!streams) { streams = [process.stdout, process.stderr]; } - var drainCount = 0; - // Actually exit if all streams are drained. - function tryToExit() { - if (drainCount === streams.length) { - process.exit(exitCode); - } - } - streams.forEach(function(stream) { - // Count drained streams now, but monitor non-drained streams. - if (stream.bufferSize === 0) { - drainCount++; - } else { - stream.write('', 'utf-8', function() { - drainCount++; - tryToExit(); - }); - } - // Prevent further writing. - stream.write = function() {}; - }); - // If all streams were already drained, exit now. - tryToExit(); - // In Windows, when run as a Node.js child process, a script utilizing - // this library might just exit with a 0 exit code, regardless. This code, - // despite the fact that it looks a bit crazy, appears to fix that. - process.on('exit', function() { - process.exit(exitCode); - }); -}; diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/package.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/package.json deleted file mode 100644 index 65f72dc6..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "exit", - "description": "A replacement for process.exit that ensures stdio are fully drained before exiting.", - "version": "0.1.2", - "homepage": "https://github.com/cowboy/node-exit", - "author": { - "name": "\"Cowboy\" Ben Alman", - "url": "http://benalman.com/" - }, - "repository": { - "type": "git", - "url": "git://github.com/cowboy/node-exit.git" - }, - "bugs": { - "url": "https://github.com/cowboy/node-exit/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/cowboy/node-exit/blob/master/LICENSE-MIT" - } - ], - "main": "lib/exit", - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "grunt nodeunit" - }, - "devDependencies": { - "grunt-contrib-jshint": "~0.6.4", - "grunt-contrib-nodeunit": "~0.2.0", - "grunt-contrib-watch": "~0.5.3", - "grunt": "~0.4.1", - "which": "~1.0.5" - }, - "keywords": [ - "exit", - "process", - "stdio", - "stdout", - "stderr", - "drain", - "flush", - "3584" - ], - "readme": "# exit [![Build Status](https://secure.travis-ci.org/cowboy/node-exit.png?branch=master)](http://travis-ci.org/cowboy/node-exit)\n\nA replacement for process.exit that ensures stdio are fully drained before exiting.\n\nTo make a long story short, if `process.exit` is called on Windows, script output is often truncated when pipe-redirecting `stdout` or `stderr`. This module attempts to work around this issue by waiting until those streams have been completely drained before actually calling `process.exit`.\n\nSee [Node.js issue #3584](https://github.com/joyent/node/issues/3584) for further reference.\n\nTested in OS X 10.8, Windows 7 on Node.js 0.8.25 and 0.10.18.\n\nBased on some code by [@vladikoff](https://github.com/vladikoff).\n\n## Getting Started\nInstall the module with: `npm install exit`\n\n```javascript\nvar exit = require('exit');\n\n// These lines should appear in the output, EVEN ON WINDOWS.\nconsole.log(\"omg\");\nconsole.error(\"yay\");\n\n// process.exit(5);\nexit(5);\n\n// These lines shouldn't appear in the output.\nconsole.log(\"wtf\");\nconsole.error(\"bro\");\n```\n\n## Don't believe me? Try it for yourself.\n\nIn Windows, clone the repo and cd to the `test\\fixtures` directory. The only difference between [log.js](test/fixtures/log.js) and [log-broken.js](test/fixtures/log-broken.js) is that the former uses `exit` while the latter calls `process.exit` directly.\n\nThis test was done using cmd.exe, but you can see the same results using `| grep \"std\"` in either PowerShell or git-bash.\n\n```\nC:\\node-exit\\test\\fixtures>node log.js 0 10 stdout stderr 2>&1 | find \"std\"\nstdout 0\nstderr 0\nstdout 1\nstderr 1\nstdout 2\nstderr 2\nstdout 3\nstderr 3\nstdout 4\nstderr 4\nstdout 5\nstderr 5\nstdout 6\nstderr 6\nstdout 7\nstderr 7\nstdout 8\nstderr 8\nstdout 9\nstderr 9\n\nC:\\node-exit\\test\\fixtures>node log-broken.js 0 10 stdout stderr 2>&1 | find \"std\"\n\nC:\\node-exit\\test\\fixtures>\n```\n\n## Contributing\nIn lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).\n\n## Release History\n2013-11-26 - v0.1.2 - Fixed a bug with hanging processes. \n2013-09-26 - v0.1.1 - Fixed some bugs. It seems to actually work now! \n2013-09-20 - v0.1.0 - Initial release.\n\n## License\nCopyright (c) 2013 \"Cowboy\" Ben Alman \nLicensed under the MIT license.\n", - "readmeFilename": "README.md", - "_id": "exit@0.1.2", - "_from": "exit@0.1.x" -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/exit_test.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/exit_test.js deleted file mode 100644 index a91afb91..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/exit_test.js +++ /dev/null @@ -1,121 +0,0 @@ -'use strict'; - -/* - ======== A Handy Little Nodeunit Reference ======== - https://github.com/caolan/nodeunit - - Test methods: - test.expect(numAssertions) - test.done() - Test assertions: - test.ok(value, [message]) - test.equal(actual, expected, [message]) - test.notEqual(actual, expected, [message]) - test.deepEqual(actual, expected, [message]) - test.notDeepEqual(actual, expected, [message]) - test.strictEqual(actual, expected, [message]) - test.notStrictEqual(actual, expected, [message]) - test.throws(block, [error], [message]) - test.doesNotThrow(block, [error], [message]) - test.ifError(value) -*/ - -var fs = require('fs'); -var exec = require('child_process').exec; - -var _which = require('which').sync; -function which(command) { - try { - _which(command); - return command; - } catch (err) { - return false; - } -} - -// Look for grep first (any OS). If not found (but on Windows) look for find, -// which is Windows' horribly crippled grep alternative. -var grep = which('grep') || process.platform === 'win32' && which('find'); - -exports['exit'] = { - setUp: function(done) { - this.origCwd = process.cwd(); - process.chdir('test/fixtures'); - done(); - }, - tearDown: function(done) { - process.chdir(this.origCwd); - done(); - }, - 'grep': function(test) { - test.expect(1); - // Many unit tests depend on this. - test.ok(grep, 'A suitable "grep" or "find" program was not found in the PATH.'); - test.done(); - }, - // The rest of the tests are built dynamically, to keep things sane. -}; - -// A few helper functions. -function normalizeLineEndings(s) { - return s.replace(/\r?\n/g, '\n'); -} - -// Capture command output, normalizing captured stdout to unix file endings. -function run(command, callback) { - exec(command, function(error, stdout) { - callback(error ? error.code : 0, normalizeLineEndings(stdout)); - }); -} - -// Read a fixture file, normalizing file contents to unix file endings. -function fixture(filename) { - return normalizeLineEndings(String(fs.readFileSync(filename))); -} - -function buildTests() { - // Build individual unit tests for command output. - var counts = [10, 100, 1000]; - var outputs = [' stdout stderr', ' stdout', ' stderr']; - var pipes = ['', ' | ' + grep + ' "std"']; - counts.forEach(function(count) { - outputs.forEach(function(output) { - pipes.forEach(function(pipe) { - var command = 'node log.js 0 ' + count + output + ' 2>&1' + pipe; - exports['exit']['output (' + command + ')'] = function(test) { - test.expect(2); - run(command, function(code, actual) { - var expected = fixture(count + output.replace(/ /g, '-') + '.txt'); - // Sometimes, the actual file lines are out of order on Windows. - // But since the point of this lib is to drain the buffer and not - // guarantee output order, we only test the length. - test.equal(actual.length, expected.length, 'should be the same length.'); - // The "fail" lines in log.js should NOT be output! - test.ok(actual.indexOf('fail') === -1, 'should not output after exit is called.'); - test.done(); - }); - }; - }); - }); - }); - - // Build individual unit tests for exit codes. - var codes = [0, 1, 123]; - codes.forEach(function(code) { - var command = 'node log.js ' + code + ' 10 stdout stderr'; - exports['exit']['exit code (' + command + ')'] = function(test) { - test.expect(1); - run(command, function(actual) { - // The specified exit code should be passed through. - test.equal(actual, code, 'should exit with ' + code + ' error code.'); - test.done(); - }); - }; - }); -} - -// Don't bother building tests if grep wasn't found, otherwise everything will -// fail and the error will get lost. -if (grep) { - buildTests(); -} diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt deleted file mode 100644 index 28592003..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt +++ /dev/null @@ -1,10 +0,0 @@ -stderr 0 -stderr 1 -stderr 2 -stderr 3 -stderr 4 -stderr 5 -stderr 6 -stderr 7 -stderr 8 -stderr 9 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt deleted file mode 100644 index 9de86166..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt +++ /dev/null @@ -1,20 +0,0 @@ -stdout 0 -stderr 0 -stdout 1 -stdout 2 -stderr 1 -stdout 3 -stderr 2 -stderr 3 -stdout 4 -stderr 4 -stdout 5 -stderr 5 -stdout 6 -stderr 6 -stdout 7 -stderr 7 -stdout 8 -stderr 8 -stdout 9 -stderr 9 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt deleted file mode 100644 index 1ce90dcc..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt +++ /dev/null @@ -1,10 +0,0 @@ -stdout 0 -stdout 1 -stdout 2 -stdout 3 -stdout 4 -stdout 5 -stdout 6 -stdout 7 -stdout 8 -stdout 9 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt deleted file mode 100644 index 3a78c857..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt +++ /dev/null @@ -1,100 +0,0 @@ -stderr 0 -stderr 1 -stderr 2 -stderr 3 -stderr 4 -stderr 5 -stderr 6 -stderr 7 -stderr 8 -stderr 9 -stderr 10 -stderr 11 -stderr 12 -stderr 13 -stderr 14 -stderr 15 -stderr 16 -stderr 17 -stderr 18 -stderr 19 -stderr 20 -stderr 21 -stderr 22 -stderr 23 -stderr 24 -stderr 25 -stderr 26 -stderr 27 -stderr 28 -stderr 29 -stderr 30 -stderr 31 -stderr 32 -stderr 33 -stderr 34 -stderr 35 -stderr 36 -stderr 37 -stderr 38 -stderr 39 -stderr 40 -stderr 41 -stderr 42 -stderr 43 -stderr 44 -stderr 45 -stderr 46 -stderr 47 -stderr 48 -stderr 49 -stderr 50 -stderr 51 -stderr 52 -stderr 53 -stderr 54 -stderr 55 -stderr 56 -stderr 57 -stderr 58 -stderr 59 -stderr 60 -stderr 61 -stderr 62 -stderr 63 -stderr 64 -stderr 65 -stderr 66 -stderr 67 -stderr 68 -stderr 69 -stderr 70 -stderr 71 -stderr 72 -stderr 73 -stderr 74 -stderr 75 -stderr 76 -stderr 77 -stderr 78 -stderr 79 -stderr 80 -stderr 81 -stderr 82 -stderr 83 -stderr 84 -stderr 85 -stderr 86 -stderr 87 -stderr 88 -stderr 89 -stderr 90 -stderr 91 -stderr 92 -stderr 93 -stderr 94 -stderr 95 -stderr 96 -stderr 97 -stderr 98 -stderr 99 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt deleted file mode 100644 index 65f35f45..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt +++ /dev/null @@ -1,200 +0,0 @@ -stdout 0 -stderr 0 -stdout 1 -stderr 1 -stdout 2 -stderr 2 -stdout 3 -stderr 3 -stdout 4 -stderr 4 -stdout 5 -stderr 5 -stdout 6 -stderr 6 -stdout 7 -stderr 7 -stdout 8 -stderr 8 -stdout 9 -stderr 9 -stdout 10 -stderr 10 -stdout 11 -stderr 11 -stdout 12 -stderr 12 -stdout 13 -stderr 13 -stdout 14 -stderr 14 -stdout 15 -stderr 15 -stdout 16 -stderr 16 -stdout 17 -stderr 17 -stdout 18 -stderr 18 -stdout 19 -stderr 19 -stdout 20 -stderr 20 -stdout 21 -stderr 21 -stdout 22 -stderr 22 -stdout 23 -stderr 23 -stdout 24 -stderr 24 -stdout 25 -stderr 25 -stdout 26 -stderr 26 -stdout 27 -stderr 27 -stdout 28 -stderr 28 -stdout 29 -stderr 29 -stdout 30 -stderr 30 -stdout 31 -stderr 31 -stdout 32 -stderr 32 -stdout 33 -stderr 33 -stdout 34 -stderr 34 -stdout 35 -stderr 35 -stdout 36 -stderr 36 -stdout 37 -stderr 37 -stdout 38 -stderr 38 -stdout 39 -stderr 39 -stdout 40 -stderr 40 -stdout 41 -stderr 41 -stdout 42 -stderr 42 -stdout 43 -stderr 43 -stdout 44 -stderr 44 -stdout 45 -stderr 45 -stdout 46 -stderr 46 -stdout 47 -stderr 47 -stdout 48 -stderr 48 -stdout 49 -stderr 49 -stdout 50 -stderr 50 -stdout 51 -stderr 51 -stdout 52 -stderr 52 -stdout 53 -stderr 53 -stdout 54 -stderr 54 -stdout 55 -stderr 55 -stdout 56 -stderr 56 -stdout 57 -stderr 57 -stdout 58 -stderr 58 -stdout 59 -stderr 59 -stdout 60 -stderr 60 -stdout 61 -stderr 61 -stdout 62 -stderr 62 -stdout 63 -stderr 63 -stdout 64 -stderr 64 -stdout 65 -stderr 65 -stdout 66 -stderr 66 -stdout 67 -stderr 67 -stdout 68 -stderr 68 -stdout 69 -stderr 69 -stdout 70 -stderr 70 -stdout 71 -stderr 71 -stdout 72 -stderr 72 -stdout 73 -stderr 73 -stdout 74 -stderr 74 -stdout 75 -stderr 75 -stdout 76 -stderr 76 -stdout 77 -stderr 77 -stdout 78 -stderr 78 -stdout 79 -stderr 79 -stdout 80 -stderr 80 -stdout 81 -stderr 81 -stdout 82 -stderr 82 -stdout 83 -stderr 83 -stdout 84 -stderr 84 -stdout 85 -stderr 85 -stdout 86 -stderr 86 -stdout 87 -stderr 87 -stdout 88 -stderr 88 -stdout 89 -stderr 89 -stdout 90 -stderr 90 -stdout 91 -stderr 91 -stdout 92 -stderr 92 -stdout 93 -stderr 93 -stdout 94 -stderr 94 -stdout 95 -stderr 95 -stdout 96 -stderr 96 -stdout 97 -stderr 97 -stdout 98 -stderr 98 -stdout 99 -stderr 99 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt deleted file mode 100644 index 5d9cac25..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt +++ /dev/null @@ -1,100 +0,0 @@ -stdout 0 -stdout 1 -stdout 2 -stdout 3 -stdout 4 -stdout 5 -stdout 6 -stdout 7 -stdout 8 -stdout 9 -stdout 10 -stdout 11 -stdout 12 -stdout 13 -stdout 14 -stdout 15 -stdout 16 -stdout 17 -stdout 18 -stdout 19 -stdout 20 -stdout 21 -stdout 22 -stdout 23 -stdout 24 -stdout 25 -stdout 26 -stdout 27 -stdout 28 -stdout 29 -stdout 30 -stdout 31 -stdout 32 -stdout 33 -stdout 34 -stdout 35 -stdout 36 -stdout 37 -stdout 38 -stdout 39 -stdout 40 -stdout 41 -stdout 42 -stdout 43 -stdout 44 -stdout 45 -stdout 46 -stdout 47 -stdout 48 -stdout 49 -stdout 50 -stdout 51 -stdout 52 -stdout 53 -stdout 54 -stdout 55 -stdout 56 -stdout 57 -stdout 58 -stdout 59 -stdout 60 -stdout 61 -stdout 62 -stdout 63 -stdout 64 -stdout 65 -stdout 66 -stdout 67 -stdout 68 -stdout 69 -stdout 70 -stdout 71 -stdout 72 -stdout 73 -stdout 74 -stdout 75 -stdout 76 -stdout 77 -stdout 78 -stdout 79 -stdout 80 -stdout 81 -stdout 82 -stdout 83 -stdout 84 -stdout 85 -stdout 86 -stdout 87 -stdout 88 -stdout 89 -stdout 90 -stdout 91 -stdout 92 -stdout 93 -stdout 94 -stdout 95 -stdout 96 -stdout 97 -stdout 98 -stdout 99 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt deleted file mode 100644 index d6375102..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt +++ /dev/null @@ -1,1000 +0,0 @@ -stderr 0 -stderr 1 -stderr 2 -stderr 3 -stderr 4 -stderr 5 -stderr 6 -stderr 7 -stderr 8 -stderr 9 -stderr 10 -stderr 11 -stderr 12 -stderr 13 -stderr 14 -stderr 15 -stderr 16 -stderr 17 -stderr 18 -stderr 19 -stderr 20 -stderr 21 -stderr 22 -stderr 23 -stderr 24 -stderr 25 -stderr 26 -stderr 27 -stderr 28 -stderr 29 -stderr 30 -stderr 31 -stderr 32 -stderr 33 -stderr 34 -stderr 35 -stderr 36 -stderr 37 -stderr 38 -stderr 39 -stderr 40 -stderr 41 -stderr 42 -stderr 43 -stderr 44 -stderr 45 -stderr 46 -stderr 47 -stderr 48 -stderr 49 -stderr 50 -stderr 51 -stderr 52 -stderr 53 -stderr 54 -stderr 55 -stderr 56 -stderr 57 -stderr 58 -stderr 59 -stderr 60 -stderr 61 -stderr 62 -stderr 63 -stderr 64 -stderr 65 -stderr 66 -stderr 67 -stderr 68 -stderr 69 -stderr 70 -stderr 71 -stderr 72 -stderr 73 -stderr 74 -stderr 75 -stderr 76 -stderr 77 -stderr 78 -stderr 79 -stderr 80 -stderr 81 -stderr 82 -stderr 83 -stderr 84 -stderr 85 -stderr 86 -stderr 87 -stderr 88 -stderr 89 -stderr 90 -stderr 91 -stderr 92 -stderr 93 -stderr 94 -stderr 95 -stderr 96 -stderr 97 -stderr 98 -stderr 99 -stderr 100 -stderr 101 -stderr 102 -stderr 103 -stderr 104 -stderr 105 -stderr 106 -stderr 107 -stderr 108 -stderr 109 -stderr 110 -stderr 111 -stderr 112 -stderr 113 -stderr 114 -stderr 115 -stderr 116 -stderr 117 -stderr 118 -stderr 119 -stderr 120 -stderr 121 -stderr 122 -stderr 123 -stderr 124 -stderr 125 -stderr 126 -stderr 127 -stderr 128 -stderr 129 -stderr 130 -stderr 131 -stderr 132 -stderr 133 -stderr 134 -stderr 135 -stderr 136 -stderr 137 -stderr 138 -stderr 139 -stderr 140 -stderr 141 -stderr 142 -stderr 143 -stderr 144 -stderr 145 -stderr 146 -stderr 147 -stderr 148 -stderr 149 -stderr 150 -stderr 151 -stderr 152 -stderr 153 -stderr 154 -stderr 155 -stderr 156 -stderr 157 -stderr 158 -stderr 159 -stderr 160 -stderr 161 -stderr 162 -stderr 163 -stderr 164 -stderr 165 -stderr 166 -stderr 167 -stderr 168 -stderr 169 -stderr 170 -stderr 171 -stderr 172 -stderr 173 -stderr 174 -stderr 175 -stderr 176 -stderr 177 -stderr 178 -stderr 179 -stderr 180 -stderr 181 -stderr 182 -stderr 183 -stderr 184 -stderr 185 -stderr 186 -stderr 187 -stderr 188 -stderr 189 -stderr 190 -stderr 191 -stderr 192 -stderr 193 -stderr 194 -stderr 195 -stderr 196 -stderr 197 -stderr 198 -stderr 199 -stderr 200 -stderr 201 -stderr 202 -stderr 203 -stderr 204 -stderr 205 -stderr 206 -stderr 207 -stderr 208 -stderr 209 -stderr 210 -stderr 211 -stderr 212 -stderr 213 -stderr 214 -stderr 215 -stderr 216 -stderr 217 -stderr 218 -stderr 219 -stderr 220 -stderr 221 -stderr 222 -stderr 223 -stderr 224 -stderr 225 -stderr 226 -stderr 227 -stderr 228 -stderr 229 -stderr 230 -stderr 231 -stderr 232 -stderr 233 -stderr 234 -stderr 235 -stderr 236 -stderr 237 -stderr 238 -stderr 239 -stderr 240 -stderr 241 -stderr 242 -stderr 243 -stderr 244 -stderr 245 -stderr 246 -stderr 247 -stderr 248 -stderr 249 -stderr 250 -stderr 251 -stderr 252 -stderr 253 -stderr 254 -stderr 255 -stderr 256 -stderr 257 -stderr 258 -stderr 259 -stderr 260 -stderr 261 -stderr 262 -stderr 263 -stderr 264 -stderr 265 -stderr 266 -stderr 267 -stderr 268 -stderr 269 -stderr 270 -stderr 271 -stderr 272 -stderr 273 -stderr 274 -stderr 275 -stderr 276 -stderr 277 -stderr 278 -stderr 279 -stderr 280 -stderr 281 -stderr 282 -stderr 283 -stderr 284 -stderr 285 -stderr 286 -stderr 287 -stderr 288 -stderr 289 -stderr 290 -stderr 291 -stderr 292 -stderr 293 -stderr 294 -stderr 295 -stderr 296 -stderr 297 -stderr 298 -stderr 299 -stderr 300 -stderr 301 -stderr 302 -stderr 303 -stderr 304 -stderr 305 -stderr 306 -stderr 307 -stderr 308 -stderr 309 -stderr 310 -stderr 311 -stderr 312 -stderr 313 -stderr 314 -stderr 315 -stderr 316 -stderr 317 -stderr 318 -stderr 319 -stderr 320 -stderr 321 -stderr 322 -stderr 323 -stderr 324 -stderr 325 -stderr 326 -stderr 327 -stderr 328 -stderr 329 -stderr 330 -stderr 331 -stderr 332 -stderr 333 -stderr 334 -stderr 335 -stderr 336 -stderr 337 -stderr 338 -stderr 339 -stderr 340 -stderr 341 -stderr 342 -stderr 343 -stderr 344 -stderr 345 -stderr 346 -stderr 347 -stderr 348 -stderr 349 -stderr 350 -stderr 351 -stderr 352 -stderr 353 -stderr 354 -stderr 355 -stderr 356 -stderr 357 -stderr 358 -stderr 359 -stderr 360 -stderr 361 -stderr 362 -stderr 363 -stderr 364 -stderr 365 -stderr 366 -stderr 367 -stderr 368 -stderr 369 -stderr 370 -stderr 371 -stderr 372 -stderr 373 -stderr 374 -stderr 375 -stderr 376 -stderr 377 -stderr 378 -stderr 379 -stderr 380 -stderr 381 -stderr 382 -stderr 383 -stderr 384 -stderr 385 -stderr 386 -stderr 387 -stderr 388 -stderr 389 -stderr 390 -stderr 391 -stderr 392 -stderr 393 -stderr 394 -stderr 395 -stderr 396 -stderr 397 -stderr 398 -stderr 399 -stderr 400 -stderr 401 -stderr 402 -stderr 403 -stderr 404 -stderr 405 -stderr 406 -stderr 407 -stderr 408 -stderr 409 -stderr 410 -stderr 411 -stderr 412 -stderr 413 -stderr 414 -stderr 415 -stderr 416 -stderr 417 -stderr 418 -stderr 419 -stderr 420 -stderr 421 -stderr 422 -stderr 423 -stderr 424 -stderr 425 -stderr 426 -stderr 427 -stderr 428 -stderr 429 -stderr 430 -stderr 431 -stderr 432 -stderr 433 -stderr 434 -stderr 435 -stderr 436 -stderr 437 -stderr 438 -stderr 439 -stderr 440 -stderr 441 -stderr 442 -stderr 443 -stderr 444 -stderr 445 -stderr 446 -stderr 447 -stderr 448 -stderr 449 -stderr 450 -stderr 451 -stderr 452 -stderr 453 -stderr 454 -stderr 455 -stderr 456 -stderr 457 -stderr 458 -stderr 459 -stderr 460 -stderr 461 -stderr 462 -stderr 463 -stderr 464 -stderr 465 -stderr 466 -stderr 467 -stderr 468 -stderr 469 -stderr 470 -stderr 471 -stderr 472 -stderr 473 -stderr 474 -stderr 475 -stderr 476 -stderr 477 -stderr 478 -stderr 479 -stderr 480 -stderr 481 -stderr 482 -stderr 483 -stderr 484 -stderr 485 -stderr 486 -stderr 487 -stderr 488 -stderr 489 -stderr 490 -stderr 491 -stderr 492 -stderr 493 -stderr 494 -stderr 495 -stderr 496 -stderr 497 -stderr 498 -stderr 499 -stderr 500 -stderr 501 -stderr 502 -stderr 503 -stderr 504 -stderr 505 -stderr 506 -stderr 507 -stderr 508 -stderr 509 -stderr 510 -stderr 511 -stderr 512 -stderr 513 -stderr 514 -stderr 515 -stderr 516 -stderr 517 -stderr 518 -stderr 519 -stderr 520 -stderr 521 -stderr 522 -stderr 523 -stderr 524 -stderr 525 -stderr 526 -stderr 527 -stderr 528 -stderr 529 -stderr 530 -stderr 531 -stderr 532 -stderr 533 -stderr 534 -stderr 535 -stderr 536 -stderr 537 -stderr 538 -stderr 539 -stderr 540 -stderr 541 -stderr 542 -stderr 543 -stderr 544 -stderr 545 -stderr 546 -stderr 547 -stderr 548 -stderr 549 -stderr 550 -stderr 551 -stderr 552 -stderr 553 -stderr 554 -stderr 555 -stderr 556 -stderr 557 -stderr 558 -stderr 559 -stderr 560 -stderr 561 -stderr 562 -stderr 563 -stderr 564 -stderr 565 -stderr 566 -stderr 567 -stderr 568 -stderr 569 -stderr 570 -stderr 571 -stderr 572 -stderr 573 -stderr 574 -stderr 575 -stderr 576 -stderr 577 -stderr 578 -stderr 579 -stderr 580 -stderr 581 -stderr 582 -stderr 583 -stderr 584 -stderr 585 -stderr 586 -stderr 587 -stderr 588 -stderr 589 -stderr 590 -stderr 591 -stderr 592 -stderr 593 -stderr 594 -stderr 595 -stderr 596 -stderr 597 -stderr 598 -stderr 599 -stderr 600 -stderr 601 -stderr 602 -stderr 603 -stderr 604 -stderr 605 -stderr 606 -stderr 607 -stderr 608 -stderr 609 -stderr 610 -stderr 611 -stderr 612 -stderr 613 -stderr 614 -stderr 615 -stderr 616 -stderr 617 -stderr 618 -stderr 619 -stderr 620 -stderr 621 -stderr 622 -stderr 623 -stderr 624 -stderr 625 -stderr 626 -stderr 627 -stderr 628 -stderr 629 -stderr 630 -stderr 631 -stderr 632 -stderr 633 -stderr 634 -stderr 635 -stderr 636 -stderr 637 -stderr 638 -stderr 639 -stderr 640 -stderr 641 -stderr 642 -stderr 643 -stderr 644 -stderr 645 -stderr 646 -stderr 647 -stderr 648 -stderr 649 -stderr 650 -stderr 651 -stderr 652 -stderr 653 -stderr 654 -stderr 655 -stderr 656 -stderr 657 -stderr 658 -stderr 659 -stderr 660 -stderr 661 -stderr 662 -stderr 663 -stderr 664 -stderr 665 -stderr 666 -stderr 667 -stderr 668 -stderr 669 -stderr 670 -stderr 671 -stderr 672 -stderr 673 -stderr 674 -stderr 675 -stderr 676 -stderr 677 -stderr 678 -stderr 679 -stderr 680 -stderr 681 -stderr 682 -stderr 683 -stderr 684 -stderr 685 -stderr 686 -stderr 687 -stderr 688 -stderr 689 -stderr 690 -stderr 691 -stderr 692 -stderr 693 -stderr 694 -stderr 695 -stderr 696 -stderr 697 -stderr 698 -stderr 699 -stderr 700 -stderr 701 -stderr 702 -stderr 703 -stderr 704 -stderr 705 -stderr 706 -stderr 707 -stderr 708 -stderr 709 -stderr 710 -stderr 711 -stderr 712 -stderr 713 -stderr 714 -stderr 715 -stderr 716 -stderr 717 -stderr 718 -stderr 719 -stderr 720 -stderr 721 -stderr 722 -stderr 723 -stderr 724 -stderr 725 -stderr 726 -stderr 727 -stderr 728 -stderr 729 -stderr 730 -stderr 731 -stderr 732 -stderr 733 -stderr 734 -stderr 735 -stderr 736 -stderr 737 -stderr 738 -stderr 739 -stderr 740 -stderr 741 -stderr 742 -stderr 743 -stderr 744 -stderr 745 -stderr 746 -stderr 747 -stderr 748 -stderr 749 -stderr 750 -stderr 751 -stderr 752 -stderr 753 -stderr 754 -stderr 755 -stderr 756 -stderr 757 -stderr 758 -stderr 759 -stderr 760 -stderr 761 -stderr 762 -stderr 763 -stderr 764 -stderr 765 -stderr 766 -stderr 767 -stderr 768 -stderr 769 -stderr 770 -stderr 771 -stderr 772 -stderr 773 -stderr 774 -stderr 775 -stderr 776 -stderr 777 -stderr 778 -stderr 779 -stderr 780 -stderr 781 -stderr 782 -stderr 783 -stderr 784 -stderr 785 -stderr 786 -stderr 787 -stderr 788 -stderr 789 -stderr 790 -stderr 791 -stderr 792 -stderr 793 -stderr 794 -stderr 795 -stderr 796 -stderr 797 -stderr 798 -stderr 799 -stderr 800 -stderr 801 -stderr 802 -stderr 803 -stderr 804 -stderr 805 -stderr 806 -stderr 807 -stderr 808 -stderr 809 -stderr 810 -stderr 811 -stderr 812 -stderr 813 -stderr 814 -stderr 815 -stderr 816 -stderr 817 -stderr 818 -stderr 819 -stderr 820 -stderr 821 -stderr 822 -stderr 823 -stderr 824 -stderr 825 -stderr 826 -stderr 827 -stderr 828 -stderr 829 -stderr 830 -stderr 831 -stderr 832 -stderr 833 -stderr 834 -stderr 835 -stderr 836 -stderr 837 -stderr 838 -stderr 839 -stderr 840 -stderr 841 -stderr 842 -stderr 843 -stderr 844 -stderr 845 -stderr 846 -stderr 847 -stderr 848 -stderr 849 -stderr 850 -stderr 851 -stderr 852 -stderr 853 -stderr 854 -stderr 855 -stderr 856 -stderr 857 -stderr 858 -stderr 859 -stderr 860 -stderr 861 -stderr 862 -stderr 863 -stderr 864 -stderr 865 -stderr 866 -stderr 867 -stderr 868 -stderr 869 -stderr 870 -stderr 871 -stderr 872 -stderr 873 -stderr 874 -stderr 875 -stderr 876 -stderr 877 -stderr 878 -stderr 879 -stderr 880 -stderr 881 -stderr 882 -stderr 883 -stderr 884 -stderr 885 -stderr 886 -stderr 887 -stderr 888 -stderr 889 -stderr 890 -stderr 891 -stderr 892 -stderr 893 -stderr 894 -stderr 895 -stderr 896 -stderr 897 -stderr 898 -stderr 899 -stderr 900 -stderr 901 -stderr 902 -stderr 903 -stderr 904 -stderr 905 -stderr 906 -stderr 907 -stderr 908 -stderr 909 -stderr 910 -stderr 911 -stderr 912 -stderr 913 -stderr 914 -stderr 915 -stderr 916 -stderr 917 -stderr 918 -stderr 919 -stderr 920 -stderr 921 -stderr 922 -stderr 923 -stderr 924 -stderr 925 -stderr 926 -stderr 927 -stderr 928 -stderr 929 -stderr 930 -stderr 931 -stderr 932 -stderr 933 -stderr 934 -stderr 935 -stderr 936 -stderr 937 -stderr 938 -stderr 939 -stderr 940 -stderr 941 -stderr 942 -stderr 943 -stderr 944 -stderr 945 -stderr 946 -stderr 947 -stderr 948 -stderr 949 -stderr 950 -stderr 951 -stderr 952 -stderr 953 -stderr 954 -stderr 955 -stderr 956 -stderr 957 -stderr 958 -stderr 959 -stderr 960 -stderr 961 -stderr 962 -stderr 963 -stderr 964 -stderr 965 -stderr 966 -stderr 967 -stderr 968 -stderr 969 -stderr 970 -stderr 971 -stderr 972 -stderr 973 -stderr 974 -stderr 975 -stderr 976 -stderr 977 -stderr 978 -stderr 979 -stderr 980 -stderr 981 -stderr 982 -stderr 983 -stderr 984 -stderr 985 -stderr 986 -stderr 987 -stderr 988 -stderr 989 -stderr 990 -stderr 991 -stderr 992 -stderr 993 -stderr 994 -stderr 995 -stderr 996 -stderr 997 -stderr 998 -stderr 999 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt deleted file mode 100644 index 4fde2b4d..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt +++ /dev/null @@ -1,2000 +0,0 @@ -stdout 0 -stderr 0 -stdout 1 -stderr 1 -stdout 2 -stderr 2 -stdout 3 -stderr 3 -stdout 4 -stderr 4 -stdout 5 -stderr 5 -stdout 6 -stderr 6 -stdout 7 -stderr 7 -stdout 8 -stderr 8 -stdout 9 -stderr 9 -stdout 10 -stderr 10 -stdout 11 -stderr 11 -stdout 12 -stderr 12 -stdout 13 -stderr 13 -stdout 14 -stderr 14 -stdout 15 -stderr 15 -stdout 16 -stderr 16 -stdout 17 -stderr 17 -stdout 18 -stderr 18 -stdout 19 -stderr 19 -stdout 20 -stderr 20 -stdout 21 -stderr 21 -stdout 22 -stderr 22 -stdout 23 -stderr 23 -stdout 24 -stderr 24 -stdout 25 -stderr 25 -stdout 26 -stderr 26 -stdout 27 -stderr 27 -stdout 28 -stderr 28 -stdout 29 -stderr 29 -stdout 30 -stderr 30 -stdout 31 -stderr 31 -stdout 32 -stderr 32 -stdout 33 -stderr 33 -stdout 34 -stderr 34 -stdout 35 -stderr 35 -stdout 36 -stderr 36 -stdout 37 -stderr 37 -stdout 38 -stderr 38 -stdout 39 -stderr 39 -stdout 40 -stderr 40 -stdout 41 -stderr 41 -stdout 42 -stderr 42 -stdout 43 -stderr 43 -stdout 44 -stderr 44 -stdout 45 -stderr 45 -stdout 46 -stderr 46 -stdout 47 -stderr 47 -stdout 48 -stderr 48 -stdout 49 -stderr 49 -stdout 50 -stderr 50 -stdout 51 -stderr 51 -stdout 52 -stderr 52 -stdout 53 -stderr 53 -stdout 54 -stderr 54 -stdout 55 -stderr 55 -stdout 56 -stderr 56 -stdout 57 -stderr 57 -stdout 58 -stderr 58 -stdout 59 -stderr 59 -stdout 60 -stderr 60 -stdout 61 -stderr 61 -stdout 62 -stderr 62 -stdout 63 -stderr 63 -stdout 64 -stderr 64 -stdout 65 -stderr 65 -stdout 66 -stderr 66 -stdout 67 -stderr 67 -stdout 68 -stderr 68 -stdout 69 -stderr 69 -stdout 70 -stderr 70 -stdout 71 -stderr 71 -stdout 72 -stderr 72 -stdout 73 -stderr 73 -stdout 74 -stderr 74 -stdout 75 -stderr 75 -stdout 76 -stderr 76 -stdout 77 -stderr 77 -stdout 78 -stderr 78 -stdout 79 -stderr 79 -stdout 80 -stderr 80 -stdout 81 -stderr 81 -stdout 82 -stderr 82 -stdout 83 -stderr 83 -stdout 84 -stderr 84 -stdout 85 -stderr 85 -stdout 86 -stderr 86 -stdout 87 -stderr 87 -stdout 88 -stderr 88 -stdout 89 -stderr 89 -stdout 90 -stderr 90 -stdout 91 -stderr 91 -stdout 92 -stderr 92 -stdout 93 -stderr 93 -stdout 94 -stderr 94 -stdout 95 -stderr 95 -stdout 96 -stderr 96 -stdout 97 -stderr 97 -stdout 98 -stderr 98 -stdout 99 -stderr 99 -stdout 100 -stderr 100 -stdout 101 -stderr 101 -stdout 102 -stderr 102 -stdout 103 -stderr 103 -stdout 104 -stderr 104 -stdout 105 -stderr 105 -stdout 106 -stderr 106 -stdout 107 -stderr 107 -stdout 108 -stderr 108 -stdout 109 -stderr 109 -stdout 110 -stderr 110 -stdout 111 -stderr 111 -stdout 112 -stderr 112 -stdout 113 -stderr 113 -stdout 114 -stderr 114 -stdout 115 -stderr 115 -stdout 116 -stderr 116 -stdout 117 -stderr 117 -stdout 118 -stderr 118 -stdout 119 -stderr 119 -stdout 120 -stderr 120 -stdout 121 -stderr 121 -stdout 122 -stderr 122 -stdout 123 -stderr 123 -stdout 124 -stderr 124 -stdout 125 -stderr 125 -stdout 126 -stderr 126 -stdout 127 -stderr 127 -stdout 128 -stderr 128 -stdout 129 -stderr 129 -stdout 130 -stderr 130 -stdout 131 -stderr 131 -stdout 132 -stderr 132 -stdout 133 -stderr 133 -stdout 134 -stderr 134 -stdout 135 -stderr 135 -stdout 136 -stderr 136 -stdout 137 -stderr 137 -stdout 138 -stderr 138 -stdout 139 -stderr 139 -stdout 140 -stderr 140 -stdout 141 -stderr 141 -stdout 142 -stderr 142 -stdout 143 -stderr 143 -stdout 144 -stderr 144 -stdout 145 -stderr 145 -stdout 146 -stderr 146 -stdout 147 -stderr 147 -stdout 148 -stderr 148 -stdout 149 -stderr 149 -stdout 150 -stderr 150 -stdout 151 -stderr 151 -stdout 152 -stderr 152 -stdout 153 -stderr 153 -stdout 154 -stderr 154 -stdout 155 -stderr 155 -stdout 156 -stderr 156 -stdout 157 -stderr 157 -stdout 158 -stderr 158 -stdout 159 -stderr 159 -stdout 160 -stderr 160 -stdout 161 -stderr 161 -stdout 162 -stderr 162 -stdout 163 -stderr 163 -stdout 164 -stderr 164 -stdout 165 -stderr 165 -stdout 166 -stderr 166 -stdout 167 -stderr 167 -stdout 168 -stderr 168 -stdout 169 -stderr 169 -stdout 170 -stderr 170 -stdout 171 -stderr 171 -stdout 172 -stderr 172 -stdout 173 -stderr 173 -stdout 174 -stderr 174 -stdout 175 -stderr 175 -stdout 176 -stderr 176 -stdout 177 -stderr 177 -stdout 178 -stderr 178 -stdout 179 -stderr 179 -stdout 180 -stderr 180 -stdout 181 -stderr 181 -stdout 182 -stderr 182 -stdout 183 -stderr 183 -stdout 184 -stderr 184 -stdout 185 -stderr 185 -stdout 186 -stderr 186 -stdout 187 -stderr 187 -stdout 188 -stderr 188 -stdout 189 -stderr 189 -stdout 190 -stderr 190 -stdout 191 -stderr 191 -stdout 192 -stderr 192 -stdout 193 -stderr 193 -stdout 194 -stderr 194 -stdout 195 -stderr 195 -stdout 196 -stderr 196 -stdout 197 -stderr 197 -stdout 198 -stderr 198 -stdout 199 -stderr 199 -stdout 200 -stderr 200 -stdout 201 -stderr 201 -stdout 202 -stderr 202 -stdout 203 -stderr 203 -stdout 204 -stderr 204 -stdout 205 -stderr 205 -stdout 206 -stderr 206 -stdout 207 -stderr 207 -stdout 208 -stderr 208 -stdout 209 -stderr 209 -stdout 210 -stderr 210 -stdout 211 -stderr 211 -stdout 212 -stderr 212 -stdout 213 -stderr 213 -stdout 214 -stderr 214 -stdout 215 -stderr 215 -stdout 216 -stderr 216 -stdout 217 -stderr 217 -stdout 218 -stderr 218 -stdout 219 -stderr 219 -stdout 220 -stderr 220 -stdout 221 -stderr 221 -stdout 222 -stderr 222 -stdout 223 -stderr 223 -stdout 224 -stderr 224 -stdout 225 -stderr 225 -stdout 226 -stderr 226 -stdout 227 -stderr 227 -stdout 228 -stderr 228 -stdout 229 -stderr 229 -stdout 230 -stderr 230 -stdout 231 -stderr 231 -stdout 232 -stderr 232 -stdout 233 -stderr 233 -stdout 234 -stderr 234 -stdout 235 -stderr 235 -stdout 236 -stderr 236 -stdout 237 -stderr 237 -stdout 238 -stderr 238 -stdout 239 -stderr 239 -stdout 240 -stderr 240 -stdout 241 -stderr 241 -stdout 242 -stderr 242 -stdout 243 -stderr 243 -stdout 244 -stderr 244 -stdout 245 -stderr 245 -stdout 246 -stderr 246 -stdout 247 -stderr 247 -stdout 248 -stderr 248 -stdout 249 -stderr 249 -stdout 250 -stderr 250 -stdout 251 -stderr 251 -stdout 252 -stderr 252 -stdout 253 -stderr 253 -stdout 254 -stderr 254 -stdout 255 -stderr 255 -stdout 256 -stderr 256 -stdout 257 -stderr 257 -stdout 258 -stderr 258 -stdout 259 -stderr 259 -stdout 260 -stderr 260 -stdout 261 -stderr 261 -stdout 262 -stderr 262 -stdout 263 -stderr 263 -stdout 264 -stderr 264 -stdout 265 -stderr 265 -stdout 266 -stderr 266 -stdout 267 -stderr 267 -stdout 268 -stderr 268 -stdout 269 -stderr 269 -stdout 270 -stderr 270 -stdout 271 -stderr 271 -stdout 272 -stderr 272 -stdout 273 -stderr 273 -stdout 274 -stderr 274 -stdout 275 -stderr 275 -stdout 276 -stderr 276 -stdout 277 -stderr 277 -stdout 278 -stderr 278 -stdout 279 -stderr 279 -stdout 280 -stderr 280 -stdout 281 -stderr 281 -stdout 282 -stderr 282 -stdout 283 -stderr 283 -stdout 284 -stderr 284 -stdout 285 -stderr 285 -stdout 286 -stderr 286 -stdout 287 -stderr 287 -stdout 288 -stderr 288 -stdout 289 -stderr 289 -stdout 290 -stderr 290 -stdout 291 -stderr 291 -stdout 292 -stderr 292 -stdout 293 -stderr 293 -stdout 294 -stderr 294 -stdout 295 -stderr 295 -stdout 296 -stderr 296 -stdout 297 -stderr 297 -stdout 298 -stderr 298 -stdout 299 -stderr 299 -stdout 300 -stderr 300 -stdout 301 -stderr 301 -stdout 302 -stderr 302 -stdout 303 -stderr 303 -stdout 304 -stderr 304 -stdout 305 -stderr 305 -stdout 306 -stderr 306 -stdout 307 -stderr 307 -stdout 308 -stderr 308 -stdout 309 -stderr 309 -stdout 310 -stderr 310 -stdout 311 -stderr 311 -stdout 312 -stderr 312 -stdout 313 -stderr 313 -stdout 314 -stderr 314 -stdout 315 -stderr 315 -stdout 316 -stderr 316 -stdout 317 -stderr 317 -stdout 318 -stderr 318 -stdout 319 -stderr 319 -stdout 320 -stderr 320 -stdout 321 -stderr 321 -stdout 322 -stderr 322 -stdout 323 -stderr 323 -stdout 324 -stderr 324 -stdout 325 -stderr 325 -stdout 326 -stderr 326 -stdout 327 -stderr 327 -stdout 328 -stderr 328 -stdout 329 -stderr 329 -stdout 330 -stderr 330 -stdout 331 -stderr 331 -stdout 332 -stderr 332 -stdout 333 -stderr 333 -stdout 334 -stderr 334 -stdout 335 -stderr 335 -stdout 336 -stderr 336 -stdout 337 -stderr 337 -stdout 338 -stderr 338 -stdout 339 -stderr 339 -stdout 340 -stderr 340 -stdout 341 -stderr 341 -stdout 342 -stderr 342 -stdout 343 -stderr 343 -stdout 344 -stderr 344 -stdout 345 -stderr 345 -stdout 346 -stderr 346 -stdout 347 -stderr 347 -stdout 348 -stderr 348 -stdout 349 -stderr 349 -stdout 350 -stderr 350 -stdout 351 -stderr 351 -stdout 352 -stderr 352 -stdout 353 -stderr 353 -stdout 354 -stderr 354 -stdout 355 -stderr 355 -stdout 356 -stderr 356 -stdout 357 -stderr 357 -stdout 358 -stderr 358 -stdout 359 -stderr 359 -stdout 360 -stderr 360 -stdout 361 -stderr 361 -stdout 362 -stderr 362 -stdout 363 -stderr 363 -stdout 364 -stderr 364 -stdout 365 -stderr 365 -stdout 366 -stderr 366 -stdout 367 -stderr 367 -stdout 368 -stderr 368 -stdout 369 -stderr 369 -stdout 370 -stderr 370 -stdout 371 -stderr 371 -stdout 372 -stderr 372 -stdout 373 -stderr 373 -stdout 374 -stderr 374 -stdout 375 -stderr 375 -stdout 376 -stderr 376 -stdout 377 -stderr 377 -stdout 378 -stderr 378 -stdout 379 -stderr 379 -stdout 380 -stderr 380 -stdout 381 -stderr 381 -stdout 382 -stderr 382 -stdout 383 -stderr 383 -stdout 384 -stderr 384 -stdout 385 -stderr 385 -stdout 386 -stderr 386 -stdout 387 -stderr 387 -stdout 388 -stderr 388 -stdout 389 -stderr 389 -stdout 390 -stderr 390 -stdout 391 -stderr 391 -stdout 392 -stderr 392 -stdout 393 -stderr 393 -stdout 394 -stderr 394 -stdout 395 -stderr 395 -stdout 396 -stderr 396 -stdout 397 -stderr 397 -stdout 398 -stderr 398 -stdout 399 -stderr 399 -stdout 400 -stderr 400 -stdout 401 -stderr 401 -stdout 402 -stderr 402 -stdout 403 -stderr 403 -stdout 404 -stderr 404 -stdout 405 -stderr 405 -stdout 406 -stderr 406 -stdout 407 -stderr 407 -stdout 408 -stderr 408 -stdout 409 -stderr 409 -stdout 410 -stderr 410 -stdout 411 -stderr 411 -stdout 412 -stderr 412 -stdout 413 -stderr 413 -stdout 414 -stderr 414 -stdout 415 -stderr 415 -stdout 416 -stderr 416 -stdout 417 -stderr 417 -stdout 418 -stderr 418 -stdout 419 -stderr 419 -stdout 420 -stderr 420 -stdout 421 -stderr 421 -stdout 422 -stderr 422 -stdout 423 -stderr 423 -stdout 424 -stderr 424 -stdout 425 -stderr 425 -stdout 426 -stderr 426 -stdout 427 -stderr 427 -stdout 428 -stderr 428 -stdout 429 -stderr 429 -stdout 430 -stderr 430 -stdout 431 -stderr 431 -stdout 432 -stderr 432 -stdout 433 -stderr 433 -stdout 434 -stderr 434 -stdout 435 -stderr 435 -stdout 436 -stderr 436 -stdout 437 -stderr 437 -stdout 438 -stderr 438 -stdout 439 -stderr 439 -stdout 440 -stderr 440 -stdout 441 -stderr 441 -stdout 442 -stderr 442 -stdout 443 -stderr 443 -stdout 444 -stderr 444 -stdout 445 -stderr 445 -stdout 446 -stderr 446 -stdout 447 -stderr 447 -stdout 448 -stderr 448 -stdout 449 -stderr 449 -stdout 450 -stderr 450 -stdout 451 -stderr 451 -stdout 452 -stderr 452 -stdout 453 -stderr 453 -stdout 454 -stderr 454 -stdout 455 -stderr 455 -stdout 456 -stderr 456 -stdout 457 -stderr 457 -stdout 458 -stderr 458 -stdout 459 -stderr 459 -stdout 460 -stderr 460 -stdout 461 -stderr 461 -stdout 462 -stderr 462 -stdout 463 -stderr 463 -stdout 464 -stderr 464 -stdout 465 -stderr 465 -stdout 466 -stderr 466 -stdout 467 -stderr 467 -stdout 468 -stderr 468 -stdout 469 -stderr 469 -stdout 470 -stderr 470 -stdout 471 -stderr 471 -stdout 472 -stderr 472 -stdout 473 -stderr 473 -stdout 474 -stderr 474 -stdout 475 -stderr 475 -stdout 476 -stderr 476 -stdout 477 -stderr 477 -stdout 478 -stderr 478 -stdout 479 -stderr 479 -stdout 480 -stderr 480 -stdout 481 -stderr 481 -stdout 482 -stderr 482 -stdout 483 -stderr 483 -stdout 484 -stderr 484 -stdout 485 -stderr 485 -stdout 486 -stderr 486 -stdout 487 -stderr 487 -stdout 488 -stderr 488 -stdout 489 -stderr 489 -stdout 490 -stderr 490 -stdout 491 -stderr 491 -stdout 492 -stderr 492 -stdout 493 -stderr 493 -stdout 494 -stderr 494 -stdout 495 -stderr 495 -stdout 496 -stderr 496 -stdout 497 -stderr 497 -stdout 498 -stderr 498 -stdout 499 -stderr 499 -stdout 500 -stderr 500 -stdout 501 -stderr 501 -stdout 502 -stderr 502 -stdout 503 -stderr 503 -stdout 504 -stderr 504 -stdout 505 -stderr 505 -stdout 506 -stderr 506 -stdout 507 -stderr 507 -stdout 508 -stderr 508 -stdout 509 -stderr 509 -stdout 510 -stderr 510 -stdout 511 -stderr 511 -stdout 512 -stderr 512 -stdout 513 -stderr 513 -stdout 514 -stderr 514 -stdout 515 -stderr 515 -stdout 516 -stderr 516 -stdout 517 -stderr 517 -stdout 518 -stderr 518 -stdout 519 -stderr 519 -stdout 520 -stderr 520 -stdout 521 -stderr 521 -stdout 522 -stderr 522 -stdout 523 -stderr 523 -stdout 524 -stderr 524 -stdout 525 -stderr 525 -stdout 526 -stderr 526 -stdout 527 -stderr 527 -stdout 528 -stderr 528 -stdout 529 -stderr 529 -stdout 530 -stderr 530 -stdout 531 -stderr 531 -stdout 532 -stderr 532 -stdout 533 -stderr 533 -stdout 534 -stderr 534 -stdout 535 -stderr 535 -stdout 536 -stderr 536 -stdout 537 -stderr 537 -stdout 538 -stderr 538 -stdout 539 -stderr 539 -stdout 540 -stderr 540 -stdout 541 -stderr 541 -stdout 542 -stderr 542 -stdout 543 -stderr 543 -stdout 544 -stderr 544 -stdout 545 -stderr 545 -stdout 546 -stderr 546 -stdout 547 -stderr 547 -stdout 548 -stderr 548 -stdout 549 -stderr 549 -stdout 550 -stderr 550 -stdout 551 -stderr 551 -stdout 552 -stderr 552 -stdout 553 -stderr 553 -stdout 554 -stderr 554 -stdout 555 -stderr 555 -stdout 556 -stderr 556 -stdout 557 -stderr 557 -stdout 558 -stderr 558 -stdout 559 -stderr 559 -stdout 560 -stderr 560 -stdout 561 -stderr 561 -stdout 562 -stderr 562 -stdout 563 -stderr 563 -stdout 564 -stderr 564 -stdout 565 -stderr 565 -stdout 566 -stderr 566 -stdout 567 -stderr 567 -stdout 568 -stderr 568 -stdout 569 -stderr 569 -stdout 570 -stderr 570 -stdout 571 -stderr 571 -stdout 572 -stderr 572 -stdout 573 -stderr 573 -stdout 574 -stderr 574 -stdout 575 -stderr 575 -stdout 576 -stderr 576 -stdout 577 -stderr 577 -stdout 578 -stderr 578 -stdout 579 -stderr 579 -stdout 580 -stderr 580 -stdout 581 -stderr 581 -stdout 582 -stderr 582 -stdout 583 -stderr 583 -stdout 584 -stderr 584 -stdout 585 -stderr 585 -stdout 586 -stderr 586 -stdout 587 -stderr 587 -stdout 588 -stderr 588 -stdout 589 -stderr 589 -stdout 590 -stderr 590 -stdout 591 -stderr 591 -stdout 592 -stderr 592 -stdout 593 -stderr 593 -stdout 594 -stderr 594 -stdout 595 -stderr 595 -stdout 596 -stderr 596 -stdout 597 -stderr 597 -stdout 598 -stderr 598 -stdout 599 -stderr 599 -stdout 600 -stderr 600 -stdout 601 -stderr 601 -stdout 602 -stderr 602 -stdout 603 -stderr 603 -stdout 604 -stderr 604 -stdout 605 -stderr 605 -stdout 606 -stderr 606 -stdout 607 -stderr 607 -stdout 608 -stderr 608 -stdout 609 -stderr 609 -stdout 610 -stderr 610 -stdout 611 -stderr 611 -stdout 612 -stderr 612 -stdout 613 -stderr 613 -stdout 614 -stderr 614 -stdout 615 -stderr 615 -stdout 616 -stderr 616 -stdout 617 -stderr 617 -stdout 618 -stderr 618 -stdout 619 -stderr 619 -stdout 620 -stderr 620 -stdout 621 -stderr 621 -stdout 622 -stderr 622 -stdout 623 -stderr 623 -stdout 624 -stderr 624 -stdout 625 -stderr 625 -stdout 626 -stderr 626 -stdout 627 -stderr 627 -stdout 628 -stderr 628 -stdout 629 -stderr 629 -stdout 630 -stderr 630 -stdout 631 -stderr 631 -stdout 632 -stderr 632 -stdout 633 -stderr 633 -stdout 634 -stderr 634 -stdout 635 -stderr 635 -stdout 636 -stderr 636 -stdout 637 -stderr 637 -stdout 638 -stderr 638 -stdout 639 -stderr 639 -stdout 640 -stderr 640 -stdout 641 -stderr 641 -stdout 642 -stderr 642 -stdout 643 -stderr 643 -stdout 644 -stderr 644 -stdout 645 -stderr 645 -stdout 646 -stderr 646 -stdout 647 -stderr 647 -stdout 648 -stderr 648 -stdout 649 -stderr 649 -stdout 650 -stderr 650 -stdout 651 -stderr 651 -stdout 652 -stderr 652 -stdout 653 -stderr 653 -stdout 654 -stderr 654 -stdout 655 -stderr 655 -stdout 656 -stderr 656 -stdout 657 -stderr 657 -stdout 658 -stderr 658 -stdout 659 -stderr 659 -stdout 660 -stderr 660 -stdout 661 -stderr 661 -stdout 662 -stderr 662 -stdout 663 -stderr 663 -stdout 664 -stderr 664 -stdout 665 -stderr 665 -stdout 666 -stderr 666 -stdout 667 -stderr 667 -stdout 668 -stderr 668 -stdout 669 -stderr 669 -stdout 670 -stderr 670 -stdout 671 -stderr 671 -stdout 672 -stderr 672 -stdout 673 -stderr 673 -stdout 674 -stderr 674 -stdout 675 -stderr 675 -stdout 676 -stderr 676 -stdout 677 -stderr 677 -stdout 678 -stderr 678 -stdout 679 -stderr 679 -stdout 680 -stderr 680 -stdout 681 -stderr 681 -stdout 682 -stderr 682 -stdout 683 -stderr 683 -stdout 684 -stderr 684 -stdout 685 -stderr 685 -stdout 686 -stderr 686 -stdout 687 -stderr 687 -stdout 688 -stderr 688 -stdout 689 -stderr 689 -stdout 690 -stderr 690 -stdout 691 -stderr 691 -stdout 692 -stderr 692 -stdout 693 -stderr 693 -stdout 694 -stderr 694 -stdout 695 -stderr 695 -stdout 696 -stderr 696 -stdout 697 -stderr 697 -stdout 698 -stderr 698 -stdout 699 -stderr 699 -stdout 700 -stderr 700 -stdout 701 -stderr 701 -stdout 702 -stderr 702 -stdout 703 -stderr 703 -stdout 704 -stderr 704 -stdout 705 -stderr 705 -stdout 706 -stderr 706 -stdout 707 -stderr 707 -stdout 708 -stderr 708 -stdout 709 -stderr 709 -stdout 710 -stderr 710 -stdout 711 -stderr 711 -stdout 712 -stderr 712 -stdout 713 -stderr 713 -stdout 714 -stderr 714 -stdout 715 -stderr 715 -stdout 716 -stderr 716 -stdout 717 -stderr 717 -stdout 718 -stderr 718 -stdout 719 -stderr 719 -stdout 720 -stderr 720 -stdout 721 -stderr 721 -stdout 722 -stderr 722 -stdout 723 -stderr 723 -stdout 724 -stderr 724 -stdout 725 -stderr 725 -stdout 726 -stderr 726 -stdout 727 -stderr 727 -stdout 728 -stderr 728 -stdout 729 -stderr 729 -stdout 730 -stderr 730 -stdout 731 -stderr 731 -stdout 732 -stderr 732 -stdout 733 -stderr 733 -stdout 734 -stderr 734 -stdout 735 -stderr 735 -stdout 736 -stderr 736 -stdout 737 -stderr 737 -stdout 738 -stderr 738 -stdout 739 -stderr 739 -stdout 740 -stderr 740 -stdout 741 -stderr 741 -stdout 742 -stderr 742 -stdout 743 -stderr 743 -stdout 744 -stderr 744 -stdout 745 -stderr 745 -stdout 746 -stderr 746 -stdout 747 -stderr 747 -stdout 748 -stderr 748 -stdout 749 -stderr 749 -stdout 750 -stderr 750 -stdout 751 -stderr 751 -stdout 752 -stderr 752 -stdout 753 -stderr 753 -stdout 754 -stderr 754 -stdout 755 -stderr 755 -stdout 756 -stderr 756 -stdout 757 -stderr 757 -stdout 758 -stderr 758 -stdout 759 -stderr 759 -stdout 760 -stderr 760 -stdout 761 -stderr 761 -stdout 762 -stderr 762 -stdout 763 -stderr 763 -stdout 764 -stderr 764 -stdout 765 -stderr 765 -stdout 766 -stderr 766 -stdout 767 -stderr 767 -stdout 768 -stderr 768 -stdout 769 -stderr 769 -stdout 770 -stderr 770 -stdout 771 -stderr 771 -stdout 772 -stderr 772 -stdout 773 -stderr 773 -stdout 774 -stderr 774 -stdout 775 -stderr 775 -stdout 776 -stderr 776 -stdout 777 -stderr 777 -stdout 778 -stderr 778 -stdout 779 -stderr 779 -stdout 780 -stderr 780 -stdout 781 -stderr 781 -stdout 782 -stderr 782 -stdout 783 -stderr 783 -stdout 784 -stderr 784 -stdout 785 -stderr 785 -stdout 786 -stderr 786 -stdout 787 -stderr 787 -stdout 788 -stderr 788 -stdout 789 -stderr 789 -stdout 790 -stderr 790 -stdout 791 -stderr 791 -stdout 792 -stderr 792 -stdout 793 -stderr 793 -stdout 794 -stderr 794 -stdout 795 -stderr 795 -stdout 796 -stderr 796 -stdout 797 -stderr 797 -stdout 798 -stderr 798 -stdout 799 -stderr 799 -stdout 800 -stderr 800 -stdout 801 -stderr 801 -stdout 802 -stderr 802 -stdout 803 -stderr 803 -stdout 804 -stderr 804 -stdout 805 -stderr 805 -stdout 806 -stderr 806 -stdout 807 -stderr 807 -stdout 808 -stderr 808 -stdout 809 -stderr 809 -stdout 810 -stderr 810 -stdout 811 -stderr 811 -stdout 812 -stderr 812 -stdout 813 -stderr 813 -stdout 814 -stderr 814 -stdout 815 -stderr 815 -stdout 816 -stderr 816 -stdout 817 -stderr 817 -stdout 818 -stderr 818 -stdout 819 -stderr 819 -stdout 820 -stderr 820 -stdout 821 -stderr 821 -stdout 822 -stderr 822 -stdout 823 -stderr 823 -stdout 824 -stderr 824 -stdout 825 -stderr 825 -stdout 826 -stderr 826 -stdout 827 -stderr 827 -stdout 828 -stderr 828 -stdout 829 -stderr 829 -stdout 830 -stderr 830 -stdout 831 -stderr 831 -stdout 832 -stderr 832 -stdout 833 -stderr 833 -stdout 834 -stderr 834 -stdout 835 -stderr 835 -stdout 836 -stderr 836 -stdout 837 -stderr 837 -stdout 838 -stderr 838 -stdout 839 -stderr 839 -stdout 840 -stderr 840 -stdout 841 -stderr 841 -stdout 842 -stderr 842 -stdout 843 -stderr 843 -stdout 844 -stderr 844 -stdout 845 -stderr 845 -stdout 846 -stderr 846 -stdout 847 -stderr 847 -stdout 848 -stderr 848 -stdout 849 -stderr 849 -stdout 850 -stderr 850 -stdout 851 -stderr 851 -stdout 852 -stderr 852 -stdout 853 -stderr 853 -stdout 854 -stderr 854 -stdout 855 -stderr 855 -stdout 856 -stderr 856 -stdout 857 -stderr 857 -stdout 858 -stderr 858 -stdout 859 -stderr 859 -stdout 860 -stderr 860 -stdout 861 -stderr 861 -stdout 862 -stderr 862 -stdout 863 -stderr 863 -stdout 864 -stderr 864 -stdout 865 -stderr 865 -stdout 866 -stderr 866 -stdout 867 -stderr 867 -stdout 868 -stderr 868 -stdout 869 -stderr 869 -stdout 870 -stderr 870 -stdout 871 -stderr 871 -stdout 872 -stderr 872 -stdout 873 -stderr 873 -stdout 874 -stderr 874 -stdout 875 -stderr 875 -stdout 876 -stderr 876 -stdout 877 -stderr 877 -stdout 878 -stderr 878 -stdout 879 -stderr 879 -stdout 880 -stderr 880 -stdout 881 -stderr 881 -stdout 882 -stderr 882 -stdout 883 -stderr 883 -stdout 884 -stderr 884 -stdout 885 -stderr 885 -stdout 886 -stderr 886 -stdout 887 -stderr 887 -stdout 888 -stderr 888 -stdout 889 -stderr 889 -stdout 890 -stderr 890 -stdout 891 -stderr 891 -stdout 892 -stderr 892 -stdout 893 -stderr 893 -stdout 894 -stderr 894 -stdout 895 -stderr 895 -stdout 896 -stderr 896 -stdout 897 -stderr 897 -stdout 898 -stderr 898 -stdout 899 -stderr 899 -stdout 900 -stderr 900 -stdout 901 -stderr 901 -stdout 902 -stderr 902 -stdout 903 -stderr 903 -stdout 904 -stderr 904 -stdout 905 -stderr 905 -stdout 906 -stderr 906 -stdout 907 -stderr 907 -stdout 908 -stderr 908 -stdout 909 -stderr 909 -stdout 910 -stderr 910 -stdout 911 -stderr 911 -stdout 912 -stderr 912 -stdout 913 -stderr 913 -stdout 914 -stderr 914 -stdout 915 -stderr 915 -stdout 916 -stderr 916 -stdout 917 -stderr 917 -stdout 918 -stderr 918 -stdout 919 -stderr 919 -stdout 920 -stderr 920 -stdout 921 -stderr 921 -stdout 922 -stderr 922 -stdout 923 -stderr 923 -stdout 924 -stderr 924 -stdout 925 -stderr 925 -stdout 926 -stderr 926 -stdout 927 -stderr 927 -stdout 928 -stderr 928 -stdout 929 -stderr 929 -stdout 930 -stderr 930 -stdout 931 -stderr 931 -stdout 932 -stderr 932 -stdout 933 -stderr 933 -stdout 934 -stderr 934 -stdout 935 -stderr 935 -stdout 936 -stderr 936 -stdout 937 -stderr 937 -stdout 938 -stderr 938 -stdout 939 -stderr 939 -stdout 940 -stderr 940 -stdout 941 -stderr 941 -stdout 942 -stderr 942 -stdout 943 -stderr 943 -stdout 944 -stderr 944 -stdout 945 -stderr 945 -stdout 946 -stderr 946 -stdout 947 -stderr 947 -stdout 948 -stderr 948 -stdout 949 -stderr 949 -stdout 950 -stderr 950 -stdout 951 -stderr 951 -stdout 952 -stderr 952 -stdout 953 -stderr 953 -stdout 954 -stderr 954 -stdout 955 -stderr 955 -stdout 956 -stderr 956 -stdout 957 -stderr 957 -stdout 958 -stderr 958 -stdout 959 -stderr 959 -stdout 960 -stderr 960 -stdout 961 -stderr 961 -stdout 962 -stderr 962 -stdout 963 -stderr 963 -stdout 964 -stderr 964 -stdout 965 -stderr 965 -stdout 966 -stderr 966 -stdout 967 -stderr 967 -stdout 968 -stderr 968 -stdout 969 -stderr 969 -stdout 970 -stderr 970 -stdout 971 -stderr 971 -stdout 972 -stderr 972 -stdout 973 -stderr 973 -stdout 974 -stderr 974 -stdout 975 -stderr 975 -stdout 976 -stderr 976 -stdout 977 -stderr 977 -stdout 978 -stderr 978 -stdout 979 -stderr 979 -stdout 980 -stderr 980 -stdout 981 -stderr 981 -stdout 982 -stderr 982 -stdout 983 -stderr 983 -stdout 984 -stderr 984 -stdout 985 -stderr 985 -stdout 986 -stderr 986 -stdout 987 -stderr 987 -stdout 988 -stderr 988 -stdout 989 -stderr 989 -stdout 990 -stderr 990 -stdout 991 -stderr 991 -stdout 992 -stderr 992 -stdout 993 -stderr 993 -stdout 994 -stderr 994 -stdout 995 -stderr 995 -stdout 996 -stderr 996 -stdout 997 -stderr 997 -stdout 998 -stderr 998 -stdout 999 -stderr 999 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt deleted file mode 100644 index d3649d00..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt +++ /dev/null @@ -1,1000 +0,0 @@ -stdout 0 -stdout 1 -stdout 2 -stdout 3 -stdout 4 -stdout 5 -stdout 6 -stdout 7 -stdout 8 -stdout 9 -stdout 10 -stdout 11 -stdout 12 -stdout 13 -stdout 14 -stdout 15 -stdout 16 -stdout 17 -stdout 18 -stdout 19 -stdout 20 -stdout 21 -stdout 22 -stdout 23 -stdout 24 -stdout 25 -stdout 26 -stdout 27 -stdout 28 -stdout 29 -stdout 30 -stdout 31 -stdout 32 -stdout 33 -stdout 34 -stdout 35 -stdout 36 -stdout 37 -stdout 38 -stdout 39 -stdout 40 -stdout 41 -stdout 42 -stdout 43 -stdout 44 -stdout 45 -stdout 46 -stdout 47 -stdout 48 -stdout 49 -stdout 50 -stdout 51 -stdout 52 -stdout 53 -stdout 54 -stdout 55 -stdout 56 -stdout 57 -stdout 58 -stdout 59 -stdout 60 -stdout 61 -stdout 62 -stdout 63 -stdout 64 -stdout 65 -stdout 66 -stdout 67 -stdout 68 -stdout 69 -stdout 70 -stdout 71 -stdout 72 -stdout 73 -stdout 74 -stdout 75 -stdout 76 -stdout 77 -stdout 78 -stdout 79 -stdout 80 -stdout 81 -stdout 82 -stdout 83 -stdout 84 -stdout 85 -stdout 86 -stdout 87 -stdout 88 -stdout 89 -stdout 90 -stdout 91 -stdout 92 -stdout 93 -stdout 94 -stdout 95 -stdout 96 -stdout 97 -stdout 98 -stdout 99 -stdout 100 -stdout 101 -stdout 102 -stdout 103 -stdout 104 -stdout 105 -stdout 106 -stdout 107 -stdout 108 -stdout 109 -stdout 110 -stdout 111 -stdout 112 -stdout 113 -stdout 114 -stdout 115 -stdout 116 -stdout 117 -stdout 118 -stdout 119 -stdout 120 -stdout 121 -stdout 122 -stdout 123 -stdout 124 -stdout 125 -stdout 126 -stdout 127 -stdout 128 -stdout 129 -stdout 130 -stdout 131 -stdout 132 -stdout 133 -stdout 134 -stdout 135 -stdout 136 -stdout 137 -stdout 138 -stdout 139 -stdout 140 -stdout 141 -stdout 142 -stdout 143 -stdout 144 -stdout 145 -stdout 146 -stdout 147 -stdout 148 -stdout 149 -stdout 150 -stdout 151 -stdout 152 -stdout 153 -stdout 154 -stdout 155 -stdout 156 -stdout 157 -stdout 158 -stdout 159 -stdout 160 -stdout 161 -stdout 162 -stdout 163 -stdout 164 -stdout 165 -stdout 166 -stdout 167 -stdout 168 -stdout 169 -stdout 170 -stdout 171 -stdout 172 -stdout 173 -stdout 174 -stdout 175 -stdout 176 -stdout 177 -stdout 178 -stdout 179 -stdout 180 -stdout 181 -stdout 182 -stdout 183 -stdout 184 -stdout 185 -stdout 186 -stdout 187 -stdout 188 -stdout 189 -stdout 190 -stdout 191 -stdout 192 -stdout 193 -stdout 194 -stdout 195 -stdout 196 -stdout 197 -stdout 198 -stdout 199 -stdout 200 -stdout 201 -stdout 202 -stdout 203 -stdout 204 -stdout 205 -stdout 206 -stdout 207 -stdout 208 -stdout 209 -stdout 210 -stdout 211 -stdout 212 -stdout 213 -stdout 214 -stdout 215 -stdout 216 -stdout 217 -stdout 218 -stdout 219 -stdout 220 -stdout 221 -stdout 222 -stdout 223 -stdout 224 -stdout 225 -stdout 226 -stdout 227 -stdout 228 -stdout 229 -stdout 230 -stdout 231 -stdout 232 -stdout 233 -stdout 234 -stdout 235 -stdout 236 -stdout 237 -stdout 238 -stdout 239 -stdout 240 -stdout 241 -stdout 242 -stdout 243 -stdout 244 -stdout 245 -stdout 246 -stdout 247 -stdout 248 -stdout 249 -stdout 250 -stdout 251 -stdout 252 -stdout 253 -stdout 254 -stdout 255 -stdout 256 -stdout 257 -stdout 258 -stdout 259 -stdout 260 -stdout 261 -stdout 262 -stdout 263 -stdout 264 -stdout 265 -stdout 266 -stdout 267 -stdout 268 -stdout 269 -stdout 270 -stdout 271 -stdout 272 -stdout 273 -stdout 274 -stdout 275 -stdout 276 -stdout 277 -stdout 278 -stdout 279 -stdout 280 -stdout 281 -stdout 282 -stdout 283 -stdout 284 -stdout 285 -stdout 286 -stdout 287 -stdout 288 -stdout 289 -stdout 290 -stdout 291 -stdout 292 -stdout 293 -stdout 294 -stdout 295 -stdout 296 -stdout 297 -stdout 298 -stdout 299 -stdout 300 -stdout 301 -stdout 302 -stdout 303 -stdout 304 -stdout 305 -stdout 306 -stdout 307 -stdout 308 -stdout 309 -stdout 310 -stdout 311 -stdout 312 -stdout 313 -stdout 314 -stdout 315 -stdout 316 -stdout 317 -stdout 318 -stdout 319 -stdout 320 -stdout 321 -stdout 322 -stdout 323 -stdout 324 -stdout 325 -stdout 326 -stdout 327 -stdout 328 -stdout 329 -stdout 330 -stdout 331 -stdout 332 -stdout 333 -stdout 334 -stdout 335 -stdout 336 -stdout 337 -stdout 338 -stdout 339 -stdout 340 -stdout 341 -stdout 342 -stdout 343 -stdout 344 -stdout 345 -stdout 346 -stdout 347 -stdout 348 -stdout 349 -stdout 350 -stdout 351 -stdout 352 -stdout 353 -stdout 354 -stdout 355 -stdout 356 -stdout 357 -stdout 358 -stdout 359 -stdout 360 -stdout 361 -stdout 362 -stdout 363 -stdout 364 -stdout 365 -stdout 366 -stdout 367 -stdout 368 -stdout 369 -stdout 370 -stdout 371 -stdout 372 -stdout 373 -stdout 374 -stdout 375 -stdout 376 -stdout 377 -stdout 378 -stdout 379 -stdout 380 -stdout 381 -stdout 382 -stdout 383 -stdout 384 -stdout 385 -stdout 386 -stdout 387 -stdout 388 -stdout 389 -stdout 390 -stdout 391 -stdout 392 -stdout 393 -stdout 394 -stdout 395 -stdout 396 -stdout 397 -stdout 398 -stdout 399 -stdout 400 -stdout 401 -stdout 402 -stdout 403 -stdout 404 -stdout 405 -stdout 406 -stdout 407 -stdout 408 -stdout 409 -stdout 410 -stdout 411 -stdout 412 -stdout 413 -stdout 414 -stdout 415 -stdout 416 -stdout 417 -stdout 418 -stdout 419 -stdout 420 -stdout 421 -stdout 422 -stdout 423 -stdout 424 -stdout 425 -stdout 426 -stdout 427 -stdout 428 -stdout 429 -stdout 430 -stdout 431 -stdout 432 -stdout 433 -stdout 434 -stdout 435 -stdout 436 -stdout 437 -stdout 438 -stdout 439 -stdout 440 -stdout 441 -stdout 442 -stdout 443 -stdout 444 -stdout 445 -stdout 446 -stdout 447 -stdout 448 -stdout 449 -stdout 450 -stdout 451 -stdout 452 -stdout 453 -stdout 454 -stdout 455 -stdout 456 -stdout 457 -stdout 458 -stdout 459 -stdout 460 -stdout 461 -stdout 462 -stdout 463 -stdout 464 -stdout 465 -stdout 466 -stdout 467 -stdout 468 -stdout 469 -stdout 470 -stdout 471 -stdout 472 -stdout 473 -stdout 474 -stdout 475 -stdout 476 -stdout 477 -stdout 478 -stdout 479 -stdout 480 -stdout 481 -stdout 482 -stdout 483 -stdout 484 -stdout 485 -stdout 486 -stdout 487 -stdout 488 -stdout 489 -stdout 490 -stdout 491 -stdout 492 -stdout 493 -stdout 494 -stdout 495 -stdout 496 -stdout 497 -stdout 498 -stdout 499 -stdout 500 -stdout 501 -stdout 502 -stdout 503 -stdout 504 -stdout 505 -stdout 506 -stdout 507 -stdout 508 -stdout 509 -stdout 510 -stdout 511 -stdout 512 -stdout 513 -stdout 514 -stdout 515 -stdout 516 -stdout 517 -stdout 518 -stdout 519 -stdout 520 -stdout 521 -stdout 522 -stdout 523 -stdout 524 -stdout 525 -stdout 526 -stdout 527 -stdout 528 -stdout 529 -stdout 530 -stdout 531 -stdout 532 -stdout 533 -stdout 534 -stdout 535 -stdout 536 -stdout 537 -stdout 538 -stdout 539 -stdout 540 -stdout 541 -stdout 542 -stdout 543 -stdout 544 -stdout 545 -stdout 546 -stdout 547 -stdout 548 -stdout 549 -stdout 550 -stdout 551 -stdout 552 -stdout 553 -stdout 554 -stdout 555 -stdout 556 -stdout 557 -stdout 558 -stdout 559 -stdout 560 -stdout 561 -stdout 562 -stdout 563 -stdout 564 -stdout 565 -stdout 566 -stdout 567 -stdout 568 -stdout 569 -stdout 570 -stdout 571 -stdout 572 -stdout 573 -stdout 574 -stdout 575 -stdout 576 -stdout 577 -stdout 578 -stdout 579 -stdout 580 -stdout 581 -stdout 582 -stdout 583 -stdout 584 -stdout 585 -stdout 586 -stdout 587 -stdout 588 -stdout 589 -stdout 590 -stdout 591 -stdout 592 -stdout 593 -stdout 594 -stdout 595 -stdout 596 -stdout 597 -stdout 598 -stdout 599 -stdout 600 -stdout 601 -stdout 602 -stdout 603 -stdout 604 -stdout 605 -stdout 606 -stdout 607 -stdout 608 -stdout 609 -stdout 610 -stdout 611 -stdout 612 -stdout 613 -stdout 614 -stdout 615 -stdout 616 -stdout 617 -stdout 618 -stdout 619 -stdout 620 -stdout 621 -stdout 622 -stdout 623 -stdout 624 -stdout 625 -stdout 626 -stdout 627 -stdout 628 -stdout 629 -stdout 630 -stdout 631 -stdout 632 -stdout 633 -stdout 634 -stdout 635 -stdout 636 -stdout 637 -stdout 638 -stdout 639 -stdout 640 -stdout 641 -stdout 642 -stdout 643 -stdout 644 -stdout 645 -stdout 646 -stdout 647 -stdout 648 -stdout 649 -stdout 650 -stdout 651 -stdout 652 -stdout 653 -stdout 654 -stdout 655 -stdout 656 -stdout 657 -stdout 658 -stdout 659 -stdout 660 -stdout 661 -stdout 662 -stdout 663 -stdout 664 -stdout 665 -stdout 666 -stdout 667 -stdout 668 -stdout 669 -stdout 670 -stdout 671 -stdout 672 -stdout 673 -stdout 674 -stdout 675 -stdout 676 -stdout 677 -stdout 678 -stdout 679 -stdout 680 -stdout 681 -stdout 682 -stdout 683 -stdout 684 -stdout 685 -stdout 686 -stdout 687 -stdout 688 -stdout 689 -stdout 690 -stdout 691 -stdout 692 -stdout 693 -stdout 694 -stdout 695 -stdout 696 -stdout 697 -stdout 698 -stdout 699 -stdout 700 -stdout 701 -stdout 702 -stdout 703 -stdout 704 -stdout 705 -stdout 706 -stdout 707 -stdout 708 -stdout 709 -stdout 710 -stdout 711 -stdout 712 -stdout 713 -stdout 714 -stdout 715 -stdout 716 -stdout 717 -stdout 718 -stdout 719 -stdout 720 -stdout 721 -stdout 722 -stdout 723 -stdout 724 -stdout 725 -stdout 726 -stdout 727 -stdout 728 -stdout 729 -stdout 730 -stdout 731 -stdout 732 -stdout 733 -stdout 734 -stdout 735 -stdout 736 -stdout 737 -stdout 738 -stdout 739 -stdout 740 -stdout 741 -stdout 742 -stdout 743 -stdout 744 -stdout 745 -stdout 746 -stdout 747 -stdout 748 -stdout 749 -stdout 750 -stdout 751 -stdout 752 -stdout 753 -stdout 754 -stdout 755 -stdout 756 -stdout 757 -stdout 758 -stdout 759 -stdout 760 -stdout 761 -stdout 762 -stdout 763 -stdout 764 -stdout 765 -stdout 766 -stdout 767 -stdout 768 -stdout 769 -stdout 770 -stdout 771 -stdout 772 -stdout 773 -stdout 774 -stdout 775 -stdout 776 -stdout 777 -stdout 778 -stdout 779 -stdout 780 -stdout 781 -stdout 782 -stdout 783 -stdout 784 -stdout 785 -stdout 786 -stdout 787 -stdout 788 -stdout 789 -stdout 790 -stdout 791 -stdout 792 -stdout 793 -stdout 794 -stdout 795 -stdout 796 -stdout 797 -stdout 798 -stdout 799 -stdout 800 -stdout 801 -stdout 802 -stdout 803 -stdout 804 -stdout 805 -stdout 806 -stdout 807 -stdout 808 -stdout 809 -stdout 810 -stdout 811 -stdout 812 -stdout 813 -stdout 814 -stdout 815 -stdout 816 -stdout 817 -stdout 818 -stdout 819 -stdout 820 -stdout 821 -stdout 822 -stdout 823 -stdout 824 -stdout 825 -stdout 826 -stdout 827 -stdout 828 -stdout 829 -stdout 830 -stdout 831 -stdout 832 -stdout 833 -stdout 834 -stdout 835 -stdout 836 -stdout 837 -stdout 838 -stdout 839 -stdout 840 -stdout 841 -stdout 842 -stdout 843 -stdout 844 -stdout 845 -stdout 846 -stdout 847 -stdout 848 -stdout 849 -stdout 850 -stdout 851 -stdout 852 -stdout 853 -stdout 854 -stdout 855 -stdout 856 -stdout 857 -stdout 858 -stdout 859 -stdout 860 -stdout 861 -stdout 862 -stdout 863 -stdout 864 -stdout 865 -stdout 866 -stdout 867 -stdout 868 -stdout 869 -stdout 870 -stdout 871 -stdout 872 -stdout 873 -stdout 874 -stdout 875 -stdout 876 -stdout 877 -stdout 878 -stdout 879 -stdout 880 -stdout 881 -stdout 882 -stdout 883 -stdout 884 -stdout 885 -stdout 886 -stdout 887 -stdout 888 -stdout 889 -stdout 890 -stdout 891 -stdout 892 -stdout 893 -stdout 894 -stdout 895 -stdout 896 -stdout 897 -stdout 898 -stdout 899 -stdout 900 -stdout 901 -stdout 902 -stdout 903 -stdout 904 -stdout 905 -stdout 906 -stdout 907 -stdout 908 -stdout 909 -stdout 910 -stdout 911 -stdout 912 -stdout 913 -stdout 914 -stdout 915 -stdout 916 -stdout 917 -stdout 918 -stdout 919 -stdout 920 -stdout 921 -stdout 922 -stdout 923 -stdout 924 -stdout 925 -stdout 926 -stdout 927 -stdout 928 -stdout 929 -stdout 930 -stdout 931 -stdout 932 -stdout 933 -stdout 934 -stdout 935 -stdout 936 -stdout 937 -stdout 938 -stdout 939 -stdout 940 -stdout 941 -stdout 942 -stdout 943 -stdout 944 -stdout 945 -stdout 946 -stdout 947 -stdout 948 -stdout 949 -stdout 950 -stdout 951 -stdout 952 -stdout 953 -stdout 954 -stdout 955 -stdout 956 -stdout 957 -stdout 958 -stdout 959 -stdout 960 -stdout 961 -stdout 962 -stdout 963 -stdout 964 -stdout 965 -stdout 966 -stdout 967 -stdout 968 -stdout 969 -stdout 970 -stdout 971 -stdout 972 -stdout 973 -stdout 974 -stdout 975 -stdout 976 -stdout 977 -stdout 978 -stdout 979 -stdout 980 -stdout 981 -stdout 982 -stdout 983 -stdout 984 -stdout 985 -stdout 986 -stdout 987 -stdout 988 -stdout 989 -stdout 990 -stdout 991 -stdout 992 -stdout 993 -stdout 994 -stdout 995 -stdout 996 -stdout 997 -stdout 998 -stdout 999 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh deleted file mode 100755 index 6a526de0..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -rm 10*.txt -for n in 10 100 1000; do - node log.js 0 $n stdout stderr &> $n-stdout-stderr.txt - node log.js 0 $n stdout &> $n-stdout.txt - node log.js 0 $n stderr &> $n-stderr.txt -done diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js deleted file mode 100644 index 74c8f120..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js +++ /dev/null @@ -1,23 +0,0 @@ -var errorCode = process.argv[2]; -var max = process.argv[3]; -var modes = process.argv.slice(4); - -function stdout(message) { - if (modes.indexOf('stdout') === -1) { return; } - process.stdout.write('stdout ' + message + '\n'); -} - -function stderr(message) { - if (modes.indexOf('stderr') === -1) { return; } - process.stderr.write('stderr ' + message + '\n'); -} - -for (var i = 0; i < max; i++) { - stdout(i); - stderr(i); -} - -process.exit(errorCode); - -stdout('fail'); -stderr('fail'); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log.js b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log.js deleted file mode 100644 index 8a9ed9a4..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/exit/test/fixtures/log.js +++ /dev/null @@ -1,25 +0,0 @@ -var exit = require('../../lib/exit'); - -var errorCode = process.argv[2]; -var max = process.argv[3]; -var modes = process.argv.slice(4); - -function stdout(message) { - if (modes.indexOf('stdout') === -1) { return; } - process.stdout.write('stdout ' + message + '\n'); -} - -function stderr(message) { - if (modes.indexOf('stderr') === -1) { return; } - process.stderr.write('stderr ' + message + '\n'); -} - -for (var i = 0; i < max; i++) { - stdout(i); - stderr(i); -} - -exit(errorCode); - -stdout('fail'); -stderr('fail'); diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.gitattributes b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.gitattributes deleted file mode 100644 index 4bb50dc1..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text eol=lf \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.npmignore b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.npmignore deleted file mode 100644 index 0db216bf..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -npm-debug.log -node_modules diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.travis.yml b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.travis.yml deleted file mode 100644 index d63ba095..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.10 - - 0.11 diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/LICENSE b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/LICENSE deleted file mode 100644 index 0a35e029..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright 2010, 2011, Chris Winberry . 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. \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/README.md b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/README.md deleted file mode 100644 index 9ed236d4..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/README.md +++ /dev/null @@ -1,81 +0,0 @@ -#htmlparser2 [![NPM version](https://badge.fury.io/js/htmlparser2.png)](https://npmjs.org/package/htmlparser2) [![Build Status](https://secure.travis-ci.org/fb55/htmlparser2.png)](http://travis-ci.org/fb55/htmlparser2) [![Dependency Status](https://david-dm.org/fb55/htmlparser2.png)](https://david-dm.org/fb55/htmlparser2) - -A forgiving HTML/XML/RSS parser written in JS for NodeJS. The parser can handle streams (chunked data) and supports custom handlers for writing custom DOMs/output. - -##Installing - npm install htmlparser2 - -A live demo of htmlparser2 is available at http://demos.forbeslindesay.co.uk/htmlparser2/ - -##Usage - -```javascript -var htmlparser = require("htmlparser2"); -var parser = new htmlparser.Parser({ - onopentag: function(name, attribs){ - if(name === "script" && attribs.type === "text/javascript"){ - console.log("JS! Hooray!"); - } - }, - ontext: function(text){ - console.log("-->", text); - }, - onclosetag: function(tagname){ - if(tagname === "script"){ - console.log("That's it?!"); - } - } -}); -parser.write("Xyz ", - "expected": [ - { - "type": "script", - "name": "script", - "attribs": {}, - "children": [ - { - "data": "", - "type": "text" - } - ] - } - ] -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json deleted file mode 100644 index 77438fdc..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Unescaped chars in style", - "options": {}, - "html": "", - "expected": [ - { - "type": "style", - "name": "style", - "attribs": { - "type": "text/css" - }, - "children": [ - { - "data": "\n body > p\n\t{ font-weight: bold; }", - "type": "text" - } - ] - } - ] -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json deleted file mode 100644 index 5c2492e2..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Extra spaces in tag", - "options": {}, - "html": "the text", - "expected": [ - { - "type": "tag", - "name": "font", - "attribs": { - "size": "14" - }, - "children": [ - { - "data": "the text", - "type": "text" - } - ] - } - ] -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json deleted file mode 100644 index 543cceee..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Unquoted attributes", - "options": {}, - "html": "the text", - "expected": [ - { - "type": "tag", - "name": "font", - "attribs": { - "size": "14" - }, - "children": [ - { - "data": "the text", - "type": "text" - } - ] - } - ] -} \ No newline at end of file diff --git a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json b/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json deleted file mode 100644 index 544636e4..00000000 --- a/node_modules/grunt-contrib-jshint/node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Singular attribute", - "options": {}, - "html": "